From 24a74f0ef8c33854947571ee5f5fef71431e2f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Cabe=CC=81?= Date: Thu, 31 Aug 2017 14:34:52 +0200 Subject: [PATCH 01/66] Fix timestamp management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Benjamin Cabé --- .../java/server/persistency/dao/MachineMessageDAO.java | 4 +--- .../main/java/server/persistency/dao/MeasurementDAO.java | 4 +--- .../src/main/java/server/persistency/dao/ProcessDAO.java | 9 ++++----- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java b/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java index 3945c69..802c5f0 100644 --- a/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java +++ b/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java @@ -9,8 +9,6 @@ package server.persistency.dao; import java.io.IOException; -import java.sql.Timestamp; -import java.time.ZoneOffset; import java.util.concurrent.TimeUnit; import org.eclipse.iot.unide.ppmp.PPMPPackager; @@ -86,7 +84,7 @@ private void insert(Message message, Device device) throws IOException{ .build(); Builder builder = Point.measurement(device.getDeviceID()) - .time(Timestamp.valueOf(message.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(),TimeUnit.MILLISECONDS); + .time(message.getTimestamp().toInstant().toEpochMilli(),TimeUnit.MILLISECONDS); setDeviceInfoForPointer(builder, device); diff --git a/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java b/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java index 30cc8c1..f7d4f09 100644 --- a/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java +++ b/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java @@ -9,8 +9,6 @@ package server.persistency.dao; import java.io.IOException; -import java.sql.Timestamp; -import java.time.ZoneOffset; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -93,7 +91,7 @@ private void insertSingleMeasurement(Measurements measurement, Device device, Pa Iterator>> it = measurement.getSeriesMap().getSeries().entrySet().iterator(); List time_iterator = measurement.getSeriesMap().getSeries().get("$_time"); - long starttime = Timestamp.valueOf(measurement.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = measurement.getTimestamp().toInstant().toEpochMilli(); while (it.hasNext()) { Map.Entry> pair = (Map.Entry>)it.next(); diff --git a/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java b/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java index 3cb64a9..0fcadda 100644 --- a/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java +++ b/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java @@ -10,7 +10,6 @@ import java.io.IOException; import java.sql.Timestamp; -import java.time.ZoneOffset; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -95,7 +94,7 @@ private void insertProcessData(ProcessWrapper processWrapper) throws IOException .consistency(InfluxDB.ConsistencyLevel.ALL) .build(); - long starttime = Timestamp.valueOf(processWrapper.getProcess().getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = processWrapper.getProcess().getTimestamp().toInstant().toEpochMilli(); Builder pointBuilder = Point.measurement(processWrapper.getDevice().getDeviceID()) .time((long)starttime, TimeUnit.MILLISECONDS); @@ -174,7 +173,7 @@ private void insertShutoffValues(Process process, Device device, Part part) thro Iterator> iterator = process.getShutOffValuesMap().getShutOffValues().entrySet().iterator(); - long starttime = Timestamp.valueOf(process.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = process.getTimestamp().toInstant().toEpochMilli(); while (iterator.hasNext()) { @@ -221,7 +220,7 @@ private void insertSpecialValues(Measurements measurement, Device device, Part p .build(); Iterator> iterator = measurement.getSpecialValues().getSpecialValue().entrySet().iterator(); - long starttime = Timestamp.valueOf(measurement.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = measurement.getTimestamp().toInstant().toEpochMilli(); while (iterator.hasNext()) { @@ -289,7 +288,7 @@ private void insertSingleMeasurement(Measurements measurement, Device device, Pa if (time_iterator != null) { - long starttime = Timestamp.valueOf(measurement.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = measurement.getTimestamp().toInstant().toEpochMilli(); while (it.hasNext()) { Map.Entry> pair = (Map.Entry>)it.next(); From eec10c6d75a374df84a598f73d0321c5e9d004f4 Mon Sep 17 00:00:00 2001 From: Henryk Fischer Date: Tue, 5 Sep 2017 15:29:17 +0200 Subject: [PATCH 02/66] Merge branch 'master' of https://github.com/eclipse/unide --- .../java/server/persistency/dao/MachineMessageDAO.java | 4 +--- .../main/java/server/persistency/dao/MeasurementDAO.java | 4 +--- .../src/main/java/server/persistency/dao/ProcessDAO.java | 9 ++++----- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java b/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java index 3945c69..802c5f0 100644 --- a/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java +++ b/servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java @@ -9,8 +9,6 @@ package server.persistency.dao; import java.io.IOException; -import java.sql.Timestamp; -import java.time.ZoneOffset; import java.util.concurrent.TimeUnit; import org.eclipse.iot.unide.ppmp.PPMPPackager; @@ -86,7 +84,7 @@ private void insert(Message message, Device device) throws IOException{ .build(); Builder builder = Point.measurement(device.getDeviceID()) - .time(Timestamp.valueOf(message.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(),TimeUnit.MILLISECONDS); + .time(message.getTimestamp().toInstant().toEpochMilli(),TimeUnit.MILLISECONDS); setDeviceInfoForPointer(builder, device); diff --git a/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java b/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java index 30cc8c1..f7d4f09 100644 --- a/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java +++ b/servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java @@ -9,8 +9,6 @@ package server.persistency.dao; import java.io.IOException; -import java.sql.Timestamp; -import java.time.ZoneOffset; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -93,7 +91,7 @@ private void insertSingleMeasurement(Measurements measurement, Device device, Pa Iterator>> it = measurement.getSeriesMap().getSeries().entrySet().iterator(); List time_iterator = measurement.getSeriesMap().getSeries().get("$_time"); - long starttime = Timestamp.valueOf(measurement.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = measurement.getTimestamp().toInstant().toEpochMilli(); while (it.hasNext()) { Map.Entry> pair = (Map.Entry>)it.next(); diff --git a/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java b/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java index 3cb64a9..0fcadda 100644 --- a/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java +++ b/servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java @@ -10,7 +10,6 @@ import java.io.IOException; import java.sql.Timestamp; -import java.time.ZoneOffset; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -95,7 +94,7 @@ private void insertProcessData(ProcessWrapper processWrapper) throws IOException .consistency(InfluxDB.ConsistencyLevel.ALL) .build(); - long starttime = Timestamp.valueOf(processWrapper.getProcess().getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = processWrapper.getProcess().getTimestamp().toInstant().toEpochMilli(); Builder pointBuilder = Point.measurement(processWrapper.getDevice().getDeviceID()) .time((long)starttime, TimeUnit.MILLISECONDS); @@ -174,7 +173,7 @@ private void insertShutoffValues(Process process, Device device, Part part) thro Iterator> iterator = process.getShutOffValuesMap().getShutOffValues().entrySet().iterator(); - long starttime = Timestamp.valueOf(process.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = process.getTimestamp().toInstant().toEpochMilli(); while (iterator.hasNext()) { @@ -221,7 +220,7 @@ private void insertSpecialValues(Measurements measurement, Device device, Part p .build(); Iterator> iterator = measurement.getSpecialValues().getSpecialValue().entrySet().iterator(); - long starttime = Timestamp.valueOf(measurement.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = measurement.getTimestamp().toInstant().toEpochMilli(); while (iterator.hasNext()) { @@ -289,7 +288,7 @@ private void insertSingleMeasurement(Measurements measurement, Device device, Pa if (time_iterator != null) { - long starttime = Timestamp.valueOf(measurement.getTimestamp().atZoneSameInstant(ZoneOffset.ofHours(1)).toLocalDateTime()).getTime(); + long starttime = measurement.getTimestamp().toInstant().toEpochMilli(); while (it.hasNext()) { Map.Entry> pair = (Map.Entry>)it.next(); From ec719f8a14df2e15623d7b52452cc2d9f6d93cef Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Wed, 25 Oct 2017 16:47:52 +0200 Subject: [PATCH 03/66] Generate OSGi metadata for the Java binding This change makes an OSGi bundle out of the 'ppm-java-binding' bundle by using the Maven Bundle Plugin. Signed-off-by: Jens Reimann --- bindings/ppmp-java-binding/pom.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml index e308521..58b33fc 100644 --- a/bindings/ppmp-java-binding/pom.xml +++ b/bindings/ppmp-java-binding/pom.xml @@ -13,9 +13,11 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding 1.0.0-SNAPSHOT + bundle 2.8.2 + UTF-8 @@ -33,6 +35,15 @@ + + + + org.apache.felix + maven-bundle-plugin + 3.3.0 + true + + From e6e337e42825da1ee77d486fe8bf9603705b6b7b Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Tue, 12 Dec 2017 16:33:08 +0100 Subject: [PATCH 04/66] refactor(pom): deploy to eclipse repo Signed-off-by: Axel Meinhardt --- bindings/ppmp-java-binding/pom.xml | 64 +++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml index 58b33fc..9b35853 100644 --- a/bindings/ppmp-java-binding/pom.xml +++ b/bindings/ppmp-java-binding/pom.xml @@ -15,6 +15,19 @@ 1.0.0-SNAPSHOT bundle + + + repo.eclipse.org + Unide Repository - Releases + https://repo.eclipse.org/content/repositories/unide-releases/ + + + repo.eclipse.org + Unide Repository - Snapshots + https://repo.eclipse.org/content/repositories/unide-snapshots/ + + + 2.8.2 UTF-8 @@ -44,7 +57,54 @@ true - + + + + + + eclipse_jar_signing + + false + + enableEclipseJarSigner + + + + + eclipse-repo + Eclipse CBI Repository + + true + + + false + + https://repo.eclipse.org/content/repositories/cbi-releases/ + + + + + + org.eclipse.cbi.maven.plugins + eclipse-jarsigner-plugin + 1.1.4 + + true + + + + sign-jars + verify + + sign + + + + + + + + @@ -86,4 +146,4 @@ test - \ No newline at end of file + From 42fdbd182c89d284f7193bf61f76c3358655071e Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 13 Dec 2017 09:36:08 +0100 Subject: [PATCH 05/66] refactor(pom): deploy server to eclipse repo Signed-off-by: Axel Meinhardt --- bindings/ppmp-java-binding/pom.xml | 98 ++++----- servers/pom.xml | 16 +- servers/rest/pom.xml | 329 +++++++++++++++++------------ 3 files changed, 252 insertions(+), 191 deletions(-) diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml index 9b35853..5032fda 100644 --- a/bindings/ppmp-java-binding/pom.xml +++ b/bindings/ppmp-java-binding/pom.xml @@ -1,5 +1,5 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.eclipse.iot.unide.ppmp @@ -57,54 +57,54 @@ true - + - - - - eclipse_jar_signing - - false - - enableEclipseJarSigner - - - - - eclipse-repo - Eclipse CBI Repository - - true - - - false - - https://repo.eclipse.org/content/repositories/cbi-releases/ - - - - - - org.eclipse.cbi.maven.plugins - eclipse-jarsigner-plugin - 1.1.4 - - true - - - - sign-jars - verify - - sign - - - - - - - - + + + + eclipse_jar_signing + + false + + enableEclipseJarSigner + + + + + eclipse-repo + Eclipse CBI Repository + + true + + + false + + https://repo.eclipse.org/content/repositories/cbi-releases/ + + + + + + org.eclipse.cbi.maven.plugins + eclipse-jarsigner-plugin + 1.1.4 + + true + + + + sign-jars + verify + + sign + + + + + + + + diff --git a/servers/pom.xml b/servers/pom.xml index 26b612e..1ebef84 100644 --- a/servers/pom.xml +++ b/servers/pom.xml @@ -1,11 +1,11 @@ @@ -15,12 +15,12 @@ unide-servers This projects provides several server implementations for different protocols. - org.eclipse.iot.unide.ppmp - unide-parent - 0.0.1 - ../ + org.eclipse.iot.unide.ppmp + unide-parent + 0.0.1 + ../ - rest + rest - \ No newline at end of file + diff --git a/servers/rest/pom.xml b/servers/rest/pom.xml index 17f6dd9..5e96ffe 100644 --- a/servers/rest/pom.xml +++ b/servers/rest/pom.xml @@ -1,148 +1,209 @@ 4.0.0 ppmp-server jar - + - - Eclipse Public License - Version 1.0 - http://www.eclipse.org/org/documents/epl-v10.php - - - + + Eclipse Public License - Version 1.0 + http://www.eclipse.org/org/documents/epl-v10.php + + + unide-server - - - - org.influxdb - influxdb-java - 2.5 - - - com.networknt - json-schema-validator - 0.1.7 - - - com.fasterxml.jackson.core - jackson-core - 2.8.6 - - - com.fasterxml.jackson.core - jackson-databind - 2.8.6 - - - org.eclipse.iot.unide.ppmp - ppmp-java-binding - 1.0.0-SNAPSHOT - - - log4j - log4j - 1.2.17 - - - io.vertx - vertx-web - 3.4.1 - - - com.googlecode.json-simple - json-simple - 1.1.1 - - - io.vertx - vertx-unit - 3.4.1 - test - - - commons-io - commons-io - 2.5 - test - - - junit - junit - 4.12 - test - - - - - - - src/main/resources - - **/*.json - **/*.properties - - - - src/test/resources - - **/*.json - - - - - - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - package - - shade - - - - - - io.vertx.core.Starter - server.endpoints.RestEndpoints - - - - META-INF/services/io.vertx.core.spi.VerticleFactory - - - - ${project.build.directory}/${project.artifactId}-${project.version}-fat.jar - - - - - - - - - unide-servers - org.eclipse.iot.unide.ppmp - 0.0.1 - ../ - - \ No newline at end of file + + + + repo.eclipse.org + Unide Repository - Releases + https://repo.eclipse.org/content/repositories/unide-releases/ + + + repo.eclipse.org + Unide Repository - Snapshots + https://repo.eclipse.org/content/repositories/unide-snapshots/ + + + + + + + org.influxdb + influxdb-java + 2.5 + + + com.networknt + json-schema-validator + 0.1.7 + + + com.fasterxml.jackson.core + jackson-core + 2.8.6 + + + com.fasterxml.jackson.core + jackson-databind + 2.8.6 + + + org.eclipse.iot.unide.ppmp + ppmp-java-binding + 1.0.0-SNAPSHOT + + + log4j + log4j + 1.2.17 + + + io.vertx + vertx-web + 3.4.1 + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + io.vertx + vertx-unit + 3.4.1 + test + + + commons-io + commons-io + 2.5 + test + + + junit + junit + 4.12 + test + + + + + + + eclipse_jar_signing + + false + + enableEclipseJarSigner + + + + + eclipse-repo + Eclipse CBI Repository + + true + + + false + + https://repo.eclipse.org/content/repositories/cbi-releases/ + + + + + + org.eclipse.cbi.maven.plugins + eclipse-jarsigner-plugin + 1.1.4 + + true + + + + sign-jars + verify + + sign + + + + + + + + + + + + + src/main/resources + + **/*.json + **/*.properties + + + + src/test/resources + + **/*.json + + + + + + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + package + + shade + + + + + + io.vertx.core.Starter + server.endpoints.RestEndpoints + + + + META-INF/services/io.vertx.core.spi.VerticleFactory + + + + ${project.build.directory}/${project.artifactId}-${project.version}-fat.jar + + + + + + + + + unide-servers + org.eclipse.iot.unide.ppmp + 0.0.1 + ../ + + From cc949575aac589dfd25ff008a92270d7048002f2 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 13 Dec 2017 10:08:50 +0100 Subject: [PATCH 06/66] fix(pom): version Signed-off-by: Axel Meinhardt --- bindings/ppmp-java-binding/pom.xml | 2 +- pom.xml | 70 +++++++++++++++--------------- servers/pom.xml | 2 +- servers/rest/pom.xml | 4 +- 4 files changed, 39 insertions(+), 39 deletions(-) diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml index 5032fda..806a3a1 100644 --- a/bindings/ppmp-java-binding/pom.xml +++ b/bindings/ppmp-java-binding/pom.xml @@ -12,7 +12,7 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding - 1.0.0-SNAPSHOT + 0.1.0-SNAPSHOT bundle diff --git a/pom.xml b/pom.xml index 1d453a3..e104dbb 100644 --- a/pom.xml +++ b/pom.xml @@ -2,11 +2,11 @@ @@ -14,43 +14,43 @@ 4.0.0 org.eclipse.iot.unide.ppmp unide-parent - 0.0.1 + 0.1.0-SNAPSHOT pom - + Unide Unide provides simple and easy to use server, client and binding implementations for using the I4.0 standard Production Performance Management Protocol (PPMP). https://www.eclipse.org/unide/ 2016 - - - - Eclipse Public License - Version 1.0 - http://www.eclipse.org/org/documents/epl-v10.php - - - - - Eclipse Foundation - http://www.eclipse.org/ + + + + Eclipse Public License - Version 1.0 + http://www.eclipse.org/org/documents/epl-v10.php + + + + + Eclipse Foundation + http://www.eclipse.org/ - + - bindings/ppmp-java-binding - servers - - - - - - - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - - - \ No newline at end of file + bindings/ppmp-java-binding + servers + + + + + + + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + + + diff --git a/servers/pom.xml b/servers/pom.xml index 1ebef84..c76bd24 100644 --- a/servers/pom.xml +++ b/servers/pom.xml @@ -17,7 +17,7 @@ org.eclipse.iot.unide.ppmp unide-parent - 0.0.1 + 0.1.0-SNAPSHOT ../ diff --git a/servers/rest/pom.xml b/servers/rest/pom.xml index 5e96ffe..ed05ae8 100644 --- a/servers/rest/pom.xml +++ b/servers/rest/pom.xml @@ -60,7 +60,7 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding - 1.0.0-SNAPSHOT + 0.1.0-SNAPSHOT log4j @@ -203,7 +203,7 @@ unide-servers org.eclipse.iot.unide.ppmp - 0.0.1 + 0.1.0-SNAPSHOT ../ From 9bf61d9659ba45627ec7bd04a99c3f8538bb372a Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Tue, 16 Jan 2018 15:50:33 +0100 Subject: [PATCH 07/66] chore(release): setting version for 0.1.0 release Signed-off-by: Axel Meinhardt --- bindings/ppmp-java-binding/pom.xml | 2 +- pom.xml | 2 +- servers/pom.xml | 2 +- servers/rest/pom.xml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml index 806a3a1..f9fd5b2 100644 --- a/bindings/ppmp-java-binding/pom.xml +++ b/bindings/ppmp-java-binding/pom.xml @@ -12,7 +12,7 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding - 0.1.0-SNAPSHOT + 0.1.0 bundle diff --git a/pom.xml b/pom.xml index e104dbb..712fd4f 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 4.0.0 org.eclipse.iot.unide.ppmp unide-parent - 0.1.0-SNAPSHOT + 0.1.0 pom Unide diff --git a/servers/pom.xml b/servers/pom.xml index c76bd24..14badd6 100644 --- a/servers/pom.xml +++ b/servers/pom.xml @@ -17,7 +17,7 @@ org.eclipse.iot.unide.ppmp unide-parent - 0.1.0-SNAPSHOT + 0.1.0 ../ diff --git a/servers/rest/pom.xml b/servers/rest/pom.xml index ed05ae8..6b2cae0 100644 --- a/servers/rest/pom.xml +++ b/servers/rest/pom.xml @@ -60,7 +60,7 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding - 0.1.0-SNAPSHOT + 0.1.0 log4j @@ -203,7 +203,7 @@ unide-servers org.eclipse.iot.unide.ppmp - 0.1.0-SNAPSHOT + 0.1.0 ../ From 168caffae6799f85fb4390430ffb913e4fc6742a Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Tue, 16 Jan 2018 16:02:02 +0100 Subject: [PATCH 08/66] chore(release): bumping version to 0.2.0-SNAPSHOT --- bindings/ppmp-java-binding/pom.xml | 2 +- pom.xml | 2 +- servers/pom.xml | 2 +- servers/rest/pom.xml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml index f9fd5b2..1352569 100644 --- a/bindings/ppmp-java-binding/pom.xml +++ b/bindings/ppmp-java-binding/pom.xml @@ -12,7 +12,7 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding - 0.1.0 + 0.2.0-SNAPSHOT bundle diff --git a/pom.xml b/pom.xml index 712fd4f..f766af8 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 4.0.0 org.eclipse.iot.unide.ppmp unide-parent - 0.1.0 + 0.2.0-SNAPSHOT pom Unide diff --git a/servers/pom.xml b/servers/pom.xml index 14badd6..abc456d 100644 --- a/servers/pom.xml +++ b/servers/pom.xml @@ -17,7 +17,7 @@ org.eclipse.iot.unide.ppmp unide-parent - 0.1.0 + 0.2.0-SNAPSHOT ../ diff --git a/servers/rest/pom.xml b/servers/rest/pom.xml index 6b2cae0..807401b 100644 --- a/servers/rest/pom.xml +++ b/servers/rest/pom.xml @@ -60,7 +60,7 @@ org.eclipse.iot.unide.ppmp ppmp-java-binding - 0.1.0 + 0.2.0-SNAPSHOT log4j @@ -203,7 +203,7 @@ unide-servers org.eclipse.iot.unide.ppmp - 0.1.0 + 0.2.0-SNAPSHOT ../ From 28d45c95173cfad22434c525a92761b7708614cd Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 17 Jan 2018 12:18:12 +0100 Subject: [PATCH 09/66] refact(bindings, website): put bindings in seperate repo, added new website Signed-off-by: Axel Meinhardt --- website/.babelrc | 13 + website/.editorconfig | 13 + website/.eslintrc | 101 + website/.gitignore | 11 + website/README.md | 22 + .../assets/schemas/v2/measurement_schema.json | 172 + website/assets/schemas/v2/message_schema.json | 110 + website/assets/schemas/v2/process_schema.json | 376 + website/assets/styles.scss | 97 + website/assets/variables.scss | 102 + website/blog/DZone-article-published.md | 7 + website/blog/New-process-message-spec.md | 6 + website/blog/News-coverage.md | 12 + website/blog/Official launch.md | 17 + website/blog/Project-approved.md | 15 + website/blog/Unide-at-BCX.md | 17 + website/blog/Unide-proposal-online.md | 17 + website/blog/Validator-Online.md | 18 + website/blog/i40-testbed-started.md | 8 + website/components/blogArchives.vue | 45 + website/components/collapsibleCard.vue | 125 + website/components/navbar.vue | 113 + website/components/recentPosts.vue | 34 + website/components/schemaDetail.vue | 381 + website/components/schemaLink.vue | 44 + website/components/schemaToc.vue | 51 + website/layouts/default.vue | 62 + website/layouts/sidebar.vue | 80 + website/modules/postsIdxPlugin.js | 176 + website/nuxt.config.js | 75 + website/package-lock.json | 12303 ++++++++++++++++ website/package.json | 47 + website/pages/article.vue | 94 + website/pages/blog.vue | 99 + website/pages/faq.vue | 61 + website/pages/index.vue | 82 + website/pages/proposal.vue | 88 + website/pages/specification.vue | 124 + website/pages/specification/index.vue | 18 + .../pages/specification/machine-message.vue | 109 + .../specification/measurement-message.vue | 132 + .../pages/specification/process-message.vue | 212 + website/plugins/prismjs.js | 2 + website/static/favicon.ico | Bin 0 -> 33310 bytes website/static/images/analysis.jpg | Bin 0 -> 39121 bytes website/static/images/collaborators_v2.uml | 40 + website/static/images/componentOverview.uml | 40 + website/static/images/eclipse-426x100.png | Bin 0 -> 7371 bytes website/static/images/languages.png | Bin 0 -> 60895 bytes website/static/images/logo.png | Bin 0 -> 6737 bytes website/static/images/machines.jpg | Bin 0 -> 56812 bytes website/static/images/measurementPayload.uml | 66 + website/static/images/messagePayload.uml | 51 + website/static/images/processPayload.uml | 125 + 54 files changed, 16013 insertions(+) create mode 100644 website/.babelrc create mode 100644 website/.editorconfig create mode 100644 website/.eslintrc create mode 100644 website/.gitignore create mode 100644 website/README.md create mode 100644 website/assets/schemas/v2/measurement_schema.json create mode 100644 website/assets/schemas/v2/message_schema.json create mode 100644 website/assets/schemas/v2/process_schema.json create mode 100644 website/assets/styles.scss create mode 100644 website/assets/variables.scss create mode 100644 website/blog/DZone-article-published.md create mode 100644 website/blog/New-process-message-spec.md create mode 100644 website/blog/News-coverage.md create mode 100644 website/blog/Official launch.md create mode 100644 website/blog/Project-approved.md create mode 100644 website/blog/Unide-at-BCX.md create mode 100644 website/blog/Unide-proposal-online.md create mode 100644 website/blog/Validator-Online.md create mode 100644 website/blog/i40-testbed-started.md create mode 100644 website/components/blogArchives.vue create mode 100644 website/components/collapsibleCard.vue create mode 100644 website/components/navbar.vue create mode 100644 website/components/recentPosts.vue create mode 100644 website/components/schemaDetail.vue create mode 100644 website/components/schemaLink.vue create mode 100644 website/components/schemaToc.vue create mode 100644 website/layouts/default.vue create mode 100644 website/layouts/sidebar.vue create mode 100644 website/modules/postsIdxPlugin.js create mode 100644 website/nuxt.config.js create mode 100644 website/package-lock.json create mode 100644 website/package.json create mode 100644 website/pages/article.vue create mode 100644 website/pages/blog.vue create mode 100644 website/pages/faq.vue create mode 100644 website/pages/index.vue create mode 100644 website/pages/proposal.vue create mode 100644 website/pages/specification.vue create mode 100644 website/pages/specification/index.vue create mode 100644 website/pages/specification/machine-message.vue create mode 100644 website/pages/specification/measurement-message.vue create mode 100644 website/pages/specification/process-message.vue create mode 100644 website/plugins/prismjs.js create mode 100644 website/static/favicon.ico create mode 100644 website/static/images/analysis.jpg create mode 100644 website/static/images/collaborators_v2.uml create mode 100644 website/static/images/componentOverview.uml create mode 100644 website/static/images/eclipse-426x100.png create mode 100644 website/static/images/languages.png create mode 100644 website/static/images/logo.png create mode 100644 website/static/images/machines.jpg create mode 100644 website/static/images/measurementPayload.uml create mode 100644 website/static/images/messagePayload.uml create mode 100644 website/static/images/processPayload.uml diff --git a/website/.babelrc b/website/.babelrc new file mode 100644 index 0000000..02d5696 --- /dev/null +++ b/website/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": [["env", { + "targets": { + "browsers": [ + "> 1%", + "not ie < 11" + ] + } + }]], + "plugins": [ + "transform-runtime" + ] +} diff --git a/website/.editorconfig b/website/.editorconfig new file mode 100644 index 0000000..9142239 --- /dev/null +++ b/website/.editorconfig @@ -0,0 +1,13 @@ +# editorconfig.org +root = true + +[*] +indent_size = 2 +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/website/.eslintrc b/website/.eslintrc new file mode 100644 index 0000000..760e5c6 --- /dev/null +++ b/website/.eslintrc @@ -0,0 +1,101 @@ +{ + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 6 + }, + "plugins": [ + "standard", "promise", "html", "babel" + ], + "extends": ["standard", "vue"], + "env": { + "browser": true, + "jquery": false + }, + "globals": { + "chrome": true, + "browser": true, + "nw": true + }, + "rules": { + "key-spacing": ["error", { + "align": { + "beforeColon": false, + "afterColon": true, + "on": "value" + }, + "multiLine": { + "beforeColon": false, + "afterColon": true + } + }], + "brace-style": ["warn", "1tbs", { + "allowSingleLine": false + }], + "camelcase": ["error", { + "properties": "always" + }], + "comma-style": ["warn", "last"], + "consistent-return": ["off"], + "default-case": ["error"], + "indent": ["error", 2, { + "SwitchCase": 1, + "MemberExpression": 1, + "VariableDeclarator": { + "var": 2, + "let": 2, + "const": 3 + }, + "FunctionDeclaration": { + "body": 1, + "parameters": "first" + }, + "FunctionExpression": { + "body": 1, + "parameters": "first" + }, + "CallExpression": { + "arguments": "first" + }, + "ArrayExpression": "first", + "ObjectExpression": 1 + }], + "keyword-spacing": ["error", { + "before": true, + "after": true, + "overrides": { + "if": { + "after": false + }, + "for": { + "after": false + }, + "while": { + "after": false + }, + "catch": { + "after": false + } + } + }], + "no-multi-spaces": "off", + "no-shadow": ["warn"], + "no-unused-vars": ["warn"], + "no-unused-expressions": "off", + "no-use-before-define": ["error", { + "functions": true, + "classes": true, + "variables": true + }], + "one-var": ["error", "always"], + "one-var-declaration-per-line": ["error", "always"], + "quote-props": ["warn", "as-needed"], + "semi": ["error", "always"], + "space-before-function-paren": ["error", "never"], + "vars-on-top": "error", + + "promise/param-names": "warn", + "promise/always-return": "warn", + "promise/catch-or-return": "warn" + } +} + diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 0000000..7ee6115 --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,11 @@ +# dependencies +node_modules + +# logs +npm-debug.log + +# Nuxt build +.nuxt + +# Nuxt generate +dist diff --git a/website/README.md b/website/README.md new file mode 100644 index 0000000..e2e9360 --- /dev/null +++ b/website/README.md @@ -0,0 +1,22 @@ +# unide + +> Eclipse Unide: Understand Industry devices + +## Build Setup + +``` bash +# install dependencies +$ npm install # Or yarn install + +# serve with hot reload at localhost:3000 +$ npm run dev + +# build for production and launch server +$ npm run build +$ npm start + +# generate static project +$ npm run generate +``` + +For detailed explanation on how things work, checkout the [Nuxt.js docs](https://github.com/nuxt/nuxt.js). diff --git a/website/assets/schemas/v2/measurement_schema.json b/website/assets/schemas/v2/measurement_schema.json new file mode 100644 index 0000000..cc9c10d --- /dev/null +++ b/website/assets/schemas/v2/measurement_schema.json @@ -0,0 +1,172 @@ +{ + "type": "object", + "properties": { + "content-spec": { + "type": "string", + "default": "urn:spec://bosch.com/ppm/measurement-message#v2", + "description": "Defines what the format version is" + }, + "device": { + "type": "object", + "description": "Contains information about the device", + "properties": { + "deviceID": { + "type": "string", + "description": "The unique ID of the device. As this is used to identify a device independently from time or location the ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "operationalStatus": { + "type": "string", + "description": "The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager" + } + }, + "additionalProperties": false, + "required": [ + "deviceID" + ] + }, + "part": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "partID": { + "type": "string", + "description": "Identifies a part. This ID comes from a 3rd party system and thus we have no guarantees if this is unique or not.", + "maxLength": 256 + }, + "partTypeID": { + "type": "string", + "description": "Identifies a part type", + "maxLength": 256 + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + } + }, + "additionalProperties": false, + "required": [] + }, + "measurements": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "limits": { + "type": "object", + "description": "Provides information about limits for data provided in the series element.", + "patternProperties": { + "^[^$].+": { + "type": "object", + "description": "The key shall be the name of a measurement point (element of series element). The value is a structure of different upper/lower limits.", + "properties": { + "lowerError": { + "type": "number", + "description": "Indicates an error if this limit is underrun" + }, + "lowerWarn": { + "type": "number", + "description": "Indicates a warning if this limit is underrun" + }, + "target": { + "type": "number", + "description": "Indicates the intented target value of the measurement" + }, + "upperError": { + "type": "number", + "description": "Indicates an error if this limit is exceeded" + }, + "upperWarn": { + "type": "number", + "description": "Indicates a warning if this limit is exceeded" + } + } + } + }, + "additionalProperties": false, + "required": [] + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "series": { + "type": "object", + "description": "The series data collected for the measurements. Every entry matches a Measurement Point of the Device Type. In the case of a time series, one column contains the time offsets.", + "properties": { + "$_time": { + "type": "array", + "description": "The time offset in milliseconds (positive values in ascending order starting with 0) to the 'ts' field of the measurement", + "items": { + "type": "integer" + } + } + }, + "patternProperties": { + "^[^$].+": { + "type": "array", + "items": { + "type": "number" + } + } + }, + "required": [ + "$_time" + ], + "minProperties": 2, + "additionalProperties": false + }, + "ts": { + "format": "date-time", + "type": "string", + "description": "Start time of the the data measurment in ISO 8601 format" + } + }, + "required": [ + "ts", + "series" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "content-spec", + "device", + "measurements" + ] +} diff --git a/website/assets/schemas/v2/message_schema.json b/website/assets/schemas/v2/message_schema.json new file mode 100644 index 0000000..cc00387 --- /dev/null +++ b/website/assets/schemas/v2/message_schema.json @@ -0,0 +1,110 @@ +{ + "type": "object", + "properties": { + "content-spec": { + "type": "string", + "default": "urn:spec://bosch.com/ppm/measurement-message#v2", + "description": "Defines what the format version is" + }, + "device": { + "type": "object", + "description": "Contains information about the device", + "properties": { + "deviceID": { + "type": "string", + "description": "The unique ID of the device. As this is used to identify a device independently from time or location the ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "operationalStatus": { + "type": "string", + "description": "The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager" + } + }, + "additionalProperties": false, + "required": [ + "deviceID" + ] + }, + "messages": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "description": "Collection of messages", + "properties": { + "code": { + "type": "string", + "description": "Code identifying the problem described in the message. The value often stems from the machine e.g. a PLC code. Is similar to code in measurement interface.", + "maxLength": 36 + }, + "description": { + "type": "string", + "description": "The description is used to describe the purpose of the message, e.g. the problem", + "maxLength": 2000 + }, + "hint": { + "type": "string", + "description": "In case a problem is reported, the hint can be used to point out a possible solution", + "maxLength": 2000 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "origin": { + "type": "string", + "description": "The origin of the message if not the device identified by deviceID in the header element. Could be used to identify a subsystem or a particular sensor/part of the device where the message actually relates to." + }, + "severity": { + "type": "string", + "description": "Severity of the message", + "enum": [ + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN" + ], + "default": "UNKNOWN" + }, + "title": { + "type": "string", + "description": "Title of the message. If title not set the code will be stored as fallback", + "maxLength": 1000 + }, + "ts": { + "format": "date-time", + "type": "string", + "description": "Start time of the the data measurment in ISO 8601 format" + }, + "type": { + "type": "string", + "description": "The type of message. Default is DEVICE but can be set to TECHNICAL_INFO indicating a problem with the integration of the actual device. Allowed values: DEVICE, TECHNICAL_INFO", + "enum": [ + "DEVICE", + "TECHNICAL_INFO" + ], + "default": "DEVICE" + } + }, + "required": [ + "ts", + "code" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "content-spec", + "device", + "messages" + ] +} diff --git a/website/assets/schemas/v2/process_schema.json b/website/assets/schemas/v2/process_schema.json new file mode 100644 index 0000000..ccbe323 --- /dev/null +++ b/website/assets/schemas/v2/process_schema.json @@ -0,0 +1,376 @@ +{ + "definitions": { + "device": { + "type": "object", + "description": "Contains information about the device", + "properties": { + "deviceID": { + "type": "string", + "description": "The unique ID of the device. As this is used to identify a device independently from time or location the ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "operationalStatus": { + "type": "string", + "description": "The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager" + } + }, + "additionalProperties": false, + "required": [ + "deviceID" + ] + }, + "limit": { + "description": "Provides information about limits for data provided in the series element. The limits is an JSON object where the key is the name of a Measurement Point (see also series element) and the value is a structure of upper/lower limits", + "type": "object", + "patternProperties": { + "^[^$].+": { + "oneOf": [{ + "type": "object", + "description": "A constant limit for all corresponding measurements", + "properties": { + "lowerError": { + "description": "Indicates an error if this limit is underrun", + "type": "number" + }, + "lowerWarn": { + "description": "Indicates a warning if this limit is underrun", + "type": "number" + }, + "target": { + "description": "Indicates the intented target value of the measurement", + "type": "number" + }, + "upperError": { + "description": "Indicates an error if this limit is exceeded", + "type": "number" + }, + "upperWarn": { + "description": "Indicates a warning if this limit is exceeded", + "type": "number" + } + }, + "additionalProperties": false + }, { + "type": "object", + "description": "An array of limit values. The items of the array correspond to the respective measurements at the same position.", + "properties": { + "lowerError": { + "description": "Indicates an error if these limits is underrun. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "lowerWarn": { + "description": "Indicates a warning if these limits is underrun. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "target": { + "description": "Indicates the intented target values. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "upperError": { + "description": "Indicates an error if these limits is exceeded. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "upperWarn": { + "description": "Indicates a warning if these limits is exceeded. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + } + }, + "additionalProperties": false + }] + } + } + } + }, + "type": "object", + "properties": { + "content-spec": { + "type": "string", + "default": "urn:spec://bosch.com/ppm/process-message#v2", + "description": "Defines what the format version is" + }, + "device": { "$ref": "#/definitions/device" }, + "part": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "partID": { + "type": "string", + "description": "Identifies a part. This ID comes from a 3rd party system and thus we have no guarantees if this is unique or not.", + "maxLength": 256 + }, + "partTypeID": { + "type": "string", + "description": "Identifies a part type", + "maxLength": 256 + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "type": { + "type": "string", + "enum": [ + "SINGLE", + "BATCH" + ], + "description": "Describes the type of the part. Type SINGLE means a single item is processed. Type BATCH means multiple items of the same type are processed.", + "default": "SINGLE" + } + }, + "required": [], + "additionalProperties": false + }, + "process": { + "type": "object", + "description": "Contains information about the process. If the process JSON object is set, then all information in measurements are process phases", + "properties": { + "externalProcessId": { + "type": "string", + "description": "The process Id identifies the process as part of long living process. The process Id can be used to connect multiple processes in a manufacturing chain. The Id has to be set and tracked by the different devices in the chain.", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "program": { + "type": "object", + "description": "Contains information about the program that was used in the process.", + "properties": { + "id": { + "type": "string", + "description": "The ID of the program", + "maxLength": 36 + }, + "lastChangedDate": { + "type": "string", + "format": "date-time", + "description": "The date when the program was last changed" + }, + "name": { + "type": "string", + "description": "The name of the program", + "maxLength": 256 + } + }, + "additionalProperties": false, + "required": [ + "id" + ] + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "shutoffPhase": { + "type": "string", + "description": "The ID of the phase that led to stop the process. The shutOffPhase is the phase of the process in which either pre-defined parameters are met to successfully finish the process or an error that stopped the process. That is not necessarily the last phase. The shutOffPhase should be sent when the last process phase is sent." + }, + "shutoffValues": { + "type": "object", + "description": "The shutoff values contain the values of the process that stopped the process. The shutoffValues is a JSON object where the key is the name of a Measurement Point (see also series element) and the value is a structure of different upper/lower limits and the actual value as described below.", + "patternProperties": { + "^[^$].+": { + "type": "object", + "properties": { + "lowerError": { + "type": "number", + "description": "Indicates an error if this limit is underrun" + }, + "lowerWarn": { + "type": "number", + "description": "Indicates a warning if this limit is underrun" + }, + "target": { + "type": "number", + "description": "Indicates the intented target value of the measurement" + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Time of the measured value" + }, + "upperWarn": { + "type": "number", + "description": "Indicates a warning if this limit is exceeded" + }, + "upperError": { + "type": "number", + "description": "Indicates an error if this limit is exceeded" + }, + "value": { + "type": "number", + "description": "The final value of the process" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Start time of the process" + } + }, + "additionalProperties": false, + "required": [ + "ts" + ] + }, + "measurements": { + "type": "array", + "items": { + "type": "object", + "description": "Contains the different phases of the process. Each phase represents an execution step in the process and contains information about that specific execution step. All phases should be sorted by the timestamp of the phase.", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "limits": { + "$ref": "#/definitions/limit" + }, + "name": { + "type": "string", + "description": "The name of the process phase", + "maxLength": 256 + }, + "phase": { + "type": "string", + "description": "The id of the process phase", + "maxLength": 256 + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "specialValues": { + "type": "array", + "items": { + "type": "object", + "description": "Provides information about special or interesting values during the process phase.", + "properties": { + "$_time": { + "type": "integer", + "description": "The time offset in milliseconds to the 'ts' field of the measurement" + }, + "name": { + "type": "string", + "description": "indicates the type of the specialValue (e.g. 'endanzug', 'turningPoint' etc.)" + }, + "value": { + "type": "object", + "description": "Contains the actual (multidimensional) value of interest. Similarly to series, every entry matches a Measurement Point of the device", + "patternProperties": { + "^[^$].+": { + "type": "number" + } + }, + "minProperties": 1 + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "series": { + "type": "object", + "description": "The series data collected for the measurements. Every entry matches a Measurement Point of the device. In the case of a time series, one column contains the time offset in milliseconds (positive values in ascending order starting with 0). In this case the value is the keyword $_time. The maximum size for the measurement value is 10 positions before the decimal point. The decimal places are truncated to 2 in the historical data.", + "properties": { + "$_time": { + "type": "array", + "description": "The time offset in milliseconds (positive values in ascending order starting with 0) to the 'ts' field of the measurement", + "items": { + "type": "integer" + } + } + }, + "patternProperties": { + "^[^$].+": { + "type": "array", + "items": { + "type": "number" + } + } + }, + "additionalProperties": false + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Start time of the the data measurment in ISO 8601 format" + } + }, + "additionalProperties": false, + "required": [ + "ts", + "series" + ] + } + } + }, + "required": [ + "content-spec", + "device", + "process", + "measurements" + ] +} diff --git a/website/assets/styles.scss b/website/assets/styles.scss new file mode 100644 index 0000000..e95381a --- /dev/null +++ b/website/assets/styles.scss @@ -0,0 +1,97 @@ +@import "~assets/variables.scss"; +@import "~bulma/bulma"; +@import "~font-awesome/scss/font-awesome.scss"; +@import "~prismjs/themes/prism.css"; + +body { + overflow: visible; +} +a:hover { + text-decoration: underline; +} +.title { + font-weight: normal; +} + +.router-link-active { + font-weight: bold; +} +.footer { + font-size: 0.875em; + border-top: 1px solid $grey-lighter; + margin-left: -1.25rem; + margin-right: -1.25rem; + padding-top: 1.25rem; + margin-top: 1rem; + padding: 16px 0px 32px; + padding: 1rem 0 2rem; + span:not(:last-child)::after{ + content: "\2219"; + font-size: 1em; + font-weight: bold; + margin: 0 1em; + } +} +.is-loading { + position: relative; + * { + pointer-events: none; + opacity: 0.5; + } + &:after { + @include loader; + position: relative; + width: 1em; + position: absolute; + top: 4em; + left: calc(50% - 2.5em); + width: 5em; + height: 5em; + border-width: 0.25em; + } +} +.__nuxt-error-page { + position: relative; +} +.accordion { + margin-top: 2em; + > :first-child { + &, & > header { + border-top-left-radius: $radius-large; + border-top-right-radius: $radius-large; + } + } + :last-child { + & { + border-bottom-left-radius: $radius-large; + border-bottom-right-radius: $radius-large; + } + &.collapsed { + & > header { + border-bottom-left-radius: $radius-large; + border-bottom-right-radius: $radius-large; + } + } + } +} + +/* prism */ +pre[class*="language-"] { + background: $light; + border-radius: $radius-large; + border: 1px solid $grey-lighter; + .number { + align-items: inherit; + background-color: inherit; + border-radius: inherit; + display: inherit; + font-size: inherit; + height: inherit; + justify-content: inherit; + margin-right: inherit; + min-width: inherit; + padding: inherit; + text-align: inherit; + vertical-align: inherit; + } +} diff --git a/website/assets/variables.scss b/website/assets/variables.scss new file mode 100644 index 0000000..5414252 --- /dev/null +++ b/website/assets/variables.scss @@ -0,0 +1,102 @@ +// https://www.w3.org/WAI/ER/WD-AERT/#q100 +@function brightness($color) { + @return ((red($color) * .299) + (green($color) * .587) + (blue($color) * .114)) / 255 * 100%; +} +@function findColorInvert($color) { + @if (abs(brightness($color)) > 50) { + @return black; + } + @return white; +} + +$fa-font-path: "~font-awesome/fonts"; + +// Bosch +$bosch-prussianblue: rgb(0, 50, 100); +$bosch-matisse: rgb(58, 90, 130); +$bosch-wildblueyonder: rgb(110, 140, 178); +$bosch-spindle: rgb(168, 186, 210); +$bosch-red: rgb(226, 0, 21); +$bosch-aluminium: rgb(128, 130, 133); +$bosch-darkgray: rgb(167, 167, 167); +$bosch-gainsboro: rgb(221, 221, 221); + +/* +rgb(168, 1, 99) +rgb(63, 19, 108) +rgb(8, 66, 126) +rgb(14, 120, 197) +rgb(19, 153, 160) +rgb(103, 180, 25) +rgb(10, 81, 57) +rgb(66, 76, 88) +*/ + +//New CD colors: +$bosch-eggplant: rgb(185, 2, 118); +$bosch-windsor: rgb(80, 35, 127); +$bosch-cobalt: rgb(0, 86, 145); +$bosch-pacificblue: rgb(0, 142, 207); +$bosch-bondiblue: rgb(0, 168, 176); +$bosch-lima: rgb(120, 190, 32); +$bosch-watercourse: rgb(0, 98, 73); +$bosch-fiord: rgb(82, 95, 107); + +$bosch-prussianblue-invert: findColorInvert($bosch-prussianblue); +$bosch-matisse-invert: findColorInvert($bosch-matisse); +$bosch-wildblueyonder-invert: findColorInvert($bosch-wildblueyonder); +$bosch-spindle-invert: findColorInvert($bosch-spindle); +$bosch-red-invert: findColorInvert($bosch-red); +$bosch-aluminium-invert: findColorInvert($bosch-aluminium); +$bosch-darkgray-invert: findColorInvert($bosch-darkgray); +$bosch-gainsboro-invert: findColorInvert($bosch-gainsboro); +$bosch-eggplant-invert: findColorInvert($bosch-eggplant); +$bosch-windsor-invert: findColorInvert($bosch-windsor); +$bosch-cobalt-invert: findColorInvert($bosch-cobalt); +$bosch-pacificblue-invert: findColorInvert($bosch-pacificblue); +$bosch-bondiblue-invert: findColorInvert($bosch-bondiblue); +$bosch-lima-invert: findColorInvert($bosch-lima); +$bosch-watercourse-invert: findColorInvert($bosch-watercourse); +$bosch-fiord-invert: findColorInvert($bosch-fiord); + +$bosch-colors: ( + "bosch-prussianblue": ($bosch-prussianblue, $bosch-prussianblue-invert), + "bosch-matisse": ($bosch-matisse, $bosch-matisse-invert), + "bosch-wildblueyonder": ($bosch-wildblueyonder, $bosch-wildblueyonder-invert), + "bosch-spindle": ($bosch-spindle, $bosch-spindle-invert), + "bosch-red": ($bosch-red, $bosch-red-invert), + "bosch-aluminium": ($bosch-aluminium, $bosch-aluminium-invert), + "bosch-darkgray": ($bosch-darkgray, $bosch-darkgray-invert), + "bosch-gainsboro": ($bosch-gainsboro, $bosch-gainsboro-invert), + "bosch-eggplant": ($bosch-eggplant, $bosch-eggplant-invert), + "bosch-windsor": ($bosch-windsor, $bosch-windsor-invert), + "bosch-cobalt": ($bosch-cobalt, $bosch-cobalt-invert), + "bosch-pacificblue": ($bosch-pacificblue, $bosch-pacificblue-invert), + "bosch-bondiblue": ($bosch-bondiblue, $bosch-bondiblue-invert), + "bosch-lima": ($bosch-lima, $bosch-lima-invert), + "bosch-watercourse": ($bosch-watercourse, $bosch-watercourse-invert), + "bosch-fiord": ($bosch-fiord, $bosch-fiord-invert) +); + +$primary: $bosch-windsor; +$success: $bosch-lima; +$info: $bosch-pacificblue; +$warning: $bosch-eggplant; +$danger: $bosch-red; + +$primary-invert: findColorInvert($primary); +$success-invert: white; +$info-invert: findColorInvert($info); +$warning-invert: findColorInvert($warning); +$danger-invert: findColorInvert($danger); + +$link: $bosch-windsor; +$link-hover: $bosch-lima; +$link-focus-border: $bosch-windsor; +// $card-cap-bg: $gray-lightest; + +$family-sans-serif: Arial, Tahoma, Verdana, FontAwesome; +@import "~bulma/sass/utilities/_all.sass"; + +$widescreen: $desktop; +$fullhd: $desktop; diff --git a/website/blog/DZone-article-published.md b/website/blog/DZone-article-published.md new file mode 100644 index 0000000..3a867b5 --- /dev/null +++ b/website/blog/DZone-article-published.md @@ -0,0 +1,7 @@ +--- +title: DZone article published +date: 2017-10-06 00:00:00 +tags: "media" +--- +A new article about PPMP and the Eclipse Unide project was published at [DZone](https://dzone.com/articles/eclipse-unide-a-way-to-establish-an-open-industry)! +It explains how to use the [PPMP validator](https://www.eclipse.org/unide/2017/06/29/Validator-Online/), gives an overview of the InfluxDB / Grafana visualisation and how this setup can be used in an Eclipse Testbed. diff --git a/website/blog/New-process-message-spec.md b/website/blog/New-process-message-spec.md new file mode 100644 index 0000000..45d6473 --- /dev/null +++ b/website/blog/New-process-message-spec.md @@ -0,0 +1,6 @@ +--- +title: New PPMP-Specification for processes +date: 2017-06-01 00:00:00 +tags: "process message" +--- +We’re happy to announce, that the process message specification is online! You can find it at [http://www.eclipse.org/unide/specification](http://www.eclipse.org/unide/specification). With this type of messages you have a standard format for sending data out of discrete and possibly complex processes. ![alt text](/unide/images/processDataPayload.png) diff --git a/website/blog/News-coverage.md b/website/blog/News-coverage.md new file mode 100644 index 0000000..204a692 --- /dev/null +++ b/website/blog/News-coverage.md @@ -0,0 +1,12 @@ +--- +title: News Coverage +date: 2016-09-27 09:14:27 +tags: "media" +--- +After the [Official launch](/unide/2016/09/21/Official%20launch/) of unide and PPMP, there was some media coverage about the project. + +Triggered by a statement by [Bosch CEO Volkmar Denner](http://www.bosch.com/en/com/bosch_group/board_management/dr_rer_nat_volkmar_denner/volkmar-denner.html) on *["initiating new machine language for Industry 4.0"](http://www.bosch-presse.de/pressportal/en/bosch-initiates-new-machine-language-for-industry-4-0-65216.html)*, twitter, blogs and magazines mention PPMP, e.g.: +* [electormagazine](https://www.elektormagazine.com/news/free-ppmp-from-bosch-makes-industry-4-0-open-for-all) +* [computer-automation](http://www.computer-automation.de/feldebene/vernetzung/artikel/134233/) (de) + +Looking forward to spreading the word further. diff --git a/website/blog/Official launch.md b/website/blog/Official launch.md new file mode 100644 index 0000000..623b7ca --- /dev/null +++ b/website/blog/Official launch.md @@ -0,0 +1,17 @@ +--- +title: Official launch +date: 2016-09-21 09:47:43 +tags: "project start" +--- +Today, we officially launch Unide. In the last days, we have redesigned the logo, published Blog posts and started work on the initial (code) contributions. +It even seems like good timing, since there was a [survey in Germany about open platforms & standards in industry 4.0](http://m.heise.de/newsticker/meldung/Umfrage-Unternehmen-fordern-offene-Plattform-fuer-die-Industrie-4-0-3327135.html), basically asking for something like Unide/PPMP. + +### the logo +Unide and PPMP's goal is to enable you to connect machines and receive their measurements / alerts. The logo represents that. It has you ("*U*") highlighted and connects to rings. As a side note, we found that the words almost look like *you-nice*. + +### blog entries +If you are interested in further readings, check out the post at [blog.bosch-si.com](http://blog.bosch-si.com). + +### initial contributions +We are working on creating the initial contributions for Unide. Since there are a few legal aspects we have to consider, stay tuned. The code will be published to our [github repository](https://github.com/eclipse/unide). + diff --git a/website/blog/Project-approved.md b/website/blog/Project-approved.md new file mode 100644 index 0000000..cb657a3 --- /dev/null +++ b/website/blog/Project-approved.md @@ -0,0 +1,15 @@ +--- +title: Eclipse Project approved +date: 2016-09-16 12:16:37 +tags: "project start" +--- +Unide proposal has been approved to be an Eclipse Project! You can now find all relevant information at [https://projects.eclipse.org/projects/iot.unide](https://projects.eclipse.org/projects/iot.unide). + +There's still some paperwork pending, but it looks promising! Next steps are +* creating a proper homepage with relevant information and the PPMP specification +* license checking of initial commitment code. +* getting in touch with Eclipse community +* making plans for the upcoming months + +If you are interested in industry 4.0, IoT stack in manufacturing or you are building industry machines and want to find out more about the possiblities with PPMP, let us know: [unide-inbox@eclipse.org](mailto:unide-inbox@eclipse.org?subject=Interested%20in%20contributing) + diff --git a/website/blog/Unide-at-BCX.md b/website/blog/Unide-at-BCX.md new file mode 100644 index 0000000..10b078a --- /dev/null +++ b/website/blog/Unide-at-BCX.md @@ -0,0 +1,17 @@ +--- +title: Unide at Bosch Hackaton +date: 2017-03-23 17:00:00 +tags: "media" +--- +Unide and PPMP were used in Bosch Connected Experience Hackaton by students and developers to connect sensors to backend solutions in just two days! +They even took a professional video: +
+ +
+ +Also in the same conference, Bosch CEO Dr. Volkmar Denner refered to PPMP again: +
+

On a more practical level, the product performance management protocol, or PPMP, is being tried out at the Bosch plant in Homburg, Germany, as part of a joint Industrie 4.0 and IIC testbed. Bosch itself developed the PPMP, which is available to all at no cost. It allows small and medium-sized enterprises to transmit data from their sensors quickly, simply, and securely to the production systems of large companies. This helps remove some of the obstacles preventing entry into connected manufacturing. This first practical experience will be used to further refine the new protocol – work which will be done by Eclipse, an open-source community. Once again, we see that openness is our life blood.

+
Dr. Volkmar Denner, Bosch CEO
+
+ diff --git a/website/blog/Unide-proposal-online.md b/website/blog/Unide-proposal-online.md new file mode 100644 index 0000000..d93c202 --- /dev/null +++ b/website/blog/Unide-proposal-online.md @@ -0,0 +1,17 @@ +--- +title: Unide proposal online +date: 2016-09-12 09:26:37 +tags: "project start" +--- +We're happy to announce, that the proposal for our new Eclipse Project is online! You can find it at [https://projects.eclipse.org/proposals/unide](https://projects.eclipse.org/proposals/unide). For further discussions, there's the [forum post](https://www.eclipse.org/forums/index.php/t/1080186/) as well. +Now, it's time to study all details about Eclipse processes and [license regulations](https://eclipse.org/legal/eplfaq.php#3RDPARTY). +
+
+

 Did you know?

+
+
+
+ The projects name is derived from understand industry devices. Other ideas like connect industry machines turned out to have meanings in foreign languages or being trademarked already. +
+
+
diff --git a/website/blog/Validator-Online.md b/website/blog/Validator-Online.md new file mode 100644 index 0000000..e7c47b5 --- /dev/null +++ b/website/blog/Validator-Online.md @@ -0,0 +1,18 @@ +--- +title: First PPMP-Validator Online +date: 2017-06-29 00:00:00 +tags: "validator" +--- +Our first PPMP-Validator as a HTTP-server is online! + +What we already contribtuted as sourcecode to the Unide-project we've also installed on an eclipse sandbox server. Now you are able to validate your PPMP-messages through the internet without running the server on your local machine. The intention is to make the latest specification validator accessible to everyone at anytime. + +You can reach the server by sending POST-requests to the following endpoints: + +
+http://unide.eclipse.org/rest/v2/message?validate=true
+http://unide.eclipse.org/rest/v2/measurement?validate=true
+http://unide.eclipse.org/rest/v2/process?validate=true
+
+ +Further functions of the sandbox server will be also visualization and storaging of incoming PPMP-messages. diff --git a/website/blog/i40-testbed-started.md b/website/blog/i40-testbed-started.md new file mode 100644 index 0000000..226bb4d --- /dev/null +++ b/website/blog/i40-testbed-started.md @@ -0,0 +1,8 @@ +--- +title: Unide is part of Industry 4.0 Testbed +date: 2017-10-19 00:00:00 +tags: "testbed" +--- +The Eclipse IoT Working group has started another testbed around Production Performance Management. Together with other Eclipse projects but also manufacturing companies, we aim to showcase and test the software in real life scenarios. +[Contact Software](https://www.contact-software.com), [Eurotech](https://www.eurotech.com) and [Eclipse 4diac](https://www.eclipse.org/4diac/) provide bindings to actual machines, Unide and PPMP will be used for structuring and normalizing the information, [Ecipse Hono](https://projects.eclipse.org/projects/iot.hono) and other provide the advanced infrastructure and [influx data](https://www.influxdata.com/) persists the data. +You can find more information in the [Press Release](https://eclipse.org/org/press-release/20171019_industry40_testbed.php) or the [homepage of the testbed](https://iot.eclipse.org/testbeds/production-performance-management/#). diff --git a/website/components/blogArchives.vue b/website/components/blogArchives.vue new file mode 100644 index 0000000..bc54ee4 --- /dev/null +++ b/website/components/blogArchives.vue @@ -0,0 +1,45 @@ + + + + + + diff --git a/website/components/collapsibleCard.vue b/website/components/collapsibleCard.vue new file mode 100644 index 0000000..8c22658 --- /dev/null +++ b/website/components/collapsibleCard.vue @@ -0,0 +1,125 @@ + + + + + + + diff --git a/website/components/navbar.vue b/website/components/navbar.vue new file mode 100644 index 0000000..2f47d26 --- /dev/null +++ b/website/components/navbar.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/website/components/recentPosts.vue b/website/components/recentPosts.vue new file mode 100644 index 0000000..65e5e82 --- /dev/null +++ b/website/components/recentPosts.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/website/components/schemaDetail.vue b/website/components/schemaDetail.vue new file mode 100644 index 0000000..8cbcdfe --- /dev/null +++ b/website/components/schemaDetail.vue @@ -0,0 +1,381 @@ + + + diff --git a/website/components/schemaLink.vue b/website/components/schemaLink.vue new file mode 100644 index 0000000..8a4ec6b --- /dev/null +++ b/website/components/schemaLink.vue @@ -0,0 +1,44 @@ + + + diff --git a/website/components/schemaToc.vue b/website/components/schemaToc.vue new file mode 100644 index 0000000..a870474 --- /dev/null +++ b/website/components/schemaToc.vue @@ -0,0 +1,51 @@ + + + + + + diff --git a/website/layouts/default.vue b/website/layouts/default.vue new file mode 100644 index 0000000..d95a171 --- /dev/null +++ b/website/layouts/default.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/website/layouts/sidebar.vue b/website/layouts/sidebar.vue new file mode 100644 index 0000000..47e5963 --- /dev/null +++ b/website/layouts/sidebar.vue @@ -0,0 +1,80 @@ + + + + + + diff --git a/website/modules/postsIdxPlugin.js b/website/modules/postsIdxPlugin.js new file mode 100644 index 0000000..837c14c --- /dev/null +++ b/website/modules/postsIdxPlugin.js @@ -0,0 +1,176 @@ +const fs = require('fs'), + VirtualModulePlugin = require('webpack-virtual-modules'), + fm = require('front-matter'), + marked = new require('markdown-it')({ + html: true, + linkify: true, + breaks: true, + plugins: [ + require('markdown-it-decorate') + ] + }), + path = require("path"), + postFiles = fs.readdirSync(path.join(__dirname, '..', 'blog')) + .filter(filename => filename.endsWith('.md')) + .map(filename => { + const filepath = path.join(__dirname, '..', 'blog', filename), + data = fs.readFileSync(filepath), + { + attributes, + body + } = fm(data.toString()), + name = `${filename.substr(0, filename.length-3)}`; + if(attributes.date) { + attributes.date = new Date(attributes.date); + } else { + return null; + } + if(attributes.tags) { + if(!(attributes.tags instanceof Array)) { + attributes.tags = [attributes.tags]; + } + } else { + attributes.tags = []; + } + return Object.assign({ + name, + content: marked.render(body), + url: attributes.url || (attributes.date && `/blog/${attributes.date.getFullYear()}/${attributes.date.getMonth()+1}/${attributes.date.getDate()}/${name}`) + }, attributes); + }).filter(f => f).sort((a, b) => a.date - b.date); + +postFiles.forEach((file, idx) => { + if(idx) { + const prev = postFiles[idx-1]; + prev.next = { + url: file.url, + title: file.title + }; + file.prev = { + url: prev.url, + title: prev.title + } + } +}); + +module.exports = function(options) { + this.options.build = this.options.build || {}; + const extend = this.options.build.extend; + + const postStructure = postFiles.reduce((l, file) => { + const f = { + url: file.url, + title: file.title, + date: file.date + }; + if(!f.date) { + return l; + } + const year = f.date.getFullYear(), + month = f.date.getMonth()+1, + day = f.date.getDate(); + if(!l.hierarchy[year]) { + l.hierarchy[year] = {}; + l.list[`${year}`] = []; + } + if(!l.hierarchy[year][month]) { + l.hierarchy[year][month] = {}; + l.list[`${year}/${month}`] = []; + } + if(!l.hierarchy[year][month][day]) { + l.hierarchy[year][month][day] = 0; + l.list[`${year}/${month}/${day}`] = []; + } + + l.list[`${year}`].push(f); + l.list[`${year}/${month}`].push(f); + l.list[`${year}/${month}/${day}`].push(f); + l.hierarchy[year][month][day]++; + return l; + }, { + hierarchy: {}, + list: {} + }); + + // render all the posts + postFiles.forEach((file, idx) => { + if(file.url) { + this.options.generate.routes.push({ + route: file.url, + payload: file + }); + } + }); + + // render the year/month/day indexes + Object.entries(postStructure.list).forEach(([path, list]) => { + this.options.generate.routes.push({ + route: `/blog/${path}`, + payload: list + }); + }); + + // don't extend routes for every post as this is part of every (spa) page (router config) + this.options.router = this.options.router || {}; + this.options.router.extendRoutes = (routes, resolve) => { + routes.push({ + path: `/blog/:year/:month/:day/:name`, + component: resolve(path.join(__dirname, '..', 'pages', 'article.vue')) + }, { + path: `/blog/:year?/:month?/:day?`, + component: resolve(path.join(__dirname, '..', 'pages', 'blog.vue')) + }); + } + + this.options.build.extend = function(config, ctx) { + // virtual pages + config.plugins.push( + new VirtualModulePlugin({ + 'node_modules/posts/recent.json': JSON.stringify(postFiles.slice(-5).map(file => ({ + url: file.url, + title: file.title, + date: file.date + }))), + 'node_modules/posts/archives.json': JSON.stringify(Object.entries(postStructure.hierarchy).reduce((l, [year, months]) => { + Object.entries(months).forEach(([month, days]) => { + l.push({ + year: year, + month: month, + url: `/blog/${year}/${month}`, + count: Object.values(days).reduce((count, day) => { + count += day; + return count; + }, 0), + }); + }); + return l; + }, [])) + }) + ); + + config.plugins.push({ + apply(compiler) { + compiler.plugin('emit', (compilation, callback) => { + postFiles.forEach(file => { + const str = JSON.stringify(file); + compilation.assets[`posts/${file.name}.json`] = { + source: () => str, + size: () => str.length + }; + }); + Object.entries(postStructure.list).forEach(([path, list]) => { + const str = JSON.stringify(list); + compilation.assets[`posts/${path}.json`] = { + source: () => str, + size: () => str.length + }; + }); + return callback(); + }); + } + }); + + return extend.apply(this, arguments); + } + +} diff --git a/website/nuxt.config.js b/website/nuxt.config.js new file mode 100644 index 0000000..456717f --- /dev/null +++ b/website/nuxt.config.js @@ -0,0 +1,75 @@ +const path = require('path'); + +module.exports = { + head: { + title: 'Eclipse unide', + meta: [{ + charset: 'utf-8' + }, { + name: 'viewport', + content: 'width=device-width, initial-scale=1' + }, { + hid: 'description', + name: 'description', + content: 'Eclipse Unide: Understand Industry devices' + }], + link: [ + { rel: 'icon', type: 'image/x-icon', href: '/unide/favicon.ico' } + ] + }, + css: [{ + src: '~assets/styles.scss', + lang: 'scss' + }], + render: { + resourceHints: false + }, + loading: { color: '#50237f' }, + build: { + extend(config, ctx) { + if(ctx.isClient && ctx.isDev) { + // only fails in client.js in dev mode, so no real need for: + /* if(!(config.entry.app instanceof Array)) { + config.entry.app = [ config.entry.app ]; + } + config.entry.app.unshift('core-js/fn/array/filter'); */ + config.module.rules.push({ + enforce: 'pre', + test: /\.(js|vue)$/, + loader: 'eslint-loader', + exclude: /(node_modules)/ + }); + } + config.module.rules.push({ + test: /schema\.json$/, + exclude: /node_modules/, + loader: 'json-schema-loader', + options: {} + }); + }, + postcss: { + plugins: { + 'postcss-custom-properties': false + } + }, + extractCSS: true, + publicPath: '/files/', + babel: { + "presets": [["vue-app", { + targets: { ie: 9 } + }]], + plugins: ['transform-runtime'] + } + }, + + plugins: [{ + src: '~/plugins/prismjs.js' + }], + + router: { + base: '/unide/' + //, fallback: true + }, + + modules: [['~modules/postsIdxPlugin', {}]] +} diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 0000000..d77ba2c --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,12303 @@ +{ + "name": "unide", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.31.tgz", + "integrity": "sha512-yd7CkUughvHQoEahQqcMdrZw6o/6PwUxiRkfZuVDVHCDe77mysD/suoNyk5mK6phTnRW1kyIbPHyCJgxw++LXg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.31.tgz", + "integrity": "sha512-c+DAyp8LMm2nzSs2uXEuxp4LYGSUYEyHtU3fU57avFChjsnTmmpWmXj2dv0yUxHTEydgVAv5fIzA+4KJwoqWDA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.31", + "@babel/template": "7.0.0-beta.31", + "@babel/traverse": "7.0.0-beta.31", + "@babel/types": "7.0.0-beta.31" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.31.tgz", + "integrity": "sha512-m7rVVX/dMLbbB9NCzKYRrrFb0qZxgpmQ4Wv6y7zEsB6skoJHRuXVeb/hAFze79vXBbuD63ci7AVHXzAdZSk9KQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.31" + } + }, + "@babel/template": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.31.tgz", + "integrity": "sha512-97IRmLvoDhIDSQkqklVt3UCxJsv0LUEVb/0DzXWtc8Lgiyxj567qZkmTG9aR21CmcJVVIvq2Y/moZj4oEpl5AA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.31", + "@babel/types": "7.0.0-beta.31", + "babylon": "7.0.0-beta.31", + "lodash": "4.17.4" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.31.tgz", + "integrity": "sha512-6lm2mV3S51yEnKmQQNnswoABL1U1H1KHoCCVwdwI3hvIv+W7ya4ki7Aw4o4KxtUHjNKkK5WpZb22rrMMOcJXJQ==", + "dev": true + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.31.tgz", + "integrity": "sha512-3N+VJW+KlezEjFBG7WSYeMyC5kIqVLPb/PGSzCDPFcJrnArluD1GIl7Y3xC7cjKiTq2/JohaLWHVPjJWHlo9Gg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.31", + "@babel/helper-function-name": "7.0.0-beta.31", + "@babel/types": "7.0.0-beta.31", + "babylon": "7.0.0-beta.31", + "debug": "3.1.0", + "globals": "10.4.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.31.tgz", + "integrity": "sha512-6lm2mV3S51yEnKmQQNnswoABL1U1H1KHoCCVwdwI3hvIv+W7ya4ki7Aw4o4KxtUHjNKkK5WpZb22rrMMOcJXJQ==", + "dev": true + }, + "globals": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-10.4.0.tgz", + "integrity": "sha512-uNUtxIZpGyuaq+5BqGGQHsL4wUlJAXRqOm6g3Y48/CWNGTLONgBibI0lh6lGxjR2HljFYUfszb+mk4WkgMntsA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.31.tgz", + "integrity": "sha512-exAHB+NeFGxkfQ5dSUD03xl3zYGneeSk2Mw2ldTt/nTvYxuDiuSp3DlxgUBgzbdTFG4fbwPk0WtKWOoTXCmNGg==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@nuxtjs/youch": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@nuxtjs/youch/-/youch-4.2.3.tgz", + "integrity": "sha512-XiTWdadTwtmL/IGkNqbVe+dOlT+IMvcBu7TvKI7plWhVQeBCQ9iKhk3jgvVWFyiwL2yHJDlEwOM5v9oVES5Xmw==", + "requires": { + "cookie": "0.3.1", + "mustache": "2.3.0", + "stack-trace": "0.0.10" + } + }, + "@std/esm": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@std/esm/-/esm-0.19.1.tgz", + "integrity": "sha512-4Ph4hdaDIkt5sChK565oU16Wa9jcBwLbiNAMEB6fyQZlBw5uz3UpxTo/ZohjeILgJfNtb/l1HzVql1ys5s74Ww==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" + }, + "autoprefixer": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.4.tgz", + "integrity": "sha512-am8jJ7Rbh1sy7FvLvNxxQScWvhv2FwLAS3bIhvrZpx9HbX5PEcc/7v6ecgpWuiu0Dwlj+p/z/1boHd8x60JFwA==", + "requires": { + "browserslist": "2.11.0", + "caniuse-lite": "1.0.30000789", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "axios": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", + "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "requires": { + "follow-redirects": "1.2.5", + "is-buffer": "1.1.6" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-eslint": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.0.3.tgz", + "integrity": "sha512-7D4iUpylEiKJPGbeSAlNddGcmA41PadgZ6UAb6JVyh003h3d0EbZusYFBR/+nBgqtaVJM2J2zUVa3N0hrpMH6g==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.31", + "@babel/traverse": "7.0.0-beta.31", + "@babel/types": "7.0.0-beta.31", + "babylon": "7.0.0-beta.31" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.31", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.31.tgz", + "integrity": "sha512-6lm2mV3S51yEnKmQQNnswoABL1U1H1KHoCCVwdwI3hvIv+W7ya4ki7Aw4o4KxtUHjNKkK5WpZb22rrMMOcJXJQ==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-jsx-event-modifiers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-event-modifiers/-/babel-plugin-jsx-event-modifiers-2.0.5.tgz", + "integrity": "sha512-tWGnCk0whZ+nZcj9tYLw4+y08tPJXqaEjIxRJZS6DkUUae72Kz4BsoGpxt/Kow7mmgQJpvFCw8IPLSNh5rkZCg==" + }, + "babel-plugin-jsx-v-model": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-v-model/-/babel-plugin-jsx-v-model-2.0.3.tgz", + "integrity": "sha512-SIx3Y3XxwGEz56Q1atwr5GaZsxJ2IRYmn5dl38LFkaTAvjnbNQxsZHO+ylJPsd+Hmv+ixJBYYFEekPBTHwiGfQ==", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "html-tags": "2.0.0", + "svg-tags": "1.0.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-vue-jsx": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.5.0.tgz", + "integrity": "sha512-5vCg8K7aiiLwrFJ45ZF/b4cIiFpGAoYL5uNZpbgiZFptBc5LkueBCQXTVexrd1IFlpTV7XndqFjtWjcJ54JGUQ==", + "requires": { + "esutils": "2.0.2" + } + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.0", + "invariant": "2.2.2", + "semver": "5.4.1" + } + }, + "babel-preset-vue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-vue/-/babel-preset-vue-2.0.0.tgz", + "integrity": "sha512-mu6A9xkq9kDd31eZHrXxGei/3PiSpJZ8FYzVcb2HCl2pwntqbczzyBDAw8iK1vDDpMWppllnatCgyTLe+HSWsw==", + "requires": { + "babel-helper-vue-jsx-merge-props": "2.0.3", + "babel-plugin-jsx-event-modifiers": "2.0.5", + "babel-plugin-jsx-v-model": "2.0.3", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-vue-jsx": "3.5.0" + } + }, + "babel-preset-vue-app": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-vue-app/-/babel-preset-vue-app-2.0.0.tgz", + "integrity": "sha512-w81q5FMPvD+VNC1Sc1vXeSkNb8hVehQzhoUrESt4edzghuBgb3twLWkknbNxh5W4SN5Cz75b/rUPOvxDuh2low==", + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "babel-preset-vue": "2.0.0", + "babel-runtime": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.5", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.0", + "pascalcase": "0.1.1" + } + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.0.tgz", + "integrity": "sha512-mNYp0RNeu1xueGuJFSXkU+K0nH+dBE/gcjtyhtNKfU8hwdrVIfoA7i5iFSjOmzkGdL2QaO7YX9ExiVPE7AY9JA==", + "requires": { + "caniuse-lite": "1.0.30000789", + "electron-to-chromium": "1.3.30" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bulma": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.6.1.tgz", + "integrity": "sha1-XyGnfAwG99gAUcBmKMI1Fggb1kk=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.2.tgz", + "integrity": "sha512-dljb7dk1jqO5ogE+dRpoR9tpHYv5xz9vPSNunh1+0wRuNdYxmzp9WmsyokgW/DUF1FDRVA/TMsmxt027R8djbQ==", + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.0.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000789", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000789", + "electron-to-chromium": "1.3.30" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000789", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000789.tgz", + "integrity": "sha1-XPP+x1SABBqxYsoGQTFTFB4jQyU=" + }, + "caniuse-lite": { + "version": "1.0.30000789", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000789.tgz", + "integrity": "sha1-Lj2TeyZxM/Y2Ne9/RB+sZjYPyIk=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + } + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "class-utils": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz", + "integrity": "sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA=", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "clipboard": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", + "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", + "optional": true, + "requires": { + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.2" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + }, + "dependencies": { + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + } + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "connect": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", + "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.0.6", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "requires": { + "bluebird": "3.5.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, + "css-color-function": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz", + "integrity": "sha1-jtJMLAIFBzM5+voAS8jBQfzLKC4=", + "requires": { + "balanced-match": "0.1.0", + "color": "0.11.4", + "debug": "3.1.0", + "rgb": "0.1.0" + }, + "dependencies": { + "balanced-match": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", + "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=" + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-hot-loader": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/css-hot-loader/-/css-hot-loader-1.3.5.tgz", + "integrity": "sha512-wErl3yRqftt2YAe/cBidwIyJW+vhc/VqcqJ0tIAb5NzNPllz+pT0oA2f6SI3vL1Y/wHAVjW8fz/yLtkKp0z4NQ==", + "requires": { + "loader-utils": "1.1.0", + "normalize-url": "1.9.1" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000789", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000789", + "electron-to-chromium": "1.3.30" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "1.0.2" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "0.10.37" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.0.1.tgz", + "integrity": "sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ==" + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" + }, + "electron-releases": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz", + "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==" + }, + "electron-to-chromium": { + "version": "1.3.30", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz", + "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==", + "requires": { + "electron-releases": "2.1.0" + } + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "errno": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", + "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + } + } + }, + "error-stack-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", + "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", + "requires": { + "stackframe": "1.0.4" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz", + "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.13.1.tgz", + "integrity": "sha512-UCJVV50RtLHYzBp1DZ8CMPtRSg4iVZvjgO9IJHIKyWU/AnJVjtdRikoUPLB29n5pzMB7TnsLQWf0V6VUJfoPfw==", + "dev": true, + "requires": { + "ajv": "5.5.1", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.1.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.0.6", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "globals": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", + "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-config-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-vue/-/eslint-config-vue-2.0.2.tgz", + "integrity": "sha1-o6sQBImeSTJ6lMY+JNR6OWsvSEg=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-babel": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz", + "integrity": "sha1-eSAqDjV1fdkngJGbIzbx+i/lPB4=", + "dev": true + }, + "eslint-plugin-html": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-4.0.1.tgz", + "integrity": "sha512-w8mmUJQjtDMUNbw3NOa4+PjOH/r4W5T+RN2nCmYgXv+QHx+NiBodnbPHXmJFJgo7Dr0Yk4G/2LCIRhfKceNmNA==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2" + }, + "dependencies": { + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "dev": true, + "requires": { + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", + "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz", + "integrity": "sha512-YGSjB9Qu6QbVTroUZi66pYky3DfoIPLdHQ/wmrBGyBRnwxQsBXAov9j2rpXt/55i8nyMv6IRWJv2s4d4YnduzQ==", + "dev": true, + "requires": { + "doctrine": "2.0.2", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + } + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "eslint-plugin-vue": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-2.1.0.tgz", + "integrity": "sha1-UO0LfpojidkOaJdDo8wmtQJEG2k=", + "dev": true, + "requires": { + "eslint-plugin-html": "3.2.2", + "eslint-plugin-react": "7.5.1" + }, + "dependencies": { + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "eslint-plugin-html": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz", + "integrity": "sha512-sSuafathF6ImPrzF2vUKEJY6Llq06d/riMTMzlsruDRDhNsQMYp2viUKo+jx+JRr1QevskeUpQcuptp2gN1XVQ==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "semver": "5.4.1" + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.3.tgz", + "integrity": "sha512-AyptZexgu7qppEPq59DtN/XJGZDrLcVxSHai+4hdgMMS9EpF4GBvygcWWApno8lL9qSjVpYt7Raao28qzJX1ww==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "dev": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-loader": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz", + "integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==", + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "follow-redirects": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.5.tgz", + "integrity": "sha512-lMhwQTryFbG+wYsAIEKC1Kf5IGDlVNnONRogIBllh7LLoV7pNIxW0z9fhjRar9NBql+hd2Y49KboVVNxf6GEfg==", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "format-util": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.3.tgz", + "integrity": "sha1-Ay3KShFiYqEsQ/TD7IVmQWxbLZU=" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "friendly-errors-webpack-plugin": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz", + "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=", + "requires": { + "chalk": "1.1.3", + "error-stack-parser": "2.0.1", + "string-length": "1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "front-matter": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-2.3.0.tgz", + "integrity": "sha1-cgOviWzjV+4E4qpFFp6pHtf2dQQ=", + "requires": { + "js-yaml": "3.10.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + } + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "requires": { + "delegate": "3.2.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "requires": { + "duplexer": "0.1.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.1", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", + "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.5" + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.8", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "6.0.16" + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", + "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", + "requires": { + "ansi-escapes": "1.4.0", + "chalk": "1.1.3", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx": "4.1.0", + "string-width": "2.1.1", + "strip-ansi": "3.0.1", + "through": "2.3.8" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-arrayish": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.1.tgz", + "integrity": "sha1-wt/DhquqDD4zxI2z/ocFnmkGXv0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "requires": { + "is-number": "3.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isnumeric": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz", + "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "1.6.3", + "whatwg-fetch": "2.0.3" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz", + "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-loader": { + "version": "github:joshheyse/json-schema-loader#649e1d49a3128f72721641cefc14a286bca54227", + "requires": { + "json-schema-ref-parser": "3.3.1", + "loader-utils": "1.1.0", + "lodash": "4.17.4" + } + }, + "json-schema-ref-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-3.3.1.tgz", + "integrity": "sha512-stQTMhec2R/p2L9dH4XXRlpNCP0mY8QrLd/9Kl+8SHJQmwHtE1nDfXH4wbsSM+GkJMl8t92yZbI0OIol432CIQ==", + "requires": { + "call-me-maybe": "1.0.1", + "debug": "3.1.0", + "es6-promise": "4.2.2", + "js-yaml": "3.10.0", + "ono": "4.0.2", + "z-schema": "3.19.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + } + } + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "launch-editor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.0.0.tgz", + "integrity": "sha512-xMKZAWUscctypaGelDzA5IUUa3DEWHIqMal4+GidvQN5NSssBmanD2QY5qBl38XAE2vUIwTUYai+JAd520OvMw==", + "requires": { + "chalk": "2.3.0", + "shell-quote": "1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.1.0.tgz", + "integrity": "sha512-9Upf3HIqeD1SA1BxHY4DuY+tSJI5R0UZvWo9bbux/MyhorphNuqTi87Dj9aGDyMCyVt57ejQe0+ZjeyQgRodeA==", + "requires": { + "launch-editor": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "linkify-it": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", + "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "requires": { + "uc.micro": "1.0.3" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.isfunction": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz", + "integrity": "sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=" + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "log-symbols": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz", + "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", + "requires": { + "chalk": "2.3.0" + } + }, + "loglevelnext": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.3.tgz", + "integrity": "sha512-OCxd/b78TijTB4b6zVqLbMrxhebyvdZKwqpL0VHUZ0pYhavXaPD4l6Xrr4n5xqTYWiqtb0i7ikSoJY/myQ/Org==" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "requires": { + "pify": "3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, + "markdown-it": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.0.tgz", + "integrity": "sha512-tNuOCCfunY5v5uhcO2AUMArvKAyKMygX8tfup/JrgnsDqcCATQsAExBq7o5Ml9iMmO82bk6jYNLj6khcrl0JGA==", + "requires": { + "argparse": "1.0.9", + "entities": "1.1.1", + "linkify-it": "2.0.3", + "mdurl": "1.0.1", + "uc.micro": "1.0.3" + } + }, + "markdown-it-decorate": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/markdown-it-decorate/-/markdown-it-decorate-1.2.2.tgz", + "integrity": "sha1-8eEdEdg3rniQYZj4osl08OZGrLc=" + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "0.1.6", + "readable-stream": "2.3.3" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.3", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mississippi": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.1", + "end-of-stream": "1.4.0", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.3.5", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mustache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.0.tgz", + "integrity": "sha1-QCj3d4sXcIpImTCm5SrDvKDaQdA=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fetch": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", + "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-sass": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.6.1.tgz", + "integrity": "sha512-0zQQ7tjEK5W8RfW9LiQrkzfo7uLZ0QtZGV69rdKn5cFzdweHLJ14lR6xLPvI6UimkXMO8m0qDsXwUCNdnqV3sA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.8.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.83.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nuxt": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-1.0.0.tgz", + "integrity": "sha512-OBt0K8aFhQgd2jUOEGkbuXPzz66aI/Sn/r4C7Zrsoi8Eqqo8Ed2p/v9ghn89DcjBkTkaEhGNh0+ewhpGzC78FA==", + "requires": { + "@nuxtjs/youch": "4.2.3", + "ansi-html": "0.0.7", + "autoprefixer": "7.2.4", + "babel-core": "6.26.0", + "babel-loader": "7.1.2", + "babel-preset-vue-app": "2.0.0", + "caniuse-lite": "1.0.30000789", + "chalk": "2.3.0", + "chokidar": "2.0.0", + "clone": "2.1.1", + "compression": "1.7.1", + "connect": "3.6.5", + "css-hot-loader": "1.3.5", + "css-loader": "0.28.8", + "debug": "3.1.0", + "es6-promise": "4.2.2", + "etag": "1.8.1", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.6", + "fresh": "0.5.2", + "friendly-errors-webpack-plugin": "1.6.1", + "fs-extra": "5.0.0", + "glob": "7.1.2", + "hash-sum": "1.0.2", + "html-minifier": "3.5.8", + "html-webpack-plugin": "2.30.1", + "launch-editor": "2.0.0", + "launch-editor-middleware": "2.1.0", + "lodash": "4.17.4", + "lru-cache": "4.1.1", + "memory-fs": "0.4.1", + "minimist": "1.2.0", + "opencollective": "1.0.3", + "postcss": "6.0.16", + "postcss-cssnext": "3.0.2", + "postcss-import": "11.0.0", + "postcss-loader": "2.0.10", + "postcss-url": "7.3.0", + "pretty-error": "2.1.1", + "progress-bar-webpack-plugin": "1.10.0", + "serialize-javascript": "1.4.0", + "serve-static": "1.13.1", + "server-destroy": "1.0.1", + "source-map": "0.6.1", + "style-resources-loader": "1.0.0", + "uglifyjs-webpack-plugin": "1.1.6", + "upath": "1.0.2", + "url-loader": "0.6.2", + "vue": "2.5.13", + "vue-loader": "13.7.0", + "vue-meta": "1.4.2", + "vue-router": "3.0.1", + "vue-server-renderer": "2.5.13", + "vue-template-compiler": "2.5.13", + "vuex": "3.0.1", + "webpack": "3.10.0", + "webpack-bundle-analyzer": "2.9.2", + "webpack-dev-middleware": "2.0.4", + "webpack-hot-middleware": "2.21.0", + "webpack-node-externals": "1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "css-loader": { + "version": "0.28.8", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.8.tgz", + "integrity": "sha512-4jGj7Ag6WUZ5lQyE4te9sJLn0lgkz6HI3WDE4aw98AkW1IAKXPP4blTpPeorlLDpNsYvojo0SYgRJOdz2KbuAw==", + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "object-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onecolor": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", + "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "ono": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.2.tgz", + "integrity": "sha512-EFXJFoeF+KkZW4lwmcPMKHp2ZU7o6CM+ccX2nPbEJKiJIdyqbIcS1v6pmNgeNJ6x4/vEYn0/8oz66qXSPnnmSQ==", + "requires": { + "format-util": "1.0.3" + } + }, + "opencollective": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", + "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", + "requires": { + "babel-polyfill": "6.23.0", + "chalk": "1.1.3", + "inquirer": "3.0.6", + "minimist": "1.2.0", + "node-fetch": "1.6.3", + "opn": "4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=" + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pixrem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-4.0.1.tgz", + "integrity": "sha1-LaSh3m7EQjxfw3lOkwuB1EkOxoY=", + "requires": { + "browserslist": "2.11.0", + "postcss": "6.0.16", + "reduce-css-calc": "1.3.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "2.1.0" + } + }, + "pleeease-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-4.0.0.tgz", + "integrity": "sha1-ZjKy+wVkjSdY2GU4T7zteeHMrsc=", + "requires": { + "onecolor": "3.0.5", + "postcss": "6.0.16" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + }, + "dependencies": { + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-apply": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.8.0.tgz", + "integrity": "sha1-FOVEu7XLbxweBIhXll15rgZrE0M=", + "requires": { + "babel-runtime": "6.26.0", + "balanced-match": "0.4.2", + "postcss": "6.0.16" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz", + "integrity": "sha1-lNxCLI+QmX8WvTOjZUu77AhJY7Q=", + "requires": { + "postcss": "6.0.16", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-color-function": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-4.0.1.tgz", + "integrity": "sha1-QCs/LOvD9pR+YY+2vjZU++zvZEQ=", + "requires": { + "css-color-function": "1.3.3", + "postcss": "6.0.16", + "postcss-message-helpers": "2.0.0", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-color-gray": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.1.0.tgz", + "integrity": "sha512-L4iLKQLdqChz6ZOgGb6dRxkBNw78JFYcJmBz1orHpZoeLtuhDDGegRtX9gSyfoCIM7rWZ3VNOyiqqvk83BEN+w==", + "requires": { + "color": "2.0.1", + "postcss": "6.0.16", + "postcss-message-helpers": "2.0.0", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "color": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz", + "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==", + "requires": { + "color-convert": "1.9.1", + "color-string": "1.5.2" + } + }, + "color-string": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", + "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", + "requires": { + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" + } + } + } + }, + "postcss-color-hex-alpha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz", + "integrity": "sha1-HlPmyKyyN5Vej9CLfs2xuLgwn5U=", + "requires": { + "color": "1.0.3", + "postcss": "6.0.16", + "postcss-message-helpers": "2.0.0" + }, + "dependencies": { + "color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", + "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", + "requires": { + "color-convert": "1.9.1", + "color-string": "1.5.2" + } + }, + "color-string": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", + "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", + "requires": { + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" + } + } + } + }, + "postcss-color-hsl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-2.0.0.tgz", + "integrity": "sha1-EnA2ZvoxBDDj8wpFTawThjF9WEQ=", + "requires": { + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0", + "units-css": "0.4.0" + } + }, + "postcss-color-hwb": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-3.0.0.tgz", + "integrity": "sha1-NAKxnvTYSXVAwftQcr6YY8qVVx4=", + "requires": { + "color": "1.0.3", + "postcss": "6.0.16", + "postcss-message-helpers": "2.0.0", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", + "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", + "requires": { + "color-convert": "1.9.1", + "color-string": "1.5.2" + } + }, + "color-string": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", + "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", + "requires": { + "color-name": "1.1.3", + "simple-swizzle": "0.2.2" + } + } + } + }, + "postcss-color-rebeccapurple": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.0.0.tgz", + "integrity": "sha1-7rrwPTY7QwC5Z5K9MIHBntZlE9M=", + "requires": { + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-color-rgb": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz", + "integrity": "sha1-FFOcinExSUtILg3RzCZf9lFLUmM=", + "requires": { + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-color-rgba-fallback": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-3.0.0.tgz", + "integrity": "sha1-N9XJNToHoJJwkSqCYGu0Kg1wLAQ=", + "requires": { + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0", + "rgb-hex": "2.1.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-cssnext": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-3.0.2.tgz", + "integrity": "sha512-jA6kGdcUMZqLUgw6MdpyNWGFhk0LIITVhC/jTnLRZLoXSTR88qT2cFOn3LbY06udt1PVdTCHDG3plBjxVKf8BQ==", + "requires": { + "autoprefixer": "7.2.4", + "caniuse-api": "2.0.0", + "chalk": "2.3.0", + "pixrem": "4.0.1", + "pleeease-filters": "4.0.0", + "postcss": "6.0.16", + "postcss-apply": "0.8.0", + "postcss-attribute-case-insensitive": "2.0.0", + "postcss-calc": "6.0.1", + "postcss-color-function": "4.0.1", + "postcss-color-gray": "4.1.0", + "postcss-color-hex-alpha": "3.0.0", + "postcss-color-hsl": "2.0.0", + "postcss-color-hwb": "3.0.0", + "postcss-color-rebeccapurple": "3.0.0", + "postcss-color-rgb": "2.0.0", + "postcss-color-rgba-fallback": "3.0.0", + "postcss-custom-media": "6.0.0", + "postcss-custom-properties": "6.2.0", + "postcss-custom-selectors": "4.0.1", + "postcss-font-family-system-ui": "2.1.2", + "postcss-font-variant": "3.0.0", + "postcss-image-set-polyfill": "0.3.5", + "postcss-initial": "2.0.0", + "postcss-media-minmax": "3.0.0", + "postcss-nesting": "4.2.1", + "postcss-pseudo-class-any-link": "4.0.0", + "postcss-pseudoelements": "5.0.0", + "postcss-replace-overflow-wrap": "2.0.0", + "postcss-selector-matches": "3.0.1", + "postcss-selector-not": "3.0.1" + }, + "dependencies": { + "caniuse-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-2.0.0.tgz", + "integrity": "sha1-sd21pZZrFvSNxJmERNS7xsfZ2DQ=", + "requires": { + "browserslist": "2.11.0", + "caniuse-lite": "1.0.30000789", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "postcss-calc": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.1.tgz", + "integrity": "sha1-PSQXG79udinUIqQ26/5t2VEfQzA=", + "requires": { + "css-unit-converter": "1.1.1", + "postcss": "6.0.16", + "postcss-selector-parser": "2.2.3", + "reduce-css-calc": "2.1.3" + } + }, + "reduce-css-calc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.3.tgz", + "integrity": "sha1-Y8TGMl/7v06mwj8dTetHw5U/O4E=", + "requires": { + "css-unit-converter": "1.1.1", + "postcss-value-parser": "3.3.0" + } + } + } + }, + "postcss-custom-media": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz", + "integrity": "sha1-vlMnhBEOyylQRPtTlaGABushpzc=", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-custom-properties": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz", + "integrity": "sha512-eNR2h9T9ciKMoQEORrPjH33XeN/nuvVuxArOKmHtsFbGbNss631tgTrKou3/pmjAZbA4QQkhLIkPQkIk3WW+8w==", + "requires": { + "balanced-match": "1.0.0", + "postcss": "6.0.16" + } + }, + "postcss-custom-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz", + "integrity": "sha1-eBOC+UxS5yfvXKR3bqKt9JphE4I=", + "requires": { + "postcss": "6.0.16", + "postcss-selector-matches": "3.0.1" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-font-family-system-ui": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-2.1.2.tgz", + "integrity": "sha512-k9PNkX0sBbGevSdCPYuijNdgs1nxStR/X3a0EU7PO61ab6g4WMVZETnuoEjVVDPQR6ZL/IUSNxNxkMkh3dYpag==", + "requires": { + "@std/esm": "0.19.1", + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-font-variant": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz", + "integrity": "sha1-CMzIj2BQuoLtjvLMdsDGprQfGD4=", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-image-set-polyfill": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz", + "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=", + "requires": { + "postcss": "6.0.16", + "postcss-media-query-parser": "0.2.3" + } + }, + "postcss-import": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.0.0.tgz", + "integrity": "sha1-qWLi34LTvFptpqOGhBdHIE9B71s=", + "requires": { + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0", + "read-cache": "1.0.0", + "resolve": "1.5.0" + } + }, + "postcss-initial": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-2.0.0.tgz", + "integrity": "sha1-cnFfczbgu3k1HZnuZcSiU6hEG6Q=", + "requires": { + "lodash.template": "4.4.0", + "postcss": "6.0.16" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.10.tgz", + "integrity": "sha512-xQaDcEgJ/2JqFY18zpFkik8vyYs7oS5ZRbrjvDqkP97k2wYWfPT4+qA0m4o3pTSCsz0u26PNqs8ZO9FRUWAqrA==", + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.16", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" + } + }, + "postcss-media-minmax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz", + "integrity": "sha1-Z1JWA3pD70C8Twdgv9BtTcadSNI=", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000789", + "electron-to-chromium": "1.3.30" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.16" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.16" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.16" + } + }, + "postcss-nesting": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz", + "integrity": "sha512-IkyWXICwagCnlaviRexi7qOdwPw3+xVVjgFfGsxmztvRVaNxAlrypOIKqDE5mxY+BVxnId1rnUKBRQoNE2VDaA==", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-pseudo-class-any-link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz", + "integrity": "sha1-kVKgYT00UHIFE+iJKFS65C0O5o4=", + "requires": { + "postcss": "6.0.16", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-pseudoelements": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-5.0.0.tgz", + "integrity": "sha1-7vGU6NUkZFylIKlJ6V5RjoEkAss=", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz", + "integrity": "sha1-eU22+qVPjbEAhUOSqTr0V2i04ls=", + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-selector-matches": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz", + "integrity": "sha1-5WNAEeE5UIgYYbvdWMLQER/8lqs=", + "requires": { + "balanced-match": "0.4.2", + "postcss": "6.0.16" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "postcss-selector-not": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz", + "integrity": "sha1-Lk2y8JZTNsAefOx9tsYN/3ZzNdk=", + "requires": { + "balanced-match": "0.4.2", + "postcss": "6.0.16" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-url": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.0.tgz", + "integrity": "sha512-VBP6uf6iL3AZra23nkPkOEkS/5azj1xf/toRrjfkolfFEgg9Gyzg9UhJZeIsz12EGKZTNVeGbPa2XtaZm/iZvg==", + "requires": { + "mime": "1.6.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.16", + "xxhashjs": "0.2.1" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.0", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "prettier": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.1.tgz", + "integrity": "sha512-lPTx4BsvN5v9w/JXBRNlvTXCJBKrr7VW4NOl1rdX00x+YuOLqNYAOGk2x7v+4PI4hx/SyW1Z3AEg9MeB87yYcQ==" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "prismjs": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.9.0.tgz", + "integrity": "sha1-+j4tntw8OIfB8fMJXUHx+bQgDw8=", + "requires": { + "clipboard": "1.7.1" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + }, + "progress-bar-webpack-plugin": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.10.0.tgz", + "integrity": "sha1-4LEGOqA8eeKYqTQFmFkLth7++aQ=", + "requires": { + "chalk": "1.1.3", + "object.assign": "4.1.0", + "progress": "1.1.8" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "dev": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "requires": { + "duplexify": "3.5.1", + "inherits": "2.0.3", + "pump": "1.0.3" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "requires": { + "extend-shallow": "2.0.1" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "rgb": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz", + "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=" + }, + "rgb-hex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-2.1.0.tgz", + "integrity": "sha1-x3PF/iJoolV42SU5qCp6XOU77aY=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "1.2.0" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "sass-loader": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.1" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.4.0", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + } + } + }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=" + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "0.3.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "ssri": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", + "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stackframe": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", + "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "requires": { + "end-of-stream": "1.4.0", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-resources-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/style-resources-loader/-/style-resources-loader-1.0.0.tgz", + "integrity": "sha512-gxfFT9d3ssfWC4aGahdANLuLkk9muCs+7zjq3Uryj+aFSd9J1Q9NxOVTMBO7xq9l6QCz30SSoUisl8rRvEOlPg==", + "requires": { + "glob": "7.1.2", + "loader-utils": "1.1.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=" + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.1", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "requires": { + "setimmediate": "1.0.5" + } + }, + "tiny-emitter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", + "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==", + "optional": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=" + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, + "uc.micro": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.3.tgz", + "integrity": "sha1-ftUNXg+an7ClczeSWfKndFjVAZI=" + }, + "uglify-js": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.5.tgz", + "integrity": "sha512-ZebM2kgBL/UI9rKeAbsS2J0UPPv7SBy5hJNZml/YxB1zC6JK8IztcPs+cxilE4pu0li6vadVSFqiO7xFTKuSrg==", + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz", + "integrity": "sha512-VUja+7rYbznEvUaeb8IxOCTUrq4BCb1ml0vffa+mfwKtrAwlqnU0ENF14DtYltV1cxd/HSuK51CCA/D/8kMQVw==", + "requires": { + "cacache": "10.0.2", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.3", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.5", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.2" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", + "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", + "requires": { + "ajv": "5.5.1", + "ajv-keywords": "2.1.1" + } + }, + "uglify-es": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.5.tgz", + "integrity": "sha512-7IvaFuYtfbcXm0fGb13mmRYVQdzQDXETAtvYHbCDPt2V88Y8l2HaULOyW6ueoYA0JhGIcLK7dtHkDcBWySqnBw==", + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + } + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "requires": { + "imurmurhash": "0.1.4" + } + }, + "units-css": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz", + "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=", + "requires": { + "isnumeric": "0.2.0", + "viewport-dimensions": "0.2.0" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz", + "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==", + "requires": { + "lodash.endswith": "4.2.1", + "lodash.isfunction": "3.0.8", + "lodash.isstring": "4.0.1", + "lodash.startswith": "4.2.1" + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-join": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.3.tgz", + "integrity": "sha1-Fdsf3ekFZRw6Ihp42l/rj8gJ03I=" + }, + "url-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "requires": { + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "validator": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-9.2.0.tgz", + "integrity": "sha512-6Ij4Eo0KM4LkR0d0IegOwluG5453uqT5QyF5SV5Ezvm8/zmkKI/L4eoraafZGlZPC9guLkwKzgypcw8VGWWnGA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "viewport-dimensions": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz", + "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=" + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "vue": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz", + "integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==" + }, + "vue-hot-reload-api": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz", + "integrity": "sha512-e+ThJMYmZg4D9UnrLcr6LQxGu6YlcxkrmZGPCyIN4malcNhdeGGKxmFuM5y6ICMJJxQywLfT8MM1rYZr4LpeLw==" + }, + "vue-loader": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.0.tgz", + "integrity": "sha512-kDXRgglOOltghngrDFS/YfFew7e0d8fkvPHLYAfLgur7GW0cBt+J0fpBReWY2pixA09dL13abfE4fECyRH4HGg==", + "requires": { + "consolidate": "0.14.5", + "hash-sum": "1.0.2", + "loader-utils": "1.1.0", + "lru-cache": "4.1.1", + "postcss": "6.0.16", + "postcss-load-config": "1.2.0", + "postcss-selector-parser": "2.2.3", + "prettier": "1.10.1", + "resolve": "1.5.0", + "source-map": "0.6.1", + "vue-hot-reload-api": "2.2.4", + "vue-style-loader": "3.0.3", + "vue-template-es2015-compiler": "1.6.0" + } + }, + "vue-meta": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-1.4.2.tgz", + "integrity": "sha512-fYCRLQqQHU78JwdapdlE0CLx2xROruVSGSaxqAGUtdXHWXpKQLSgCgIKe1YAFh8KtZDH2jDW9f8hKIdcMKY2SA==", + "requires": { + "deepmerge": "2.0.1", + "lodash.isplainobject": "4.0.6", + "object-assign": "4.1.1" + } + }, + "vue-prism-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vue-prism-component/-/vue-prism-component-1.0.1.tgz", + "integrity": "sha512-FZJnlGvvqPvBsNQtlmglA1PtPcb5XuIy3YLwWiqJqmaHGp9ZScJ3+5HkNd7weN+QTpFPTNlUcIHpx3cpOgZ0IA==" + }, + "vue-router": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.1.tgz", + "integrity": "sha512-vLLoY452L+JBpALMP5UHum9+7nzR9PeIBCghU9ZtJ1eWm6ieUI8Zb/DI3MYxH32bxkjzYV1LRjNv4qr8d+uX/w==" + }, + "vue-server-renderer": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.5.13.tgz", + "integrity": "sha512-P9+TuLyi3f68PnFg30xUhMADrCjSoLICzEruBGfV7tqbppkmw/wbzFc8dlap2nFYowyUiRlJku2uuMOKCZD3Bw==", + "requires": { + "chalk": "1.1.3", + "hash-sum": "1.0.2", + "he": "1.1.1", + "lodash.template": "4.4.0", + "lodash.uniq": "4.5.0", + "resolve": "1.5.0", + "serialize-javascript": "1.4.0", + "source-map": "0.5.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "vue-style-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.3.tgz", + "integrity": "sha512-P/ihpaZKU23T1kq3E0y4c+F8sbm1HQO69EFYoLoGMSGVAHroHsGir/WQ9qUavP8dyFYHmXenzHaJ/nqd8vfaxw==", + "requires": { + "hash-sum": "1.0.2", + "loader-utils": "1.1.0" + } + }, + "vue-template-compiler": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.13.tgz", + "integrity": "sha512-15HWSgIxrGUcV0v7QRen2Y3fQsbgxXwMvjT/5XKMO0ANmaCcNh7y2OeIDTAuSGeosjb9+E1Pn2PHZ61VQWEgBQ==", + "requires": { + "de-indent": "1.0.2", + "he": "1.1.1" + } + }, + "vue-template-es2015-compiler": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==" + }, + "vuex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz", + "integrity": "sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w==" + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "webpack": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.1", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.2.tgz", + "integrity": "sha1-Y+2G63HMTNqG9o5oWoRTC6ASZEk=", + "requires": { + "acorn": "5.2.1", + "chalk": "1.1.3", + "commander": "2.12.2", + "ejs": "2.5.7", + "express": "4.16.2", + "filesize": "3.5.11", + "gzip-size": "3.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "opener": "1.4.3", + "ws": "4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "webpack-dev-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-2.0.4.tgz", + "integrity": "sha512-tq0VmEqam/77Q0wWXBQSZsjnX5rsJvb5kvyP42+MvhuLfS5RXozunAsW+ZGbRzqs/Asyxd6Cvr/V4bQ/218ALw==", + "requires": { + "loud-rejection": "1.6.0", + "memory-fs": "0.4.1", + "mime": "2.2.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "url-join": "2.0.3", + "webpack-log": "1.1.1" + }, + "dependencies": { + "mime": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", + "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" + } + } + }, + "webpack-hot-middleware": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz", + "integrity": "sha512-P6xiOLy10QlSVSO7GanU9PLxN6zLLQ7RG16MPTvmFwf2KUG7jMp6m+fmdgsR7xoaVVLA7OlX3YO6JjoZEKjCuA==", + "requires": { + "ansi-html": "0.0.7", + "html-entities": "1.2.1", + "querystring": "0.2.0", + "strip-ansi": "3.0.1" + } + }, + "webpack-log": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.1.1.tgz", + "integrity": "sha512-9AeZ12uxaS+DGpcIInWxNuoJMW2JbAc45bkn3fhWcdl4wK36MAq/yiyiITt5IS0TaZWjtLIWxwULCuT9V7/xoA==", + "requires": { + "chalk": "2.3.0", + "log-symbols": "2.1.0", + "loglevelnext": "1.0.3", + "uuid": "3.1.0" + } + }, + "webpack-node-externals": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", + "integrity": "sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0=" + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + }, + "webpack-virtual-modules": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.1.8.tgz", + "integrity": "sha512-+VPqsKyd8Ef/CNE4S3cNBshYWOr+gH6VCBCVyTurBWN42sBoVTaPKZlwCsRNG9VEFgl219RPkzezEmLqYYHV0A==", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "requires": { + "errno": "0.1.6", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "ws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.0.0.tgz", + "integrity": "sha512-QYslsH44bH8O7/W2815u5DpnCpXWpEK44FmaHffNwgJI4JMaSZONgPBTOfrxJ29mXKbXak+LsJ2uAkDTYq2ptQ==", + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + } + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "xxhashjs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.1.tgz", + "integrity": "sha1-m76b6JYUKXbfo0wGGy0GjEPTDeA=", + "requires": { + "cuint": "0.2.2" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, + "z-schema": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.19.0.tgz", + "integrity": "sha512-V94f3ODuluBS4kQLLjNhwoMek0dyIXCsvNu/A17dAyJ6sMhT5KkJQwSn07R0naByLIXJWMDk+ruMfI/3G3hS4Q==", + "requires": { + "commander": "2.12.2", + "lodash.get": "4.4.2", + "lodash.isequal": "4.5.0", + "validator": "9.2.0" + } + } + } +} diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000..6833150 --- /dev/null +++ b/website/package.json @@ -0,0 +1,47 @@ +{ + "name": "unide", + "version": "1.0.0", + "description": "Eclipse Unide: Understand Industry devices", + "author": "Axel Meinhardt ", + "private": true, + "scripts": { + "dev": "nuxt", + "build": "nuxt build", + "start": "nuxt start", + "generate": "nuxt generate", + "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", + "precommit": "npm run lint", + "uml": "java -Djava.awt.headless=true -jar plantuml.jar -charset utf8 -o . -tsvg static/images/*.uml" + }, + "dependencies": { + "axios": "^0.17.1", + "babel-runtime": "^6.23.0", + "bulma": "^0.6.1", + "font-awesome": "^4.7.0", + "front-matter": "^2.3.0", + "json-schema-loader": "joshheyse/json-schema-loader#649e1d4", + "lodash.clonedeep": "^4.3.2", + "markdown-it": "^8.4.0", + "markdown-it-decorate": "^1.2.2", + "nuxt": "^1.0.0", + "prismjs": "^1.9.0", + "vue-prism-component": "^1.0.1", + "webpack-virtual-modules": "^0.1.8" + }, + "devDependencies": { + "babel-eslint": "^8.0.2", + "eslint": "^4.11.0", + "eslint-loader": "^1.9.0", + "eslint-config-standard": "^10.2.1", + "eslint-config-vue": "^2.0.2", + "eslint-plugin-babel": "^4.0.1", + "eslint-plugin-html": "^4.0.0", + "eslint-plugin-import": "^2.8.0", + "eslint-plugin-node": "^5.2.1", + "eslint-plugin-promise": "^3.6.0", + "eslint-plugin-standard": "^3.0.1", + "eslint-plugin-vue": "^2.1.0", + "node-sass": "^4.6.1", + "sass-loader": "^6.0.2" + } +} diff --git a/website/pages/article.vue b/website/pages/article.vue new file mode 100644 index 0000000..13882d7 --- /dev/null +++ b/website/pages/article.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/website/pages/blog.vue b/website/pages/blog.vue new file mode 100644 index 0000000..604a156 --- /dev/null +++ b/website/pages/blog.vue @@ -0,0 +1,99 @@ + + + + + + + diff --git a/website/pages/faq.vue b/website/pages/faq.vue new file mode 100644 index 0000000..332b763 --- /dev/null +++ b/website/pages/faq.vue @@ -0,0 +1,61 @@ + + + + + + + diff --git a/website/pages/index.vue b/website/pages/index.vue new file mode 100644 index 0000000..f1ca703 --- /dev/null +++ b/website/pages/index.vue @@ -0,0 +1,82 @@ + + + diff --git a/website/pages/proposal.vue b/website/pages/proposal.vue new file mode 100644 index 0000000..aa3befa --- /dev/null +++ b/website/pages/proposal.vue @@ -0,0 +1,88 @@ + + + diff --git a/website/pages/specification.vue b/website/pages/specification.vue new file mode 100644 index 0000000..73157a3 --- /dev/null +++ b/website/pages/specification.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/website/pages/specification/index.vue b/website/pages/specification/index.vue new file mode 100644 index 0000000..042255b --- /dev/null +++ b/website/pages/specification/index.vue @@ -0,0 +1,18 @@ + diff --git a/website/pages/specification/machine-message.vue b/website/pages/specification/machine-message.vue new file mode 100644 index 0000000..60c3422 --- /dev/null +++ b/website/pages/specification/machine-message.vue @@ -0,0 +1,109 @@ + + + diff --git a/website/pages/specification/measurement-message.vue b/website/pages/specification/measurement-message.vue new file mode 100644 index 0000000..89e532e --- /dev/null +++ b/website/pages/specification/measurement-message.vue @@ -0,0 +1,132 @@ + + + diff --git a/website/pages/specification/process-message.vue b/website/pages/specification/process-message.vue new file mode 100644 index 0000000..421e432 --- /dev/null +++ b/website/pages/specification/process-message.vue @@ -0,0 +1,212 @@ + + + diff --git a/website/plugins/prismjs.js b/website/plugins/prismjs.js new file mode 100644 index 0000000..5b2cb29 --- /dev/null +++ b/website/plugins/prismjs.js @@ -0,0 +1,2 @@ +import 'prismjs'; +import 'prismjs/components/prism-json'; diff --git a/website/static/favicon.ico b/website/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dddbd59657f1f4c91821f2158e6c5c3a39b79d04 GIT binary patch literal 33310 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 literal 0 HcmV?d00001 diff --git a/website/static/images/analysis.jpg b/website/static/images/analysis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..700b3122901472e3b91f021d003f1e2d20bb5047 GIT binary patch literal 39121 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

b|e zyc@0YWk#i1{2Lv&Eye<38D zdDx=b?GhRbCD$EQX;LSPm=rs!LtS6Zs2_Y;RQs|YYw=s2*+E=%GAL^FMJ<5v{jX{Z ztVX4g{;0+|*?QQXV_cCi5I?Ca4c7SNhYI0;(1-E=(C42b|G$#_f4Xu07k$WK zu)c~>a)_(Jx?oeO{}+6q{sTVEOWTVo9f|$~DE8Gfh}bwqnoa_ci)4k8N_=Jl}IYKhM6yleG*Fr2XNqjCrB0m!q9gr)uhX)KO zqfd;Wl*1{>qLeMHLt|24lc%pGjnUa}F(T{qBy+vNQX=uTx}AZx_P@u_*qr}D!~lgGOZQre;=<>n1#y$-BWvkpE$7FE zsOzWo7({#Ro9ulE+08d~qLbsLpZ?tJZaVT3jj>PH&HAW?T`ygb;grp*;kQPvX3T)( z*|C!e_;Z@E$^xv5OR@Q)tc&a=^x3J{D%4UjV^SPvEt*jbg>=K&U>*`__Vl%r{0T@B zk|kX!_b32;8GDLvU>iv@B_ern9Fe=_l!kv%l6WDDP6#DCHjqoba9XqwBwEPC2+XGj zbl&i_h#=l#y;=ju6|7Ip5vL`6!p^aI0PrBi!K9t?Obfr-; zmrmG%cvT_d<7F>kqD~HlV9G<^!w1xpXZr|Jl%`Q2Ygp>>>@p8`)5zQ}2%o zR~~*u?C-g#ZSn?u*an9?*p~jtWL>Y8e5E7tWS<6K2j%WYCWU1r54bWvX=c>(u5>Pg zlBbz<&q*@=LTDfz`g#JvX1@JsVc5CZHO`wB53O_id#f!?9PHApJibwN;p5dbNZ5Mu zPttsWLP-zNwxGR@C!^*?$2vqe!l<*x*3}or@odd*8ib77ngHAMwQNif*LFrFQ=rOT z^a?EwhxfKHrsbfJKBvZOXb!5ZBbVU&}2}mn495#_oBC$p-;XnNA`!I%qG9FMk?N`5M<4+f83^&{>0UGv=)%lChY3F?s2elG8F=R!3Q-1}w4@d9CJv zebnqey{_m)G&q#r*0w#E%>bh_aVlhUElLU8*k1A)b2+3w{C76P-o%SRUCpRB%doR! znFY}%z5|RgFY{X+={58rb5nh=K1WM1O-+-15Yj8hlT1Bfb8#*irKW?7xNj{Hn=~+@ zh|_HAj_oIwNq#n71VF3QhC$83y2Y1+>IHA&kH~v|Sh|caU9mQImB?7}{3q;PfB3tT zau`SoS?Z;mCQ+|zM&U&#*GDw?oitL$LN$8jboRV3EKr(F2PK!I##;6tXh{4sa-pH1 zVPW9mVBr3X8~@rip)n|6Fxjyv#nepEIb42{Q;Dl57B<3S4}kY>I5o^%slQ4DC*13Khi10O(bm8(3l6tCe@~GRo#Z@9; z4Md{j{a|p!#xTQIR7dHvd0{C@m?ZPmt<~bY1t5}3q_9_?)iW|h-L*x!u(@lSsElpC{_ z29K;UhUD&R>2+zJ!Vfsm_+-9s4LELAeKpzr@wGQ8*-8?)?0*o(dZb1KIEQ;4al72+ z()|8X-96dP+x4$Ou{=-d%BED;aV1n`TbGz*i&28u;5(6HHHwXlpUXY+B=+e2p4(-2Y0}to!K{uVskFWSf? z8-o#2K+p~=3YjEzv<`f-;cjgn9dkF24!`5gy*N8{qacsjAR}=|-f_?5*I1sk??|fi zvf%=n=PZ&}``0+06^D*isu1Yzzo(T5H@Fykj|S{3GZ*0swH84i3a(8Zt__-X+J9;r zE^FzxEeGtf2MoN1=3Sn12s4(_w><Kdi8&) zD2rTR!q!a!w+>yIqutt&B@J|&nWQ9L_SgnVq5#5(zpx_J;uYE`VL8eX;FNQn%bKuG zY4YirnZq_kjGt(8YDKz@>IjeZR;XUtWe&C(m#NBhsbA5jF5YxU zYfc4ZN&nPuTu~R224%>RTZ_l0;o@&N`)ev%S0;(?XG|5CANI{#WwGIXiky(;0lmU|ud3-v@po;iB;}3at1n7l8HE*cfevQaJ?OUl?ee;bdHQtDZ4y z7~2o;ELN&xd8^x_t8)x}^6$urpQCToniJ|BSJ0siXCL|aJc?pXGtQ`j48pQH!)7NR zRer>F=V;dQY)<%(e`u4T@+H+nWis5qR1%MAl9|&rl^v{U@Nz#Z$*MnC7MhW6*lMFe zro8p$C8*g;HZlJx7jUaTc?51`OND2FSI zzYw-o@!p{a*I~$j#O|VpE}I1Sms%)_dCfZu@Y?s1U5zARN+LUd@^fXoBt|F^Bu%PmP`iBs zB8oYae8N9d(^0KmNFB>!hHAvBvUhE#a7=PBkfomTKHkr!zWJF#rYCiNPRK1#Fb-7Z z$1x+>M|XRs|BcgxhAF(RhV?$-KQVJ@p3twDaIVE6w6KvmP+7n~O}E*_756LOW|E8( z+DY2d38yJ8T#mc4;bV)hbFm)oY%PsFqhLj-t8YluT}DLup;mqk$+zvNQ~aw7uvOWM z%g`HTJdgGx&Z$Rpjrcrf4tw?3!@{~2VPSxSxpr9i2Uky|jh2UX%FOrEc^BGJmzF=+=@rm_AOX(ov+Ln=0n_W^9dPI$|B+RY82 z8xYRE^#2fgj;+x7vrx#-@=48MBv zsgo6Ch`Va^zy{XZ?sr$wK4%a@W$pxdY6~t!@U$2ZTi!;djXrG`LLFNqJm)lXkB0en z#)ph(krEv0cotXnSoDeuiI>^BGn9pJvq@2_fVY?2m45x2)gp4W^unIsY$4P_nX&_8 zB~3Ux3=Xvj3VkVkHR7M~jw@HT&{oqZePu2h%<{!}?6UVk$&Be9Ezl^+915|Ih$x>n zp46{9s9aQoR=)3Cf+)80S**=-Aj;h7r>xU@kXoCTU(G$U`^60A68b_}GHmu}S`4U* z$kbbP8@jIPjJ3F?t#3fG61Zmb%ih)gzQX@1C8N3FX;v)(z) zN}YgKw5aT9U%2kBv^6DOqL(xgXSiGXzIaE`voz72u!NNF|P^%j_0;&)aV5^&lmq-z!e#k;LWq6Uw4Y+LRwb> z7+F>xXI(Njd48eg+C0*VRkz8P;e*tnlZgCcr}9VTJ-Chxi#m{8Rz&BOd<=wD0)h1P z6PE9{Oz*8$Ii@grbPPO}1j==vvBaZJ*I`W4PB2tv8gXzg?>6h7v!WQ=`)8LPQn+5+ z3fIf-U_0OqTnhrhSFk{qL!1^>5`wSzuh!w&j~daWHYA;(OAk>TYx4L%aY3*$0Q>>a zkNgqeP51mO$m(U~*ZwYxclxMv#BVYPHlG<_R6y-vyTL6}7k0KZ&kw!hMV-XfTV)K8 zw#H9&{{34{$hM}Dv5T;gS?u5*ovJ((7+bb8tf&p?L#($Q3d^&gNgl)spk#5XMBq9?6j zl(Qs?^%>i|BaI@2@)(YD^zDn&>Ax?Mqb`nSPnCpBoGNp0moV+)3lXdA_5+Q^JUL%d zbLS@vW@;gwzWjxtKK#Hca>V2(hINC}WR!xj?<&*Q$UwT=dDE|tOhHRi7L@5+b9d3v ze?m*w!YQh17O|;IGR0uMUZf;EZz1w@GMXXRdETv=6H3^!DT~40>mnTeweHdRjt&1Y z!vD)woM_BzZStj3w1hjqKMA@WgBaD0gs!^bhWdn@ai@??~)|q9Pl&P(^1BS)Ut75q{SR!mFX{Vj?Ae zEiO)0%CCYYP;K}%&<5l1cX?NVVXHt3AsAH76+g$_%jZ^}Y`i zPw{}sX{}aTDQ;VfkUV#V@$7(hn$eOxS#+7&xBTW|9&+~*Tb^xkLPj0ucf2pbq&TAe z@%F5r_VGC{&hOYw+$kUj?+S12zYzV=L5#%|PbG9W@3_TnUoRKgShrT5o%>^$bD5m0 z4Tx%UZPcn*|H=PD-9t&%mdi-irzWozrAat%TYNDcleU3{Q#4X%X_aaSs? zHkLh#t8s2s(7-$_CKtSOj_WT!#@GWxg%3_oQ9c-FGbk zUzznp>VwAOmM8cRzTgO7{SHoQNA*Cxj!YN&?#IC{iKe4^qc`Nouul9J0){9w5iCQ+ zX-T<^phPRtyjf3%L-k_#N`dE5>+tSJW}3OFImeg9V@C49a%F;mpWFMzthV!{X=1Y~^Z3aU93?tbO z$&m<*4z#;SH*USEHb);fZGv*u$tS_ulu%TYZ>3M!c)Oz9f?1+r2(dwK@gMYNB&$>( zpNQQM16T}OJR%4Y?VNHvOz1Bg(jYIMRIu4t@U~IFu8$U^#WGJ;pZ1pg) z>4+`2UfI;p4$h>Wt{(5G@_}mImC~RZUNHwtr=e9&^Of_TYvvkQFCos#4@1~(=RqT1Cy>h47)bFquHG(h{UDObnTk4SGT=_vcj)?$e* zN7ABIwvrR71r$afI~=P9cH2z8XMbCPXO(AHZN# zjC+5_o4H>UO-~T*7ssQ*g=S)9S`H(>tU=}1g-n|qVd0Mh+bs`8KnOv-UAY=Db|E-2 z6?B>(W&Z8QTpCP|SPuDye|4VNvUHh#<(i~tVI>$^?ecn$Z4J55)Y?X#XOCy;Uzy8BZ@ zR}3`EJh;`}n;NQW5|aih;8GE=%>3ZLl{<6s(>G$>QiJ(!hkg-#9^PitD8*q-b6lV1 zZT{iaZ9Vykhj`aU*D-N1gaM;@+lv!8M~P8P1(kZMn4oqUsoknYu2lb*F;R{1<RWAYhBXS z_2$W^*(KH{*`Bl)M}x%`fD_>?Wc?;UD@A0KRqG)qj!AlwZpjL$477V^Ww<`w%RZ*> zAKA^0EXSyy31e?=e4z_5xc&&@CLJRnJ*$|(CHdK{jkOcu&2?k2{Uk=<7~J+s(W93% zjY^phivn>{s$^ZP;>F7{tjEA5tO0L4M%p5l_h;}AFY5bB@NcwR*;cf*X z>m1}Y3a)F~=;Om}gj}O(4n@hM1D{00P>~eZCCF6Kn}P zQk>rL*GCZ`IE{RHlDCChGxO(d?tFg3#(1Fpwx1NXNH|d10j;|cm z|Bxnt1gY%vnd~;VdG6%|lr81+tXT~O6wz3r){@*Kuj~ch2%nAzjc@rL3&Qj2H=l=Q z*sD61La@B4SJ@7*?s3tCUocNQd$HiP;c5pT-_yI3{CKV5q8f1@5_7_`z$JTiS)ORj z#roPTYL`3hMk;XgTBRWgGds&#QpwXq@#O}V3 z=%Ubv(BLJLtH6U=6KCr5k|-8GDv<9yZLPu@%lK;`g^uORVW1WA5__;x9!>TV>F>)A zwP~)*>Yg`vicgCAyrRpGjDWuatE(35|4qUa|~z`wVjrrtZB} zPuAOL~o^ImHiR=y|khI^MlW4o&U5*h4yzJlAxpEDw$00iZTEiSIE;tbhyoVc!{ zr;Tk$6y!J>>#h2hACm@{8s=6o?;_M{O=@c|Kx{QL0DoKF9N1B9#skvs_2!i&F;ePZ zTf?K8a5`9uZtZ%?7M5seEI1h>4rL9xn}{puv?)W)ot0UH{_^>or+tf3t17WJtFb}v z4>p{b3=>u}k!Y6EHs|zwEZ3085)RT2jSr1|3!8j4*vO1+J+q`w%9A}Ubb)Z-m|018 zY~~2pH}$-jlg7-AMBeP=qr{QBo~0Qf6$`t+sqBRb;X%0oAu3jOzG%jgg* zZuTb2aOvNTqmy`?KOAWhfR=8D;wW0kfUE-Ifs&2gs;9J-)S6QKbZrX7I$q^KlD_J1 zuS$eiCPLRE!oACR2mYzz6{d-K2x&P<@y>I_$VZ$m)v0wkC(csu#`{`$Nl7X$VG}04 zHUwldXAScUlWFgSP-y10i9J#_THcv-k+AZke<7-thXN&+c4+ekm419n3+G+CdB}xU zsT_Q3{MZJ+3w3jFYU$XW=10GVWvVk+{2WV44PBac!MQh-FN>6S-P;pc%*v-;1Bm*d zFPFv@maFE>9V8BhRn8RpwQ@-tMzAnxBAF+Sxr=5qbkvZ9jBaA{$cP-!h?SyyoLy0IuT-YNuAQt z>Bgc<%)CJ!Zd?CqF6PfkII)AV2GfX}wO+Qv_(|}vnNf*adinUh4&P#mJp8&)04<|; zSjsIDis03S{$OJ#%Y|}uWk%G7_8%5{lZKDdAMr~w2?jvU3xbc}`p@x>MhEv-Yo1m_3jc>Ur(AatS}{0OjlzjJ$__2R9) zcvs9H-=0)u5v==dE1;v&>qLB48(mJ$Q%0N;nWT#N3vv3PvyOF}-Mp`dF@h5gO&5|ly z5BcJ9ji2A_X1CPsRs0WA@4#JI(}j!f*zDNo*tXT_xMSP4ZQC8&wrwXnwr!(N-f!G{ z?yX<2YOGpo&YF)-qU8A7vX&j?B22CR%D4t>q{rU48sn3Sv==jlGAHOQ-`khn;IbcOa#y770`977Neg%zeFn7!4W<_fo+0^9sxw7aDIKVG~u!|I3`=D3?n7L@P zmDE+C>Edy?SSXxNwAKK6)lChp1+4=5!b*YFoA0slCH#$rmGxDlhuiUu<&)v~=$p-r z^a-ZU82&#%;td>{X0e64|A|7)^(fTmrB@5gb*4Q9CNH%VKQb3 zk1pFrq$=BH=wwhgE`5XdW=$ztMX?-ffnCZp6k(EAoo5SkQpDHl;nS>$CE%JFkKfAv z(Jgb0a0rP6++T39os?N=7_F@t_|7d8^_(+r^-bL(Zl4%GkgnT%2;XHQ+4juz2|2tL zt&bgw22pZo{_grX%MDL#d#7ulBH=4V$D|XQvhC&dNs(UDR1!M& zhe_bV&EQasggrW%&K5JbXTu^Cz@_a9i;j2yu$sKfG-p(Eb?0ZPtM{txbZ-} zBCf37tL7bfSjIJo21Wc1Y?<3C<^qxP6bch>v-H+fX%u~&Vy9%A3Wr{|&Z$!LK!;0` z4$!FhlDl~A=re7sqTmh*GIp|n1Cs6TBM}65(sZ&?KDuazE*He0Im*SflSA$fP9T#; z^W_Vg_++Ibmi1Z$DHQR#wQXSbtY#Jdu~@_*la+9Av95bLRJpl|fXhNLix4g@aze~9 zt%Na>Q@-?0`IUa4>_#=Z)m`>pN+6WtaEPfeH^NpU-HalKlozjrDDc|->UnNZ*i~S8xl*RdHd5r^Q?Xs>!R@cHpk?C>9&HiJ>QCcY` z7BNYHHJ-UL9Cox3lemT2@>$QjbUwoSI<=SY=z!Rjh;I0W!*Yw*rWPn)9?x8^wkOuc z`d_40U$Vw1kB*}#uhEY<;$AtKRlcjxd(jl+qvwpExVWX{{?G>6=o2E1%?%O|9P1WAJ%&`U@_%9+I%chrvQl! zpMsHDOm>{mouoI3z2J{JjuRpGoKQ7duaBv5abzAiffD03b#;arPQW2gqu@b~EOTpfh_ zGk^T%Qp!fJ>!&3Zy{}I*d9dU`RuJU8aKy@QOz2fSQgQYVfShqyOI>AX#Nz1Josg>~ zf1L0!VUa&TaY>G|L0qQtWlZ0qu}mlQbFF#ST*V~aoN&X0&2a--YAI4KysM~TC7FX{ zs*E!-V3CJoCjceAKUeS^RO}`tg-`uX@t#S!v-(I*@^2h(bQNzu%DwY8u6&+|QjH3E zcl=IG@I;r{oMl-0AO8+yLjt>V9}YhyxiVS4Q581$PMBlV8`!FlbM@zdRmLXEoDExc z-8)(@WE~fN)5%e_GW)@^9gjY+*O14c>VJUuzprUi+vv~mQ&lh7HD~JV-%`6OY6Tjs z%i0U$w~*LgsY_1n*jH$K(k*z?hU0fH=|ehMhrlg{JAbFv0eGMMBCc!JD;Yw-eUa`x z>if?4Ut4pVzc_GIzT}n$CoP3mz)+>X=p%#{Gta^bWWTl}zeZ#E5bb{qa z3QvdJyw$HwwzG(KG-$n^YPjIETu%A!UoyM?Ro^Nt%|eJ3-HYUtBq{|OGN?J6UFtF4 z(g;M6I!Du@+^dp)7?L?r!O8skw9g5Z@DPYixyIRTyTWn?Wz@VpL&&RAW8D}V+$ZYMk zGKu;^gUZ$BN7g3C=+NG`q4uk&QpdNjn|yp-jg#6|Zkov{2Yt-IA`nFS@CcgyGyy&B z88WRb#S5SE2KyDK@8RKIFnc97vaqGPDU=y#m%2_1(G<6g^=7ztE6&@|Y7h-6dd1Q05=u7SebA8AD0KBP$xQ1`Y7k?gsh#ePg#nQ-O~_?%v`XG?C#B>w$qGl^ z;T8GMUP;=pEy!Pcgr#-_^uiU?B~_7m9kFC|r)#VfDe+KR$%8$e8s=`K#$F-Z6<-q+ z3=%hjT0o7aR}VO@e7aoNJ&m2=17&5Nk|r>>LTzPwRoheQeLlqlgWEwlNLkkz*Ue=w zioNvE|CvoMDRfRH<*@3Zi?4)Or2V^#sgkYj8|)lMXZqRGtJs*2v7x;$pxDajAU}lR;HhsVb7krqE;v)SI(7LE~cFr6f^rXpGEGQnlyaR+&!i3bHhfUN|>Q&Oo z$y)yE10Hgk6TgSj@JtJImYm%l^^^ugM~O7^1=_ z?K>B@I67E{qpq+9oBj4kSnF%amw9#6e%nLOUZE(%e5|Zai>9_PyLs;&n?LcA#y#CP z+bH*Gcvh;DjpR;ir!|}3#b7nz?gg#Ds4uF+7($3j5*^sk)-)O{w_3mPU$&?ZT}as zMD5y0utMES6y8ICMHG+DYw}egSyGd{KBx{xKM?M^jF68}d(#n>QLsN`WN{v)Vvbv& z)n)?Ra-#(^gvh~g4JT10em3M?x?PAZgl<}#R}iuO8*7y(K(=?)%%S`Z!PfgGhWdaB zE~hfI?zzznAkL0OJ-QsT8cLtuZzSWo_~i?GZClMYlyznrsi@brF;J1f{Q=0`v>-=I zc0n{)hh$6isN>1SjgIXdcHVb`5ftrxV8OZ7^5Zj$c~*=Q!02VfwR{@RTguIj+jo6^ z%UI!jt`Iu;Q6KwjM!nw_SG9pgQ*f7@Hn1)d)4!x#{0*b2R=}uH4%Ai^Eb%!Yn`BN{ zx1+LdR-!e6B(BDQIv1;cB6}G-I<=-Xd;Y{xb0%W|fg16=Hd8z>uo#&T^-vLT>Wmh- zX5XK*hO0T>T|bn}X9yeNPHSja)t5Q;aq9 z`14e?N_yDYK&M%IsuM24n&Ea&FkUULf67pl4KLKc5iA(spAdh?cU)TFXKtE zg@Ne1@JS)};2ZYFsk)n?`e?l&IshSY#wb>P`!1u|b1j%DwyB$<{4`v4I{qnDNj9mU zU)kG*RYo8|w;dLXfe0~GLtWdamJO!5rA6Um>hy)qAQYVOgDcz4JI~A{rAteS$K^Wk z5?zl0^;vvF{$k)$Bl6s?jLdA{g+1j~DPr8TFjwToi_T;VH91&w|JMVsZ&?W?RlOPd zVYQSgY61;U~x9>E6p+7T_dpu+R1bY#a8?I9U`{N@hk=w}B+D-vxP zlFQ34Md~j|v`wUz+`{%Up3o?Y(#SYC&+%A0rZ+M@?hy0C%-VB_RXPCKv1u{cnLAy= zKLAD*#3_4>#}LDxTPg?YE=9(cxiJN7(|)cBo6@1ahA_BH1(80 zE|kU+h8klucJzhipDx#=X5%!)cgK0xSATBm8ySH@-8$EpTV7Toa}8;|YQxykrbpd2 z3!cKcNT|q{bm#T4eI~bdM6lHeWa(zM;jdc@x1+QsCffE!j*gpNJ(j>m%UL-5oA(ql zegiOXM~CkVnU{Jcost%2rWdw%a1v-W6jpS+{)JGZOoM5s2rS~5lri%)92y*FFf@|t zm3|Vez-WXaiUa<#y1PPvvCLW~#eGID4M$M*sS?lWEslrcUnL0+)zfps>I*Q zDzSfz*v>sP)6|k2B3dnF3J!Vvo|Ew@A)qG?(xqb*K@HfV%-!lBL4lz_2-fw#mgqVG ztxkTu4d!vDEqafn_=X~ClP zR@0Zh`K(ToJ4w-dc4(NN(nHiHw% z1IZ!VZ(aGA&qC$*9XY-m*MzdEgOrxQKb3 zHW3C-e3X_)szU(`6-v6frCIZx-~=81KA!OzJi&sASY@8RVM5U|bg1N(0(bpnz-cGe z29N9PuQVeZiKYQ6KO{-b%S<&ExZRaU*hbVEX+I0&%ios^#Ae48AU{4ivG?v$Nxk8NZ6t;@U zBvh+&He{c@b1nv(xH80OP0fIXL&Ys=7tvz8dseQi7V+_*C^PgIvl(-jlbE>YWPl4l!Kf) z3Cmm}z;4J9AO`cBWT$77s~-lq%|iHshy@BzY;vG0(zNs*Vw3UhDYX`!QP6dfjJlfC zQH{)fh+JpF&aofP+~Af1@M%CZ(|^c*Rz z^TR%6knMevj2fw5u&`8U(SFXNKd3)hU~AF`9**iOg@gf@BvP)(wn~er#M~SA{lf*N z5<#cdPr$f^vFd8=nR#mAWDlJ`!^_Ma5B~wkxRsnE6b%)U)HqK08a+QhS=i7NmYqY( z!cEIRez02zoXke>$v6{*Ry7uByd=*!WElvzRR0E|Sqy~o^XW+u@nhJ$Nwr2%$pKij z4GPz)%>qK^tFBZ~c=nVjL2z0cAn@_Umwkg~!Ch&QRLuwPUag)(e8CLA?M?n z2z^!73O0d2q_n8K%4#-6)GZZzZ3|~+;Em_oI1u{Z`tzepegKdkINo{=yqW`-MmAPT+Dk_| zt(?)%Sgz$|ijVdDorWr!#({KofBE$?%IunDkoC5op|qPOGY{T=P}m{R+!xS(W6YaA zFuC_^A~z$b7LoAd`82-(P}xt~H?wyScn~0UVIT(MVHj55tU&QHsD%hhX^~^N`!WG)65jm$ejuD)wVQgtNyaYf?uaq zkYEDhI3De#&3)>_o*OkB{DxBbPlkI^<9gpD>cyoO=*mr~Ko-bN+)OXX`iLIuXx_xWc zkFvLeDjd3c+dVanxpzD=xhi)1BP2_RxVF@ah(Y-jC3Zgq`(zDca+$aysr0CY9;_hm zfiy%a#TzdIlE4(?vT$~Pc|W$DW|ce3wcK+&AbM?lGyPgV>=4Fm&304IieH#|9NomY zz{J}(?H-ErBmXGId=qRp!*|fo6P}b|gYfklGS`uT(a7SavH$!jxkyB4u+yjU)uz*Y z&oVl9YJz1-yu?T+w=HU|eg3*btt&SWAF)%+cqS@uw@?V| zbCWs`PqY);CcJ>rPm;dWUb3fdz$0%QNvl8v)3#+KP{=XE#x)Ml7b{Lcd|h56=T(NY zmL6AH5Tm)fJh|j(lgKb+qM*j@JzoBS2LMye>|*LPlW49hyYp3sV_U(#vfk40g9KPF ziv@49t0T$~G#!CPS!EJRm<5uSvm{G#?-n+o0C0H7^Cq=UpQ#@{DIDxXm0U8vl3m7i zmY+DT4wF{(KTc5xt#CV#9a5-}HyU!sVO!z?e?eU_L13ODEKO3M@NEbp3t+xvpO;kJ zKjH7h_@<>yD2>*t6|-G)iQ_L#N%y+SN=8c1&pCB29qyJsIi>}C82nffM>IKIbPslg z>PHZem8}_%#r>pH68gGj zYCq!tv`^%W=*p~|BC^Qb2qv{xIM+DGmbkmC28RQJ;F3iJ+N;Q*_&-DzsHaaZYQ%IA z;rapCIg=sSQ(v}l`DO}K8}-b9iZpbw6HEq9JQ9+5^!paNiv{{Yd>{@NNuUfsvW(O% z`W#TL{A*8~M)qZVqQzRW3fne87z!AgLS4zD)UYkkoe3>>9qIDyx|9`bYzHz*=lm`S z9X@{(nTjVAX8)4RCBZFPrPsL(S=St;xcwdN~HvJ zDMMYjn$loC%HO)exzEv`*ozv4-Np_lk>U1+`Ibu2UkUTg5ERl zB@-KiWh&l-ebc0)+Q|V@7-H9N0C&pfo7^KJoc^B0FY>q`av79UvtWDkg(EcjOwfm> z=s%ZBvic^I2=XwRorO8MU~TMqGK3t2m3Baaj_JoV#b)4K}qQvFGOY3=;a<$WKv2n)lRTU~u?+z4c(7%dz^3D_$nc2(x)4yfeZ zu|^QmQsWJb@m#iuNS0kL+mU6m4;IAA|AJ}rH(eOhqq)4 zoGz19urP0S5Wu9XHGUNl>PFi$vqND!{>RAU%O6Lxe}?}WbBq0 zZl*$SE9TO9_%#RJ$`ape*hhC$ciyq3QbAq=)YxjZL4)%X*hA_i^AV@HS8SxiJUjXj6W`}qgrll*3*N{ZW)JmE6k2HyLMYHg9gPx3jdIX5@!v* ztz74=q#%6@*bq%<{$#=vm-gq~s*lp|xc&3wpGL*@9;sru<=)@bOxM%E(?y|9xB~{- zJ#SgYph?x+yy!jB$Vb`*^^)Ya;}@w3ZO{nyq(FiDhbns|@zklvw;b-M26Pl!f){FU_iaHdX?mwwnFsSX)s=P2N91)&R#7HG_gI(LVJehqRs9l8`S3 zzs8ZR%M$BsyyqecgA5UU&nEUn&jm$t|jtHo>$>9#yQ92r3eImq4KO3z7 zY&T-(PNH<}M9sA>GGQWNS2B2J1@UA0E1l&}n)Q9xG2Ek88E=w9%GhG%Dhj0SPtRYI zP1ZA8PZ?%)%;o?F_;1CZ;;TT44uYT;Q!S>opXB)7+-K76)%1LI*C~E@4sGF|f#I|+ zoG;mVq*UEL02*TUC+kK%%bJYk_*pFEmlp?~;JPGxQeogjt5xcDs-YYXo51>= zV3VJQOeNvVkI^(Xlsn1iq5$Zu+(~e?0G^M8HdgPasiLJ^iUkNZ-s(1*bUwA9e}I30 z(-y+qqIr-nwWb9j`u;CI>!=)Arb z@{OO8p!{cS@(rH;-{1!j01EOqfJ(&pKM1w&f6(cF#wN(~>s022c+QYLOZA=`v89gd zMwv%53Y#4tYbooWKk>2@7qQ88I+D7QJlT&|+2x&GExnAgf898>q_%Mc6X>)}V9M#O zRw^|(8cs5s54!VV+h{ZT;TEcGw%0alV4KvQX^*5hd+zXbbb{Q0O+z6M_6u-?AFzFZ zgn&wVI_g7W`Mz@JETWy%cFXiZ!tu=#SFVUynGCy{+I8@eRqZJ<$P>f=1N<7qHuI!^ z9bmZq_;JAXAUBl0aclIgx+jGX)u}JDv=JZoyaMHGMxx8d&&KXG;=J4;l7q4xbbjMy zXjms`(|%f5d0e`Jdc7hBGp(`Tdc1;9G)SGyaf5C37<&kcC6zRyhjlB4ZyHgVCYu>M z4fVyBTEyvF=FjVALx=($H_)S_uWF`Qw~K^ZjKlwCwI`_pMQTj>uKM0_FYx;&n8wv7 zxVv;nw?__03$h3RBBTxai$Z!OO;q7bafnV z^+>qZ;6(d2mv>$vcpR2-ZJ35;5JZSIy(uRws{w6GRK{wpP7dJ?^L@x<%2K`v8e_j283r1V> zgqyKYHy`_~T2fY)q0Z z%-5}#xQvZqxFEE~?ax1xz5L@FE>0JDT=q2e>BUwSjVI_2t(S^*b`y6S*+nzYz+AHK zxXqz?qM9A>guk;P+QmBLCD)<6{l*@Mb#{9Jpw76}^Xs;p{{Sh)Bm64~$ccMrX1XNL z$Nd!ZHlEmEbUE~I$>)KMZ<`|*hNTv&2T1Uii-d|GZ2A{l(aCz#IQ>r6^AnvBl4W?1 zmDEP0k=(Xro|damM#SG*lFI%4VGx z1z}u0W0oe=L@ibRuifYsS?jYtw|okKH^RDa3+|XFh6zXm^ni<;;bp%KkHN7NLtPA_ zz+l?}+Av2)#ix{9Yc7u!%PQ`ty3PDNrjT_wK^QNITO&3%X*2UQ(3C0sna+2Fr_lbRuaYM9tb1MM7w2Y{Nd~{)35X7WaPMLI0jWO1-;o(e}0*Ejl`9{y0=sx zP@jNI_h;!bZKm9JHl@4p;gzP4`|H;zRI_8znsp08XdC`T!`+dH&h=YoHpZp@E0|@+ zN$Qy#V(@CJJN?9ht3{wy33S?LqVPns!pqN^+n;@l?w<+jBgeac2!KUd3q5Dj2EAMq zL;nDyz1lre3_Brr>#Jv%YY-&udI(W-aZkd-B6XQDVcx1L5KT|I!HK?-!xxBLF7z}_R$ils;2G-zcZU?`>s%1r@}5ry+b(FC2wiU==*Y>2GX$?K}FWd z0_?6PGcRKQ$b{ByaMJz*s0K|YcFm~v3<@ypc<5RosKFe|*(J!@QZQe!v`Sy`7hZNq zsCc4^4F;d{DXx=>-(G&u`o#9WBk;tZ(O2l-hSP6}UB+G3@)=$K83Zd{-AF-=7i>|( zEfssP7U|}JWijpPB{#iKk=~-%a^1VxeMDp-)o!3VDAv~b5y53$wYMYdz^*coeSr`__Wm!4EaJF_O-x>hs{4&>Ke+KWh1|{Y zu4#vLW8(+mf^i~xPXOx#MwP69DZ1oEzZ2ON=;*+=34&g}FWlnh=H_ixr|r&HLo3Ia zKcWa`gEzxf(^u7Q*1E{j)&N*h(}0w8rLXn>TiE^!I{M%GuS5DSY{X2+LPXznjnO~v z=6{9lKhqTCeLX)qEFZzY+2C1Ld@J7;HMDEQh;YRu`j@X(wqxkwfH-$B1VOIGnAJgu zJ&)x)?Aiz7~d%!Jh8(~5ij&$yd3puuW;m1Pxbf$&$4Ez?D9%g%bMhV6J((^w6%1}67y}S9rR^g9y#_hNR2Umr9uFQ}v!<9f2v&K)VAGgQzq*Z;sW!FE0 zO#j@Bbk*ZUQwiI*o0}3JcpBz23VLGoz67<_X6@tGcLpb>`?>Uj@1{b&Gcr=-Fx(MB z$8`1(tElOiN^`uBQvLb)#yTjhUOGlmcJf5&KwQfK7rQMyArSS3a^uCmeuGKEEj*~E zQ$kPcBTn%#ooC&$^L@f;Z9jFWoMc`b#P8%?mWx+>>*dIDO1$1@@=$KPhq*9$Um0{X z?=S8KBM*GZJFHUV6bEZKN>;6FYa3`uu<74fo}bzvG(o4OQ>xZ|Sd0=}1dvBk zy53-Zp7aY)>;f(in+I$QHUFoOZ2$A?g)ELi)Nh+=e~$6^7Jl8P zAg{x*&qT8J8bJg-(SI{+H(JFndq6Hr#-NYuAU7nd)!;n!^Vf&P^;cco3B?%xx=#p< z5+9&I)Nx@^bm;Z;2uqS$s<5ya5LpSV!&T4%Z#q(>jBmzX&4OaQpl+Js=s_hOB1TfP&Z=61dt!lWP5)pyb;Kb>}=b(vRBy&NQ(~obwX&YPEQI?lUH@ z_;q!e8^AOgOaS>0pi3IbGV1bsXl1%m{y5I-<%;EHMUz&iMo4cSCGMuBkCj=3V*PG2 zXdeUAas@86?al*c^mY0l;4Oez**e6RpsKoOUI$~$jm{mphtx~Zw&C9y4eUXP>PhrhnQg~KV_$miBW$|4RH-;Y~o~# zlc3il@0Hr!uBpxo1yQ7y6O(o7Vn>#Q5b0QT;*%a@Kz-NDv4IOO&fneU#685p6a%3z zWSM@!;ZT*%x`3D_WQLltPBlgUPW|rlLTvDKMI`89J%*WZqbNr1PP)O0;uLz3LOyd3 zkJhFV(N-9p1;z5P^63-ho$kYj=^5g-?lxt3ljlJ_GVGqVA2%xaGwEys|4Y?cAVG>* zov4qm+2J0VOTY%<)q#2U%8@1K;02d1!<5Q_tPyoA@0$GhUEpa(Ff& zkVW{xCrLH}9ARQaHXCbO`)+mZro$j-G|mJQ@DeJvbN#0-fuv<*^DI6(RV^%@M2bD#J^ssUwn2HF5idT^J$9yU)lwickIe zZQn&z%qTYNV>A(;&V-2;3P3JY^sASX2C1%b!oI`us(!qHtyTc%y1+`dx1+&ZqASVRV!4Oh>ck>Ybu>+{aY3WaV?& zA|XZnLHk51>h@*(+sJb~!uCx+aC#tas(x4I^VgRbW@qRIR9v$#Pk{R{;()Ah;%6*_ z@7B6;4pQJNzt2a|q<9!xBBo96DDq1fsU)Gl?OOx%KY(d!PrEN|{Y+@zN6zJG(K%`D zKR`25pIZt$D0>ibfD4jO%kDQhk}eqfWMx$MyX=u8e_!Rk{ldQ2f0w%N^&S8B|Kr1c z8@?dl{$DyQveKbZcW7++6eS)CQksBy*k5w6-27w7J0K&GylBxvniJG#+xbtHQGz~0Gb|XCZIBH;`OWDh)qL9*$f}~DvkBKVfX;B3Ce4cBnFdhx> zL;fQMr#Z{}4|t6$HxV5ekaL8X#*RDfk={|Q2)&Qudy9-71{}+4Fagr~WTCOZnE-1r z_Qo&fYxW75@>ZDE=i%RoHgU*rY+v^M?4FTIEi3l$Hb_@woiZVObCi>Ql9Pw`etet$ zw5g&5=5gSmdAbE!XPO0pIYB~(dLAQSYJ844A^dP zki;GOb;#tA?%HPObVu>Om~fHfz(nesUmevH@pQt=xVi_>*!6TtCLZ+r6w0r~ZBjGl&U$Bb1w*QJuaN-cWB3&^6&BB_l!P#4F``-K2@i#ZP?Ys?+ zrOPp^N?tn+vGUbQf<(IQ4$`SP!FnN{gVmK#^vb02x?_vU>dc3sEeKY|Liob~=byDi zJ89i=gYS5f4JT?pX7K8^!E%ceeHNf=0eBnOCjnmY08K&ysLM~|)?N+|Qfn;oc{JK> z49*N*E$?7T;|?1&20hMtlLCJK9Of^3Y54qXDY@R>446u5CD$3Z-^5Qrc#N)@s@Mie z-LS@#X}hB_S$jB&f_7%e+u*G=qKE!gvBVt=!wCD#VF0|Mtw$a5P=y^oSJJX&#CxS? zWe|`@jpfQs7=Phr8@S+BrE1Q7+Xh|t8Z6)k-q(r=o{;ctqDRCrWTu%MZ_~}rkT56% zUPLyai>tSbJa6A}J270-y6Lj(;JDq`%Z#CtRSuMJShr>Z1(ZR;H`TYN5$E zQXD|dMV8YUc8JU~>n@N80xW#GkMhMeCDYyFrw#cqBs**zSFpm=yXc^za^@lY8(L`tr z0F)1!mE}}Xl&m4ZPW|R;@y(!x)A$+D<}qBba}af&v|Xz^6Tb?Z(fA)T$AkilN$fr9 z&iz>gS&?{r_EDFnN||69Tz3Ylkw#uZ^PY!ZyHK3b zcjKSC<>-YxjK8M|VmYI^Nft>q|o zAk?4u8_dn@pq_=jR4Wz#+|*Q29E=qp)P_bhd-T%71%QAYBNxbVVcK@GI>&Jitw!Cx zYCwH(^=8JuU=?%@UHk(OHY2AA`O)m?c>~4;ImWi8xkobPhs!W1m4u0IOyo~9XFo-K zhXoOxa^0Wqj=YTId^*0$UTcLd%T^FHRH7^?7Bq7;2XA*rJI#NMq-Ea57b?uc34RL^ z?%?vcX${=?^h!0zm#(wF=XYR3IG3Kdez(Z#I}Euo5SYSIRtRU@APH9Slq2>Ucm1;L z`)z-+!)rwZFQ0D=f7`KAX4R_V^(837mE?{7sb0Q0=-ecd=XwY{$KE!Y;;T_1>@)@g z;QDu|*;5v6?9`N82O^&%$Vx!%lY6X$r3r}bV`x;P$bY%M+(l$K&l4VV^g@`m2Q2|e zkC9IR#D@qzV60SqfycIgk%qxBn=t)f^#z3sq535b9Wqw~4?*&tGacz$Qt18x23i#! z{e$9@#BV(t`_p9lQx&0Z6U2lc*q&oL7YU~vFv_+is9H z$QNXAR~cCv3RkM*y!0r=kC^|u*``>aIQHhP@%q&3hU1{eU8r}V-uiFk#Q!8BTix6l z9A9MMbafqxf=BFE&EwE#qJ<=wk+$hPN~s_S^!sx3g5*|odhIj4+&Rmbs{Ud$MMkga zWsjAN1n?O-Lq+oKbUMz$<-HBukd*U6M^4x4dBz?@2m~S_U^Iiy(>G3#Ui2?kR{E={sg#ZQ%z zDM?{p+9PN9wguC#b$K7k7RR!ghpQuiulnH!_am?>qnBLCX{V#{!tL)KVkxC+3Bvsr z_mIcFyIDpMW+CMl(=%sykN&5D>1yiD_D;XUpeie|PA9y$qgD2qb6hy0VQgnzBZ>cQ zfRp=<(L4Zh)|R4fVEkeD-IZ&&xk6EpXy%or_77V!V&CB);LmRr@&t}tAG`IL0sR7r zvMBl$1a)KX<;v7J+VKJ(0TV{kc0XTE#K;4I=Y4wRmhJ|b62Tj(?&pa3vJfC>DTz7L zyxpcz8Kufo4+Cd_JnX$MD3ae0IP_&J+QQx*UhX;k?*a0dj%llfKmZaHrd8*dU#^O- zhKylC)pHfaje#n-*17}O`X>}*_!G2oDa8)qFx$}w^%9B9O?I7RMIZ`7#{OTFkWuU= zoG{+20~Lnuvs7Gs4YljVRFM1WT2P;Q4*8qh765u~4Q;%|-yPNq0@=8INH;DS)WQ@~s=lx7%2D{J{@!glKNP;<{9X zV8M)0#(37mG!ivYygzfHF-2N&JB?r~twDCU@e)TectZ59OKesaegzkmv)Dyii*Ww9 zo&&>@nKZss1zjL1h1^V(^fmUqEMLw9sg3d9RS)dgXnYO zZ>xa1>zk3gkv6P)Xt;*X_QTlO+`gCLZQ$c6zfw&gPHs4!dUm(fO8D@gaf~h5~ z`~EcGGaw|85=Y^Zshb%{)m);r(utHrZ9C0}pT1*U(ISLz zlx?E`8-HRRkqEhm1B6yxSO&Vx;`?+a~!Qu)1l9K$hjko$k8-Uc6l zLs1ZxV4fWCcs}Js^<&_m-PQof2g{33YVGsL_ zgAl~xJ)vqEYDAFZ?TiEGgSvtCYUOSMWAPYM^1L_3q28d-61Mc_#ZRIFijYJjaX&Dj zd_vJO$;kZLs+RXf6$-ELFNcT5!4turZfoe%A4otnR}O`xr=$w%O$NdbRL^MvYK<11 zjlOPdJFneu!*f~(YGJ85FThSye5yS`sP%I-0Cgw=(+5@=$JWkEl>FAMT9rg(1CWT? zLp<{Kg>m3};suzAuNNu7RUU7ofuk}wC**w6c+(PEmBWI503{M|REJH&)vToUg0-{L zsikKJ(^=GO$4!HAf|C4A>d*HajXw;aZRe4-Z+SpQt_rL>N0ztp+ox3%-Yxc89odh- z()Q--I=FT-IuW&cfWr9e(YvE3cxv#aB?&!CX$B6B*-H_H3$sybhHM)@diBGu@{Lhg z09nOqH>XzE%>J%72#0~HX3Z8g2rxT?-u@WdCL-SH6T_U#g?9m`!*o>^l4pwv5b5^w zb=TfY361u?-Uq?2({KII?Nl zLd&wgO2M`vH z!!Kv%UCHekh|VGf^z_y26VgLfjIzceO31R}c$kFyLp!t&wnl7T>9h*`^*9OlB7K{J z@Pc|9uoSvG%v|Qwut_G8m+^nY;xZ!A9lc`&O+$Qc`7k^>_J;_EcH;Vc|D+=_hgZ4|7{Bg8ygBjEz{VlK$J4Yuch;b6hBN+^gH#1#X% zJU-AiXG9`$LC0SZnN`u9cw{=1mN{{}oq#VIhoAZ*cgUL4jsF18a1{0phh>#j@V`v2 z(UFx9yI5$1Pm#l?ww~jz$yPq~e})7W-1KRI zf!Q(UvenQN6MdF-aH>DvlHKG>U=u9+s-cIekJyfX(JF~q;l)w3SkA>w!b>Q$y{bu1 zgvn#zF8kb|>9IQw*jY?UXb~a*y~3_aF7WXmc_WiMUKGjC;> zqr>76cryPcIEft@d5i|$AbyjpD7DL=LUL{fhR_l2{{fbU>Ez-#Q2l{c4o1^{@)7qc z)7dhzR5TyZn6tPqBj4FU2{HXN6r4EBZX7cFR2b5>t+I#qqHY}0pbQD5DuwT~^e^KE ziygm9Ie-7aJzV=g0s9sN>CF^4<%oQlr5IcD2qj^<+e_h3)}u0ULAH$%yF_B@&`{fU z+sYQ*A>s%X;C2nzk#GWRut{e|RoYYkyGG?F?Dj zxG!O}k7i7SWUKnQOq$DORP1T>k-3gjd_QXvZP67{)1=tz&I(452t?V_c@)YCMyOSM zc-J`x9fCYvz&TyB6XA=ihq8d-zf8XTnU>N@L;3fHlnybzue?p8^bgs8c$-VW;4hxG*On4S_Rav9FUs4!08Op)ZJLepQ9ZV`UKs;0S!KNyW2)}3L zl;B&5G=5j_Ia6xY!+wAOLrEjAHu#P&IeLKDn?gJD=rdCR8pTL-EcecgI`TLU;PPJl zZgqm5*9mAApd_6z9PlUjAG?}h0+uytlsN-xtU`8vY=Z6e3hJ(> zSlt}vGkQ~}V};2t-BKsYUsH@#Y*#qiBdH7d|c=K z=cO!wiOI%SZ^eG`yTU>WenIe-96H=uIm-a70lllY#w8F0PD1oNpAHu(xRFS?a(GMx z0Rphv4K=O68-j2ZSNvp}r~|ZYLt{mrw}2T8p#l{J5G{7mF}c15C`UlB2+1o*Kop+= zToJKTmT!Az4$erS?a*WqRU~sBYd*g4s?Htr%kh?$4WIbsaIm50PA~vl0T6Z|OEP0% zEwtc%Qww|m1|=nOA0aql_gn85aBB;l{H(sPLO4PU zv;$hE0|0VG3hdIInMStVh2Yt{EhWN>V}FgXWGW}M8-SyTAdE?+G&t08IOrqR3JEmZ z;uvLPd}A5L^OlGS-U+Y?zht+Lr+H~la>G6IO*up$ z6P<<+s^KFXuTLpA#o$A;Ekx2)!NG(kFLIAY1L4NgdmSp9RF&d6L$m8Dzzz=dB={r7 zQ&O%)UlMVf*o)Im1&k)28N=DCa25XmKY2%UkA+Xv#DIvAada|@UxxLF(zTxf{R~>0 z%0FOy2l-q#0VKUD{f0sKA>n_)ed0O3rYI(Ke$26A(WZq&Pk*d!E@K27B5-kuyRHc0 zq3zIh*j?brVC;Ghy8L&}7VL7i0cxah?+ez2A*LLt&V})Ynhi+N2gQyESCWc;jNfK0 zTq&;^Ah^K>Bnb7jbO$P!fw}}g2TJk4akW>Sql-b?kD=liUBY?fKCw!64%d(Oion%x z9$y$9g^&fdXqyh>-ZB^?Ksr&i-k8*Gbr5Cji+-@n0XNglsqmgaKtAu|5W-M!Aie6h z-e0ED--8dFiSR>~@?yy-yad;9dveaOU`iAN6NCXQO*6i6q7+7MbnU$BHRpR}2&+O0 zRNHV=7!AXOO0t}Xof}RRK`3rU#-kq?QS@Ou!*8%$iNZ>+P$2BqIkPm5gLGRC2iB($ zXbeP9PDmbR7N-G7Tc*WcGL;u(f(HqC$PI41&*KhAErDD3*_MCgC=bztzgcAMe`TMu z5_S*d;0P@*BfuZ|?+)oNR83!=SkPWJXmNF$8RP^(r64hNRhS#2LE&?+`@gJ~gV6;5 z^b-mpmJ9(@qn+yD`CY>bC{?G{HFdl-@9C4;{_|d!0YCeKotVO8RWu%P1tFphcsVdFz7jn0qGTZBYR*sEr>uH+ zbfjQ>(Y<)YVyPuAk+#>ayy8I;nlcgGiT93vLt2NAnf**Dfi@`P=M0*1@ZhgppRDa* zG2mbtRY|T&+~kB?qS|PZQS2JTbJ@fp9ULDw$%q_7$-UZb)By#%(|KbpGND&uajjX1 zE8s=Q0Fk&99iTA`3bbc>$3!mNdV;jMj>!rVPG&E*4C2A?V;(4&Nv;?!_VL{y?p@?) zTC=k*=AW#cJ-ijv{_zQmW65|vJ>i}=+9*MMX#M8H+&_~406(lvDt=kxIG6xFjNG*4 zvIqIH{y-Vt*8ETBln3Gh3GnUtz{$ae*3)8y=iVm3{ad~qZU#xULOjr@QQby3lf9*ToRbp zz&$OW3ZBefBY`6Dc+mXQDsXBSNq2U-1v`~U<-hFC`;X@3UqV?l^ zdcqw(`VjYM*^tXcTFQV@s{QQkPCiCClBwK_G{8F`yWLGKYZK03uBMtDL zXsS{p4$8ott<+Vyy`Xw=jBHpFTD1N#ppvqZkZ^Q4RF$mxi)&PziRW7$l*^+pbe$cb zctf!CPEMrJJHQPQx12m~Oj1S^*1a3DgN#HCa;`U}ekg%)(4khIulO8Jbb~FyAvEL+ zY=qM9CFV0-ec*$=&GL`g`^b?1HIVQ3aQ;7d?9-36!y^<~%SYtDSbr!@V1ej;sCmYS z16!rg!v@AqIl*S&DMyu!{F>tx7@ZfrO%0wbc$!%r4ztGnI63D72o4`I@VjBH<3gJE zft_R?Kkzl<9>Wi8MqXh50BfCXqqyMT1bsqc6l{?;qQqekZJNbo>DtU;fr}ThNt(DaLVC&dr8{# zGkYEQD`i0_h;D$Q)eM(_JwWul2-#UHgO^+dH!8W^pI{V1&g)E-Msr4~0nGBa+ zK^lL_@o{*7_3YcH&(3kO3#AeJOe4|!lz(n2h7;i@!4Kx-)eDC-*XrRA`nq4SC%if+ zgd)S{PsxPU`2eG#Ww6*cG@yMbY913zX~#XV#-P~#YWYwzT@T9}hvcA!{{1hhnk0Up z1|+wD6~S|gb7{_#Ho^9=`NVSHD{y?PkLd&F5sAB!c*mlz)+9vu#Q767SuQ^r)VEi$ z)-uhN`XBRzl8QY&e@hX;XN*R>+~z(J($_?tYZqlzl)qLG2Y zqPZxH{t?%s~tcw6ctJBYqt{4V($RP>1Awh69fazJh4A!3gtudt^Q6V!8GaEl<~i{ z!VWVbJ$cB*Fy|XpXrsOUE4_PSY&`2Ob?MY`BiVdpqV1R0Cr4)RH`YVQ$Qji~2gCmW zH|HNv71%sLtO08sQ!~OsWlDv3!B2FEQa_^@fhqA`ur8$wa~I`rN7c#OY&|Bqi^Tu`LBv?fTa-#bYkw@6~Sw9UVJI=KPV3 z7NG-NdXGLN)9A=jbh#43vKSjZl5aKbu9~!F}&L6$jyD z$b|dcr^n?Ca4p9N%Hy2@+KN%`3x~?8+U;@pZ*hcvU%LWm8975gzr(^L0pAEOxA6>17;({xUfS!CJ-ojmjxFgP6`X`{rq9}esIH?M}7qeeYl4@xSJ0% zSwbVICg=b>mQwA;*dYSYDsGbVH1Q3ng>)dxPO$ma97OpsZ--2+1!#!f!CZ?+Z@cG~8ISmdAV3U5Q zypz2X?!Gqh9n`ee~1*;AL0a41t2a{Qg{eh7VG z662;ZG}zO|u>KdIIz#7+^6v$Tgv&MFNH*}erz-V^^3ecza{U;yDQn6r`EoPfP=O*d z2dGYN0^!6lFhN>3l(wV1X{r4jK41a({{ZWhkrtK11$D+PvOKQGI9JpjCBwozuQ*ej zsLe*O_LRUpV@zs|bRD(h5M!|Q0NbZrch(B%qeXX(;aV$EtV(S}+Uap%=we>YB7o6& zqX#reC0x^(7n06#_YWAIcyI_BbvesS@tVX@OhQ{Dt5TUmTDH(Nxq~%W3NHYYMbqu9 zEJrE|4?mFnVgY|C932B{A|k+I03a^7@SJ{3=NW_n^T*MB#PNH)g( zW9Xtp6?i-&Hf%z1jv_75I8dGfE)9&7yE7-ub%QImlH7Ibk2*ciH=uFOYbZ-hZY zGKg^==RM)kr)~`ddG6dWe6|Q`972kld}6e16alcR?U!6|w!d z#x@ZLhZV_iqtkLLsL@(DP31j;8sc6wd}64&$m|XC++WKOLs*ZTZ+XMK+k;>Hj6!3JNBH5Luky-@SlmtA zOEq#OzpdnM;J-NBGvHvk4KSpy48CbIP1~9S2Zas-rv^Dfw`5C?};vuI19F2vp zhB%l|Kmx||K0!L$CTrpoPGV-E5aiu)kAp;l3hZ~h8h}*N3sjrqsorY7NY>gOfVeVk zEgJCj_v;bsy1*K?v0#NcP&BXHWYF!z31VAQgax#GoAdg_j>Cu$6gwJ3NP5VK8ro~N zHYSLTX~J`@AySViwQzwMQ&>8hLd5yaVrk;SN0#x_m@fxY<8FKa@~Hm+4qW&5cOO#v z#1ip?lutk22`ZYSX2!4%8Oe&R@8RbyUyrLzM(a)EkC*-ly!3zM93HZ;2z{oO5eu*J zlWvdX!i;owWBCW(BuQqzaa=1U1iBnK7Tq7LN-qrIrn|$Ug2BeJrUL0Z(f5D*oZ{ni z=MWyzU|Rf{NGN1UTBmV$Ui}@T;C0bJ3mf>hs?v7a%N@_0Q8NzGlf%YVOl-uvd zyTodqXAyJEm*d+l?A6=y9bqGM1D^OyW4b4U@wZ5(<8?-5K-T?e3P4DW3jjsZ#F2)H zcmxLAw`%F`+rP-NPd||JeVY!!?Dvj z1TF|Z%HqX>_0Jd(K*S+UKVk4wmbT|(=_l^1)U@iYs30Vp9o`eYN)A|})F?rJN8Dvc zihzdm9yWH@iOxTba>Q(pyjMeq>^aoW4(RdN{a|l{`>ZI?w|q&dLfI|Z?DbHBm01Tv zGw`Th2@>&xy1@d`qqgYnH4`DA*HJhl?8*l`xp8QTxH)Ib`o_$A)|S`6ANIt`_*k2- bPBDVLp&u7mS&At76j$|@7=9$#Zh!yTo(6I* literal 0 HcmV?d00001 diff --git a/website/static/images/collaborators_v2.uml b/website/static/images/collaborators_v2.uml new file mode 100644 index 0000000..1c21adb --- /dev/null +++ b/website/static/images/collaborators_v2.uml @@ -0,0 +1,40 @@ +@startuml +skinparam interface { + BackgroundColor #78be20 + FontColor #50237f + BorderColor black +} + +skinparam node { + FontColor #50237f +} + +skinparam component { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} + +() "/process" as p +() "/message" as m +() "/measurement" as s + +node "PPMP Producer / Machine" { + [Information / Alarms] + [Sensor values] + [End-to-end process data] +} +node "PPMP Consumer" { + [Machine Messages] + [Measurements] + [Processs] +} + +[Information / Alarms] --> m +m --> [Machine Messages] +[Sensor values] --> s +s --> [Measurements] +[End-to-end process data] --> p +p --> [Processs] +@enduml diff --git a/website/static/images/componentOverview.uml b/website/static/images/componentOverview.uml new file mode 100644 index 0000000..1c21adb --- /dev/null +++ b/website/static/images/componentOverview.uml @@ -0,0 +1,40 @@ +@startuml +skinparam interface { + BackgroundColor #78be20 + FontColor #50237f + BorderColor black +} + +skinparam node { + FontColor #50237f +} + +skinparam component { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} + +() "/process" as p +() "/message" as m +() "/measurement" as s + +node "PPMP Producer / Machine" { + [Information / Alarms] + [Sensor values] + [End-to-end process data] +} +node "PPMP Consumer" { + [Machine Messages] + [Measurements] + [Processs] +} + +[Information / Alarms] --> m +m --> [Machine Messages] +[Sensor values] --> s +s --> [Measurements] +[End-to-end process data] --> p +p --> [Processs] +@enduml diff --git a/website/static/images/eclipse-426x100.png b/website/static/images/eclipse-426x100.png new file mode 100644 index 0000000000000000000000000000000000000000..937b063b2b78902f6fc2ad1619ef8314ed2f9258 GIT binary patch literal 7371 zcmbVRbyO7XzX$2=RB&OJT5{=HsU@Wr79=H>rJF@Uy1N8KN?1a=RTKs3Qjl0cL`q6f zT9FX$^1i?Kckds+bMHBK&YYR&nQzB4XP(a_8tQ9Ok+YNI;o(tfYr%~0@bGJJV+T@V z+;x^69f!NIq1DaM#$Jx-06Sk4o{EE)Jqn=hVdsQ0LfJV4`3$2J@$d*7T@YqyGd*2- zq?d4riB>`_iGo>1<+jxKJ1ivyJVo|K-Lp0^sx*+nbZ z7iAo*k3a^yA>|ynmF@r(1LbiFJWyymK%j@ar=NTvl>0Be^0@K!V^MCvUo2=hDEHq^ zndun<)VzFA04Wg(VWb!Y0+5y#fk;Y8OGAVJ;$jeSQ8C;pEew&Amy(tjmjV3i;Ko_= zb#Rn7f@%EA7H$URc1EMUL^6L783&fd!(4dupp`gaH(-gL0rp4ap1^86hw4CU+c0Og?J>*WFX zE5GtC|G~bv>i-q@-?9$>pPY%}oDsclj{ngt|2)EV;Pvp|t&f}hd-0$=aVy3bw>10? zHyQBoSkJX#Du}@O@7Cj9H?<##OfDP*wkEHD9v3S9c;$#^9B-SBiCEAh@X1)?7Jn&} zqIE{W&*_)N$XZ|tvyK8VC?7*3s*oAc{I>I`YLvp)1#HDwDTy@^WImV6j?3_wb!^^w*SXBD66cYT zIF7=QL#65ppsP>n7f8>16L%;d+jTdJ{eb>2nn`{iA)OILVs$Ltlp^tAFu$W{fKp;% z=jmB-d^s-+Epl7yL;OyM=8||frNCjV@9w;Xa%z**~wDrRhve~sXUP2CCw-#(J zsY6l@M1dID{;P-cc}E`GRn z)_fWlKOkB^p=AE|pEv?P2_E57T?PBxxP|p;KydI-A#2`sB1<^9G&Te>5;t6`tw6VRrL0$-B}GyN%ODWXR4l9kw=0j$0tqCP z=yPk4ziG8pHlkG@-T`fbc*MvRyH8wk2D`P$5{<*N%9pJX+0AjxnjFW}D-ScaYgrsF zZEv0XS{dHy>fdX?WxBUCfqYSO#Rne_dd|cx0BHMjBNM?YMxxoYm#m)DZ7X&Q02azm zP?#bf84GYKc(BJYKx;vVx3@Lcq#T1IvzpVHB$Ts5K-fW2g3iz2;gA_fi+zhdt|&qY zI*-an9NV7M;p_l=6Sl?T0)u(@1b78;{)tigVsD$CNC7)D_tx7mok8P;4s zU-LV#&;Y7YX*-tg)A@(;X-As)l=7=;ir~#6_U`Rp61mDqm z&D-3Q%E6b$O-RIPOT<1pg5N!`#IaFnz@#lQZ4oν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 F^AR{3P@%r{RyR9e= z0)iAmN>oVMCH*MFSx@D9`BiuKBqMEU%LJ8`jI8XB7`hSN#_yU9%W}p$^@g}DJLMka&pN&R zyh5TsSD_s?JvAlHIzZ}&^!7-Ps|A1PM@;N}dJP7-r~UAaqJ?1J9+9Y7vxjf%VuyY|gI@s)OFfyh5=|jqQi|o1MH#jb6B!wLtZ<_(Cb_6O0tGn+xjz!VYNxb6TrQv?cUzc8e^G{ZEao-JXC7B+Okqo7y`Px z?JY?wI(liK?A#OAYQKXyNF!T=hv6q z=wSTMkWl|9KR`lN*_$GyILIvDo#lM-fydMok|~{Wo8W?mRxUocGT!vmpTxw>c$UCtuk_JTyx2H}6xn_c4_!lwn4iga zt$e})BqujcPblvNT8KKjA!9{%wg&O0r{#xS-g9%Bo12#qv+bEeVq#-p5Bs@iWB|qp@-yk8!Jaeot4oFZ6cR8GAN&7AsN{jgQ`7Sp69)5dTO~5 zy{!QwJG&8DEY|9pO+1c~(BhkEDH`HIzYm-ogMlJ;Xe+O~E#mdjUt4D6qDdhL*sz8W zq;O(=_73E%X{+VAoS~AaTTaK8-V~-WjBLMwE7~L~x z;n-_qa~94Q;)`if(#3_GuTV^LvyMkQns{F7m>g=0)4X~|drBe>4Fo|%dX7jO=mF7_ zc}g+EFj^H5B%aE>3w2)yjG*SUlw>7>(#GVN(>Us~=RP(aRg>?G4AOl59I5vW?5UV$ zDteu!oT@6}^0L5|9sd5l_|-$DZXYC+e?FRi7c~47&2<$|H39tomEh9nU<7QKYAA8| zyocW1aaGky>+JH;-Y{nC%~%-(Ny&+e^L}>O)Oaaj-$arpJ@^`vZTm^FCfUsNxA)hv z!OLP6B}Fqi{Co2pCm&PGMlnBc`}T6{3jDftekXN%*LdcQ*�PrPuXy-)i1-_7yy(Z5L{n@UuL z_@7NsvMI5nRt*t7oA8$_?(X{s7ohJBjzw_~cef^#m#_!&&-dr1+Pswk; zi*vS}G`i$sNEZXws3o+ppylA~PRCex@$!fb)?Q33r1iXy2^^jS&O%U@8=LIvjN3dr5hnI1g*5nl3{{5H+tL@fZ>u{r^a!9b);(4L9Y?$2Kwh&-M&bPPu zNyV`a41AhgJlwn-|4>p%8epg=?g6SMoR6ImR5@vNP7 zn5+p)&!Gzq>@uICW@1<3R<((m=PiYl`avle=Xe>whESoK)U+Mc#yHtyw;Re64-Z+2Y| zu)4Z=p#3Og2v$NoLb}h4kMrbOiwXmU0v3ukYVx0StmwqPXoV^m06#g{^%ra2+o<6} z7Ga9mv4(U9>eJDK833Jvv`*=U0n7aviQvix;F!Jr^J+U|esFsKm@9pZqcNRYT9Pm= z3W7nT{$wggoROh3W5I21PK^{;sb=iuo&5VZvA}C&{yxfNeaQ5kEE%& z^q5Y6yx!>a^Y@pr)9;V`THRYuBuR^j7EN}Tq<5oDAth;$Z)wD^$S({XwDlzow-HTEod>dykHa1!mJw;gPzx|%oxgY?$PXBd2^ph01cEdt!RM&(I50Sg} zz!@RHh$U$U_E{EM4JVp)Wot%g6$s}{Mn@+}2l6=K@KC7}b9eRA-7O5#6f& z8AN+(c)SE8v9gvUt>&2A4iC<*uh#aD@~sY4w=CGDdVBXUFhl&iMZ5Ho1_$?)6eSrL zD08wQ0>tgN5DBUDvrtnMU6lh_*BmhR4!d`MqB-!uyS7~^t4uaIGpF9UT&aExeGc)> zXmR$F4Xh~$Scno7$YJ@71k2>LgCA~gzBQWeD!j|1)BKTMl8^(*{VQ^djytlm8gBEQ zOZAu_NyNPDF-_K|BllH`qsw)R9~4Y9K|NiYYrYvZ9h< z(Vq!nfWZkO658Bbe)2qnC6$u-JTbL_{7>jhr<97|Q#kB>x+ zKYe<7I2=soib3aG_Ge*4);8EM$B!zi!Hk&qh-N`;TJ{$qTi~!MbR5QM9vZGvQ=6`L zJT%9jihRF z*^>N*c4E^XA9uCLB96ps?Osmr|73G%s%(#c`|t~%Q6 z_!SyT|H%uzNsE+4K?1Bhz$Z|U=t12Q`ugNlR8nSale)kDs^Ts-G;E$jhlEW>XJviS z(RqTWg5oChYHn^VRtB(h6rxc}Vb1*%9vLA{mF9JR0si@8p0U0!glehJ#RU^zCaH7* zAz%xN_$t3Jd*Q(QDl1?0v;sug=V!286!%FV3i?j;$zQJIGCX3_Wir>e*@Fk2y!hLC ze-z|9oKD~WoDB<6C!vR@OQ2lnqeWv9N7MHIwP!d+@dqlF7W_QXx?pbdudQZfGr2Sm zBMN$c@%s2ANh`{Q7F;p4ZI>?z-7qRXaJc=tGm=x8vtAp12;r+G*XIu(-h8dfASOnM zgS~EM_McTvjDQnEU~TO*Pv*O;zkdy6<)ip{rLfSu^|croU3hp0liBve!w)UD1l*d zAU!x7R#Y+8X__^wq%avV_hD4L{o%lXjQ|D=cpRoB856*y3W?$&7o&mV$lYptqacwScX{U==>IBoa4uF*rScbMyCW+&FzX7##lCH z3{*23sgNY8!~l199zT2fVPC7gH-`G|N?Wbfvh+)tM)>zXzj}P3;$gdE&uvO7B%Y$9q1eS&ZX1^u-->7bJp~-3r1HZF#5}A|(EIUU8Bc$a zCQ&2}P9%@IG&if??&S?&A(T;3ZE3lzv(TV<&D}+5=X5+>pm;rP7O)5<*yMg2Xnc8C z*K(ZwL{HybTz+i)c;n=B8cFR7hU??SunC}RyNTb$0mwUAFc!h0&~nm1SJQ2aj`)x! z^_BhSFeAnNb>%n>6Vn6CYJGVIl?;7ISlAek_hniFP%KQw$0SPPZM%`XQ#dPw#lq+t zkL!DvJT4`fn(`q!1Z6FL`)JhUc5MCl%l66p<$Z0v_~9hY*CDwbJNyj9Uk@9B7PgyBdF`l+5@GcBX7&CHteU%pfd7Pba0tt3~$_%nolmkTB84~ifA ziOq(-jHd6Tq zq!TiEZ)3C4$P29d)4Dsdr@g#5#}gncQu>m{<#42>{9N^ty*bY!#o_h0b+Wr)A9 z!^uiSpC$FtWlm&RcYMlVH4I|0Mt%57b90S4twJ9YPvBN}08V9B(X|buZ zbvz}-2}+OW6F8oXTFV9hev=PpjpnbHg5mAQ^_z+f_RbD#Rr6=_$80wLesPdNf^Ju+ znDbSV)N23@%Ywb{%0Zci%au3jZ7Y+KoYyY{8gCZXJA9)nQrp`hI-ZYBtDa{qxV>K=cb-ROavdBR?`JE=HXjaG0bLy3jH-NN zaV@9BVWe>J2?dI(iPG{>QI+inYoG+q$Gxp3O0d4sLIcF7S?&u^oy&QzYn9uTP0Q8m zb!7&NA<7$|)b*GQr;=Q#7m!q~d?J z+dsL9O~970tIquLMYKGzzsE+7T4zuuZzdR*dDCd~Y^~Gh-S?hA)K#gDmC4wTTLw5I zSJG`3|G*`7a@}i4FApUgxosj3;WANTgv+5Vb9}JX(4es#Y17vB zuzP(z`d&?WlcH6=)B1QSQTXkT%^-$li!(()H{jkSF0Y;&)z$xQx)3eh*I_p7?WI2O zCU(g%8;@8uD0H~7XFYA;(y$e7Qf*yVA4YJ>4K?-XMMoYl?sHvKu*AFZ^MnPQHK;ze z)z!JQv`A%rf(&-!5n;kb$UtGi3WcqO_W4QrUy$>%*kO_`vBOCjof6)&ABi3vgVEe! zWzBAe^V!YS+sMTCT6Q#&P5$*nNzIu_-=l}dg2%T5KWJMy@eUFloEI)a{afn~GD)iT z+X*83duN~A91t|ip%lXPSk1>QZkOw=j>|Nr{~L%Id`yciHu$a9)+Vsx<<2Z;`b(0s zt1p7FOj9Lj&i!br5J($;E7}rTTYc32<8^Y-WBWZg9z}zP<+|oG{;zJhk0xsd>gS}G zh|BBq;ir^#r_JM)<-tJYuK@eee{8uw>!vSL<)1D@7AlCnyxY_zoW_fbbucpSWwF-c z0Tb22;%Fo}rbTd`iR!QZu@NcRdg4+QEThGYKO8#cK;i&SYJOpyU4~)rFCPyLF9x<~ z^8D;Coht)676qCZ0ir`j#zu(qG=!gT-MSw!X~r{DdVHQD9^BpoI&$SeVQWhOii?ze z_LpiYC5wWycpr5LxmVCT2_?+TNR*WIq#ppdAfY#rR%M(#b2obP~SPSbZWmLaQvv2Ir9Bk zE}GMw!|=2@jBL7aegD8k1AT*2tz$k`h?c6T>tm)j>+kY91rg@!1yJVr`v6} zL+6j(cOH|>O^S3BSO>a^4znuVfHwASBmB%hE)>rr{rC|DNTRBx|CuSrrG1DJCd(`6 z4H3`7`(|~l4*1}PQ&4c2k|Aq}Mol4Pgm~xHV9J*(slEQzVxd?H>5&@n}{zR4m1S2}8`q<>+W7B-pvztZtyO&#B zThbY7IMCqXyj~v>A7>j+7w5WD*^#fVTmZiMV<3hMgx3lt)URJXfrh~P`77Y>fVBW6 zTTD)l&v`{dT*S|>VP)Z~;pTrsHX?yN_WK1ecoFm#KZro@PZscm1Gqyg-GA22K#&4H zq)(E<>F5hvn2sN8K=zvb`Q>y4yiJc}RT&;4&XzA>)K*BsmN_)CPHXWubZXhe=z#E3 z>$duC^e?3!cV6WMbr`aDYpiX|>>}{rDJQze}uA6F*Mu^2;$wfM=~f-F&*y zbz7R}_GCMP+g?uQ>9HkHxHKXWA#ki~2vbSvvU+~4}=u;|05IJBQb&Hc!l-U!R zn&T@9AFh^Lc$+SU8cNEK`HlTpQfA-)2W!;W0ih?f%5Zvc zgzfy{ux0PaAubMc9O&gp9}-2atvzHrJf0s+Uhc<_EmxMLzo#K4eU#+#*m64n+l>zW zuf2``W}bZx>rLYA?UnNHMrUfG6jXhGKS<-~aknl2U;qX0;>b!{22fZ5xz|7Zs~Q@L zk;2bQ5+){NYl{J3F=S40JZ7!%95lygJS(2z9% zjHZ*hcKIR$RZ%2aW2oL-sWZwHKzz$n=q=N@Paf^B#K9pGPMZn*T0JR(3L^}eB24Wx zI95MU|G8fJl>?_!xG-7@?7GIMyzQ2KJJ4Z(U>7K!m)$TY|DzPKMx#5;=A`cw_59RZ zO`q-e&!*gyBY$XQl6EJ$JjH~)C!HHt6^4}=F`dj1$|g+PTY5HX%qCoIe;~sKNMnB# z;lU?F^R7ya&z6zqxqy5GWR#2GgYC@RbgeB#XS;wyNJudfERew{k%^=)_9kg(EPxiQ z%=lfr`(XCyX|4l>M{VV3e&qGeu-)Z|MfLgCJ8!~bGI_Ldaq)fQ1?et%UoD&XiXCF2 zFBJLur_73qy)6;6PwM4n3^-Wy*sKYmnVyfI^7FG<(gssFkR`N-Qh)lPN{mTU7#E%0Z7^AFDDj?~+vKFhhCBD}8gFxxUBVLHjVm_pI-Dp? zTt|n`)fFD7mfG6Hpg{GO8Xa($E7s;Zbflz1A;ZLidULyX5o42*{woGY9luU9WH6r^ za5At7Ez4oF(r{4miJB>FboSnAY{&pLfVzDTlqS`(V*Q&V4`P=!4@E^J%f-KAr{1sJ zrK)0>=F-x!E+7+zU;-^{?$o)V2FOe8Fkp?VH0T)% zd@y7$PP+JyN{_^IqR)E}aanRmA#K8v<`QQ%E+r({N{fFVZXU?k-K|7dcB6R3C8ECC zpl^HMYj^wr6RE7A;0+D}tSP{mbalQd_3PBQ04M+6h7|(s<5L>@3nM0vJ+i5xp}mUY z?4sWYKrbmAk!3UaJbcoIYcscAY6g36oilSd*uDl8sN+i2?C)Rv(pi*6d|lPM`bbQd zCm!S336r0gKy>Z+o^7u)dmt2>9W<4`p#;ZgQK>O#!RLL-OfR=he4=hhAm#F13^=@5 zK0U#erV31Ia7ELolIrFED^egr0zvEdZ@0UHQWTSsfr391zO>?vPZv3Wj)#a+HaGLp zCLmy7uz|N9I+#UvaB^$Bni7tUbpQ@e=c3K&c3#x)hX~_?8B3tEE2}NKKAqz)Ij=(h zE&m}LyS9_Ix>_khvOOh(2!vSI{6eqe<-Ox;Op?mZQ`F0gVcs{GG?60(Bz__JC=!M6 zpO>Q~6VubHYlGWRgM+X;V+M_Y+Y7#*n3hCO3UDaqRD~uGD`HIU~i`kRBS66ybX0GkA z<_o(g&-*2-t;vYA;=V^!szHM?}5Qn zbnTOzZ~orThaYuZw?Ecu!nof!+X>z?7M27a$ z9}^Tz`%%dlVV&cEccNq*&qZGHQnu`#S)?3NKl6d!8_uw__T!}AMLqKBgd^vk{< z6iQi;e}O2~6N^l@im?L5u!Lu1p4gXcS=Bztc}c7%2^`RX1IXXZAYI*GsENv?OL+g$ z5wDc8a|%QaFBqW_b9Hov4LtOo{#oBIf*8nPc}E%2tWp|jA^WgpWc~bPj}aD{Yk1}6 z>iyy|LycMUa#fU^x_HvCVsP4WI(0U03Y}hLz2VFSw1N@W13HAAvEJ3iVVc`j`QBWy zs$+m+V>qk{M?Y{*Ir(nu`yoO7TzS5=@3irjnK%@)V#}Q{GZ=IWV%vMaCAYY!y|tB0 z$51;lzn{~*Fg8`70uIi5hrvvQlh&H>-K;-Bx+yG_;c3qM>jty;{6M?syGoPD9&9xvDm*NW`m%@Os1yM0 z?02@5w5@0;x(A}kOmG-~8v#eYqOBe;YXH(YKOe|q@@Du=M%+A8n& z?;zb5J1Vd#?kD&l39uf)=>(ZQEmo7p+?4+d_=MnHN$S)i-hv3S5z2nw?I_6mke))K z87Mbn_(0G>o{vXJBBacptSg#=!~^c&kSM>90Of)qwFSk?b}jx7O*9{fCR zxeioVy%p>Ltvg-(qiGWEAL{%jVeEZcw5!ZoTS%W&VC9rV`S7=thlWwZI}y zi#QpQZlEFs6df=a;yGbqlwS$EuiFe`2p|`vW5?a;;=xqzO3Azu1ZW~HCkZP zIzDFeK8LB8CM@D8EMPg5_ZBXhqfjde9v%@z3ZV5q<-cjaM7c>#1!|s9drR@C$yG?m zah3Yf;%+Z{s*4U4}K5D&Wtx|VL_x8eZbc|F-y{1#DcG-&A_ZKDy zP7@Xa_uybNWX&F`m~%r?QPxYW1hEG0HOdu5tJkZoY*!TGO)F5k9SJwu}^cSE} zEn0sV1s@}5Xsq=P_#dF&HWSpG{#a_Tcer`55(S`Wb_L11%no45*6h6d8512`wfN4d z|JUPR$A+_qS+$!-S>sR9e0G#ce3wXcdAXq>D-}%X<>kShdTexGi}Li3HGd~D8lLi= zqTM_WHk}C@NpCCklgiUH=Tkz-(HN}tP-prfU078-uD!#!xNz|r!Bd8PM^J;`&$;yr zTa%GBz&E`_X}_Y35;T&)Wjh(04s17I(E}m6{qL+dqPSRcJ zlwm&BJ6VDPTbs;A=T}`l1G&j`e9WZd=}4oZvb?p^_t{92kJs7hkI^7VQlRpiE72Nh zdDse|^0P(c=88f?g3)U9c!T0~QxhV=07D1|51(dasAPo6<4`MI-d`)6M3$$lDjgUt zlp5_cB{Kx(@;^&rBUT>}%Xxj;MFH3^#MlGXUz!SRdEn));CP<__oeOqmoNFv%|QUk zH9p@^r910T;|j)#WZazDZW$P|avDcb30+5ogwP6WBi0gm935bj{JE*}8*Yt&3NpJzQ&SAkD^P zDa!k8azZ~mFqB&PtPqO#R9)0Vpzv3<%muxx>UJ#-tv9R5|z|O&3Nu| zGZq3qF#B4TqbQ|Dl3Dz*KUy^H7oy57B4>@^H3OQC21ioua42h=&3Mp2gQr?b+_Kz% zwyvt&_-jysi@2H@NH{OExbOQq^8W4m(JC{wgBifYws9^b%0w4Y>9?a;kQrD zOn~?RH?MGHq`Th1YPCM1zWjS$f$elr-l}f({M3{pk$n@%ewUmn1ju0wC0sAL9d5)q zOGvDpwDey@d8fbJ_?TjXkx*I@ns`Gvz{-iIyyW$01|dt0%#-2E{)6COOG8+a&Vsn1 zA<0|8@}AHdK0i?ZE_DYAiS2P6)z+@W>;VWjfujKoo|Kg5<;hseDkm$<7UxC4DO9*J zCRL^#=MsP_NB{bAE5KnH%n@yZbB}(vRr2a9+*i@A|tEe8a2#WkZov`)G`E(2Ul83c1rb5U=o) z{4G|$-w~X@YUm)c%gT?%s4kQxBM&`t*)PCs9v6bWXNnfkhkCHLBw(~fZv|)mg-gkLalP3S@*bzbc zt2Z~VWzl_tqg18;>7L?SDfZ0Fzxy@6p*)OCZdC>xMl~%KtT3_uN^kyvyE`BDkOpfj z3ieq^x8|4(US2cHBg2a=1`N!{7S9g^gnJG{UZFOf+5g6kb-phSAIx3@YAWLC$;|7# za5ot>)Oga2F=GJ(XxoMzOw)E^3?*ecVMFzIyJ=GPKLXV+!H?8%@L2F-TL?{f{`L~W z*J;pDkWfAlg?Zl?c?moOVp3Cyu@HO&pUo-2s&6{Iw{7wbCrB6xS5vYLeb-V~Zt-q9 z7J-(7DlT`PS!?T3Bn-LPjm*K}z!SYG{NlGZ!$YSP&2}be7M3C<(>|mE8fU8v_KVAcLcS z#X62(zcN?0)yK`(TpISZ0!9B~d-kow`7+VG@49!**bo4f3hs4nurxQmJ2PTx=gMkr zbpau|MqsXis8*JjCgA+{MNke8G}m;r{^r4u>IraOfZId{CN?_9EJ` zd?uAqMok|d76OZY7snh7 zFhwsPmu=(CLu znY;jZST6Z63sF)Q$#~W)U(2c~D?W?!PmpK}>K@6P~73uU9q7Y;>n|ChKw4&@=T#}GNb zToh)?Yl3#wnv#&Zo=uUnQ3B!PUJt+DCX|ta+h#;~p@aP zp95`gmqfq-i}*2DeUlRu`Otda)D)g9m_;^SWJn}HSYGh@sAW?Z%V*F7AL02Q=Xx?r zNtvc2Vr6T!AE*stk58#fV^ z-zi9{ukmnYCy4MpIe8f}T8+2o$26;x2415A7A{RpdKn0o_3FMZ^t7CwMD#|>Q&Go- zz9&g{8|i!cMoIHQQZBN>M1(A6WyR-vf;2|!g*02-V{TYrbey3H03Fn_cRcO(*&mnB z)+H+QJQ>U;q8W|sn>OrtC^C{^K8tq_sM>yHS474a?&ChTcpp7zRHo%BSgK}YG8E4e zv^0K*oHI+0!rhrb2@g`;qK%u8tg4k2BtHce;^E$tOA;O_*anHbyNyB&TK`FmCq$YX zJ&nF+xIcbEf~A1Jl`d+`#=3dlkMFr?^-NF#(kKLT<(n5tx`kU0hcR9HshpO2z{^2( zA@;Om1%t}6#Raoh88r{^rv>p7+=htz<_Ab#x#D!63@+$+UjbR!p%K*Z zQnyhsDGccnMvUU;@B>C(aoLf{-bAG#UwJtb0RbUEP&;%Vb|FCPV@X=OI zkBr?n`n(eYAW!u=^5(w&HSf%ZY2&DuA2>DKJ*?b3J}|fjz+RSV0G$1}H%h|v)J+mR zJjAml0CLD}r>)&Z9Zyu56-?3lB03thv^{qdQRvN_qFhpGeuuj!!D z{Wh?!^iTuHgAFLD?PdWaShfkU=J)|n;Ur)hpfE|Ei^EBt_kP&keNEFuDP7?3XiNak z1z0}NW5VYaq<&Oz34$@|q62s^z;^R8gpzlEMeL)o#UWM^0`)yVqhqWcI*8N{N=&?1AgU&Lec zv`}z93+2UVw^%A$9(GyZqQeE}7o|xCE0I;)y~noc5Sln9X4~;g=TN4`bp33S%}Ox& zy&S}pZ+_F);vlwX5?>7tf`+T`bH9KqEzP#R7R2WC5ADa-Pmje)=HdiRQS1^9qUX#s zJ2E4@A21Wb^00N@I4qOf)#Quk6mxsyDocrBe=LvF5nYQ-fuhql_l>-hAe6KHqPm$` zZakK*p`B5y+J+W9aG9b{{QcYfy0|dg2$!bX9HcP?=q68r7P@vJj=~!sA%sCoT@GXi z%T)(YmN}RjNz)2sN~0;&Yl}DXwRSCqs4><5=<$6v-7#SM-L&Q#_ucS$an8T3~I`uX-rk%dVfMdMPLSTG5e`|Xr?H9MHWada=q?i7Z z$K8AywMew}CQvBJdxmtQ&l+WcD8qYVuB?p>O3i1KmC7ZVycfL)k2=}TMt|8rg7U2o zvB7FLmFl3VEa#^}g~<$8S{qP?DqU~pG#vQ79&K07N&N^(x+|JP@#Xo1guPxAj+vz} zK!E(lYB8D)tLnttS2j?VCnQ z(W1n2@n22sf*c_cNY{geOv4guEXYbD0XOaLnG6hku9873rWV%Tgy%g z5=i~5tg?I$dpzJ{%F8DW0VhDjkzMQiAVWu2mFaNW<(%@C3z6eMg9{$XeCEN`itcW^ zjWpfpF}!pE6tmjP^E1%Fzo{k;Ej0!7^okXDKN}?1@z*g}%sWol(x>?9Vt=I&`H*mg z97?8qQAvXVQdrZI>n0CZWFFTl|ErBi6jTzg#;BiMT{RtJIfv)pqh2Aw4IUO!CE7;o zNpggpQC_N$X`!UBKF7o2yR~=iZrcgTEOSNqXWbDWfQ@1{BEf9q$-_0U?NwH+Y$xzs z8)>z;@Man87crZxv_kzYGhYLas=2wXT_?;u&9e^;rP*5`7&KQrq|Mu)#`~QZU?$*# zIKx1);({|w3x8_k%|_VbT{j6+54c(LZ6LA*w~0~;+_})H+}cT#z#ysIt{w(CC_}-A zVsPnzRWHGJmHDDy&|0rQ5=F=BzS^(H0v10Rgz)e0&ueR4T%NBh!Tl8A$GTh$G6Rp| z^`TNqHp9(fC522R7o+`hSE9!F`Q=lVr>Z>Q`5&zD$+1z6Y?FI2nV=titVC(U8! z052$>+m?$&1=lpC;PyxLFWde!8=9W%yfik}YWPXUJzbO)dq~0@6YKy-(yj1K_f+qE z1L4hlPr-rB=#v>M>j`TZCheRX}C$Hv57c=w4(05jp}P_6r8<9WOb~sRK2ZiVz1?+KU^c+e&te1hs|0Z3}oz)}K7(pfOsu=}h>_ zRTx+gecDjgtadPoRi4b6<&5C|FaNZz>ZM<<%MRCW5JevuJq6X&6UBzl+MquWqD6CS z=_=11&Z&N?(VD2@uj*5zPfHcD-A(R<1^go{lQDlBmaaXr5{U=e5A%Jxwy{Lhtb+4P z5$8GCf$`k~=M}OwK2PMKNXY$SgFS#Xf$#(J;a{>Fxqhp7ezDxL%r5Hh|E=N(QUK)W zK0`xH4-Zd#mm?-_?$4%fE=4fl(!x?B8$h16!2S*vCKD-%kITyXrRsjRR9?yaUumUR zZ>87uKHWZpY2Cry-DVmdYmbNOb45A`xU4_lBSPiUVxUN86-DT3b6l^tH& zIr4UJAjfEX-fIJN&1rC30i+e4o=?+U4@%~_lv@2M$VH^)v+`{Br1WI=l<19L|D&)G zds2PRCzFqK>z(%Rp=bKb3@NbK0N{qM19{cENIXX+aaaoLW_UV6Y7CTV6%8ps+av_e z2o1VCZ}l1J*1G{xs`oh zK1F$Gt*nY^JW`s*J22xmKzatKf;<$XJLr1~3q{h_R`HLsMYmPccmFrB0j^Ym%YMO8 zYKAqgZ~^V#t#7*l)UjNckv2AV7Tj+BU`@L{%2^ru?A;&f^m6*@RAZ*V9TDMKWXY#v zll-Gndth&p4nTLH2ELKbu~5}q(|16WFReVuuN)sYj4B75{y)Zs{2B*y?2bDz^ua-m zryb5xASW!p^#ELLwyk7gbr=|GVwdb+lKDP|6=@<8L2>U%T7Nw~K_5BAY;A3+3;08O zKpsJq{dX;TXx-sjut3jZ7Q@gwA_zd z!tvvVF1Fc0wFXh~@{O= z%bY$Sa&hh^0=(Pcu(^i8{e9U?3Hu8~-W#kkzIJe-&OZ+lWhh5p>@r zA{M)TUU#lPHQ{V?o)STzs)Z2x!V^rI>+6fG@E;WYzZShp!76X;mSA$y++SBKBJyz2 zE02X%^`oaz0bfY5eMz@GiHWN}->x*Z%#WnFk8@{DH$nzyeu9*-VwCWHeGVO!K|NX} zi5km@88Awwr~jkQpuDpc?Y#!^P*x`X=<0M5?(V==5fg(aEi-9qVrMW)z_V=ozHdnS z>G8&RKb|glClR}*DZMy7J^7CVT_h3DnUw4Z_AY%$)3a0ac(RX#0~^g;+4{eWZGR*Z zxqjPv_f&z8VbyUo=cjY0xs}&*6j6UJ)9HQ2$jFxJjo_^n6ma=p3i7Q3tm{H4X>j#z zD#-;qVg)>((w2N%6ycE^j80dy;-%>j0Ceh$yp1ItW$X_rX+a_Z4y7Nzn7Lz z|Bs(1wTy_DmdhpjdDTeV~Zls~02$|i5;t_k7mrFB7SVR>Rw z7aSOOhs6{X(J3SXSR|4zVpN8~Gv`{23$Um!DrO3?c?|iK>@M zLWtlCSKrI?z2h9WQ9w#?xHQX za3-c%lPgVKWHd(NATCD|=GXyubrBYsc*N(lJ@4*c6;9Nv4JMBrCD@4>EL_8~#y{_0 z4t${yP>A!ddO|+G7mIm%ezb*06gl1!1zEcfqm9SlxcNXbw~3Cev^_l!P^4>lt|Nww zIm;PsiHJ<9oJ!~q2&-lUl+k0lOF=^VU^IViPO0^4Qr5~=m@_qwX>n#&DQX|i?G<*E zg3q9qH(CEzHFI#?12U}>p{I5t!T(LJMzBCe{{Jk1SGTfugebLPUknA%td`==W%inDN>rT`u=$LZ@Q&HkhyIp>&|8M|f z2LmZ=d}f2iK1c_WMURy2d~7J!Y>ZBx2@Gpw6VD1opci}$x1KJXyo{096R;xinbUUG zY55QG-8XLTNz)rkH&7hQMe;N+RsEWd<$tp$_P?M_G`2J}%4c!g7mtkZ{v+|$V)eca zN%(kvw1i*K-4WMC=j_mTJy;2!&RW#@gPw>Gj+oV-Wz|FEA2R2kv%)lWr*VEPLOvIT zxvx(*G}6N#Slm<*w~jXp=T16`f27O2ygVD7E`{XOV%62yr{%}GI_?VxDVf`@8}_ZO z%{jFMgVWI3N>DH8_MDPjl$!b(^_+@|Jw9PJHcL08Q?JtieQ>yxlDRVW!tNbAdp!|f zg0#uyv2M8Hl6Odaya9)$B#1EA$HXdn%$GK@_cp9X8t+f#b0k&IT3|ojZE`8o(}jfG zkEBf3e}DXnj=w*2ww@y@(PC&*2_oMtE#R~DVC(AhPH*xFW!P1Wpc z_iO@cq;G*t+~Jt3t2xj{(8KXDeMJ9!Ik)~ZBW#R-Wlc4=73JKKq{$c6@AVkrY~5UP zA6OLJpy_(F;?7;GC$!AsPD0|bxhaG->E=qNSq?f1FW_N1t3H=IF;%t{=7)2J9JOC} zLKb=h{)J$&>|H1SuqZAs{xkS1l>EK-OG;|45^DnnymUEEK^uSHfdvv3l_WO8Mxk7< z0c+K6&G>?mK*Z#2NfFo8X4Ku)LGOA1BJ&`-5dkl2pLg%>DxnxX_TJ)RQX{Q9PooBH z3NQLEohUwE+44eK?vyR#;XkRGI+mq$)USLb&M3Z3=c}dJ)ux+6tWF;1R%u$7&A2+* zt2N^nb0Vm=cXPT;HoJ1^JPwU}ww$dO2s^0+5B!%SFmu!$-=t-bxwtc$NbrzM!o?A( zqRso&(MBL2{AKVS_dB?k!cMnVNED}ON>4}m^5X~EneFp2rPhw{0At51A z$nU~TM#RrjY#i@=B;urpltr&xyH&X!lqVt8^d*5QL`$wnD(;{6@2h;XDpJkwxX|>H zl=Z#@B0=EJg3=^CQ~YrFPj+itQs*|u%lwrg@zlWp6s$!==0ZQJ#o=Uwaj(~q>8 zIp@Cj-k0{)*XNSq%toMwzEEyo2_C-bLK+tIB{DKgxA8D| zQ$Ys!6j`2uz&{S#yuIfeRV*wOJ>q3}AYq=8ap3YQ@f^(ak!$;YGG z`L}aZZ6Ee~&)fwY*3*ZF`}te%-hrZzTQ)K!)BUfBfi|Sd>(z?A_YqfQ(<}TLz{$6n#iGN0CsNLGa^<_*^(v}O5G_?vR5I#XpR+^-x(I+x zgF$fXThWrUt4Dp$>Gng{rfuf5N=&e`HfKeq>&TAl34ZT>9>WE;?g=6Kq5#Cb2bA+pX+3s{V+p8|5 zEjN|#6!7HaOEpzFd~d-=PUOUDG$-Cy-N4Nx zHGR1unJi7$Y|&z{F|saF@g|s3!w8fPR!9{Zj5Ll;Qbe`#2xW-hF<_QW(wM3DyH5v4 zol2l!1Sd-yFzLGEHzQanBQ1c^^kBnN=zAK0*(_!O4~hqg zl9C(-CWuZaW!-l#07fVfg;W@ahaHe3oyh9v&?7BP$qfJp>izDo)cX1l*)-&kMwbuz z0)qg){^y%$Xe1A#(|OL<2RNXwgXH1Sif$gS#Tbt9N-dV5Jzh~EqY)me`z($j5`eB) z61uTLxR1X+R50<{J=kiy8OB>~cj0JnM|hhx@N`4;zTwpJqQvD5(0eznz!zrj>@ZTI zL8+{)_w+P$brL#QcaGdy++NNH+aU4`Tu|VhbrlgJc3$U<`+PkkPaioT@twqOvbQhO z(;eOD&D|}_9AiD!>@1AQ?#w_cOB^GUEbfPZ5w-fkl9P=RC1S_meyEHdj1wJ#mA=3o zWuxZ%`4Q<27eh&O)_(`~WUSssLeKM4b8XyExRxQU3icj@MZN1D+PA;jJ*x$2b1O~SXgY+)7CUJ)FVA@fl}N<$9ddaQFQ{arkUWhzccTkzO| zK-&S0!=DA*p!2E6`FGMs1(nqw8aLN7EUuQ&ty?)0Kqm{R6zDK%fnw;~Ub;v|z|+Cv z=j~CY4!CHAJ=^GK=$K|eB1N}<;`N`*4um7|FOLB)_x@pv+@_ysC~Zv*E}?fBR5TWm zSzj=aZsPrLdywt%)9{Bj@U}*DJRYeB(b7~LrWznNnoZzr18r5|y-!DudqsMj0$=g&eYzr!Aca`(kPG?;_#G?Ce+OG`!wPX)tIRZ0}!ex}>CO z_kFHK5N~;^`)AbZn2%RuuNP+T-89wuue%4PuY5+5bd=?4-U+0!g5|2)dL6KBb%FTx zOp$@hoPRL!n0K2gZxG!F`qYLfTe}ofOWfIoLZIf3#wgG9C1P+?H0lnt*$zwFDKw5t zUmn*!*1e8U{a>x{E7h~N&uY;apOUl(lc@Co)v{;*fF9817D~XuAbC`#?%wyqoq4?+ z3`fH^K>`({G&j!p=@K7YNLWe=LEzo6vi#zr+T{M2>2SKcXA`rt&#;E|yto+B{c>`6 zVPaST*;k*p zg=K@X-rn3Jzlbbm@`UCW7fBLVlvP{pH^y5UO|<~?4kwEb?BYFoOihj@Yn;dd4t;1r z=*{{=^`BfDR*=kjXQ%q=i15zLs4u+q@mYx6S-)ZUI68eY1m^2x4bJB|1$08I z^qB-3Pfq#o->H7!A~I^v@1E&emEjYdh3c*s7N)=VKPdY2px@n|!mP7DjK|MB0B2Os zu75#IL|z^OGdh_=|9rYTzcOK-od|siIe46~uN;inc!~$S03+IhgCFOM?&rVPPX0?~ zW?Aia)aq1?jruK0xq_$j70^1A=I%9syRkM5%mI zaq$i|_Ofw^eo~gKk~0g;U*3@JUV%@)*BQ5Q^z-#~Do$T)KXZ!8qe&}w{9OHR#g#P| zsQgLU>EC;`TfcTm3ecJ>eG?w*v*8-LNTGtM;KzRm4VSCbovSZdt+h;|FJduY_h zcej0BlQ?3g*J#F59G6+^Azc-b)eg6^?Ckod2fJCesf7jNWD=DeqW2er!wmLgKomAx zIN-S#+fS=z{mRS#;mVQg-|^P9cXw#_-#N)6mUz9tDFu)h3|f0ifnMCgS@l_)httF= zEtiHd?L&l{6$>BF`&s?2x0)%3lx#gA(NLL<7d{{7=kvym7$Tyf*}|~rSMKfI0`u8| zf&0q~3DqQ>?4;|Ne36wpBQPVQK2gzSWgrU;rf25Y-s+zRulS0*>ml>Z6uiQ8_f7$) z%WhBNV-UnO0*ZG>PJV%B;-Xc5sO%Hj&noF*voB#KCALoYF{Mg!y1VYMSvH#l)0{u( z8_}}u9I(k*jII4w0VQl+8+vb1>0TjdvkH7-TILjJDU6h!GsF!ob|N&Xq>{y>KXBJc zNN-MN!8%nynHIvrY%@51C1KENf7H*TV=#L?SnKxppT@P148}LwXe53lJwAdX;D#Dp zZEDhEMkOXv%P2TBD7e4_##~Tfrnu5-q~f-o`!(a`jmqgrTn@BLl;x{l|3rU?>42d4 za4Bv)FQb~^d~RyUH}`i^c$gk?!hBbw?en(on@J%AskOKLyiT}7q~!hh!O!QjC_okE z+VN)JFCJ&xQdCYAl~h!;jf(kG*2S&ksm3aV0UESYBe$sPd>r;?C$jg`*=V|`%#G(i8~J_ z#7#sOCdZD@^cMODF_(3B?d=bI4({LAVPV)V5cd!C^$7HiCwp@_Dz zu_e8^!>Kfe|VD^P#Gr3bj28 z7tbk=*t5CCylR@K}mwqpaw~;-z5-dDF-}w&XrPS!v}&tf<2z&Z0%Ao3wRF z`<>vck0( z8YOdQrk(#4vs1_Co_4S1CxahKub#nm? zqkl1^9&qEiIc#P?Mt=p*wVbaf=R#mZu2MmOg$k0P2EAPw4EsH~9XxF%Lc_X{Rtk@g zB2%KnQct81n2aZJ{zQNiCrJQItb0L)0~RH>hnXR>;PVQ2x998WIY|7HPRgjSG4Swa zX3JjQ%2~gKhkq^(c}b$fzD}lx__(@mFasBnrq-AN5})Ypzv82ZNNgTV5Y9Ho@6NG5 zk73Zt7^sL%pB;rI;`T=wdz-8gk4UuX=z8`LrRVkz}xRhv8QK9>Syd{an~#ubuP+UJwL} z$@eV{GiMc~1l$4_vp-4nV*^vf1!<(BPV0JbCtG{6R;VBgO>}jCy??ns(f(SsbB#BZ0O;kOZ z-k9OBiPH~;hS%mU_tsOQk6uv!tQ39?Fg!uElfBd_?x_=c6Gjn08Anz{BCq_k?(`u znzSewI3y=(K7SP082kmeu5dQ(tftsaBwfQ3+3)V7sz0VehBIfib8qz{xZME}18u6bdqo9NB{J4IcQn93Io)+F8~|WS{{D}q78*=0hg-3@E`c0d_>)am8}*Hq z4t2Gi41pN56u`hB8B%%k)Bf@zOBmhg&0VtxpM>O(DQGk9`@5}z;^Sk>zhdsZ4xTk5fDCD9V5{)h|@}4k&NMWwT4bbU` z@&jc~L7@BR?yj{cb8c3a?VptP_)MM1?#3vDw-RG!tpsSpX3g>j&2l!a>t9X>ed&C- zAAUBt3IEW+g8-i4=KNpS)YTVJax#UqdljXR&w$c~c}UO$V~=FGP>5nS4S#{NE7?wY zsid83&qEc|x5|~t60f_{;%+x=&UpK|Qc{gdJLRT8Sq6)>x2smovv=3z+7eUSM2)I~ zrH5A1>Nd`RZUkE96tzhLtf>yUI5#9?yRcus2#O29p*{(eXw#MB0F*If*Z9w)*CU{! z-nE#rt~-vRii#)*6AAZ+%l-9B&iu2!f(6a*t9J#f4Eetm%C__+ft$9MB8hC~x2CcsHAOIqsom zV(Xh5lTZ%5e(&$^5zitMq9HB9)}{2(`(HzaQvPhr+z=&*3hoV>Z7JZJEA=QXD}w|G zl)EFwy)}nMCzndInY?K-at!BpPihGy%~u@;RhKwcbLQuC0c3uAY$*RbNmrod+gq%3}X|$>Z*Oj}i_{ptmus8Bi7y z(EtX^+v!?P$(q^We&NM70a2dx$=Ea6ag<}@*yCKCvfUR_J~=_^b0iNyr0{BDVxvjY zlM4%)ljdZ~)WNFKKoO!2_>vn$AVrb0!>cW<{Bf`Hu=t{q9ogwH9LoyJj%+yr>3)IuJ4;htTAq$JPHE7h+mNqN;*JHYUZdMn;o>! zTP*8;XdfyggF_;o2ln=Y?d%X`qbfR!6sAiG27)nm{YWq3$Q@Kw8yeSYY&&_oO2|oe zH@!NN_&Um!IM@%Bv81A=Rd?K8b2#hi)OT_MM$Cf_B6Kjot_MXlf+hVmKi6S9z=t(Dy#>~e0=E1&EDo5I70N+rNVwKbSbF<&r zd&~B1g?l;yR}Kn&ktIo)mi(4Dg~;)+wO2;7mA`xXhyj|(SQ9zqm3w#3wol(ojDi`h zWMa7e)yML)#c^j;RdQXJ>hV-T2q9E#T`;W?E?9MZ*`dd(rE|fWgv$#j1gbZz(1dtp zrE|I2hTmkwKV1H3!S<^%-9}r}d?e1+`{DK0S)ou4&_G~nXdnQlaf9DC0K5T2uVDke zQ2&nysxALaNq_%2rS4!uA4x^3qQQ|j7I#~47#I-O3vaux`X)9ttzx>~JFNGCdGtda z9Ia05lPH0Vi&P|ZP^H$5pV$3xEf=rDRBx!RCPLOStm__o{2g>>{rpBmdV>rt)z6lO z{4+`S^KbBJmjO#$tA9#xS$f&@911s03np>`4tj=;MocBR_jl16xC zVzAd+Q#YnjQmS;bs$=>{`m@+H$qwgu)fdO0LgL$zfrpw(HB!7Qd>y&X$o3 z{;cUBw)_0Cwr}_#7oj25nG5g7C3uU2yFXQwCesn>`XS_oU<6MfT|EpHD{E@d6ES95 z;IP$Grdq8q#^b!NktFQ{3id{tOp|fth~PM7-JW}Ry#rcMDA2w>*S4F+%?7~hz7cWm zqzuz|>9WCNra}x3PvNcP1#0^tc}P?Wj27#D@}gh2yh$8rbmR$t*4vq!$wb9g^f|;4 zui<9Ej_r7oa+4HxqJ+D=J$D+$AoTlNaPJ^4Aud5d`)phO6^^6=czi^J?AjLU(E(!DCfkKn2sB(3t0KHW=PVg#z5 zMTi*$=P4Rj1A><=aZwSr(WI=Vv&k{D-reoX(Dn-0kUrVR*M;S`*WcYPlpOvaY}r>G zm7B}yI;{nFw*^$xk+~zWq^8$~N!$clJnr*wSuO}jBb7cLN!s)$K&C=l|KsH*!LMV> zA2l@*!GCi8@{`&QLQjg50+ZhJ!=>EjW;eb->G+acV=3BdHyAgEMA3>4?iYccoTTX} z_kF+i@3`h4jhoaa;b&a=(4|HDllI}-)fD{vgy~fectc)Zk;e~Oz%PG(ee5_cH$c$6 zlXe>U_4TB($N=#lq3-F3Z2gd4E78g9;6u|uTQ=GHLY?ipcnHYL5*7NZv}RDlD$)MX zZL6KacSwXn5uy;bVEF}|1>ptFDc?+hI3PQGb8w&+FAQ@#Q|9ul3p~p0jXSkQds?3h z3;YHJ4iXwgQl+I19)=1IGH?SnpTikpY3u!Wv4F9!fYEAx8_cj~NKbikRp37!T5hW} zm*Pg1Nk=SBZpwacy&XV(b{8IEGQWGR0Bqbfhp0t4e3unmGNCaNS_GfS*eNzLt#UoPBN26z!USHmi3P<*Vu8{Zg>+TWVAStIXT zqw`&fV$OiMtjb%r`oabtqf6#|N&dT=s8`Kt-}3hILczuL78=Gk{Q7iQ?)mWZe)KKc z$jcQ&`}L$DP$(YebT^fd>VvBRuGir?+Z*uB-X3>%x9b$=&Yb}veT}6an{F`fzK?Cs z_o4R=n;kwU;4_9e>opF)@9r+T?yACPf;jUONg2_-7pJaw^t=@?=Qf_?&HpmD{Pv8T79VJ0 zNbC%~95w&{T7YWIc6AvmYntTt_Nsszu}L;I+4n;*VLjz|QwJf97L5AmafbW(6v=KA zrC4taEkT8<;`B5`I&sVyv;#LJ(hD|-%6`HzEgq?jP7g{7io@WRRRz-2wVrt%k58cG z^O|bvac?WRT2(F=6c+y0`?>n)mGwpb`h>LK2jvr=U43*?`nI#@;sy?`>~VZwr*b_x!LPH~ zA%*<)?J$XReParF-rDH(>A1Y_BFk@P6MH66zX$*&2eUVj;joi0!tVE^vi$avU)O5! z=5v+Z{!=_8I}?u?jZ)ch`y1QAL7tr-{p}aaZQMY@ay!YxMND4387H(dM3lV;@k1Pl zEhNS0rmT<<2t^`Hv2x^)^G&XbS#kCAuUZFQ8a2|bFB{~ODy>FyPEO7?y~{{l24fRG zPUoWdqN0KczT}Djz)Aon5l0vMd^sX>IlQ;(nNyRMlR^kq{iA6lTGA2vw-dBYtfT(u zj<1X$`QBYhh;vpp_Uf!Q90W|T6fAihvwL}-W&}j?n=US=#c+#&1>|iY#&XNy-?95y z%l+p!p6wl@@WR5V$w^pX;K7(Kn3RbZRzF}yar;D98RqCt|5Ku37e@~8GH+2I(c-J=y z8D6_}5sn{Tf7^IZ5C~SM02$x|&-ZgmsXjERVTBUWnjJqP8T7hVCsIMJE!bGX;FAld z6jLk!D{YgXX#+8|rS6Xi^@Kc4`l1}m4iQ_rt_RF4b!{6O>>94m{zHLW_!bjMCoSUVCph0Vx(9k)N8L@V2h$oyf|FyiQs;vUeC44L{Zw5t@6>wq zav*4qdS$UlIHGGr%r0|2?G3q-EDyEB*0=zz68hNG#solm22*KAM6@MbU(edz+t(o0 zykKw#0&hXJ4y#uC?Z0Z48r2`TTpw>9c@_#p+-}zI6du(D&Whiy1Qko^%O-0@NfME9 zuYTG{cr3R}m0)@>0M2E!e5)eiq!sI7Q|9l9qg3V8`9&q6vVIiWVVLbsjK{rTFXaut zQQ1O`S&vWtuxxt~m+f#>sImZX#ppz3K~d399f#QOG~)s6BY%^;5G+}fP z_N?Q$8*xI`SO71UP+c~bSiEHXXmSK5D<+Qy;sj5kEj;nS_uwHysFe%Tp#ru&Lj(~6 z)qn#V=4kwtn$oJ7P=yHC^!LdtshYX(2>4?OO;pmbWY{+O1;XO>-;-!Iz8Me03s=cX zYzZc_rEAMw7uGtFJhR_Bd+7R*Z6BJ4BlDyM$0tmB_F^|`?U%%nTW;t&W!%G$hh|E7 zUh8L}n~hr6VC2?BXzB%v9z~M7!43QM8p>}(X=;TIvSACE%TOjx94xP_7^$z_iS>jE zqwQn&>4DrJSTHOWcJUH)^GA1eiK^G;$f>7P%ZJrEC*Hw!5&Up^a_p z>=l!nG8;$hj-g6c)(`Ll#>*CoXnlFib>2jz6f@^91b^P^-EQLK)tI(Yi;cyO6>D>c zOa0$bzei^*>b|>y;k?3+BOJsa5=})VVVG)|l42CmwckjImv2JWW1c%ev@Qw$>pRqe zQdVwQ2DA~a@@L_T#V5|cAw$yTGFbqY5ieHUKH3or9AI>Tg0EhP;$nsq6}+cmp z%RJf*S|+tAu`nI*t?rB;*(_YLs+ny+chcyRBW(XrEiqF=%rgS46D?X&n#Oo{BVQAZ z{n};t$ZhGXVj@?y8mW@;%^mY`+8MO)JbpBfY(!G5JhFjAC9!j>$DgguYEDz&PJNQi z!Wf%`Le{+huh3MAYR;Fq!!2#``D(U|dP>gxys|L~ffkEGn4UkWa<>L8Ds{sjAn{@# zfzz8~c|VialL~@HzI`V5Hr(roS2C)U|GqJ-%KiK~aBvV}|6t*7L>h}36hA-T>LuU% zNc-X3;L4c7IU1k`!rhaGpoQ zoXSLJk=>v38B75GIlu4I;QXWD(jwYYh(2j8hAYq#v|OUQE5&Ng-*hSimqoT1h`0-- zI4V&d!{%f{E?50yjd6DJNSn;Ua$9-*_$YdE7DCfOi5hkRGRROPp#DoRE^D;JXK7QC z43sO~tm|a}r04n6P!DHIuhZph*d?;;@N1go@Y~;#^^y0WiMk^1c%NI}7gfK=NU%)p zQj47A@{)CCSg3#ifFyvyWW zTj=`z-Dd1({sL`l#2y*?gVQZ2fEr*ksnGBN^H9V5A7BhP>#C$pMj@WBESz7yiU z_ZwzBR9&Oyc6syP26i{QMw2YLFfDr-9k4P@c*H~@ACrw2{cc}sDo*iMdk_R9M?|2b z5E8=3XF^kziUBH<$eoh`23$qCr}b^-YTIGhaMpX0K4wScrN zN-BE0HDOo{lBdnJuy|w(Vd1O<>9vPdMk11&42;Q)EbuN{6)&E!R%`jn*mmiPg3?AD z`G7Dtju7sA{Y>EBI9gfTVxMw(=?-*)6U}(0EHG+n;;J-g**rcb?3pk7i3jlb$A3;2 zj%v$92C_yKf7pH_a`H(uiL~paX?(&=<2Z6nC`r*Uzz3*S1iXKz`U(L4UswnWOlnk7 z=okx*M@{rypQco--d-fSL+$^9mBX7Wup?V`qP$CQRQ~K*M$83gqq`cD=ZT@y7nM2y zG7yRKYI;gePbw!T6((E+IvsZozc+p^I6FH`MyEn(u2xeTs4$ckM=OCk-6?nw5|Hpyin0^&6b!@pAZ}@5`%q%!p0_6 zR8&PwYXjx)?>B3?9ue72z|m^MKUpc(B(VGAKN0h`A!Uwd0n%E_hK>WzjWy7<)Z4Du zb={8tVP`(X?5_{8sMZIgWUbL19IyRt6P05;Wi;|8F zi7a)Ucmt5Hjdl(om@=&2>oka++e3vyf}bDP>Rqok+1(~Js#mAC`zD^>t_arMGUWtg`Fqzo08K~Jx_m2FCCght02_MnVSdf^gc7@&{bfS+G# zYljW?`)EJo;_!F!g|^VZ2!})BSn&v$CF~gaxxakZ4! zs*Ex*2Op7~92sxo;wkRX!3sMXDNVDLxv}pa6M&wro3kb-on=dCMYycbmnA=+dS@-0 z?KJG`Jg%@i+;sYG_L9*tQ;?Bo*pXnr)Xvv4QRM~TW}%CTz+wY9MB4@4=+VlU4-=JE zoWCxue!hQx52xgp4PQk<#>lU#?umSI?}|RDI^JHXG{2j8Ho%@0euV%N(zWLpq{`x zw?U!jP3DYs9FaT>`x2AC9eSJFIM<lqeG0jf^n@kHOoMQVYT^Y3WL@ zy&7q<^dkXqUAfVIsPAd9X>rx!gzV5ln@#ea%H=!{y(wsv>L@78nAy`%*_W$50lIX6 zgo*t5Z6F5cdYsmA!wr0kI|heVgJo~Dw1}58f6i92U&DSQ= z*Plvb1|%51Qtnk09_&<15c3vR>%Hz=0D(=x0(;Ltn;J2g9HW)`NrvFfA}uxF)ae(g^( zJ?n4eDjo7Wf0G0fV3qrI`>`>(;VqKwblN8shdY|wOp`2_cuhIKPk)yLhoL4H<6K1| zsk>*gYCuN~_L-ffO*$Bxc)7{5tK^&KN(%SpAN*HT4E)TG=bqmaaU`*2hrHRVaDuTv z8Tq>+-w5^Bx4i%Z1~8+5Lv;eU*mSA^dr$Rxc_Jl|Z(ZSLeFF;`6kPX7mAhz_m7exS z0F2A60JJncFw&xAcuMkNwXet3=#_4t;RV20cw7LrU1xm0{CZZx@tWB8`TP9|*hn18 zYXBqas%YzTE8)%)43cvyLrOJ|bB3kY4!|oatEz?(L(ea2pW3}-506QSjl`u6HL;00gBo6N^9cZB*G1b+uaqT`P)tm~#0fIBiw zQ!mPrnY8KJ-O%DlNOxUzUc)PQ#5VN&3lgn?s zNqRLKAkip?H#jC0CQVMt(b{mi3cVrvQ6Vd$FBZ9qtslGCJIH z0GS!-MG}uji6rjxmIwcA*f(=^JsTb1BRU))AX?<%knGA9i{`k#ug-RIYoKK8PWixN zuzff?E!@vMSi|F`Ooq+koONZ!`c|ym4=}<&*0Bz*-Ce(qgjVxVCZ)OTVQ#f|2|P2h zsuPA-&qNXxN%;3;UcrAI;ct)kjV*;6d96RK=C=QUcy5DuUhx6h1?v5`ns-8M-Jj2) zIEe;3iC2lh)<0wlRa>(#6ONL}zXdHVH_pLuSaBl*191Q%>3%*+K{Xorw6!%o9BZYj ziX9pIAX>`P7<+kQC1F_xr(7NgG{1iYCG>slSk)^>;|R2X&P@7`HkcXFQuhz5pDtzG zNwvxiFPGN>NlQ5f+q=e^=?PI{wq9f7{inj4TQ~lRcB&023k@mIsGCHO{Am7}fwRV< z3>$*L8%6d^e!Z7Zq?OuHGutBp`zu~8XDHDxXMdvGKv`8Kw6j0N&Sj&lqQS)Y%XAkC zk&H@RMl3Qt5sDU%ppw}X_IPsu56c4sGx{RGe_B3Hm8Q?Q9$3&e1w}HQHk-(?WxMX@ zoB@n0IDVbgljpU)XK8PPQ|r6Eg!QNWG<>kmY?7v$1fa;UhFc0b!O_xg$@`AFh9 z-$<#nFX0>*16JLe@a{{P(znm6_h%HJFF4ws^q*gCfEeU7F0>K_2Y0H2F_U+L%?(-q zYcb>0-k4KS7LRW$a{>Efzs>}Zp@XZd&PEgRV{kFFQ+Ls@E#Gzn?xwJ5XkwPvXr&Yw zYb|C#czLJ6&Aadaef#%s{Q0C*B0DotrLVj3@mk21ska9=)?x^=u8D3`L6Ik+ z`eX?04nY*0+VQUL=rhhMVqpjYYv2Vd0rFmOccw1IhbJ}Xv8lNvo?Wqa$+#Y4qV0$< z;#c^ZeIw2%eXK)kwm4Jz^-4XimX*^+Jrfk`#K9~&M(%8f@52Jf`&B?84)+i6_V;%# zV8XL*hL05eGgf|*{9Bdg`Y4y0jN&jMRb$MqRc!CP%DzE?2P;Aq_T(f!-Rdo8c}>Kc z1{{33X&#|7-w`wE>+hnz;_bCR$D+k$SJ7P5L(GBTXAnCT^C8>mqzP@^2=P~k+*f_iz_^1)Z@&`+KxTF zy2O8$uUlm&vt^M+|Qp zCwIt7AXdn>(zzYq`>|;Q0B)C?#@u@_o-eirbIz`axr&njMJ7{Q+1&}V3LG;Mo( zOEY_t6oY4>vj8~!(xymY#lUz_E}C*0JzVjpB@IhTEnJAlWX%&e(#1ASlfe`8P(}5< zke}|M$;!KuOvtTLZMCy`d7R2({i>WcozBNr=5`-PWa3z>-+nZ~(kt03y}R#oNFz)^ zWwD95i?OF4q}#rB1b+Ca;4m>^QhGr27~xJ*Bt)UIO2>vS_r$pp?TQ+;BxH;aBlyWu zdh~o%pFI7r)8^p+^yGj-+)vEba}v6n9;LDXC}co1H9ARWal0??>1_?D65|_Kz@(&x zM8&+~mA(P8;QKSIh{QzP=Eb-t{whYb%=qoUfaVYy6nH*EyUAg^>_TCdmOdOZg_35Y zq!PqPL=nVx{y?ywI=GN_t*A8*mckqChcEz|9m;&2F{bh1^$!?LVtZb4W%dPJ_btY1 zs14nHT0xTr18CTwG0Iw#qO@)nmP)C++3P(9KELj_<$}%Vs0t@nRpWZi`c{WFXH_07 z33qpPU=J)p4w@JWI%Gv#!T3gzPFKfRZe@{yBF1B6p6b>77FGigi4`9 z(Z3AqBY?xCURw(+y_i*+8X?M+3UhH=`1V!PRh#E5O340AsK%-xn=0zRn3mkIkdUw5 zADuSQ?jion@I>}&{$D4QZ99-_uv2eeD?C@%Wfj#(y>k}-d?;Z+P>DlPrG;V0@AX9! zNV>}+$^t?41sIotN%DwE3b5j7qMXG*guET{L-NDP;zRGHvOhnZh>avEvU5@?e;sCZ zKdmI1nqPD;Y4;vL#Kpzy_iRWUw-VJU6_ey&DgLM@sISm!j*<$2;xIj$#)GId_VIyu ze1vUiY}VA#IEoj5Z)j|6_q;IL1g+G^@W_r3skPyKY(Ps>plLe-`V{+E;q=NnQ>90Jg~2@){7D^BV2WPdrQa4NHj$fbEhLP~^jc}MfU1I-4au|goBEwkgQKKb_BVc8G z;tu#pG(1@mn@WWc>4Qw7bpjh1mdm#={BERVH$xjO3?lFauTm;}cL>M{z`_4q?+8cf zc#TdBxF{-=8Ji$(Z|7~_{pA5pQJV;t$0efM8Mg^bka(d)dDW*&nKTOv%Orem1YJ=( zCVZM?SSD}g6yIC@gFDje`=fvIl*zylLa0x;%f9-}%i^!7vNa{!wzeQ6gz)buQfZs! z-UkRB$w7Fr0Tk}DJb?*#9QI13@(muAak?rkqqsZf`+1ywTF!uqAIWX1iXRavO*iz-QtsBgz zv?vr1J9Sbp81$r#?#%oC5~1(+KVB@sz54zr{7!KGWIXQYy6|0$#>Z4BTd3q)A>qb> zo}`}+aRZBjSZ6Cw?ct8{2aLX!_anOMzI^V_4!6EVOkB3$zx*K}V8p#yAX1Mh6G-YQ zP%eN-^LBJ{o;daFs%J%YLA*O^#=3dE=Od5B5auMf#CK+hMD8nP(;1>wyh}QDYOOuq zdBZuE1+_M=)aT+-6jHR|_1rr8cg3$@ukfSUZg-EY>a6lJnMqt8-v{l#jOuSpxIjD%WRWttVX(70 zd{xQ2DkYf)rh|iK1NiN2XxF_DPs8QLPO5>RwmevQfNSMh1hm2L#73*td$iyXi^PnK z*Fp5(UaRfS2e3Feho@%bIm(&0Le3ngOGSOO0Wc#zY=+8~TQuo^pD25e=00*++WNMg zQ;q54qApwHDRa#KPVs%yoTz$vDbDpOJ>W^sf*%aGGjIJO;n!;ebhx$0^H$_`t8}Cs z8sX|TrZ>BLU9YFPwwu1`^KZ(c6aCwL2%6pA-}LocfE>f02NMc+xnJki>sc~JD-9~4 z;c)dxz?Wom@Wp+*aO*XJy{mF*%%s7<_oY8*b+Tn@jd&Y5B6yX#fW>=;5hMBG)Hl|> zGN0VdX1@`XYk-Nu=9h$M(skNQRxWH4Vk`(8R0xsSd`-liyR}aj?|5ta@SeG*@%FQpI)g@_|9l zn=DkYe)E0OL+|#kF7$a?C@N0gDC=z30vt2YK|%7PrpCBG9BI2%$Y;-Dm)GEeDz3Wb zP-BM$fhG4SC_S9qG+tNT1Y**h0j;;V26UVkCRRBm1&EbNfbr9;+9u>^J1xaFihNGjhBAY=&0V+mCNf?N|TUm_eGh+;te$0 z2rH#FFc}FOF}Rp9;fB3G1IgUFAgK&6QSJu*Fj`u{oN=mAz;1{ju*`pzsZa?CQ}L36 zWRyoFiIFeQd%4(L&h+~FEWsfkv;w6^p=oK@jT`N;v25Sf!Qzjlr3h5QM0(msV@AtL zQud)uGU4~GLTxYiQv?=h2iYP*z$jL(BTch15rKk$Y%ZEay#yD3JU4MU52S5Ou7>1A|(GqKe>j zm>&&U*R`vMNT3NxPLA<@(3O&#D)jf$SZ%&LI$t5PwGFLGG8v&e>fIVszg0e_pMkq! zNv-xVRH=l4EbXw&#zjdaI~rfnytLH2d93eC@*COJ9I2r|%ghRcChgmFCtJdc^NH?> zAe^zm8mne9D}`QIELy-}{S^XRT5Z(~$zUK~ECkj{qfqaCh#Vc3)WT*nzR2Ggbt|Ew z5_aEFZvr9UpUM#2`;{AD*aw=%p)gZI#DkehAqNddiyjL2+P|Ylj*kCxx-0p8u~z7H zQtYnAT5FNj)bzuC^G9t_N^Wf*6@sWO6+P9|zmo_U#tZ4Vr{mFZERpAT&lSIE1F^V0 zwqDQu_FT+%%84~duRuA6nIRDI^V>z1iLI!mkYN^5nz)0bRt%mR=^A6{32JiwHF+zE z6biU{Nm<|{7A+P(&ovHrVO)>^5}CCydS6XnVBU+qTG2u2%~R|J#8xlYp$}${#b*yH zX7vHjL;M8!WNttxQ2@GgA2}+@M9PEF?jSur7pj5uRf9@p3h7*FYreT0)K3JP2;hmV zHfJ*f23S6y@QqHHxJpU6v7NGfJfqtw!;8UG8#z~73yIiuG;>PFj4HbOI3dY-n23vR zrh^ibNht_D!U$1pU!9$#E;LF!(jzkZ=Milw(Yc6SBAOHuhgTMoV!h-K{0eFT43=Z( z_M+`&YHn@_2L~N^NYd$P@}uwkt@oGo&#Ml}LTc7)?AV-j_wHI+*CRxZ@0_~53|a8^ z#~>o%uupn=5TrFdv|v_t2ne{)24GOIxO>?=a3j}OJ%C6=IH^Z8Slwp-_2Gy4ly}1R z_J*i9d(E>=z;ryeiY0b@Xu4C1Ch5OaA;NjphK^K{0LsRYcW9S@5Rd={ntD4qAEeLI z57eNa2k|;l-=gOKzWb;!T)qg@RV7ef{ggEw%;CeAVcMz(80SNROpV(%@;qkCWnV9s zAfeg|)y{sC|SUT4vrCe7U?j9yLh)!*Y9gvzue3nYLt*IWAkacyFSd?#=rfb-H-ct!$5`V+wg< z^~`>n%w-P0eGttulvH9Y{~CKOvfD}9x7z9C-#`j+yjQnIwKO)O^;}Aj zp%&a|R0R%%hh=w2Lo}KTy*)~Xh?J>};FPOQmMQT~uwPk!t8;Pe)9-|se_CK+w8<(g zckQi_^hoTHe|w=b=A3(~rE8J1=*4_r+(gTK4;$KK4F04T?Gk$W6ReUesMoXOcr=VZ z?ic=Tb5t$qca-9`3_xB+Lrr z92_>bwrbSbZwST_^@=4@1_&u4TI_-rM#zBf;2NBtj*E+xyOaG6i zYl_aR>(*(b#6;pZQD*`oc*0K{=3|~BV(_<*IIMVM?X(O zIx?t2Y59)+sE?r}!e~@*>wE1TMK?6mjrHP2GdurA<}gHEBI0(#W0PDq*EL#eqLz$$ ziWy72lGXmBt4WQ|3bb!hxp81rili*Zak!KIoVX^Y+sDe&=($j)?6@Npv|PPxzobtg zGzjPxSG1Y}C`=}BHverY&JJsOR(lH7gP0&BZY`m)Y;XOTUY$8gM0O4S-YLvUvgR(Q z{?$h2@&8fz+nB2Q&0fyg&^o!fk}Grw-@>dgKAG^55T(oRr#viM`@;wo0S<42t=C>k zO=B_|jy9T<6a{a#|NARlF4Xd$WF&_!9H2N$+3Eu;l;p5j`13Jes{A&!wX~FTGM8Cr z^(Bat#Sptf-#y-ZY|4>-5I0^+&gk_4auC0#XhhWPAdKaV6PrlCNuEPpDp|6%d;wRZ zT2R)@YXK|Jf&A3=d|bV8%++U*Q)7z zlQbizH-NwDMyj{$8;&PV4IIYZ1&Pe+eM7>EIeolhN&s>Ayu@5dgS%#;@O^y43(>^)_%iS`w2axuNPo?T-)pKyg5=ZUA*RJx9I zBt$<(R5HtMo3DSr>hQLVq&r(FJm)CG|L{Cap2$*D@SZt<>#(I`RM#CULv#p|GyS~= zyDNA(^mpX2aq!|CU0p{|i!yP#!}B00ucO0OyU`j94%4NtukUw%6M!3HGIZbww8_MS zF4kUaedPtS*X+o+&gj2z>}l8JHEL&m`YxqoPO@;nKJRFhFq3W+jY)y-rPx83Msks% zuomiSC7pr>f9CT-gFWj#@1|8`y#(FE!~=3)mRY_bGV10Q%NoCXNuvjmPg|4l>cnMa z3lTA{yZ3Wh$j$Js|Ch3ujmG@==mDj0PQnGgfAwAAE1Okr{Stgw?bwrV=X^Chsmw z!UkRNpH|hs#h^AS+_I&_HZWp20_`koVCxg)f0G}R$ghV~pNu&O^ z*hw@!adL!qT@lrnFEPbjUDb+1F<&GC;@6t*h`IQ3KsR_Q3M826xfSv`b*Vnh-togk z+>1*G`Q5IVX0+rVJAW-Tcx0r9Ny*5%%$8}tKmWX3mR2AN znGR{Zw8ug6s_mK^V!U*J_h)C0a^dRk(UJBE(S~YpMF1b?J44L{^lJIRu`?dIg3+HK z*0fTO+)4^L^`!ZPjMVSBu0C3GXO>e=iv!NaDa!mwF{&(m$bg@hPAKqV#hKAA1X z)NRK6s2s+S@MF2T;r+PF#a!=5AA);N)@x_n$)*XtN!!A0FQxX*yJ0Gw+|4zLnp@MSv6PnH1>j8jCJ;ul)Uh-?P^Zko%X9BSUZaF5qu#=?+r2* z<+$W*0lZ(%{sO~FXTj7DPOKh|HY%zMMZYanN+vf<6>2e-;i+xsd1a~L04ww@F(o!U zz9u-6+Hi2_0__Is#O3Ag=l4gbES|!{WfqX&lM$M-GVSI1h{eq=%R$bXYIJ@8pH?Da zzxh^K`oD7c19_Zs(VP6*hupedp&t!~Rehu1!z3TwuPr^d4qOc9vNdr#MY{xviq&MA zIPn5!db%=SOOI4y4@y$8a2!?|nQ*wg!MB(&oj#!9ONT-bm;}`bZh+9-AtEhO^8V=R z?n{Msw+{?o`-zNTKf0YA!MFQ4R~=4=2xUX9uT6GAsC3VqI$TRIQD;2stRUB?bMx`6|^0f>lf|Brfsd6Gp27VFM(!Xp*BiWC;U} zQRg=wq*kK+6cUC>)C10Gb<^pRwaSCF6Rwf*j=r<%jRGIgX8@@3U571y1!9si`#@=( zq~3Q=Z0PQN*ONe2w3+gvjYUO*cuFP`6ES6pyf8*0#zwSSP@| znR7hTJ*-iP@A?*uh1ffWy4WwnrwAKfhks*$oZ^7_u0FD&VXDL}Q-hkehQuQd^l=9c zZ89=8m#?C(`O|w|O}1Ometjbt5PuNVm`5TDyI+A*^W$q&V_H{jwPRvZs(GAEe*u#+ z#DYR-JHz5iC+5-&lU_O@9J$BiLfoIuPajWb!v(Xk5n$?G&k)X~j;Vgmxb|u%9N{O# zBn=M(FGq5`>5Q~}x21bdH~;oDPxV!2SPyy>xdu<=0Xl>B8kD$5?;PZfl4U6zV!o$^ zuWnB0@D84y9#Fn*FcS}29=5gGTlyWw0}-Lz+VrnH$*;X) zzT!mqV%3~a8}Q{YiowURY4RxhX5APvQ;2tWT0Wswe+c>VfMBxQkNNiTs$OBso3z}l z+$X2gT-7_G8czR25qd19yf3Kap4WlTi!SBl#Msp2bU1N#s}=oRri#`2vk(<-y(I0F z;3W}oQ2V>oXcOQlCmrTEF95hc4G6kb80}-xQy-(=tZ5R*gkG!#5A>$9IqrpQ-+k;r zTdk;YBY22=fI!Y4-t00rFP_%vajh!XcHm~8 zFn<>FN}*Nq zCf&K5#g=4PokD7?3$+SzHC}oQzT2$XA$@;Y;9%>yNk16F{Pu`gqPQVQO;~$h`klh` zZ;*vt=7W3qMGE7^L>NkR+!!5^rI}?(p3Tx~gUyj4a*$sAZ$OT=xo?r$5vCy>%W7}y zfJhi+I+v^IS?lAoKNO2LpAWu!i<#Ia>*4|njWoz=t+w~obA6~cM}X>NW=|8BGs$^> zI5gIdFgDUU@Pk|>E9G@K{x74?p5)!xLv$*_ZuTnv5+i zT?2Zzss8ZHbk<@D0zN1(QCOWH5IoQ`-S&Q7(Eljs+0cvcZ_JiE?p44KCk4b+5)Kj* zDCPP8^rvl!6(dx%a7)DtQ_-rF z3aDT5fv^>Y$=-#=Td5}u5=KUhXv$p4Xxh~8PYo(|)47zAQOHsMZuT5sn~1-eIxr1) zSy;l^RaC-7)*Sy6{dgjyq#qA|d*kNk=a*Jckknp$d!@oIOGXEEt5`2Y7UjW1rW3Uz z6``W0#YXOJ{AwIm-{!`-jY;Jn3|vM8lkkzwraCVoFbo}EzyP5{af*SK%))Z*`HKO5?v^uteDIZ zn32m|gwtF~@Co+x^sF!>id3VuSgJy2)El;V^MEn*eWn037KOg=L!UdZ%rnDYwc91) zzy0Dw$Cw4+gk1B=jzE9qm3cPpM}HIFLF#`s+eqC^^TVv*6I0l^sWR9faL*JvIF^B# z$QZ_6u|sj2CHqy{L*;E)ya{59mzaa_TjN{#(kE3^N%rCEP zk_^AHb}{Ab$0X&bR^6X9v5o#NBeTaEN+aok!q(p9T6&w3_%cVn5$euVUqXb@WMCTocnI zFtawQ7iw0;Q4dG|gh+^3S1ot7U4KHNp=q5jHCBYX!W1tNpX*d`w{Xvjj?Gp~9^WyZ zE{*47Oc1$3*a2Yx)3|2?O++!EVJKp*qw}DI}Dg$u$wkKiq_oJEj_t7|FndXsx&=%}{2o%bM(@cd_oT$BZL# ziS&n4lsK!7rN~#q1^Fx|?xFSI)aJx6KweX+Dc}u_Ui$)EkGAD~>mb;K>{H)j({&(r z2J-Xs$S@rqj~QKP1?Br)d)w*9ZaJc_B9}-&mm> z8Ye|s44{*K9;ndCj;*dXUy4mm2IiIt=}&)<{gBrkA%Ks&sLbJdf=gnp*=i@aQw3>d z`}|0=K?JAOl`hiv{j}C@4Ff>&O4V5L@zsio59+LDSO8P?Rbx|C!7qikDkTaCZWkFh zO1U>hs=!f;aelD_fM~3h8|`ouDhE!Hp8LfKnQ(Ae0g__XBZ(*KYlMxn5f${`?6-|; zGYzVb78wY*95R4ow?q~zpIfpov| zlO8`iwr+jA)*dNOW47lAbWBmVI#8lDbnBP|d3Zu!{%rujp%e|x3UdFT#q9*wP&#KN z2P2~>rl{G(u+vl{t;gL2^I`>0sDVS5?A1y=;=fb%k7I4h#H2J-3-*ZXe~n~{WKVw& zVEOi8`7%PacXpkUlF)awHYOD&m+sb7RlNx8B5GPt)k*ON7d1i}8FYat-M zm3e!5LY<$Z14XvB5?~t=D&*1NK$Sz)pLR;SX{5$R_Cylyj z?EMCMJR?{?QF2_UA&5nvkb9ODH~7@C*`6f%`}4o0_y&7Bqm{Y>!P%oPbaZqTm6c@& zZeNeqje~(%NZi*|8zVJ1Nac#xH20JiF?-|HnVlAg6_j@bJ|>@m#rnG$K5ww9++QQa z;%!Hll%y4J{??=@6(9MW0)1TH;KF9(+Elk@5M+2F-HxZ@lanP(n+Jynob>7gM#kv0 zR}{#di$B$xP0iprEw!rRV2XW{?|IkqQeVBP~>y5)x9Tcf-jD*i*BWKS)U_ z_z)ehd~i@wIqtpI=T#jjA%YAXNEsQy@$fuRHlD2s5f}LGEfKi5L@?bxeXV9h!@?Y9 z3T%D4pG4!5Cr12nIktBtjN_Rda^gOqME%o);ewC)hr~)0{?7PX|4}j&;KB+e?Bwx4 zjv?&q&*Ev-($*GeNPQ(IMGaS?MkhXjJRwSoqq6^cf#ZnJ^sPu%PozTFL-$mqV*m4y zdZkuODI;;DzeukoFxxdJt_{j)7FDbK?ZoC{^_jJ00=+-OtmXnqyF2ANAjxPBTITfg zMr!Ni{%MOUs3qjuZLj&co9t7{JH@l>Y5OHm+wZ3UrxPAj8xpwyO}28QRQ~9^A1il~aRZ{>L34ulh zvtgK;xO^4&ytRDz>J1hXn$hsMBgOV_oi4>>A}LWG{}C4QgGWvF7cL0GX$*84jh zJ5l0@xZ1p3R@PToOtnrg$e;hLY1`d4@|=&r>gpPvUIe}UbFKd%ywrz^lb+Xv!ux9) z2E(9jKW^=OxS&^REUOEpDY(5f7>$c)LAVCt zhQP>qSwok$XkKfSusOYaXSTz;1gizdW}6=4tJ!Y9m7?liRt#CL;)9HY7T3BjN>m|av^<8-);&fX}*NU9YF20y@9eDwM5?`5+-pOD3bwW40u zstLheor(@gnoc7+`Jf?mgmoDo0NouVhnP`q9?lO^uUjt-j%*RhKn|FJDP*#A>#=BNT|V^>c)F-Gl4wc(B%#(p_(tJlAanI)bUN3`KGKKzyci>?k|&=cJmIB zgY&>&<$=~`h z;uCqmtcih$kI=U?F#7aIjd(>D12!>PyDwZ@W}X0aIvusixSf~(9^N*yLfY8IYe;+Y z3V**Sez2gjBHrq>!D>!lClXo#90?s=WJf=L9a=qH2pev+$4XN5^>{GcNPyP&+}YTG zzP~wH$L>^A<{~`vJ;GGLT@Tr_J21rabJtBqUv@w(0!}`YNLF%?LnR?n^DgoGz<$|6 z3k1aW{+TX~sqeKBzE@}2FsTG38k@D6sh)l%(7-~OS=s;{D}J+s&^rIy|9`BJTJ*!i zzBj?dqG;IE5M!P93B=NO&qqeg-@dYUf6&r{si?rdGU-5UwDnTu0_m&=e!lH)+ousX zCAq^YngtC#x5Z8jYWptZpu z;ov|5svibj%d|N%vg2Mp9vBG&`}JQGvarEcmnEp8Xy+SnouK;Ls4)ADCC3|+ z?5tAx<3{k!r|Ji=LS>Zuqau*Tk_nn0FIT8j-bs_&ff9N z?eGVtM0w*I-{ZAyh~LF!DVxc#29{x-xVb}YMZ#&cn;UEfJB{Gl!TpK2#l&jgVx=ZF z=Q)?#WyhDEn?0(fWVruv0n9-gSKXgjxqiOU8|{VP9p2)Y)8*tc?gg&8bTcga6D1l& z{1)TCixda6xds<7c69}RNA-DymGlh_Mp|9g%I~lVMO5FY#CfK?E z7h{UI-lEa+d|7GJi!KX;P9ZVZ!RTMr=U%D+Qvgf*vY>mE1DmC9!wLtMWf}60{X7XJ zc*$(Uz zR3oS4;zlbb`@< z;pa|ME?hsJFN^B!K=Ky=Db!dg4UO<};@6jdO0*1ki%6SD7N6ChH6F&_m?S^U zedp|%i~Jy;OGGq9E5uRcJPw+vrmOeS8$j6bP;YMy-q#`?JUPlhq!&03=mC+-{@WiL zG%8M}n?@m;mbO3F518H)uBTdVwMiJsqfQYy;-o`s)o@gb6i%GhFg)5Y$-bNK>ut#c zSv=6;k*ZkbbA+h7F#sE@s!9X$v%$9dn&bpjweFGh}1q=YRlx%lArK+VLI?dD%2(*oC1#dJ+RpRuuE7H_h& zi3#VBVtVOT16QM76S`f6RZoHWcQ%?YLVj3pXODeMrF5jBweSRsS%3`fWS!^NM!TuB zBG)5d7q4KLBGnrl^a*DMWW|ueN6)3w!XLTW>J+6B)#1c@VyY4szmi^~JbQhl6sB0l zM!TOup|60Pj@w0=`}@O9?H<6C6IfhbGnXJm+1oJ|yV?|q!o$)z37`OK9N|H6F9!Vb|vWPCxFix^w6>XSLpSk+Ur~JIk!d=jBqDeuwBY?hQiJo1J)y ziU|NC8BD_I0 z->BKOsQ6K`WG?w-HF{8PvGNR%02Y@NY{UYdSHJ_;*>AK4*bw=kYg?rDCHBOT3_uWR zBrrWEc+D3=aa{L+YX)_utI-Z_ZN=B_A;u*nNGVNwx}AGK66Hn|PZXDw1Jsx89)I?( zPlIc_SfWp8p%0IYDZw*20Je^a`JRvwdN~23jXd&?u<_F38XC%eWh!OjjLrE50=nKl7t-HHX?9gwhyZU$ zfPf+{DM^Tf^IV~=YBk>OT0XJeJLP~91DY=+>^zA^A^TT01;{F~|LHX1!xkAZ0X)g~ zmpi%i**~IFC(Ad^jC#|6^}CLvNznps8f!5}Z!hEUL5h618f_J8amSFnnVG<3mJE=M zT{9$*Y*NN~JjKV!dH8RBOjIo?F2&8zy!p+2Q_AgxKY?zh=n+pwFNF-RTSlB-U~ssX zgkIMfGx@wfJEX9T>*W1X7PxV-Lu>(l(^KRtizS&X0gsjA6VgaXzQXzr8Qs%_Afl5 zZKBI3;Hpa=&k&$dkx^2jadFWB#}1&YE`XD=v;@v?ckz6WCsK-3rXfHxC<83DuJy_G zkO-1jO%R2g(O0b2VH3^WtQFwxA`%WCWLX|TSI$_zNj+p=c2xyXGBu)uLP;NqsNmF2D{-s*xN0)3;?r9 zjI+fJi`NG=g)C{H%S9`k5!cJgAd}j?xohziR|jIt)qczCP95bM4r~fWHrdI#u?a9{%qA^1SRmLePuM#RlVmw|WDyKc zE!F#V*BAj+V0{`&p0IyZfnO*v9W7J+wD|lWhljEfnh73=pL29mXIbBa?64ctaHNc+ zS1VPzHYn1`4aNKTB@@u8+5vG< zADqhw;HC%G?j=+?2Zo=lu^Fjj15tQONdu8^ir_K$tpo97!OtU;liw$E6=^x~L`hL< zy*&+I9{pTMSu1s4oq@Y=wGreLWOF(6%ija|M^u}80v2qUt>Y5W84~m+$I~J7hQ1j= zLAI!Vk!tz|%?m*@+}`)5m>1pnm`Cr8Y_XbrqV}6GH0G6eO3)P74P%SudCPb?}-C zm;|^|BV;(+FgPq+gH|J!+j+7uAAK%b*%Ws}6%xc#?c3Ba8hyQI?Qj$@W7Y&gL6R?Kc6h zDD2w741;^xJN~P91>PfW&BKA7#BqS15ILjZ9UDT73cqqaUm9uNDvhki}@1=~!1eih>^?S_nxevVl;h2o))HnfzCEMA?8N?z zg3}|$HjZ~?3cmbc=OvSLt4o}8feJzk-g=65q%D!UE;6#SlQ%ITy;y5zYOEYF6U|p5 zP8|8ZuwPBBZZcgS{j3@^0wMJA?Q9W-wT4RZZ;pWZ>1oxl(UCF^m!hEvJ({YewW@WL zC%Df9?_0}X>C=S*qHVD7+;dA?Q>27${(xf90t;34w3@prJ@r3F$znnTyDuGQrF#p( zP@Sn{F5ci3SD@g>vK+gY$|%fcZo2$t1EIh&5bPpf-4GhC`pA^K8R)fnBgC8D zoCNDG|81(`^ZYp>m9}buEO?74E4C%hAvW+cVpJF!b(rYQpUBs0`Wjs58m^l;%J^v; zAiG%d$nvdX+ye@bkSJ^uSj?}AYyw{Q)Xuu$;-W(_1b~GA(#3G+YUl@h!5oaWLjo+m z%-O%|O_1XeqU{#qL`H9axRD*hw{dbTha~w6zUvDW795rU@=|3>vyF4SUvOb_aFM~< z#Lq6;a;?I5OPQuemZ6-wk?X(T_}Y%rDFrf-LBxP=kb|bzPwzpawhwA6UQ zZ-d2Lo!S%D1t<{Sz-DB63K;f`*L!_L*JJR|vQY}mjIbFe5a>VmGGGBL`dAZxgvUj8 zM(Q_|2%v})iv(aYd|o5v2VtI1ihS!*E$9!fgPaqv@$f*e_A^vh!@Dm5>{}JGe&KRJ z_^001{YW$#zxufwbPXvA*`(VH8#8kyd#P;rh*~5A3$Yk~s!vjWmP=pCkb*3GtpUd| z|N6k-#l#T(dsg)z*MX<()5OOq!HK)`jr~<{6L`sElQ?|OcFPV~y3R3g_ooRF2c(vG z*z{^`V|t7b0~=z5)cAdx3Hxe*EfPW^RcLy#3&=GL^&>quff8O=mWN1bzp1X*!Q2yDnL;QZny9AkyW6wkT%g zKon-au0W~hWNu*V?jhvvXlE2-r(3@r^9SjSKu6o5Nm-ggt}E$-F#QZ(;Sb&}nvJg0 zknC6jDnIU#XV;_u9`+6S102h*HSCb5y4Jv=g3tc~?9OJl{ev$);qM+syizH}Ug&p$ z%NSpNsKTK8dv8oe{s>93^Tq%0ylAc_KyjeT>yB8nEJPe10Hq&Lv`Qg7$gW(gvY z5ao-%|KCP3so~nkKW`ljM)PMcU3NY^?Xw+e(x(S%z639Hg^#g=EIlak z;z6f0vv#2Ux6q<|uf1^^^9w2li|-3L`+O_&)s~^6 zB)wMbKaUg;fBf*&>&zG(h#Z-(Jo^g*gjypBduA3HaJZchI&72*wja`J+c^^AVaMWB zv(jW~Mx^2U4zRLVHq$l149mtt991aNM!f<&PSz@DFbM&LFS{+4!&g6}Ou@2t;C+t! zltOl+*oaH}c(#Q(S0D>mAKxw?2UQA+;PjR9w)u~K4q)(|$B_2Df}*!_?&_^3Uojjt5hcdZ%{h zUv!=}%!j$Xi!-r37B~&I+Tg&P6B@BUAw}bb;O;}3!VlRT21vkryD#QT~gL3)39 zWy;rr4G&D$R(sNE@@EXAi%4|au*X~>rpc!}8l{|7M4{;l=0D(t137Ktq&Yl&ghWJs z#V^@+{Kl*>yyxYY8v9-s93;q9>}IUo&LL*if<`2}|BRKgSfG)|`fYKWVdO)uN&Y=H zbWdF78n|WTM1pozuAZZc7y`5)?cEg(`yc(nHd09`%QCj>c^kzYL5P;BSaFGkrb98i z;M;PPK)L|EYDp6<^RZY+kXkE?VZ$*}3_+yjW`{^in?@Jn^IQOdo0e%bmcd&O61*k% z@AmF1Io8%e4oVgnx(e*xumE3F@^NwMclTf5+dKty3p_y9i0ewO)00%q@&-KHM znLC<5d%N=Y2M*d1pNdKuoEOZ&>ED3<-hUZwprldYhgQ2boA;9AdO-PrH0-oNa0_8x z_ZLcm;jcYuh)v)m?pRjU>K{11p);0mv4VxxwXSOyDw%xT)Yw8@IA=?_WVF_z$t9(Y zKiDz@p&KgO^u05Y*<`vD$kdx-ir?!F&hKqk%kjg1l$%BWa55se!ANO zfV$*aV5gfVWLR3I0ecciRcE4%DQS1$lt4uFLvv1R&J^LH>%pV(x?pNnkUF=Ptm)Py z?jI%HjwLzACMx5;ZQ1Ni@^A14>xDoH*-?vWk?RsJhf4{C7{t~N>%bi-gwvip5rRK1 z<0XKK$7~pTh+8i0DNv|X{(=_o6SLV$5!4@6CczMe9ZvFF)YLpN8iBJPIS?3;ZTFf{ zvgO=(_hOBkX!OQxSdlm~0lXmrkcp#fqbMy#VrKc#{>U0Y=|IKH99by;(LYq4&Rzz1 z_ZxlP+pTkSRnJ!u*!WZO-vj<#)#0{g5-XeMP94NgFT)i1vc zJpUnXK_O;w)cc#~Y-THUkSs;GJsjlNz$8+V2QM8(vz(;5Q4L@KMJhLJM^oM^E!}1( z+=DC-A~2V-UE&eI7~uC8ggDjvM~##}R=p5+Y(j~FO5k~u8-C^&K>FU>8#IqJf;D>4 zMwt>zVtR!Ihh__D1BUjZ7?IEiQrE`|b)i%!tGyl?IxLKAN)|D|Ofl&En$A@nsolsE zEIJP4ZU9aJj%IZwT$$}a)uHHe3eoNkCv~~RQ0{sV+OX}lTaWPt*70@u;%GAueBZL& z$=Y*fZ>%S#(hLWQO{`0p~?5gdG3Mb48&>L}kFsJnN98pk$aqPpE|XOMLO5rH21lgfQK zk_&0%S4K4qj$BVwa}VfCa3;Qyh6 Fl>?rAurbFpsN63>DsJ^zXrA&cURLc$7-03 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 ZFVy;9Q@3A#78MfsNQ%mRF8yfW`+u<2lYIaH literal 0 HcmV?d00001 diff --git a/website/static/images/logo.png b/website/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b46b8c6f155fc05c813cab06bf74353976e93d05 GIT binary patch literal 6737 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 literal 0 HcmV?d00001 diff --git a/website/static/images/measurementPayload.uml b/website/static/images/measurementPayload.uml new file mode 100644 index 0000000..4d7dafe --- /dev/null +++ b/website/static/images/measurementPayload.uml @@ -0,0 +1,66 @@ +@startuml + +skinparam class { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} + +skinparam stereotype{ + CBackgroundColor white + EBackgroundColor white +} + +class MeasurementPayload { + content-spec[1] : String +} + +class Device { + deviceID[1] : String + metaData[0..1] : Map + operationalStatus[0..1] : String +} + +class Part { + code[0..1] : String + metaData[0..1] : Map + partID[0..1] : String + partTypeID[0..1] : String + result[0..1] : Result +} + +class Measurement { + code[0..1] : String + limits[0..1] : Map + result[0..1] : Result + ts[1] : Date +} + +class Limits { + lowerError[0..1] : Float + lowerWarn[0..1] : Float + target[0..1] : Float + upperError[0..1] : Float, + upperWarn[0..1] : Float +} + +class Series { + $_time[1] : List + [1..*] : List +} + +enum Result { + OK + NOK + UNKNOWN +} + +MeasurementPayload "1" *-- "1" Device : device +MeasurementPayload "1" *-- "0..1" Part : part +MeasurementPayload "1" *-- "1..*" Measurement : measurements + +Measurement "1" *-- "1" Series : series +Measurement "1" *-- "0..1" Limits + +@enduml diff --git a/website/static/images/messagePayload.uml b/website/static/images/messagePayload.uml new file mode 100644 index 0000000..965f3ec --- /dev/null +++ b/website/static/images/messagePayload.uml @@ -0,0 +1,51 @@ +@startuml + +skinparam class { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} +skinparam stereotype{ + CBackgroundColor white + EBackgroundColor white +} + +class MessagePayload { + content-spec[1] : String +} + +class Device { + deviceID[1] : String + metaData[0..1] : Map + operationalStatus[0..1] : String +} + +class Message { + code[1] : String + descriptionp[0..1] : String + hint[0..1] : String + metaData[0..1] : Map + origin[0..1] : String + severity[0..1] : Severity + title[0..1] : String + ts[1] : Date + type[0..1] : Type +} + +enum Type { + DEVICE + TECHNICAL_INFO +} + +enum Severity { + HIGH + MEDIUM + LOW + UNKNOWN +} + +MessagePayload "1" *-- "1" Device : device +MessagePayload "1" *-- "0..*" Message : messages + +@enduml diff --git a/website/static/images/processPayload.uml b/website/static/images/processPayload.uml new file mode 100644 index 0000000..93d5269 --- /dev/null +++ b/website/static/images/processPayload.uml @@ -0,0 +1,125 @@ +@startuml + +skinparam class { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} +skinparam stereotype{ + CBackgroundColor white + EBackgroundColor white +} + +class ProcessPayload{ + content-spec[1] : String +} + +class Device { + deviceID[1] : String + metaData[0..1] : Map + operationalStatus[0..1] : String +} + +class Part { + code[0..1] : String + metaData[0..1] : Map + partID[0..1] : String + partTypeID[0..1] : String + result[0..1] : Result + type[0..1] : PartType +} + +class Process { + externalProcessId[0..1] : String + metaData[0..1] : Map + result[0..1] : Result + shutoffPhase[0..1] : String + shutoffValue[0..*] : Map + ts[1] : Date +} + +class Measurement { + code[0..1] : String + limits[0..1] : Map + name[0..1] : String + phase[0..1] ; String + result[0..1] : Result + ts[1] : Date +} + +class Program { + id[1] : String + lastChangeDate[0..1] : String + name[0..1] : String +} + +class ShutoffValue { + lowerError[0..1] : Float + lowerWarn[0..1] : Float + target[0..1] : Float + ts[0..1] : Date + upperError[0..1] : Float + upperWarn[0..1] : Float + value[1] : Float +} + +class Series { + $_time[0..1] : List + [0..*] : List +} + +abstract class Limits { +} + +class LimitsSingle { + lowerError[0..1] : Float + lowerWarn[0..1] : Float + target[0..1] : Float + upperError[0..1] : Float + upperWarn[0..1] : Float +} + +class LimitsList { + lowerError[0..1] : List + lowerWarn[0..1] : List + target[0..1] : List + upperError[0..1] : List + upperWarn[0..1] : List +} + + +class SpecialValue { + $_time[0..1] : Integer + name[0..1] : String + value[1] : Float +} + +enum PartType { + SINGLE + BATCH +} + +enum Result { + OK + NOK + UNKNOWN +} + +ProcessPayload "1" *-- "1" Device : device +ProcessPayload "1" *-- "0..1" Part : part +ProcessPayload "1" *-- "1" Process : process +ProcessPayload "1" *-- "1..*" Measurement : measurements + +Process "1" *-- "0..1" Program : program +Process "1" *-- "0..*" ShutoffValue + +Measurement "1" *-- "1" Series : series +Measurement "1" *-- "0..1" Limits +Measurement "1" *-- "0..1" SpecialValue : specialValues + +Limits <|-- LimitsSingle +Limits <|-- LimitsList + +@enduml + From 9a0e6be904b2ac693c47e11dcbc76076370f3a2f Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 17 Jan 2018 12:22:07 +0100 Subject: [PATCH 10/66] refact(bindings): put bindings in seperate repo Signed-off-by: Axel Meinhardt --- README.md | 4 +- bindings/ppmp-java-binding/.gitignore | 1 - bindings/ppmp-java-binding/about.html | 28 -- bindings/ppmp-java-binding/epl-v10.html | 268 ------------------ bindings/ppmp-java-binding/notice.html | 163 ----------- bindings/ppmp-java-binding/pom.xml | 149 ---------- .../eclipse/iot/unide/ppmp/PPMPPackager.java | 71 ----- .../iot/unide/ppmp/commons/Device.java | 45 --- .../iot/unide/ppmp/commons/MetaData.java | 32 --- .../mapper/SingleValueAsArrayUnwrapper.java | 23 -- .../iot/unide/ppmp/measurements/Limits.java | 57 ---- .../unide/ppmp/measurements/LimitsMap.java | 32 --- .../unide/ppmp/measurements/Measurements.java | 73 ----- .../measurements/MeasurementsWrapper.java | 56 ---- .../iot/unide/ppmp/measurements/Part.java | 70 ----- .../unide/ppmp/measurements/SeriesMap.java | 43 --- .../iot/unide/ppmp/messages/Message.java | 121 -------- .../unide/ppmp/messages/MessagesWrapper.java | 44 --- .../iot/unide/ppmp/process/Limits.java | 108 ------- .../iot/unide/ppmp/process/LimitsMap.java | 32 --- .../iot/unide/ppmp/process/Measurements.java | 106 ------- .../eclipse/iot/unide/ppmp/process/Part.java | 89 ------ .../iot/unide/ppmp/process/Process.java | 98 ------- .../unide/ppmp/process/ProcessWrapper.java | 67 ----- .../iot/unide/ppmp/process/Program.java | 46 --- .../iot/unide/ppmp/process/SeriesMap.java | 43 --- .../iot/unide/ppmp/process/ShutOffValues.java | 59 ---- .../unide/ppmp/process/ShutOffValuesMap.java | 32 --- .../iot/unide/ppmp/process/SpecialValue.java | 36 --- .../unide/ppmp/process/SpecialValueMap.java | 32 --- .../iot/unide/ppmp/MeasurementsTest.java | 161 ----------- .../eclipse/iot/unide/ppmp/MessagesTest.java | 129 --------- .../eclipse/iot/unide/ppmp/ProcessTest.java | 264 ----------------- .../src/test/resources/measurement.json | 98 ------- .../src/test/resources/message.json | 40 --- .../src/test/resources/process.json | 111 -------- website/.editorconfig | 13 - 37 files changed, 2 insertions(+), 2842 deletions(-) delete mode 100644 bindings/ppmp-java-binding/.gitignore delete mode 100644 bindings/ppmp-java-binding/about.html delete mode 100644 bindings/ppmp-java-binding/epl-v10.html delete mode 100644 bindings/ppmp-java-binding/notice.html delete mode 100644 bindings/ppmp-java-binding/pom.xml delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/PPMPPackager.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/Device.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/MetaData.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/mapper/SingleValueAsArrayUnwrapper.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Limits.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/LimitsMap.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Measurements.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/MeasurementsWrapper.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Part.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/SeriesMap.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/Message.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/MessagesWrapper.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Limits.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/LimitsMap.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Measurements.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Part.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Process.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ProcessWrapper.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Program.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SeriesMap.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValues.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValuesMap.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValue.java delete mode 100644 bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValueMap.java delete mode 100644 bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MeasurementsTest.java delete mode 100644 bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MessagesTest.java delete mode 100644 bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/ProcessTest.java delete mode 100644 bindings/ppmp-java-binding/src/test/resources/measurement.json delete mode 100644 bindings/ppmp-java-binding/src/test/resources/message.json delete mode 100644 bindings/ppmp-java-binding/src/test/resources/process.json delete mode 100644 website/.editorconfig diff --git a/README.md b/README.md index bf5b2fc..18fde79 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Unide logo](images/logo.png) +![Unide logo](website/static/logo.svg) [Eclipse Unide](https://www.eclipse.org/unide) publishes the current version of Production Performance Management Protocol (PPMP) and develops simple server/client implementations. The implementations store the payloads in a database and displays them through a simple user interface. Everyone can then use these samples for their custom condition monitoring applications. @@ -8,4 +8,4 @@ For installing the Unide server and binding implementations use Maven. ## Installation -Run `mvn clean install` \ No newline at end of file +Run `mvn clean install` diff --git a/bindings/ppmp-java-binding/.gitignore b/bindings/ppmp-java-binding/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/bindings/ppmp-java-binding/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/bindings/ppmp-java-binding/about.html b/bindings/ppmp-java-binding/about.html deleted file mode 100644 index f4e8796..0000000 --- a/bindings/ppmp-java-binding/about.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - -About - - -

About This Content

- -

January 1, 2017

-

License

- -

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise -indicated below, the Content is provided to you under the terms and conditions of the -Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available -at http://www.eclipse.org/legal/epl-v10.html. -For purposes of the EPL, "Program" will mean the Content.

- -

If you did not receive this Content directly from the Eclipse Foundation, the Content is -being redistributed by another party ("Redistributor") and different terms and conditions may -apply to your use of any object code in the Content. Check the Redistributor's license that was -provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise -indicated below, the terms and conditions of the EPL still apply to any source code in the Content -and such source code may be obtained at http://www.eclipse.org.

- - - \ No newline at end of file diff --git a/bindings/ppmp-java-binding/epl-v10.html b/bindings/ppmp-java-binding/epl-v10.html deleted file mode 100644 index 70f5ee0..0000000 --- a/bindings/ppmp-java-binding/epl-v10.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - -Eclipse Public License - Version 1.0 - - - - - - -

Eclipse Public License - v 1.0

- -

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE -PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR -DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS -AGREEMENT.

- -

1. DEFINITIONS

- -

"Contribution" means:

- -

a) in the case of the initial Contributor, the initial -code and documentation distributed under this Agreement, and

-

b) in the case of each subsequent Contributor:

-

i) changes to the Program, and

-

ii) additions to the Program;

-

where such changes and/or additions to the Program -originate from and are distributed by that particular Contributor. A -Contribution 'originates' from a Contributor if it was added to the -Program by such Contributor itself or anyone acting on such -Contributor's behalf. Contributions do not include additions to the -Program which: (i) are separate modules of software distributed in -conjunction with the Program under their own license agreement, and (ii) -are not derivative works of the Program.

- -

"Contributor" means any person or entity that distributes -the Program.

- -

"Licensed Patents" mean patent claims licensable by a -Contributor which are necessarily infringed by the use or sale of its -Contribution alone or when combined with the Program.

- -

"Program" means the Contributions distributed in accordance -with this Agreement.

- -

"Recipient" means anyone who receives the Program under -this Agreement, including all Contributors.

- -

2. GRANT OF RIGHTS

- -

a) Subject to the terms of this Agreement, each -Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free copyright license to reproduce, prepare derivative works -of, publicly display, publicly perform, distribute and sublicense the -Contribution of such Contributor, if any, and such derivative works, in -source code and object code form.

- -

b) Subject to the terms of this Agreement, each -Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free patent license under Licensed Patents to make, use, sell, -offer to sell, import and otherwise transfer the Contribution of such -Contributor, if any, in source code and object code form. This patent -license shall apply to the combination of the Contribution and the -Program if, at the time the Contribution is added by the Contributor, -such addition of the Contribution causes such combination to be covered -by the Licensed Patents. The patent license shall not apply to any other -combinations which include the Contribution. No hardware per se is -licensed hereunder.

- -

c) Recipient understands that although each Contributor -grants the licenses to its Contributions set forth herein, no assurances -are provided by any Contributor that the Program does not infringe the -patent or other intellectual property rights of any other entity. Each -Contributor disclaims any liability to Recipient for claims brought by -any other entity based on infringement of intellectual property rights -or otherwise. As a condition to exercising the rights and licenses -granted hereunder, each Recipient hereby assumes sole responsibility to -secure any other intellectual property rights needed, if any. For -example, if a third party patent license is required to allow Recipient -to distribute the Program, it is Recipient's responsibility to acquire -that license before distributing the Program.

- -

d) Each Contributor represents that to its knowledge it -has sufficient copyright rights in its Contribution, if any, to grant -the copyright license set forth in this Agreement.

- -

3. REQUIREMENTS

- -

A Contributor may choose to distribute the Program in object code -form under its own license agreement, provided that:

- -

a) it complies with the terms and conditions of this -Agreement; and

- -

b) its license agreement:

- -

i) effectively disclaims on behalf of all Contributors -all warranties and conditions, express and implied, including warranties -or conditions of title and non-infringement, and implied warranties or -conditions of merchantability and fitness for a particular purpose;

- -

ii) effectively excludes on behalf of all Contributors -all liability for damages, including direct, indirect, special, -incidental and consequential damages, such as lost profits;

- -

iii) states that any provisions which differ from this -Agreement are offered by that Contributor alone and not by any other -party; and

- -

iv) states that source code for the Program is available -from such Contributor, and informs licensees how to obtain it in a -reasonable manner on or through a medium customarily used for software -exchange.

- -

When the Program is made available in source code form:

- -

a) it must be made available under this Agreement; and

- -

b) a copy of this Agreement must be included with each -copy of the Program.

- -

Contributors may not remove or alter any copyright notices contained -within the Program.

- -

Each Contributor must identify itself as the originator of its -Contribution, if any, in a manner that reasonably allows subsequent -Recipients to identify the originator of the Contribution.

- -

4. COMMERCIAL DISTRIBUTION

- -

Commercial distributors of software may accept certain -responsibilities with respect to end users, business partners and the -like. While this license is intended to facilitate the commercial use of -the Program, the Contributor who includes the Program in a commercial -product offering should do so in a manner which does not create -potential liability for other Contributors. Therefore, if a Contributor -includes the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and -indemnify every other Contributor ("Indemnified Contributor") -against any losses, damages and costs (collectively "Losses") -arising from claims, lawsuits and other legal actions brought by a third -party against the Indemnified Contributor to the extent caused by the -acts or omissions of such Commercial Contributor in connection with its -distribution of the Program in a commercial product offering. The -obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In -order to qualify, an Indemnified Contributor must: a) promptly notify -the Commercial Contributor in writing of such claim, and b) allow the -Commercial Contributor to control, and cooperate with the Commercial -Contributor in, the defense and any related settlement negotiations. The -Indemnified Contributor may participate in any such claim at its own -expense.

- -

For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those -performance claims and warranties, and if a court requires any other -Contributor to pay any damages as a result, the Commercial Contributor -must pay those damages.

- -

5. NO WARRANTY

- -

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS -PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS -OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, -ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY -OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely -responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to -the risks and costs of program errors, compliance with applicable laws, -damage to or loss of data, programs or equipment, and unavailability or -interruption of operations.

- -

6. DISCLAIMER OF LIABILITY

- -

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT -NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING -WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR -DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED -HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

- -

7. GENERAL

- -

If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further action -by the parties hereto, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable.

- -

If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Program itself (excluding combinations of the Program with other -software or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the -date such litigation is filed.

- -

All Recipient's rights under this Agreement shall terminate if it -fails to comply with any of the material terms or conditions of this -Agreement and does not cure such failure in a reasonable period of time -after becoming aware of such noncompliance. If all Recipient's rights -under this Agreement terminate, Recipient agrees to cease use and -distribution of the Program as soon as reasonably practicable. However, -Recipient's obligations under this Agreement and any licenses granted by -Recipient relating to the Program shall continue and survive.

- -

Everyone is permitted to copy and distribute copies of this -Agreement, but in order to avoid inconsistency the Agreement is -copyrighted and may only be modified in the following manner. The -Agreement Steward reserves the right to publish new versions (including -revisions) of this Agreement from time to time. No one other than the -Agreement Steward has the right to modify this Agreement. The Eclipse -Foundation is the initial Agreement Steward. The Eclipse Foundation may -assign the responsibility to serve as the Agreement Steward to a -suitable separate entity. Each new version of the Agreement will be -given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version -of the Agreement is published, Contributor may elect to distribute the -Program (including its Contributions) under the new version. Except as -expressly stated in Sections 2(a) and 2(b) above, Recipient receives no -rights or licenses to the intellectual property of any Contributor under -this Agreement, whether expressly, by implication, estoppel or -otherwise. All rights in the Program not expressly granted under this -Agreement are reserved.

- -

This Agreement is governed by the laws of the State of New York and -the intellectual property laws of the United States of America. No party -to this Agreement will bring a legal action under this Agreement more -than one year after the cause of action arose. Each party waives its -rights to a jury trial in any resulting litigation.

- - - - - \ No newline at end of file diff --git a/bindings/ppmp-java-binding/notice.html b/bindings/ppmp-java-binding/notice.html deleted file mode 100644 index c417e6f..0000000 --- a/bindings/ppmp-java-binding/notice.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - -Eclipse Foundation Software User Agreement - - - -

Eclipse Foundation Software User Agreement

-

April 9, 2014

- -

Usage Of Content

- -

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS - (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND - CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE - OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR - NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND - CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

- -

Applicable Licenses

- -

Unless otherwise indicated, all Content made available by the Eclipse - Foundation is provided to you under the terms and conditions of the -Eclipse Public License Version 1.0 - ("EPL"). A copy of the EPL is provided with this Content and is also - available at http://www.eclipse.org/legal/epl-v10.html. - For purposes of the EPL, "Program" will mean the Content.

- -

Content includes, but is not limited to, source code, object code, -documentation and other files maintained in the Eclipse Foundation -source code - repository ("Repository") in software modules ("Modules") and made -available as downloadable archives ("Downloads").

- -
    -
  • Content may be structured and packaged into modules to -facilitate delivering, extending, and upgrading the Content. Typical -modules may include plug-ins ("Plug-ins"), plug-in fragments -("Fragments"), and features ("Features").
  • -
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • -
  • A Feature is a bundle of one or more Plug-ins and/or -Fragments and associated material. Each Feature may be packaged as a -sub-directory in a directory named "features". Within a Feature, files -named "feature.xml" may contain a list of the names and version numbers -of the Plug-ins - and/or Fragments associated with that Feature.
  • -
  • Features may also include other Features ("Included -Features"). Within a Feature, files named "feature.xml" may contain a -list of the names and version numbers of Included Features.
  • -
- -

The terms and conditions governing Plug-ins and Fragments should be -contained in files named "about.html" ("Abouts"). The terms and -conditions governing Features and -Included Features should be contained in files named "license.html" -("Feature Licenses"). Abouts and Feature Licenses may be located in any - directory of a Download or Module -including, but not limited to the following locations:

- -
    -
  • The top-level (root) directory
  • -
  • Plug-in and Fragment directories
  • -
  • Inside Plug-ins and Fragments packaged as JARs
  • -
  • Sub-directories of the directory named "src" of certain Plug-ins
  • -
  • Feature directories
  • -
- -

Note: if a Feature made available by the Eclipse Foundation is -installed using the Provisioning Technology (as defined below), you must - agree to a license ("Feature Update License") during the -installation process. If the Feature contains Included Features, the -Feature Update License should either provide you with the terms and -conditions governing the Included Features or -inform you where you can locate them. Feature Update Licenses may be -found in the "license" property of files named "feature.properties" -found within a Feature. -Such Abouts, Feature Licenses, and Feature Update Licenses contain the -terms and conditions (or references to such terms and conditions) that -govern your use of the associated Content in -that directory.

- -

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER -TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. - SOME OF THESE -OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

- - - -

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND -CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, -or Feature Update License is provided, please -contact the Eclipse Foundation to determine what terms and conditions -govern that particular Content.

- - -

Use of Provisioning Technology

- -

The Eclipse Foundation makes available provisioning software, -examples of which include, but are not limited to, p2 and the Eclipse - Update Manager ("Provisioning Technology") for the purpose of -allowing users to install software, documentation, information and/or - other materials (collectively "Installable Software"). This -capability is provided with the intent of allowing such users to - install, extend and update Eclipse-based products. Information about -packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html - ("Specification").

- -

You may use Provisioning Technology to allow other parties to install - Installable Software. You shall be responsible for enabling the - applicable license agreements relating to the Installable Software to - be presented to, and accepted by, the users of the Provisioning -Technology - in accordance with the Specification. By using Provisioning -Technology in such a manner and making it available in accordance with -the - Specification, you further acknowledge your agreement to, and the -acquisition of all necessary rights to permit the following:

- -
    -
  1. A series of actions may occur ("Provisioning Process") in -which a user may execute the Provisioning Technology - on a machine ("Target Machine") with the intent of installing, -extending or updating the functionality of an Eclipse-based - product.
  2. -
  3. During the Provisioning Process, the Provisioning Technology -may cause third party Installable Software or a portion thereof to be - accessed and copied to the Target Machine.
  4. -
  5. Pursuant to the Specification, you will provide to the user -the terms and conditions that govern the use of the Installable - Software ("Installable Software Agreement") and such Installable -Software Agreement shall be accessed from the Target - Machine in accordance with the Specification. Such Installable -Software Agreement must inform the user of the terms and conditions that - govern - the Installable Software and must solicit acceptance by the end -user in the manner prescribed in such Installable Software Agreement. -Upon such - indication of agreement by the user, the provisioning Technology -will complete installation of the Installable Software.
  6. -
- -

Cryptography

- -

Content may contain encryption software. The country in which you are - currently may have restrictions on the import, possession, and use, -and/or re-export to - another country, of encryption software. BEFORE using any encryption -software, please check the country's laws, regulations and policies -concerning the import, - possession, or use, and re-export of encryption software, to see if -this is permitted.

- -

Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.

- - - \ No newline at end of file diff --git a/bindings/ppmp-java-binding/pom.xml b/bindings/ppmp-java-binding/pom.xml deleted file mode 100644 index 1352569..0000000 --- a/bindings/ppmp-java-binding/pom.xml +++ /dev/null @@ -1,149 +0,0 @@ - - - - 4.0.0 - - org.eclipse.iot.unide.ppmp - ppmp-java-binding - 0.2.0-SNAPSHOT - bundle - - - - repo.eclipse.org - Unide Repository - Releases - https://repo.eclipse.org/content/repositories/unide-releases/ - - - repo.eclipse.org - Unide Repository - Snapshots - https://repo.eclipse.org/content/repositories/unide-snapshots/ - - - - - 2.8.2 - UTF-8 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - UTF-8 - true - - - - - - - - org.apache.felix - maven-bundle-plugin - 3.3.0 - true - - - - - - - - eclipse_jar_signing - - false - - enableEclipseJarSigner - - - - - eclipse-repo - Eclipse CBI Repository - - true - - - false - - https://repo.eclipse.org/content/repositories/cbi-releases/ - - - - - - org.eclipse.cbi.maven.plugins - eclipse-jarsigner-plugin - 1.1.4 - - true - - - - sign-jars - verify - - sign - - - - - - - - - - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - ${jackson.version} - - - junit - junit - 4.12 - test - - - org.skyscreamer - jsonassert - 1.4.0 - test - - - commons-io - commons-io - 2.5 - test - - - diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/PPMPPackager.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/PPMPPackager.java deleted file mode 100644 index 3132077..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/PPMPPackager.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; - -import org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper; -import org.eclipse.iot.unide.ppmp.messages.MessagesWrapper; -import org.eclipse.iot.unide.ppmp.process.ProcessWrapper; - -import java.io.IOException; - -public class PPMPPackager { - - private ObjectMapper mapper; - - public PPMPPackager() { - mapper = new ObjectMapper(); - - mapper.enable(DeserializationFeature. ACCEPT_SINGLE_VALUE_AS_ARRAY); - mapper.registerModule(new JavaTimeModule()); - - mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - mapper.setSerializationInclusion(Include.NON_NULL); - } - - public String getMessage(Object jsonBean) throws IOException { - String json = mapper.writeValueAsString(jsonBean); - return json; - } - - public String getMessage(Object jsonBean, boolean indentOutput) throws JsonProcessingException { - mapper = setJsonFormat(mapper, indentOutput); - String json = mapper.writeValueAsString(jsonBean); - return json; - } - - private ObjectMapper setJsonFormat(ObjectMapper mapper, boolean indentOutput) { - mapper.configure(SerializationFeature.INDENT_OUTPUT, indentOutput); - return mapper; - } - - public MessagesWrapper getMessagesBean(String jsonString) throws IOException { - MessagesWrapper bean = null; - bean = mapper.readValue(jsonString, MessagesWrapper.class); - return bean; - } - - public MeasurementsWrapper getMeasurementsBean(String jsonString) throws IOException { - MeasurementsWrapper bean = null; - bean = mapper.readValue(jsonString, MeasurementsWrapper.class); - return bean; - } - - public ProcessWrapper getProcessesBean(String jsonString) throws IOException { - ProcessWrapper bean = null; - bean = mapper.readValue(jsonString, ProcessWrapper.class); - return bean; - } -} - diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/Device.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/Device.java deleted file mode 100644 index cc06f1e..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/Device.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.commons; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Device { - @JsonProperty("deviceID") - private String deviceID; - - @JsonProperty("operationalStatus") - private String operationalStatus; // optional - - @JsonProperty("metaData") - private MetaData metaData; // optional - - public String getDeviceID() { - return deviceID; - } - - public void setDeviceID(String deviceID) { - this.deviceID = deviceID; - } - - public String getOperationalStatus() { - return operationalStatus; - } - - public void setOperationalStatus(String operationalStatus) { - this.operationalStatus = operationalStatus; - } - - public MetaData getMetaData() { - return metaData; - } - - public void setMetaData(MetaData metaData) { - this.metaData = metaData; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/MetaData.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/MetaData.java deleted file mode 100644 index ce6fbc8..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/commons/MetaData.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.commons; - -import java.util.HashMap; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class MetaData { - private Map metaData = new HashMap<>(); - - @JsonAnyGetter - public Map getMetaData() { - return metaData; - } - - @JsonAnySetter - public void setMetaDataValue(String name, String value) { - metaData.put(name, value); - } - - public void setMetaData(Map metaData) { - this.metaData = metaData; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/mapper/SingleValueAsArrayUnwrapper.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/mapper/SingleValueAsArrayUnwrapper.java deleted file mode 100644 index 1c4f2c4..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/mapper/SingleValueAsArrayUnwrapper.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.eclipse.iot.unide.ppmp.mapper; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.SerializerProvider; - -public class SingleValueAsArrayUnwrapper extends JsonSerializer { - - @Override - public void serialize(Object object, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { - if (!serializerProvider.getConfig().isEnabled(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)) { - new ObjectMapper().enable(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED).writeValue(jsonGenerator, object); - } else { - jsonGenerator.writeObject(object); - } - } - - } diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Limits.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Limits.java deleted file mode 100644 index 4ffb91b..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Limits.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.measurements; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Limits { - @JsonProperty("upperError") - private Number upperError; // optional - - @JsonProperty("lowerError") - private Number lowerError; // optional - - @JsonProperty("upperWarn") - private Number upperWarn; // optional - - @JsonProperty("lowerWarn") - private Number lowerWarn; // optional - - public Number getUpperError() { - return upperError; - } - - public void setUpperError(Number upperError) { - this.upperError = upperError; - } - - public Number getLowerError() { - return lowerError; - } - - public void setLowerError(Number lowerError) { - this.lowerError = lowerError; - } - - public Number getUpperWarn() { - return upperWarn; - } - - public void setUpperWarn(Number upperWarn) { - this.upperWarn = upperWarn; - } - - public Number getLowerWarn() { - return lowerWarn; - } - - public void setLowerWarn(Number lowerWarn) { - this.lowerWarn = lowerWarn; - } - -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/LimitsMap.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/LimitsMap.java deleted file mode 100644 index ffef6e2..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/LimitsMap.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.measurements; - -import java.util.HashMap; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class LimitsMap { - private Map limits = new HashMap<>(); - - @JsonAnyGetter - public Map getLimits() { - return limits; - } - - @JsonAnySetter - public void setLimitsValue(String name, Limits value) { - limits.put(name, value); - } - - public void setLimits(Map limits) { - this.limits = limits; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Measurements.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Measurements.java deleted file mode 100644 index d8d10a8..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Measurements.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.measurements; - -import java.time.OffsetDateTime; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Measurements { - public enum Result { - OK, NOK, UNKNOWN - }; - - @JsonProperty("ts") - private OffsetDateTime timestamp; - - @JsonProperty("result") - private Result result; // optional - - @JsonProperty("code") - private String code; // optional - - @JsonProperty("limits") - private LimitsMap limitsMap; - - @JsonProperty("series") - private SeriesMap seriesMap; - - public OffsetDateTime getTimestamp() { - return timestamp; - } - - public void setTimestamp(OffsetDateTime timestamp) { - this.timestamp = timestamp; - } - - public Result getResult() { - return result; - } - - public void setResult(Result result) { - this.result = result; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public LimitsMap getLimitsMap() { - return limitsMap; - } - - public void setLimitsMap(LimitsMap limits) { - this.limitsMap = limits; - } - - public SeriesMap getSeriesMap() { - return seriesMap; - } - - public void setSeriesMap(SeriesMap series) { - this.seriesMap = series; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/MeasurementsWrapper.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/MeasurementsWrapper.java deleted file mode 100644 index af86719..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/MeasurementsWrapper.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.measurements; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonProperty; - -import org.eclipse.iot.unide.ppmp.commons.Device; - -public class MeasurementsWrapper { - @JsonProperty("content-spec") - private final String contentSpec = "urn:spec://eclipse.org/unide/measurement-message#v2"; - - @JsonProperty("device") - private Device device; - - @JsonProperty("part") - private Part part; // optional - - @JsonProperty("measurements") - private List measurements; - - public String getContentSpec() { - return contentSpec; - } - - public Device getDevice() { - return device; - } - - public void setDevice(Device device) { - this.device = device; - } - - public Part getPart() { - return part; - } - - public void setPart(Part part) { - this.part = part; - } - - public List getMeasurements() { - return measurements; - } - - public void setMeasurements(List measurements) { - this.measurements = measurements; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Part.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Part.java deleted file mode 100644 index e98a282..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/Part.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.measurements; - -import com.fasterxml.jackson.annotation.JsonProperty; - -import org.eclipse.iot.unide.ppmp.commons.MetaData; -import org.eclipse.iot.unide.ppmp.measurements.Measurements.Result; - -public class Part { - @JsonProperty("partTypeID") - private String partTypeID; // optional - - @JsonProperty("partID") - private String partID; // optional - - @JsonProperty("result") - private Result result; // optional - - @JsonProperty("code") - private String code; // optional - - @JsonProperty("metaData") - private MetaData metaData; // optional - - public String getPartTypeID() { - return partTypeID; - } - - public void setPartTypeID(String partTypeID) { - this.partTypeID = partTypeID; - } - - public String getPartID() { - return partID; - } - - public void setPartID(String partID) { - this.partID = partID; - } - - public Result getResult() { - return result; - } - - public void setResult(Result result) { - this.result = result; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public MetaData getMetaData() { - return metaData; - } - - public void setMetaData(MetaData metaData) { - this.metaData = metaData; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/SeriesMap.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/SeriesMap.java deleted file mode 100644 index 8f386b4..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/measurements/SeriesMap.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.measurements; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class SeriesMap { - private Map> series = new HashMap<>(); - - public SeriesMap(){ - - } - - @JsonAnyGetter - public Map> getSeries() { - return series; - } - - /** - * To represents the time sequence of a measurement, add an entry with - * "$_time" as a key. Its values are relative time-offsets to the given - * timestamp. Please refer to the documentation of the interface for - * details. - */ - @JsonAnySetter - public void setSeriesValue(String name, List value) { - series.put(name, value); - } - - public void setSeries(Map> series) { - this.series = series; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/Message.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/Message.java deleted file mode 100644 index fb883c4..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/Message.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.messages; - -import java.time.OffsetDateTime; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.eclipse.iot.unide.ppmp.commons.MetaData; - -public class Message { - public enum MessageType { - DEVICE, TECHNICAL_INFO // default DEVICE - }; - - public enum MessageSeverity { - HIGH, MEDIUM, LOW, UNKNOWN // default UNKNOWN - }; - - @JsonProperty("origin") - private String origin; // optional - - @JsonProperty("ts") - private OffsetDateTime timestamp; - - @JsonProperty("type") - private MessageType type; // optional - - @JsonProperty("severity") - private MessageSeverity severity = MessageSeverity.UNKNOWN; // optional - - @JsonProperty("code") - private String code; - - @JsonProperty("title") - private String title; // optional - - @JsonProperty("description") - private String description; // optional - - @JsonProperty("hint") - private String hint; // optional - - @JsonProperty("metaData") - private MetaData metaData; // optional - - public String getOrigin() { - return origin; - } - - public void setOrigin(String origin) { - this.origin = origin; - } - - public String getHint() { - return hint; - } - - public void setHint(String hint) { - this.hint = hint; - } - - public OffsetDateTime getTimestamp() { - return timestamp; - } - - public MessageType getType() { - return type; - } - - public MessageSeverity getSeverity() { - return severity; - } - - public String getCode() { - return code; - } - - public String getTitle() { - return title; - } - - public String getDescription() { - return description; - } - - public void setTimestamp(OffsetDateTime timestamp) { - this.timestamp = timestamp; - } - - public void setType(MessageType type) { - this.type = type; - } - - public void setSeverity(MessageSeverity severity) { - this.severity = severity; - } - - public void setCode(String code) { - this.code = code; - } - - public void setTitle(String title) { - this.title = title; - } - - public void setDescription(String description) { - this.description = description; - } - - public MetaData getMetaData() { - return metaData; - } - - public void setMetaData(MetaData metaData) { - this.metaData = metaData; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/MessagesWrapper.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/MessagesWrapper.java deleted file mode 100644 index 256b889..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/messages/MessagesWrapper.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -package org.eclipse.iot.unide.ppmp.messages; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.eclipse.iot.unide.ppmp.commons.Device; - -public class MessagesWrapper { - @JsonProperty("content-spec") - private final String contentSpec = "urn:spec://eclipse.org/unide/machine-message#v2"; - - @JsonProperty("device") - private Device device; - - @JsonProperty("messages") - private List messages; - - public Device getDevice() { - return device; - } - - public void setDevice(Device device) { - this.device = device; - } - - public List getMessages() { - return messages; - } - - public void setMessages(List messages) { - this.messages = messages; - } - - public String getContentSpec() { - return contentSpec; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Limits.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Limits.java deleted file mode 100644 index 29727fe..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Limits.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.util.Arrays; -import java.util.List; - -import org.eclipse.iot.unide.ppmp.mapper.SingleValueAsArrayUnwrapper; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -public class Limits { - - @JsonProperty("upperError") - @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) - @JsonSerialize(using = SingleValueAsArrayUnwrapper.class) - private List upperError; // optional - - @JsonProperty("lowerError") - @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) - @JsonSerialize(using = SingleValueAsArrayUnwrapper.class) - private List lowerError; // optional - - @JsonProperty("upperWarn") - @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) - @JsonSerialize(using = SingleValueAsArrayUnwrapper.class) - private List upperWarn; // optional - - @JsonProperty("lowerWarn") - @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) - @JsonSerialize(using = SingleValueAsArrayUnwrapper.class) - private List lowerWarn; // optional - - @JsonProperty("target") - @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) - @JsonSerialize(using = SingleValueAsArrayUnwrapper.class) - private List target; // optional - - public List getUpperError() { - return upperError; - } - - public void setUpperError(List upperError) { - this.upperError = upperError; - } - - public void setUpperErrorSingleValue(Number upperError) { - this.upperError = Arrays.asList(upperError); - } - - public List getLowerError() { - return lowerError; - } - - public void setLowerError(List lowerError) { - this.lowerError = lowerError; - } - - public void setLowerErrorSingleValue(Number lowerError) { - this.lowerError = Arrays.asList(lowerError); - } - - - public List getUpperWarn() { - return upperWarn; - } - - public void setUpperWarn(List upperWarn) { - this.upperWarn = upperWarn; - } - - public void setUpperWarnSingleValue(Number upperWarn) { - this.upperWarn = Arrays.asList(upperWarn); - } - - - public List getLowerWarn() { - return lowerWarn; - } - - public void setLowerWarn(List lowerWarn) { - this.lowerWarn = lowerWarn; - } - - public void setLowerWarnSingleValue(Number lowerWarn) { - this.lowerWarn = Arrays.asList(lowerWarn); - } - - public List getTarget() { - return target; - } - - public void setTarget(List target) { - this.target = target; - } - - public void setTargetSingleValue(Number target) { - this.target = Arrays.asList(target); - } - -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/LimitsMap.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/LimitsMap.java deleted file mode 100644 index d76f250..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/LimitsMap.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.util.HashMap; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class LimitsMap { - private Map limits = new HashMap<>(); - - @JsonAnyGetter - public Map getLimits() { - return limits; - } - - @JsonAnySetter - public void setLimitsValue(String name, Limits value) { - limits.put(name, value); - } - - public void setLimits(Map limits) { - this.limits = limits; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Measurements.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Measurements.java deleted file mode 100644 index abb967b..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Measurements.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.time.OffsetDateTime; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Measurements { - public enum Result { - OK, NOK, UNKNOWN - }; - - @JsonProperty("ts") - private OffsetDateTime timestamp; - - @JsonProperty("phase") - private String phase; - - @JsonProperty("name") - private String name; - - @JsonProperty("result") - private Result result; // optional - - @JsonProperty("code") - private String code; // optional - - @JsonProperty("limits") - private LimitsMap limitsMap; // optional - - @JsonProperty("series") - private SeriesMap seriesMap; - - @JsonProperty("specialValues") - private SpecialValueMap specialValues; - - public OffsetDateTime getTimestamp() { - return timestamp; - } - - public void setTimestamp(OffsetDateTime timestamp) { - this.timestamp = timestamp; - } - - public Result getResult() { - return result; - } - - public void setResult(Result result) { - this.result = result; - } - - public String getPhase() { - return phase; - } - - public void setPhase(String phase) { - this.phase = phase; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public LimitsMap getLimitsMap() { - return limitsMap; - } - - public void setLimitsMap(LimitsMap limits) { - this.limitsMap = limits; - } - - public SeriesMap getSeriesMap() { - return seriesMap; - } - - public void setSeriesMap(SeriesMap series) { - this.seriesMap = series; - } - - public SpecialValueMap getSpecialValues() { - return specialValues; - } - - public void setSpecialValues(SpecialValueMap specialValues) { - this.specialValues = specialValues; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Part.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Part.java deleted file mode 100644 index b40c4eb..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Part.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import com.fasterxml.jackson.annotation.JsonProperty; - -import org.eclipse.iot.unide.ppmp.commons.MetaData; - -public class Part { - - public enum Result { - OK, NOK, UNKNOWN - }; - - public enum Type { - SINGLE, BATCH - }; - - @JsonProperty("partTypeID") - private String partTypeID; // optional - - @JsonProperty("partID") - private String partID; - - @JsonProperty("type") - private Type type; // optional - - @JsonProperty("result") - private Result result; // optional - - @JsonProperty("code") - private String code; // optional - - @JsonProperty("metaData") - private MetaData metaData; // optional - - public String getPartTypeId() { - return partTypeID; - } - - public void setPartTypeID(String partTypeID) { - this.partTypeID = partTypeID; - } - - public String getpartID() { - return partID; - } - - public void setPartID(String partID) { - this.partID = partID; - } - - public Result getResult() { - return result; - } - - public void setResult(Result result) { - this.result = result; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public MetaData getMetaData() { - return metaData; - } - - public void setMetaData(MetaData metaData) { - this.metaData = metaData; - } - - public Type getType() { - return type; - } - - public void setType(Type type) { - this.type = type; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Process.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Process.java deleted file mode 100644 index 35b5638..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Process.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.time.OffsetDateTime; - -import org.eclipse.iot.unide.ppmp.commons.MetaData; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Process { - - public enum Result { - OK, NOK, UNKNOWN - }; - - @JsonProperty("ts") - private OffsetDateTime timestamp; - - @JsonProperty("result") - private Result result; // optional - - @JsonProperty("externalProcessId") - private String externalProcessId; // optional - - @JsonProperty("shutoffPhase") - private String shutoffPhase; // optional - - @JsonProperty("program") - private Program program; // optional - - @JsonProperty("shutoffValues") - private ShutOffValuesMap shutOffValuesMap; // optional - - @JsonProperty("metaData") - private MetaData metaData; // optional - - public OffsetDateTime getTimestamp() { - return timestamp; - } - - public void setTimestamp(OffsetDateTime timestamp) { - this.timestamp = timestamp; - } - - public Result getResult() { - return result; - } - - public void setResult(Result result) { - this.result = result; - } - - public String getExternalProcessId() { - return externalProcessId; - } - - public void setExternalProcessId(String externalProcessId) { - this.externalProcessId = externalProcessId; - } - - public String getShutoffPhase() { - return shutoffPhase; - } - - public void setShutoffPhase(String shutoffPhase) { - this.shutoffPhase = shutoffPhase; - } - - public ShutOffValuesMap getShutOffValuesMap() { - return shutOffValuesMap; - } - - public void setShutOffValuesMap(ShutOffValuesMap shutOffValues) { - this.shutOffValuesMap = shutOffValues; - } - - public Program getProgram() { - return program; - } - - public void setProgram(Program program) { - this.program = program; - } - - public MetaData getMetaData() { - return metaData; - } - - public void setMetaData(MetaData metaData) { - this.metaData = metaData; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ProcessWrapper.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ProcessWrapper.java deleted file mode 100644 index c1091ce..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ProcessWrapper.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.util.List; - -import org.eclipse.iot.unide.ppmp.commons.Device; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ProcessWrapper { - @JsonProperty("content-spec") - private final String contentSpec = "urn:spec://eclipse.org/unide/process-message#v2"; - - @JsonProperty("device") - private Device device; - - @JsonProperty("part") - private Part part; // optional - - @JsonProperty("measurements") - private List measurements; - - @JsonProperty("process") - private Process process; // optional - - public String getContentSpec() { - return contentSpec; - } - - public Device getDevice() { - return device; - } - - public void setDevice(Device device) { - this.device = device; - } - - public Part getPart() { - return part; - } - - public void setPart(Part part) { - this.part = part; - } - - public Process getProcess() { - return process; - } - - public void setProcess(Process process) { - this.process = process; - } - - public List getMeasurements() { - return measurements; - } - - public void setMeasurements(List measurements) { - this.measurements = measurements; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Program.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Program.java deleted file mode 100644 index 5326d2f..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/Program.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Program { - @JsonProperty("name") - private String name; // optional - - @JsonProperty("id") - private String id; // optional - - @JsonProperty("lastChangedDate") - private String lastChangedDate; // optional - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getLastChangedDate() { - return lastChangedDate; - } - - public void setLastChangedDate(String lastChangedDate) { - this.lastChangedDate = lastChangedDate; - } - -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SeriesMap.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SeriesMap.java deleted file mode 100644 index 0c01509..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SeriesMap.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class SeriesMap { - private Map> series = new HashMap<>(); - - public SeriesMap(){ - - } - - @JsonAnyGetter - public Map> getSeries() { - return series; - } - - /** - * To represents the time sequence of a measurement, add an entry with - * "$_time" as a key. Its values are relative time-offsets to the given - * timestamp. Please refer to the documentation of the interface for - * details. - */ - @JsonAnySetter - public void setSeriesValue(String name, List value) { - series.put(name, value); - } - - public void setSeries(Map> series) { - this.series = series; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValues.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValues.java deleted file mode 100644 index 47d9db4..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValues.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.time.OffsetDateTime; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ShutOffValues { - @JsonProperty("upperError") - private Number upperError; // optional - - @JsonProperty("lowerError") - private Number lowerError; // optional - - @JsonProperty("value") - private Number value; // optional - - @JsonProperty("ts") - private OffsetDateTime timestamp; // optional - - public Number getUpperError() { - return upperError; - } - - public void setUpperError(Number upperError) { - this.upperError = upperError; - } - - public Number getLowerError() { - return lowerError; - } - - public void setLowerError(Number lowerError) { - this.lowerError = lowerError; - } - - public Number getValue() { - return value; - } - - public void setValue(Number value) { - this.value = value; - } - - public OffsetDateTime getTimestamp() { - return timestamp; - } - - public void setTimestamp(OffsetDateTime timestamp) { - this.timestamp = timestamp; - } - -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValuesMap.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValuesMap.java deleted file mode 100644 index aa4c8c5..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/ShutOffValuesMap.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.util.HashMap; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class ShutOffValuesMap { - private Map shutOffValues = new HashMap<>(); - - @JsonAnyGetter - public Map getShutOffValues() { - return shutOffValues; - } - - @JsonAnySetter - public void setShutOffValue(String name, ShutOffValues value) { - shutOffValues.put(name, value); - } - - public void setShutOffValues(Map shutOffValues) { - this.shutOffValues = shutOffValues; - } -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValue.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValue.java deleted file mode 100644 index b8e9ab2..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValue.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class SpecialValue { - - @JsonProperty("time") - private Number time; // optional - - @JsonProperty("value") - private Number value; // optional - - public Number getTime() { - return time; - } - - public void setTime(Number time) { - this.time = time; - } - - public Number getValue() { - return value; - } - - public void setValue(Number value) { - this.value = value; - } - -} diff --git a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValueMap.java b/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValueMap.java deleted file mode 100644 index f05a7f3..0000000 --- a/bindings/ppmp-java-binding/src/main/java/org/eclipse/iot/unide/ppmp/process/SpecialValueMap.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp.process; - -import java.util.HashMap; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; - -public class SpecialValueMap { - private Map specialValues = new HashMap<>(); - - @JsonAnyGetter - public Map getSpecialValue() { - return specialValues; - } - - @JsonAnySetter - public void setSpecialValue(String name, SpecialValue value) { - specialValues.put(name, value); - } - - public void setSpecialValue(Map specialValues) { - this.specialValues = specialValues; - } -} diff --git a/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MeasurementsTest.java b/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MeasurementsTest.java deleted file mode 100644 index 9e06790..0000000 --- a/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MeasurementsTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp; - - - -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; - -import org.apache.commons.io.IOUtils; -import org.eclipse.iot.unide.ppmp.commons.Device; -import org.eclipse.iot.unide.ppmp.commons.MetaData; -import org.eclipse.iot.unide.ppmp.measurements.*; -import org.json.JSONException; -import org.junit.BeforeClass; -import org.junit.Test; -import org.skyscreamer.jsonassert.JSONAssert; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.time.OffsetDateTime; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class MeasurementsTest { - - private static final String TEST_FILE_NAME = "measurement.json"; - private static String MEASUREMENT_TEST_MESSAGE; - - @BeforeClass - public static void readFileContent() throws IOException { - ClassLoader classLoader = MeasurementsTest.class.getClassLoader(); - MEASUREMENT_TEST_MESSAGE = IOUtils.toString(classLoader.getResourceAsStream(TEST_FILE_NAME), Charset.defaultCharset()); - } - - @Test - public void convertFullMeasurementsExampleToJson() throws JsonGenerationException, JsonMappingException, IOException, JSONException { - PPMPPackager packager = new PPMPPackager(); - MeasurementsWrapper wrapper = createMeasurementsWrapperWithFullData(); - String result = packager.getMessage(wrapper, true); - - JSONAssert.assertEquals(MEASUREMENT_TEST_MESSAGE, result, false); - } - - @Test - public void convertMeasurementsJsonToJava() throws JsonParseException, JsonMappingException, IOException { - PPMPPackager packager = new PPMPPackager(); - - MeasurementsWrapper wrapperResult = packager.getMeasurementsBean(MEASUREMENT_TEST_MESSAGE); - - assertNotNull(wrapperResult); - - List measurements = wrapperResult.getMeasurements(); - assertEquals(2, measurements.size()); - assertEquals(23, measurements.get(0).getSeriesMap().getSeries().get("$_time").get(1)); - assertEquals(44.2432, measurements.get(1).getSeriesMap().getSeries().get("pressure").get(2)); - - } - - private MeasurementsWrapper createMeasurementsWrapperWithFullData() { - MeasurementsWrapper wrapper = new MeasurementsWrapper(); - wrapper.setDevice(createDevice()); - wrapper.setPart(createPart()); - wrapper.setMeasurements(createMeasurements()); - return wrapper; - } - - private List createMeasurements() { - List measurements = new LinkedList<>(); - Measurements measurements1 = createMeasurementsExample1(); - Measurements measurements2 = createMeasurementsExample2(); - measurements.add(measurements1); - measurements.add(measurements2); - return measurements; - } - - private Measurements createMeasurementsExample2() { - Measurements measurements2 = new Measurements(); - measurements2.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.123+02:00")); - measurements2.setResult(Measurements.Result.OK); - - LimitsMap limitsMap2 = new LimitsMap(); - limitsMap2.setLimitsValue("force", createErrorLimits(25, 20)); - limitsMap2.setLimitsValue("pressure", createErrorLimits(60, 40.4)); - measurements2.setLimitsMap(limitsMap2); - - SeriesMap seriesMap2 = new SeriesMap(); - seriesMap2.setSeriesValue("force", Arrays.asList(26, 23, 24)); - seriesMap2.setSeriesValue("pressure", Arrays.asList(52.4, 46.32, 44.2432)); - measurements2.setSeriesMap(seriesMap2); - return measurements2; - } - - private Measurements createMeasurementsExample1() { - Measurements measurements1 = new Measurements(); - measurements1.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.123+02:00")); - measurements1.setResult(Measurements.Result.NOK); - measurements1.setCode("0000 EE01"); - - LimitsMap limitsMap1 = new LimitsMap(); - limitsMap1.setLimitsValue("temperature", createFullLimits(4444, 44, 2222, 46)); - measurements1.setLimitsMap(limitsMap1); - - SeriesMap seriesMap1 = new SeriesMap(); - seriesMap1.setSeriesValue("$_time", Arrays.asList(0, 23, 24)); - seriesMap1.setSeriesValue("temperature", Arrays.asList(45.4243, 46.42342, 44.2432)); - measurements1.setSeriesMap(seriesMap1); - return measurements1; - } - - private MetaData createMetaData(String key1, String value1, String key2, String value2) { - MetaData metaData = new MetaData(); - metaData.setMetaDataValue(key1, value1); - metaData.setMetaDataValue(key2, value2); - return metaData; - } - - private Limits createFullLimits(Number upperError, Number lowerError, Number upperWarn, Number lowerWarn) { - Limits limits = createErrorLimits(upperError, lowerError); - limits.setUpperWarn(upperWarn); - limits.setLowerWarn(lowerWarn); - return limits; - } - - private Limits createErrorLimits(Number upper, Number lower) { - Limits limits = new Limits(); - limits.setUpperError(upper); - limits.setLowerError(lower); - return limits; - } - - private Part createPart() { - Part part = new Part(); - part.setPartTypeID("F00VH07328"); - part.setPartID("420003844"); - part.setResult(Measurements.Result.NOK); - part.setCode("HUH289"); - MetaData metaData = createMetaData("chargeID", "845849", "toolID", "32324-432143"); - part.setMetaData(metaData); - return part; - } - - private Device createDevice() { - Device device = new Device(); - device.setDeviceID("a4927dad-58d4-4580-b460-79cefd56775b"); - device.setOperationalStatus("normal"); - MetaData metaData = createMetaData("swVersion", "2.0.3.13", "swBuildID", "41535"); - device.setMetaData(metaData); - return device; - } -} diff --git a/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MessagesTest.java b/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MessagesTest.java deleted file mode 100644 index 70d94a9..0000000 --- a/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/MessagesTest.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2016 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp; - -import static org.junit.Assert.*; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.time.OffsetDateTime; -import java.util.LinkedList; -import java.util.List; - -import org.apache.commons.io.IOUtils; -import org.eclipse.iot.unide.ppmp.commons.Device; -import org.eclipse.iot.unide.ppmp.commons.MetaData; -import org.eclipse.iot.unide.ppmp.messages.Message; -import org.eclipse.iot.unide.ppmp.messages.MessagesWrapper; -import org.json.JSONException; -import org.junit.BeforeClass; -import org.junit.Test; -import org.skyscreamer.jsonassert.JSONAssert; - -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; - - - -public class MessagesTest { - - - private static final String TEST_FILE_NAME = "message.json"; - private static String MEASUREMENT_TEST_MESSAGE; - - @BeforeClass - public static void readFileContent() throws IOException { - ClassLoader classLoader = MeasurementsTest.class.getClassLoader(); - MEASUREMENT_TEST_MESSAGE = IOUtils.toString(classLoader.getResourceAsStream(TEST_FILE_NAME),Charset.defaultCharset()); - } - - - @Test - public void convertMessagesJsonToJava() throws JsonParseException, JsonMappingException, IOException { - PPMPPackager packager = new PPMPPackager(); - MessagesWrapper wrapperResult = packager.getMessagesBean(MEASUREMENT_TEST_MESSAGE); - - assertNotNull(wrapperResult); - - List messages = wrapperResult.getMessages(); - assertEquals(2, messages.size()); - assertEquals("190ABT", messages.get(0).getCode()); - assertEquals("33-02", messages.get(1).getCode()); - } - - @Test - public void convertFullMessagesExampleToJson() throws JsonGenerationException, JsonMappingException, IOException, JSONException { - PPMPPackager packager = new PPMPPackager(); - MessagesWrapper wrapper = createMessagesWrapperWithFullData(); - String result = packager.getMessage(wrapper, true); - - System.out.println(result); - - JSONAssert.assertEquals(MEASUREMENT_TEST_MESSAGE, result, false); - } - - private MessagesWrapper createMessagesWrapperWithFullData() { - MessagesWrapper wrapper = new MessagesWrapper(); - wrapper.setDevice(createDevice()); - wrapper.setMessages(createMessages()); - - return wrapper; - } - - private List createMessages() { - List messages = new LinkedList<>(); - - Message message1 = createFullMessageExample(); - Message message2 = createShortMessageExample(); - - messages.add(message1); - messages.add(message2); - - return messages; - } - - private Message createShortMessageExample() { - Message message = new Message(); - message.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.125+02:00")); - message.setType(Message.MessageType.TECHNICAL_INFO); - message.setSeverity(Message.MessageSeverity.HIGH); - message.setCode("33-02"); - message.setTitle("Disk size limit reached"); - message.setDescription("Disk size has reached limit. Unable to write log files."); - return message; - } - - private Message createFullMessageExample() { - Message message = new Message(); - message.setOrigin("sensor-id-992.2393.22"); - message.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.123+02:00")); - message.setType(Message.MessageType.DEVICE); - message.setSeverity(Message.MessageSeverity.HIGH); - message.setCode("190ABT"); - message.setTitle("control board damaged"); - message.setDescription("Electronic control board or its electrical connections are damaged"); - message.setHint("Check the control board"); - MetaData metaData = new MetaData(); - metaData.setMetaDataValue("firmware", "20130304_22.020"); - message.setMetaData(metaData); - return message; - } - - private Device createDevice() { - Device device = new Device(); - device.setDeviceID("2ca5158b-8350-4592-bff9-755194497d4e"); - device.setOperationalStatus("normal"); - MetaData metaData = new MetaData(); - metaData.setMetaDataValue("swVersion", "2.0.3.13"); - metaData.setMetaDataValue("swBuildID", "41535"); - device.setMetaData(metaData); - return device; - } - -} diff --git a/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/ProcessTest.java b/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/ProcessTest.java deleted file mode 100644 index 902d2e7..0000000 --- a/bindings/ppmp-java-binding/src/test/java/org/eclipse/iot/unide/ppmp/ProcessTest.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.iot.unide.ppmp; - -import static org.junit.Assert.*; - -import java.io.IOException; -import java.time.OffsetDateTime; -import java.util.Arrays; - -import org.apache.commons.io.IOUtils; -import org.eclipse.iot.unide.ppmp.commons.Device; -import org.eclipse.iot.unide.ppmp.commons.MetaData; -import org.eclipse.iot.unide.ppmp.process.Limits; -import org.eclipse.iot.unide.ppmp.process.LimitsMap; -import org.eclipse.iot.unide.ppmp.process.Measurements; -import org.eclipse.iot.unide.ppmp.process.Part; -import org.eclipse.iot.unide.ppmp.process.Part.Type; -import org.eclipse.iot.unide.ppmp.process.Process; -import org.eclipse.iot.unide.ppmp.process.Process.Result; -import org.eclipse.iot.unide.ppmp.process.ProcessWrapper; -import org.eclipse.iot.unide.ppmp.process.Program; -import org.eclipse.iot.unide.ppmp.process.SeriesMap; -import org.eclipse.iot.unide.ppmp.process.ShutOffValues; -import org.eclipse.iot.unide.ppmp.process.ShutOffValuesMap; -import org.eclipse.iot.unide.ppmp.process.SpecialValue; -import org.eclipse.iot.unide.ppmp.process.SpecialValueMap; -import org.json.JSONException; -import org.junit.BeforeClass; -import org.junit.Test; -import org.skyscreamer.jsonassert.JSONAssert; - -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; - -/** - * Testclass for the process message java binding - * @author FIH1IMB - * - */ -public class ProcessTest { - - private static final String TEST_FILE_NAME = "process.json"; - private static String PROCESS_TEST_MESSAGE; - - @BeforeClass - public static void readFileContent() throws IOException { - ClassLoader classLoader = ProcessTest.class.getClassLoader(); - PROCESS_TEST_MESSAGE = IOUtils.toString(classLoader.getResourceAsStream(TEST_FILE_NAME),"UTF-8"); - } - - - @Test - public void convertFullMessagesExampleToJson() throws JsonGenerationException, JsonMappingException, IOException, JSONException { - PPMPPackager packager = new PPMPPackager(); - ProcessWrapper wrapper = createProcessWrapperWithFullData(); - String result = packager.getMessage(wrapper, true); - - System.out.println(result); - - JSONAssert.assertEquals(PROCESS_TEST_MESSAGE, result, false); - } - - @Test - public void convertMeasurementsJsonToJava() throws JsonParseException, JsonMappingException, IOException { - PPMPPackager packager = new PPMPPackager(); - - ProcessWrapper wrapperResult = packager.getProcessesBean(PROCESS_TEST_MESSAGE); - - assertNotNull(wrapperResult); - - Process process = wrapperResult.getProcess(); - assertEquals("b4927dad-58d4-4580-b460-79cefd56775b", process.getExternalProcessId()); - - } - - /** - * Creates the ProcessWrapper object with a setup of all parameters - * @return - */ - private ProcessWrapper createProcessWrapperWithFullData() { - ProcessWrapper wrapper = new ProcessWrapper(); - wrapper.setDevice(createDevice()); - wrapper.setProcess(createProcessExample()); - wrapper.setPart(createPart()); - wrapper.setMeasurements(Arrays.asList(createMeasurementsExample1(),createMeasurementsExample2())); - - return wrapper; - } - - /** - * Creates the process object - * @return - */ - private Process createProcessExample() { - Process process = new Process(); - process.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.123+02:00")); - process.setExternalProcessId("b4927dad-58d4-4580-b460-79cefd56775b"); - process.setResult(Result.NOK); - process.setShutoffPhase("phase 1"); - - Program program = new Program(); - program.setName("Programm 1"); - program.setId("1"); - program.setLastChangedDate("2002-05-30T09:30:10.123+02:00"); - - MetaData metaData = new MetaData(); - metaData.setMetaDataValue("name", "Getriebedeckel verschrauben"); - - process.setMetaData(metaData); - process.setShutOffValuesMap(createShutOffValues()); - process.setProgram(program); - - return process; - } - - /** - * Creates an example of a device object - * @return - */ - private Device createDevice() { - Device device = new Device(); - device.setDeviceID("a4927dad-58d4-4580-b460-79cefd56775b"); - device.setOperationalStatus("normal"); - MetaData metaData = new MetaData(); - metaData.setMetaDataValue("swVersion", "2.0.3.13"); - metaData.setMetaDataValue("swBuildId", "41535"); - device.setMetaData(metaData); - return device; - } - - /** - * Creates an example of a part object - * @return - */ - private Part createPart() { - Part part = new Part(); - part.setType(Type.SINGLE); - part.setCode("HUH289"); - part.setPartID("420003844"); - part.setPartTypeID("F00VH07328"); - part.setResult(org.eclipse.iot.unide.ppmp.process.Part.Result.NOK); - MetaData metaData = new MetaData(); - metaData.setMetaDataValue("toolId", "32324-432143"); - part.setMetaData(metaData); - return part; - } - - /** - * Creates an example of a ShutOffValuesMap - * @return - */ - private ShutOffValuesMap createShutOffValues() { - ShutOffValuesMap shutOffValuesMap = new ShutOffValuesMap(); - - ShutOffValues shutOffValuesForce = new ShutOffValues(); - shutOffValuesForce.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:11.123+02:00")); - shutOffValuesForce.setValue(24); - shutOffValuesForce.setLowerError(22); - shutOffValuesForce.setUpperError(26); - - ShutOffValues shutOffValuesPressure = new ShutOffValues(); - shutOffValuesPressure.setValue(50); - shutOffValuesPressure.setLowerError(48); - shutOffValuesPressure.setUpperError(52); - - shutOffValuesMap.setShutOffValue("force", shutOffValuesForce); - shutOffValuesMap.setShutOffValue("pressure", shutOffValuesPressure); - - return shutOffValuesMap; - } - - /** - * Creates an example for a measurement object - * @return - */ - private Measurements createMeasurementsExample1() { - Measurements measurements = new Measurements(); - - measurements.setPhase("phasen name 2"); - measurements.setName("500 Grad links drehen"); - measurements.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.123+02:00")); - measurements.setResult(Measurements.Result.NOK); - measurements.setCode("0000 EE01"); - - Limits limitsTemperature = new Limits(); - limitsTemperature.setUpperErrorSingleValue(4444); - limitsTemperature.setLowerErrorSingleValue(44); - limitsTemperature.setUpperWarnSingleValue(2222); - limitsTemperature.setLowerWarnSingleValue(46); - limitsTemperature.setTargetSingleValue(35); - LimitsMap limitsMapTemperature = new LimitsMap(); - limitsMapTemperature.setLimitsValue("temperature", limitsTemperature); - measurements.setLimitsMap(limitsMapTemperature); - - SpecialValue specialValuePressure = new SpecialValue(); - specialValuePressure.setTime(24); - specialValuePressure.setValue(44.2432); - SpecialValue specialValueForce = new SpecialValue(); - specialValueForce.setTime(24); - specialValueForce.setValue(24); - SpecialValueMap specialValueMap = new SpecialValueMap(); - specialValueMap.setSpecialValue("pressure", specialValuePressure); - specialValueMap.setSpecialValue("force", specialValueForce); - measurements.setSpecialValues(specialValueMap); - - - SeriesMap seriesMap1 = new SeriesMap(); - seriesMap1.setSeriesValue("time", Arrays.asList(0, 23, 24)); - seriesMap1.setSeriesValue("temperature", Arrays.asList(45.4243, 46.42342, 44.2432)); - seriesMap1.setSeriesValue("force", Arrays.asList(26, 23, 24)); - seriesMap1.setSeriesValue("pressure", Arrays.asList(52.4, 46.32, 44.2432)); - measurements.setSeriesMap(seriesMap1); - return measurements; - } - - /** - * Creates an example for a measurement object - * @return - */ - private Measurements createMeasurementsExample2() { - Measurements measurements = new Measurements(); - - measurements.setPhase("phasen name"); - measurements.setTimestamp(OffsetDateTime.parse("2002-05-30T09:30:10.123+02:00")); - measurements.setResult(Measurements.Result.OK); - - Limits limitsForce = new Limits(); - limitsForce.setUpperError(Arrays.asList(27, 24, 25)); - limitsForce.setLowerError(Arrays.asList(25, 22, 23)); - Limits limitsPressure = new Limits(); - limitsPressure.setUpperError(Arrays.asList(54, 48, 46)); - limitsPressure.setLowerError(Arrays.asList(50, 44, 42)); - LimitsMap limitsMap = new LimitsMap(); - limitsMap.setLimitsValue("force", limitsForce); - limitsMap.setLimitsValue("pressure", limitsPressure); - measurements.setLimitsMap(limitsMap); - - SpecialValue specialValuePressure = new SpecialValue(); - specialValuePressure.setValue(24); - SpecialValue specialValueForce = new SpecialValue(); - specialValueForce.setValue(50); - SpecialValueMap specialValueMap = new SpecialValueMap(); - specialValueMap.setSpecialValue("pressure", specialValuePressure); - specialValueMap.setSpecialValue("force", specialValueForce); - measurements.setSpecialValues(specialValueMap); - - SeriesMap seriesMap = new SeriesMap(); - seriesMap.setSeriesValue("time", Arrays.asList(30, 36, 42)); - seriesMap.setSeriesValue("temperature", Arrays.asList(45.4243, 46.42342, 44.2432)); - seriesMap.setSeriesValue("force", Arrays.asList(26, 23, 24)); - seriesMap.setSeriesValue("pressure", Arrays.asList(52.4, 46.32, 44.2432)); - measurements.setSeriesMap(seriesMap); - - return measurements; - } - -} diff --git a/bindings/ppmp-java-binding/src/test/resources/measurement.json b/bindings/ppmp-java-binding/src/test/resources/measurement.json deleted file mode 100644 index e848cbf..0000000 --- a/bindings/ppmp-java-binding/src/test/resources/measurement.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "content-spec": "urn:spec://eclipse.org/unide/measurement-message#v2", - "device": - { - "deviceID": "a4927dad-58d4-4580-b460-79cefd56775b", - "operationalStatus": "normal", - "metaData": - { - "swVersion": "2.0.3.13", - "swBuildID": "41535" - } - }, - - "part": - { - "partTypeID": "F00VH07328", - "partID": "420003844", - "result": "NOK", - "code": "HUH289", - "metaData": - { - "chargeID": "845849", - "toolID": "32324-432143" - } - }, - - "measurements": - [ - { - "ts": "2002-05-30T09:30:10.123+02:00", - "result": "NOK", - "code": "0000 EE01", - "limits": - { - "temperature": - { - "upperError": 4444, - "lowerError": 44, - "upperWarn": 2222, - "lowerWarn": 46 - } - }, - - "series": - { - "$_time": - [ - 0, - 23, - 24 - ], - - "temperature": - [ - 45.4243, - 46.42342, - 44.2432 - ] - } - }, - - { - "ts": "2002-05-30T09:30:10.123+02:00", - "result": "OK", - "limits": - { - "force": - { - "upperError": 25, - "lowerError": 20 - }, - - "pressure": - { - "upperError": 60, - "lowerError": 40.4 - } - }, - - "series": - { - "force": - [ - 26, - 23, - 24 - ], - - "pressure": - [ - 52.4, - 46.32, - 44.2432 - ] - } - } - ] -} \ No newline at end of file diff --git a/bindings/ppmp-java-binding/src/test/resources/message.json b/bindings/ppmp-java-binding/src/test/resources/message.json deleted file mode 100644 index d105abf..0000000 --- a/bindings/ppmp-java-binding/src/test/resources/message.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "content-spec": "urn:spec://eclipse.org/unide/machine-message#v2", - "device": - { - "deviceID": "2ca5158b-8350-4592-bff9-755194497d4e", - "operationalStatus": "normal", - "metaData": - { - "swVersion": "2.0.3.13", - "swBuildID": "41535" - } - }, - - "messages": - [ - { - "origin": "sensor-id-992.2393.22", - "ts": "2002-05-30T09:30:10.123+02:00", - "type": "DEVICE", - "severity": "HIGH", - "code": "190ABT", - "title": "control board damaged", - "description": "Electronic control board or its electrical connections are damaged", - "hint": "Check the control board", - "metaData": - { - "firmware": "20130304_22.020" - } - }, - - { - "ts": "2002-05-30T09:30:10.125+02:00", - "type": "TECHNICAL_INFO", - "severity": "HIGH", - "code": "33-02", - "title": "Disk size limit reached", - "description": "Disk size has reached limit. Unable to write log files." - } - ] -} \ No newline at end of file diff --git a/bindings/ppmp-java-binding/src/test/resources/process.json b/bindings/ppmp-java-binding/src/test/resources/process.json deleted file mode 100644 index e308a7d..0000000 --- a/bindings/ppmp-java-binding/src/test/resources/process.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "content-spec" : "urn:spec://eclipse.org/unide/process-message#v2", - "device" : { - "deviceID" : "a4927dad-58d4-4580-b460-79cefd56775b", - "operationalStatus" : "normal", - "metaData" : { - "swVersion" : "2.0.3.13", - "swBuildId" : "41535" - } - }, - "part" : { - "type" : "SINGLE", - "partTypeID" : "F00VH07328", - "partID" : "420003844", - "result" : "NOK", - "code" : "HUH289", - "metaData" : { - "toolId" : "32324-432143" - } - }, - "process" : { - "externalProcessId" : "b4927dad-58d4-4580-b460-79cefd56775b", - "ts" : "2002-05-30T09:30:10.123+02:00", - "result" : "NOK", - "shutoffPhase" : "phase 1", - "program" : { - "id" : "1", - "name" : "Programm 1", - "lastChangedDate" : "2002-05-30T09:30:10.123+02:00" - }, - "shutoffValues" : { - "force" : { - "ts" : "2002-05-30T09:30:11.123+02:00", - "value" : 24, - "upperError" : 26, - "lowerError" : 22 - }, - "pressure" : { - "value" : 50, - "upperError" : 52, - "lowerError" : 48 - } - }, - "metaData" : { - "name" : "Getriebedeckel verschrauben" - } - }, - "measurements" : [ - { - "ts" : "2002-05-30T09:30:10.123+02:00", - "phase" : "phasen name 2", - "name" : "500 Grad links drehen", - "result" : "NOK", - "code" : "0000 EE01", - "limits" : { - "temperature" : { - "upperError" : 4444, - "lowerError" : 44, - "upperWarn" : 2222, - "lowerWarn" : 46, - "target" : 35 - } - }, - "specialValues" : { - "pressure" : { - "time" : 24, - "value" : 44.2432 - }, - "force" : { - "time" : 24, - "value" : 24 - } - }, - "series" : { - "time" : [0, 23, 24], - "force" : [26, 23, 24], - "pressure" : [52.4, 46.32, 44.2432], - "temperature" : [45.4243, 46.42342, 44.2432] - } - }, - { - "ts" : "2002-05-30T09:30:10.123+02:00", - "phase" : "phasen name", - "result" : "OK", - "limits" : { - "force" : { - "upperError" : [27, 24, 25], - "lowerError" : [25, 22, 23] - }, - "pressure" : { - "upperError" : [54, 48, 46], - "lowerError" : [50, 44, 42] - } - }, - "specialValues" : { - "pressure" : { - "value" : 24 - }, - "force" : { - "value": 50 - } - }, - "series" : { - "time" : [30, 36, 42], - "force" : [26, 23, 24], - "pressure" : [52.4, 46.32, 44.2432], - "temperature" : [45.4243, 46.42342, 44.2432] - } - } - ] -} \ No newline at end of file diff --git a/website/.editorconfig b/website/.editorconfig deleted file mode 100644 index 9142239..0000000 --- a/website/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_size = 2 -indent_style = space -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false From 457e588a50b4bb6e50ef3edc1ed8fcfe49e42168 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 17 Jan 2018 14:07:31 +0100 Subject: [PATCH 11/66] fix(images): added logo / uml svgs Signed-off-by: Axel Meinhardt --- .gitignore | 12 +- website/static/images/collaborators_v2.svg | 53 +++++++ website/static/images/componentOverview.svg | 53 +++++++ website/static/images/measurementPayload.svg | 79 +++++++++++ website/static/images/messagePayload.svg | 64 +++++++++ website/static/images/processPayload.svg | 137 +++++++++++++++++++ website/static/logo.svg | 67 +++++++++ 7 files changed, 457 insertions(+), 8 deletions(-) create mode 100644 website/static/images/collaborators_v2.svg create mode 100644 website/static/images/componentOverview.svg create mode 100644 website/static/images/measurementPayload.svg create mode 100644 website/static/images/messagePayload.svg create mode 100644 website/static/images/processPayload.svg create mode 100644 website/static/logo.svg diff --git a/.gitignore b/.gitignore index 3cb3f30..84777e3 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ ## File-based project format: *.iws -/bindings/ppmp-java-binding/ppmp-java-binding.iml ## Plugin-specific files: # IntelliJ @@ -58,14 +57,11 @@ servers/rest/.settings/org.eclipse.wst.jsdt.ui.superType.container servers/rest/.settings/org.eclipse.jdt.core.prefs servers/rest/.settings/org.eclipse.m2e.core.prefs servers/rest/.settings/org.eclipse.wst.jsdt.ui.superType.name -bindings/ppmp-java-binding/.settings/ +servers/rest/target/ +servers/rest/bin/ +servers/rest/pom_tina.xml + *.classpath *.project -servers/rest/target/ .settings/ *.log -WebContent/META-INF/MANIFEST.MF -*.gliffy -*.svg -servers/rest/bin/ -servers/rest/pom_tina.xml diff --git a/website/static/images/collaborators_v2.svg b/website/static/images/collaborators_v2.svg new file mode 100644 index 0000000..b26cf31 --- /dev/null +++ b/website/static/images/collaborators_v2.svg @@ -0,0 +1,53 @@ +PPMP Producer / MachinePPMP ConsumerInformation / AlarmsSensor valuesEnd-to-end process dataMachine MessagesMeasurementsProcesss/process/message/measurement \ No newline at end of file diff --git a/website/static/images/componentOverview.svg b/website/static/images/componentOverview.svg new file mode 100644 index 0000000..b26cf31 --- /dev/null +++ b/website/static/images/componentOverview.svg @@ -0,0 +1,53 @@ +PPMP Producer / MachinePPMP ConsumerInformation / AlarmsSensor valuesEnd-to-end process dataMachine MessagesMeasurementsProcesss/process/message/measurement \ No newline at end of file diff --git a/website/static/images/measurementPayload.svg b/website/static/images/measurementPayload.svg new file mode 100644 index 0000000..d5c8077 --- /dev/null +++ b/website/static/images/measurementPayload.svg @@ -0,0 +1,79 @@ +MeasurementPayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : Map<String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : ResultMeasurementcode[0..1] : Stringlimits[0..1] : Map<String, Limits>result[0..1] : Resultts[1] : DateLimitslowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : Float,upperWarn[0..1] : FloatSeries$_time[1] : List<Integer><values>[1..*] : List<Float>ResultOKNOKUNKNOWNdevice11part10..1measurements11..*series1110..1 \ No newline at end of file diff --git a/website/static/images/messagePayload.svg b/website/static/images/messagePayload.svg new file mode 100644 index 0000000..55e468f --- /dev/null +++ b/website/static/images/messagePayload.svg @@ -0,0 +1,64 @@ +MessagePayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringMessagecode[1] : Stringdescriptionp[0..1] : Stringhint[0..1] : StringmetaData[0..1] : Map<String, String>origin[0..1] : Stringseverity[0..1] : Severitytitle[0..1] : Stringts[1] : Datetype[0..1] : TypeTypeDEVICETECHNICAL_INFOSeverityHIGHMEDIUMLOWUNKNOWNdevice11messages10..* \ No newline at end of file diff --git a/website/static/images/processPayload.svg b/website/static/images/processPayload.svg new file mode 100644 index 0000000..553e873 --- /dev/null +++ b/website/static/images/processPayload.svg @@ -0,0 +1,137 @@ +ProcessPayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : Map<String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : Resulttype[0..1] : PartTypeProcessexternalProcessId[0..1] : StringmetaData[0..1] : Map<String, String>result[0..1] : ResultshutoffPhase[0..1] : StringshutoffValue[0..*] : Map<String, ShutoffValue>ts[1] : DateMeasurementcode[0..1] : Stringlimits[0..1] : Map<String, Limits>name[0..1] : Stringphase[0..1] ; Stringresult[0..1] : Resultts[1] : DateProgramid[1] : StringlastChangeDate[0..1] : Stringname[0..1] : StringShutoffValuelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : Floatts[0..1] : DateupperError[0..1] : FloatupperWarn[0..1] : Floatvalue[1] : FloatSeries$_time[0..1] : List<Integer><values>[0..*] : List<Float>LimitsLimitsSinglelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : FloatupperWarn[0..1] : FloatLimitsListlowerError[0..1] : List<Float>lowerWarn[0..1] : List<Float>target[0..1] : List<Float>upperError[0..1] : List<Float>upperWarn[0..1] : List<Float>SpecialValue$_time[0..1] : Integername[0..1] : Stringvalue[1] : FloatPartTypeSINGLEBATCHResultOKNOKUNKNOWNdevice11part10..1process11measurements11..*program10..110..*series1110..1specialValues10..1 \ No newline at end of file diff --git a/website/static/logo.svg b/website/static/logo.svg new file mode 100644 index 0000000..713a62c --- /dev/null +++ b/website/static/logo.svg @@ -0,0 +1,67 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + From 3deeadedc5d03d3cac8d8a855c137b097c2c6efc Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 17 Jan 2018 14:33:01 +0100 Subject: [PATCH 12/66] feat(binsa): added html5 client Signed-off-by: Axel Meinhardt --- clients/binsa/.babelrc | 15 + clients/binsa/.eslintrc | 100 + clients/binsa/.gitignore | 8 + clients/binsa/README.md | 164 + clients/binsa/conf/build-nw.js | 33 + clients/binsa/conf/fixes/argsToArray.js | 5 + clients/binsa/conf/webpack-license-plugin.js | 139 + clients/binsa/conf/webpack.dev.js | 311 + clients/binsa/conf/webpack.prod.js | 312 + clients/binsa/cypress.json | 8 + clients/binsa/index.html | 90 + clients/binsa/package-lock.json | 15964 ++++++++++++++++ clients/binsa/package.json | 107 + clients/binsa/sandbox.html | 9 + clients/binsa/src/app.vue | 205 + clients/binsa/src/background.js | 19 + .../binsa/src/components/collapsibleCard.vue | 116 + clients/binsa/src/components/login.vue | 94 + clients/binsa/src/components/messageForm.vue | 125 + clients/binsa/src/components/navbar.vue | 131 + clients/binsa/src/components/qrField.vue | 178 + clients/binsa/src/components/selectLang.vue | 59 + clients/binsa/src/components/url.vue | 114 + clients/binsa/src/i18n/de.json | 130 + clients/binsa/src/i18n/en.json | 130 + clients/binsa/src/i18n/es.json | 135 + clients/binsa/src/i18n/index.js | 67 + .../src/img/icons/android-chrome-144x144.png | Bin 0 -> 10798 bytes .../src/img/icons/android-chrome-192x192.png | Bin 0 -> 14560 bytes .../src/img/icons/android-chrome-256x256.png | Bin 0 -> 18807 bytes .../src/img/icons/android-chrome-36x36.png | Bin 0 -> 2484 bytes .../src/img/icons/android-chrome-384x384.png | Bin 0 -> 31441 bytes .../src/img/icons/android-chrome-48x48.png | Bin 0 -> 3361 bytes .../src/img/icons/android-chrome-512x512.png | Bin 0 -> 38567 bytes .../src/img/icons/android-chrome-72x72.png | Bin 0 -> 5183 bytes .../src/img/icons/android-chrome-96x96.png | Bin 0 -> 7074 bytes .../img/icons/apple-touch-icon-114x114.png | Bin 0 -> 7680 bytes .../img/icons/apple-touch-icon-120x120.png | Bin 0 -> 8067 bytes .../img/icons/apple-touch-icon-144x144.png | Bin 0 -> 9848 bytes .../img/icons/apple-touch-icon-152x152.png | Bin 0 -> 10235 bytes .../img/icons/apple-touch-icon-167x167.png | Bin 0 -> 11598 bytes .../img/icons/apple-touch-icon-180x180.png | Bin 0 -> 12646 bytes .../src/img/icons/apple-touch-icon-57x57.png | Bin 0 -> 3747 bytes .../src/img/icons/apple-touch-icon-60x60.png | Bin 0 -> 3891 bytes .../src/img/icons/apple-touch-icon-72x72.png | Bin 0 -> 4770 bytes .../src/img/icons/apple-touch-icon-76x76.png | Bin 0 -> 5058 bytes .../icons/apple-touch-icon-precomposed.png | Bin 0 -> 12646 bytes .../binsa/src/img/icons/apple-touch-icon.png | Bin 0 -> 12646 bytes clients/binsa/src/img/icons/favicon-16x16.png | Bin 0 -> 968 bytes .../binsa/src/img/icons/favicon-230x230.png | Bin 0 -> 17929 bytes clients/binsa/src/img/icons/favicon-32x32.png | Bin 0 -> 2164 bytes clients/binsa/src/img/icons/favicon-96x96.png | Bin 0 -> 7074 bytes clients/binsa/src/img/icons/favicon.ico | Bin 0 -> 33310 bytes .../src/img/icons/firefox_app_128x128.png | Bin 0 -> 10747 bytes .../src/img/icons/firefox_app_512x512.png | Bin 0 -> 47250 bytes .../binsa/src/img/icons/firefox_app_60x60.png | Bin 0 -> 4738 bytes .../binsa/src/img/icons/mstile-144x144.png | Bin 0 -> 10798 bytes .../binsa/src/img/icons/mstile-150x150.png | Bin 0 -> 21354 bytes .../binsa/src/img/icons/mstile-310x150.png | Bin 0 -> 22342 bytes .../binsa/src/img/icons/mstile-310x310.png | Bin 0 -> 49544 bytes clients/binsa/src/img/icons/mstile-70x70.png | Bin 0 -> 9435 bytes clients/binsa/src/img/icons/unide.png | Bin 0 -> 61613 bytes clients/binsa/src/img/icons/unide.svg | 169 + clients/binsa/src/img/logo.svg | 67 + clients/binsa/src/index.js | 38 + clients/binsa/src/manifests/browserconfig.xml | 12 + clients/binsa/src/manifests/manifest.json | 34 + clients/binsa/src/manifests/manifest.webapp | 23 + clients/binsa/src/manifests/web-manifest.json | 61 + clients/binsa/src/pages/about.vue | 438 + clients/binsa/src/pages/ciHelp.vue | 43 + .../binsa/src/pages/configuration/index.vue | 197 + clients/binsa/src/pages/configuration/ppm.vue | 127 + .../binsa/src/pages/configuration/ppmp.vue | 268 + .../src/pages/configuration/preferences.vue | 74 + clients/binsa/src/pages/home.vue | 38 + clients/binsa/src/pages/notFound.vue | 31 + clients/binsa/src/pages/ppm/index.vue | 220 + clients/binsa/src/pages/ppm/measurements.vue | 132 + clients/binsa/src/pages/ppmp/index.vue | 182 + clients/binsa/src/pages/ppmp/measurements.vue | 369 + clients/binsa/src/pages/ppmp/messages.vue | 168 + clients/binsa/src/pages/ppmp/processes.vue | 419 + clients/binsa/src/pages/ppmp/sendingDaemon.js | 220 + clients/binsa/src/router.js | 66 + clients/binsa/src/sandbox.js | 29 + clients/binsa/src/sensorBus.js | 257 + .../binsa/src/store/configuration/index.js | 264 + clients/binsa/src/store/configuration/ppmp.js | 78 + clients/binsa/src/store/index.js | 14 + clients/binsa/src/styles/variables.scss | 96 + clients/binsa/src/sw.js | 37 + clients/binsa/tests/integration/main_spec.js | 144 + clients/binsa/tests/support/commands.js | 25 + clients/binsa/tests/support/index.js | 20 + images/collaborators.png | Bin 24022 -> 0 bytes images/logo.png | Bin 6737 -> 0 bytes images/measurementPayload.png | Bin 126624 -> 0 bytes images/messagePayload.png | Bin 44289 -> 0 bytes 99 files changed, 23128 insertions(+) create mode 100644 clients/binsa/.babelrc create mode 100644 clients/binsa/.eslintrc create mode 100644 clients/binsa/.gitignore create mode 100644 clients/binsa/README.md create mode 100644 clients/binsa/conf/build-nw.js create mode 100644 clients/binsa/conf/fixes/argsToArray.js create mode 100644 clients/binsa/conf/webpack-license-plugin.js create mode 100644 clients/binsa/conf/webpack.dev.js create mode 100644 clients/binsa/conf/webpack.prod.js create mode 100644 clients/binsa/cypress.json create mode 100644 clients/binsa/index.html create mode 100644 clients/binsa/package-lock.json create mode 100644 clients/binsa/package.json create mode 100644 clients/binsa/sandbox.html create mode 100644 clients/binsa/src/app.vue create mode 100644 clients/binsa/src/background.js create mode 100644 clients/binsa/src/components/collapsibleCard.vue create mode 100644 clients/binsa/src/components/login.vue create mode 100644 clients/binsa/src/components/messageForm.vue create mode 100644 clients/binsa/src/components/navbar.vue create mode 100644 clients/binsa/src/components/qrField.vue create mode 100644 clients/binsa/src/components/selectLang.vue create mode 100644 clients/binsa/src/components/url.vue create mode 100644 clients/binsa/src/i18n/de.json create mode 100644 clients/binsa/src/i18n/en.json create mode 100644 clients/binsa/src/i18n/es.json create mode 100644 clients/binsa/src/i18n/index.js create mode 100644 clients/binsa/src/img/icons/android-chrome-144x144.png create mode 100644 clients/binsa/src/img/icons/android-chrome-192x192.png create mode 100644 clients/binsa/src/img/icons/android-chrome-256x256.png create mode 100644 clients/binsa/src/img/icons/android-chrome-36x36.png create mode 100644 clients/binsa/src/img/icons/android-chrome-384x384.png create mode 100644 clients/binsa/src/img/icons/android-chrome-48x48.png create mode 100644 clients/binsa/src/img/icons/android-chrome-512x512.png create mode 100644 clients/binsa/src/img/icons/android-chrome-72x72.png create mode 100644 clients/binsa/src/img/icons/android-chrome-96x96.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-114x114.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-120x120.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-144x144.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-152x152.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-167x167.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-180x180.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-57x57.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-60x60.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-72x72.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-76x76.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon-precomposed.png create mode 100644 clients/binsa/src/img/icons/apple-touch-icon.png create mode 100644 clients/binsa/src/img/icons/favicon-16x16.png create mode 100644 clients/binsa/src/img/icons/favicon-230x230.png create mode 100644 clients/binsa/src/img/icons/favicon-32x32.png create mode 100644 clients/binsa/src/img/icons/favicon-96x96.png create mode 100644 clients/binsa/src/img/icons/favicon.ico create mode 100644 clients/binsa/src/img/icons/firefox_app_128x128.png create mode 100644 clients/binsa/src/img/icons/firefox_app_512x512.png create mode 100644 clients/binsa/src/img/icons/firefox_app_60x60.png create mode 100644 clients/binsa/src/img/icons/mstile-144x144.png create mode 100644 clients/binsa/src/img/icons/mstile-150x150.png create mode 100644 clients/binsa/src/img/icons/mstile-310x150.png create mode 100644 clients/binsa/src/img/icons/mstile-310x310.png create mode 100644 clients/binsa/src/img/icons/mstile-70x70.png create mode 100644 clients/binsa/src/img/icons/unide.png create mode 100644 clients/binsa/src/img/icons/unide.svg create mode 100644 clients/binsa/src/img/logo.svg create mode 100644 clients/binsa/src/index.js create mode 100644 clients/binsa/src/manifests/browserconfig.xml create mode 100644 clients/binsa/src/manifests/manifest.json create mode 100644 clients/binsa/src/manifests/manifest.webapp create mode 100644 clients/binsa/src/manifests/web-manifest.json create mode 100644 clients/binsa/src/pages/about.vue create mode 100644 clients/binsa/src/pages/ciHelp.vue create mode 100644 clients/binsa/src/pages/configuration/index.vue create mode 100644 clients/binsa/src/pages/configuration/ppm.vue create mode 100644 clients/binsa/src/pages/configuration/ppmp.vue create mode 100644 clients/binsa/src/pages/configuration/preferences.vue create mode 100644 clients/binsa/src/pages/home.vue create mode 100644 clients/binsa/src/pages/notFound.vue create mode 100644 clients/binsa/src/pages/ppm/index.vue create mode 100644 clients/binsa/src/pages/ppm/measurements.vue create mode 100644 clients/binsa/src/pages/ppmp/index.vue create mode 100644 clients/binsa/src/pages/ppmp/measurements.vue create mode 100644 clients/binsa/src/pages/ppmp/messages.vue create mode 100644 clients/binsa/src/pages/ppmp/processes.vue create mode 100644 clients/binsa/src/pages/ppmp/sendingDaemon.js create mode 100644 clients/binsa/src/router.js create mode 100644 clients/binsa/src/sandbox.js create mode 100644 clients/binsa/src/sensorBus.js create mode 100644 clients/binsa/src/store/configuration/index.js create mode 100644 clients/binsa/src/store/configuration/ppmp.js create mode 100644 clients/binsa/src/store/index.js create mode 100644 clients/binsa/src/styles/variables.scss create mode 100644 clients/binsa/src/sw.js create mode 100644 clients/binsa/tests/integration/main_spec.js create mode 100644 clients/binsa/tests/support/commands.js create mode 100644 clients/binsa/tests/support/index.js delete mode 100644 images/collaborators.png delete mode 100644 images/logo.png delete mode 100644 images/measurementPayload.png delete mode 100644 images/messagePayload.png diff --git a/clients/binsa/.babelrc b/clients/binsa/.babelrc new file mode 100644 index 0000000..f6fb66a --- /dev/null +++ b/clients/binsa/.babelrc @@ -0,0 +1,15 @@ +{ + "presets": [["env", { + "targets": { + "browsers": [ + "> 1%", + "not ie < 11" + ] + } + }]], + "plugins": [ + ["transform-runtime"], + "lodash", + "syntax-dynamic-import" + ] +} diff --git a/clients/binsa/.eslintrc b/clients/binsa/.eslintrc new file mode 100644 index 0000000..9eadf9d --- /dev/null +++ b/clients/binsa/.eslintrc @@ -0,0 +1,100 @@ +{ + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 6 + }, + "plugins": [ + "standard", "promise", "html", "babel" + ], + "extends": ["standard", "vue"], + "env": { + "browser": true, + "jquery": false + }, + "globals": { + "chrome": true, + "browser": true, + "nw": true + }, + "rules": { + "key-spacing": ["error", { + "align": { + "beforeColon": false, + "afterColon": true, + "on": "value" + }, + "multiLine": { + "beforeColon": false, + "afterColon": true + } + }], + "brace-style": ["warn", "1tbs", { + "allowSingleLine": false + }], + "camelcase": ["error", { + "properties": "always" + }], + "comma-style": ["warn", "last"], + "consistent-return": ["off"], + "default-case": ["error"], + "indent": ["error", 2, { + "SwitchCase": 1, + "MemberExpression": 1, + "VariableDeclarator": { + "var": 2, + "let": 2, + "const": 3 + }, + "FunctionDeclaration": { + "body": 1, + "parameters": "first" + }, + "FunctionExpression": { + "body": 1, + "parameters": "first" + }, + "CallExpression": { + "arguments": "first" + }, + "ArrayExpression": "first", + "ObjectExpression": 1 + }], + "keyword-spacing": ["error", { + "before": true, + "after": true, + "overrides": { + "if": { + "after": false + }, + "for": { + "after": false + }, + "while": { + "after": false + }, + "catch": { + "after": false + } + } + }], + "no-multi-spaces": "off", + "no-shadow": ["warn"], + "no-unused-vars": ["warn"], + "no-unused-expressions": "off", + "no-use-before-define": ["error", { + "functions": true, + "classes": true, + "variables": true + }], + "one-var": ["error", "always"], + "one-var-declaration-per-line": ["error", "always"], + "quote-props": ["warn", "as-needed"], + "semi": ["error", "always"], + "space-before-function-paren": ["error", "never"], + "vars-on-top": "error", + + "promise/param-names": "warn", + "promise/always-return": "warn", + "promise/catch-or-return": "warn" + } +} diff --git a/clients/binsa/.gitignore b/clients/binsa/.gitignore new file mode 100644 index 0000000..aa1773f --- /dev/null +++ b/clients/binsa/.gitignore @@ -0,0 +1,8 @@ +node_modules +dist* +npm-debug.log* +*.vis +tests/integration/eclipsecq_spec.js +tests/videos +tests/screenshots +conf/cache diff --git a/clients/binsa/README.md b/clients/binsa/README.md new file mode 100644 index 0000000..4bc8c71 --- /dev/null +++ b/clients/binsa/README.md @@ -0,0 +1,164 @@ +## Compiling +Install dependencies: +``` +npm install +``` +See available npm options: +``` +npm run +``` + +| npm run...| description | +|-----------|-----------------------------------------------------------| +| build | run production build and start http-server for testing | +| dist | run production build | +| dev | run development server with hot module replacement | +| watch | run production build and watch files for changes | +| analyse | run development build and display package stats diagram | +| start | use [nw.js](https://nwjs.io/) to display the build | +| test | run tests | +| cypress | open cypress IDE for running tests | + + +In order to build binsa to a different prefix (e.g. "/binsa"), set environment variable PREFIX: +``` +set PREFIX=/binsa/ +npm run dist +``` + +## Compiling for specific browser +Current compilation targets include: +* Chrome for Android 61+ +* Chrome 60+ +* UC Browser for Android 11.4+ +* iOS Safari 10.3+ +* Firefox 56+ +* Samsung Internet 4+ +* Opera Mini +* IE 11 +* Edge 15+ +* Safari 11+ + +The targeted browser can be adjusted .babelrc (presets/targets/browsers) with [browserlist|https://github.com/ai/browserslist] queries. + +## Set serverside CORS headers + +Browser usually do not allow sending data to other domains from which this app is served. In order to use this app, there are several deployment scenarios possible: + +1. allow cors, either by your backend or by configuring a reverse-proxy (nginx, apache mod_proxy) +2. deploy it on the server that should receive the measurements (same-origin) +3. deploy it as a google chrome app (as long as chrome supports apps) +4. deploy it with [nw.js](https://nwjs.io/) to avoid cors checks + +For 1.: +add to your nginx location for the /rest endpoint: +``` +if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; + add_header 'Access-Control-Max-Age' 604800; + add_header 'Content-Type' 'text/plain charset=UTF-8'; + add_header 'Content-Length' 0; + return 204; +} +if ($request_method = 'POST') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; + add_header 'Access-Control-Max-Age' 604800; +} +``` + +add to your apache mod_proxy LocationMatch for the /rest endpoint after adding rewrite and headers module: +``` +Header always set Access-Control-Allow-Origin "*" +Header always set Access-Control-Allow-Credentials "true" +Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS" +Header always set Access-Control-Max-Age "604800" +Header always set Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type" + + +RewriteEngine On +RewriteCond %{REQUEST_METHOD} OPTIONS +RewriteRule ^(.*)$ $1 [R=200,L] +``` + +## Other platforms +### chrome app +* build with PREFIX=/ +* open google chrome +* navigate to chrome://extensions +* load 'dist' folder via Load unpacked extension... +* Pack extension... +* Rename dist.crx to binsa.crx + +### native Windows / Linux / MacOS executable +``` +npm install nw-builder +node conf/build-nw +``` +The package with executable will be in dist/binsa/ folder. +For other platforms than win64, adjust the build-nw script and run again + +### native (android, iOS) apps +install an android development environment ([android-sdk](https://developer.android.com/studio/index.html#command-tools), [gradle](https://gradle.org/releases/), build-tools, java sdk etc.), set the correct PATHS and +``` +npm install -g cordova +cordova create binsa org.eclipse.unide.binsa binsa +cd binsa +cordova platform add android --save +cordova requirements android +``` +change the router mode from 'history' to 'hash' in src/router.js: +```javascript +export default new Router({ + mode: 'hash', + // mode: 'history', + base: process.env.BASEPATH, + routes +}); +``` +replace cordovas default config.xml with the following: +```xml + + + binsa + + Eclipse Unide Sensor Simulator Application + + + Axel Meinhardt + + + + + + + + + + + + + + + + + + + + + + + + + +``` +compile and get the apk file to your phone: +``` +cordova build android +``` +more information at [cordova documentation](https://cordova.apache.org/docs/en/latest/reference/cordova-cli/) diff --git a/clients/binsa/conf/build-nw.js b/clients/binsa/conf/build-nw.js new file mode 100644 index 0000000..700b4b2 --- /dev/null +++ b/clients/binsa/conf/build-nw.js @@ -0,0 +1,33 @@ +/* + * example file on how to build executable from /dist folder + * install nw-builder first, than + * node conf\build-nw.js + */ + +const NwBuilder = require('nw-builder'), + pkgJson = require('../package.json'), + nw = new NwBuilder({ + files: [`${__dirname}/../dist/**`, `!../dist/${pkgJson.name}`], + platforms: ['win64', 'linux64'], // ['win', 'win32', 'win64', 'osx', 'osx32', 'osx64', 'linux', 'linux32', 'linux64'] + version: '0.26.6', + flavor: 'normal', + appName: pkgJson.name, + appVersion: pkgJson.version, + buildDir: `${__dirname}/../dist`, + cacheDir: `${__dirname}/cache`, + winVersionString: { + CompanyName: "Bosch Software Innovations", + FileDescription: pkgJson.name, + ProductName: pkgJson.name, + LegalCopyright: "Copyright 2017" + }, + winIco: `${__dirname}/../src/img/icons/favicon.ico` + }); + +nw.on('log', console.log); + +nw.build().then(function () { + console.log('build'); +}).catch(function (error) { + console.error(error); +}); diff --git a/clients/binsa/conf/fixes/argsToArray.js b/clients/binsa/conf/fixes/argsToArray.js new file mode 100644 index 0000000..8d0988c --- /dev/null +++ b/clients/binsa/conf/fixes/argsToArray.js @@ -0,0 +1,5 @@ +// dropin es6 replacement for argsarray module + +export default fn => function(...args) { + return fn.call(this, args); +}; diff --git a/clients/binsa/conf/webpack-license-plugin.js b/clients/binsa/conf/webpack-license-plugin.js new file mode 100644 index 0000000..3b36a94 --- /dev/null +++ b/clients/binsa/conf/webpack-license-plugin.js @@ -0,0 +1,139 @@ +// var checker = require('license-checker'), +const fs = require('fs'), + path = require('path'), + util = require('util'), + JsZip = require('jszip'); + +class LicenseCheckPlugin { + static parseRepository(repository) { + if(typeof repository === 'object' && typeof repository.url === 'string') { + return repository.url + .replace('git+ssh://git@', 'git://') + .replace('git+https://github.com', 'https://github.com') + .replace('git://github.com', 'https://github.com') + .replace('git@github.com:', 'https://github.com/') + .replace('.git', ''); + } + return ''; + } + + static parseLicense(license) { + if(license instanceof Array) { + return license.map(LicenseCheckPlugin.parseLicense).join(', '); + } else if(typeof license === 'object' && typeof license.type) { + return license.type; + } + return license; + } + + apply(compiler) { + compiler.plugin('emit', (compilation, callback) => { + // last chance to add assets + const sep = path.sep.replace(/\\/, '\\\\'), + pkgName = new RegExp(`(^.*node_modules${sep}[^${sep}]+)(?!.*node_modules)`), + licenseRe = /li[cs]ense/i, + groupedDependencies = compilation.fileDependencies + .reduce((l, d) => { + const match = pkgName.exec(d); + if(match) { + if(!l[match[1]]) { + l[match[1]] = []; + } + l[match[1]].push(d); + } + return l; + }, {}); + + Promise.all(Object.keys(groupedDependencies).map(module => + util.promisify(fs.readFile)(path.join(module, 'package.json')) + .then(pgkJsonData => { + const zip = new JsZip(), + pkg = JSON.parse(pgkJsonData); + return Promise.all(groupedDependencies[module].map(file => + util.promisify(fs.readFile)(file) + .then(data => zip.file(file.substring(module.length + 1), data)) + ) + // + try to find and add license text + .concat(util.promisify(fs.readdir)(module) + .then(list => { + const fileName = list.find(f => f.match(licenseRe)); + if(fileName) { + return util.promisify(fs.readFile)(path.join(module, fileName)) + .then(data => zip.file(fileName, data)); + } + return Promise.resolve(); + }) + )) + .then(() => zip.generateAsync({ + type: 'nodebuffer' + })) + .then(zipbuffer => { + compilation.assets[`src/${pkg.name}@${pkg.version}.zip`] = { + source: () => zipbuffer, + size: () => zipbuffer.length + }; + return pkg; + }); + }) + )) + .then(PkgJsons => { + const text = JSON.stringify(PkgJsons + .sort((pkgA, pkgB) => (pkgA.name < pkgB.name) ? -1 : (pkgA.name > pkgB.name ? 1 : 0)) + .reduce((pkgs, pkg) => { + pkgs[`${pkg.name}@${pkg.version}`] = { + name: pkg.name, + version: pkg.version, + licenses: LicenseCheckPlugin.parseLicense(pkg.license || pkg.licenses), + repository: LicenseCheckPlugin.parseRepository(pkg.repository), + description: pkg.description + }; + return pkgs; + }, {})/*, ' ', 2 */); + compilation.assets['licenses.json'] = { + source: () => text, + size: () => Buffer.byteLength(text, 'utf8') + }; + return callback(); + }) + .catch(err => { + console.error(err); + callback(); + }); + }); + + /* compiler.plugin('emit', (compilation, done) => { + checker.init({ + start: `${__dirname}/..`, + production: true, + json: true, + customFormat: { + name: true, + version: true, + description: true, + repository: true, + licenses: true, + + publisher: false, + email: false, + url: false, + licenseFile: false, + licenseText: false, + licenseModified: false + } + }, function(err, json) { + if(err) { + console.error(err); + } else { + let text = JSON.stringify(json, ' ', 2); + compilation.assets['licenses.json'] = { + source: () => text, + size: () => Buffer.byteLength(text, 'utf8') + }; + } + done(); + }); + }); */ + } +} + +module.exports = LicenseCheckPlugin; diff --git a/clients/binsa/conf/webpack.dev.js b/clients/binsa/conf/webpack.dev.js new file mode 100644 index 0000000..715a84f --- /dev/null +++ b/clients/binsa/conf/webpack.dev.js @@ -0,0 +1,311 @@ +const webpack = require('webpack'), + path = require('path'), + fs = require('fs'), + ExtractTextPlugin = require('extract-text-webpack-plugin'), + LodashModuleReplacementPlugin = require('lodash-webpack-plugin'), + CopyWebpackPlugin = require('copy-webpack-plugin'), + OfflinePlugin = require('offline-plugin'), + HtmlWebpackPlugin = require('html-webpack-plugin'), + // FaviconsWebpackPlugin = require('favicons-webpack-plugin'), + LicensePlugin = require('./webpack-license-plugin'), + // HtmlCriticalPlugin = require('html-critical-webpack-plugin'), + packageJson = require('../package.json'), + + extractCSS = new ExtractTextPlugin({ + filename: '[name].css' + }), + sassLoader = { + loader: 'sass-loader', + options: { + sourceMap: true, + includePaths: ['node_modules'] + } + }, + langs = fs.readdirSync(`${__dirname}/../src/i18n`).filter(f => f.endsWith('.json')).map(file => file.replace(/.json$/, '')), + publicPath = process.env.PREFIX || '/'; + +module.exports = { + devtool: 'source-map', + entry: { + app: './src', + sandbox: './src/sandbox' + }, + + output: { + path: path.join(__dirname, '../dist', publicPath), + filename: '[name].js', + pathinfo: true, + publicPath: publicPath + }, + + target: "web", + /* + function(compiler) { //shall work in both, node-webkit and chrome app (web) + compiler.apply( + new (require("webpack/lib/JsonpTemplatePlugin"))(compiler.options.output), + new (require('webpack/lib/FunctionModulePlugin'))(compiler.options.output), + new (require("webpack/lib/node/NodeSourcePlugin"))(compiler.options.node), + new (require("webpack/lib/ExternalsPlugin"))('commonjs', ['nw.gui', 'os']), + new (require("webpack/lib/LoaderTargetPlugin"))('web') + ); + },*/ + + node: { + // node polyfills + }, + + devServer: { + hot: false, + inline: true, + progress: true, + https: false, + // historyApiFallback for SPA, needs special handling for sw.js to redirect without host + historyApiFallback: { + rewrites: [{ + from: /sw.js$/, + to: `${publicPath}sw.js` + }, { + from: /.*/, + to: `${publicPath}index.html` + }] + }, + proxy: { + '/rest/v2/measurement': { + target: 'http://unide.eclipse.org:443' + //, agent: require('http-proxy-agent')('http://localhost:3128') + } + } + }, + + module: { + rules: [{ + test: /\.vue$/i, + loader: 'vue-loader', + options: { + loaders: { + js: '', // needed here to not fallback to babel-loader + css: extractCSS.extract({ + fallback: 'vue-style-loader', + use: [{ + loader: 'css-loader', + options: { + sourceMap: true, + minimize: false + } + }] + }), + scss: extractCSS.extract({ + fallback: 'vue-style-loader', + use: [{ + loader: 'css-loader', + options: { + sourceMap: true, + minimize: false + } + }, sassLoader] + }), + sass: extractCSS.extract({ + fallback: 'vue-style-loader', + use: [{ + loader: 'css-loader', + options: { + sourceMap: true, + minimize: false + } + }, sassLoader] + }) + } + } + }, { + // it might be possible to ignore some dependencies that are not used + test: /\.js$/i, + include: [/chacha/, /ripemd160/], + use: ['null-loader'] + }, { + test: /\.js$/i, + exclude: /node_modules/, + use: ['eslint-loader'] + }, { + test: /\.css$/i, + use: extractCSS.extract({ + fallback: 'style-loader', + use: { + loader: 'css-loader', + options: { + sourceMap: true, + minimize: false + } + } + }) + }, { + test: /\.(scss|sass)$/i, + use: extractCSS.extract({ + fallback: 'css-loader', + use: sassLoader + }) + }, { + test: /\.(png|jpe?g|gif)(\?.*)?$/i, + exclude: /img\/icons/, + use: [{ + loader: 'url-loader', + options: { + limit: 1000, + name: '[name].[ext]' + } + }] + }, { + test: /\.*?$/, + use: [{ + loader: 'file-loader', + options: { + name: '[name].[ext]' + } + }], + include: /img\/icons/ + }, { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/i, + use: [{ + loader: 'url-loader', + options: { + limit: 10000, + mimetype: 'application/font-woff', + name: '[name].[ext]' + } + }] + }, { + test: /\.svg?$/i, + use: [{ + loader: 'file-loader', + options: { + name: '[name].[ext]' + } + }] + }] + }, + + plugins: fs.readdirSync(`${__dirname}/../src/manifests`).map(f => new HtmlWebpackPlugin({ + filename: f, + template: `${__dirname}/../src/manifests/${f}`, + inject: false, + packageJson: packageJson + // , minimize: true + })).concat([ + new LicensePlugin(), + // new DashboardPlugin(), + new HtmlWebpackPlugin({ + filename: packageJson.main, + template: `${__dirname}/../index.html`, + excludeChunks: ['sandbox'], + packageJson: packageJson + }), + new HtmlWebpackPlugin({ + filename: 'sandbox.html', + template: `${__dirname}/../sandbox.html`, + excludeChunks: ['app'] + }), + /* + new FaviconsWebpackPlugin({ + inject: true, + logo: './src/img/unide.png', + background: '#fff', + title: packageJson.name, + icons: { + appleStartup: false, + windows: true + }, + prefix: 'icons/' + }), + */ + new CopyWebpackPlugin([{ + from: 'src/img/icons', + to: 'icons' + }, { + from: 'package.json' + }, { + from: 'src/background.js' + }]), + extractCSS, + new webpack.EnvironmentPlugin({ + NODE_ENV: 'development', + BASEPATH: publicPath, + LANGS: langs, + BRAND: packageJson.name + }), + // limit the locales of vee-validate to the ones we know + new webpack.ContextReplacementPlugin(/vee-validate[\/\\]dist[\/\\]locale$/, new RegExp(langs.join('|'))), + new LodashModuleReplacementPlugin({ + collection: true, + path: true + }), + new webpack.LoaderOptionsPlugin({ + minimize: false, + debug: true + }), + new webpack.optimize.CommonsChunkPlugin({ + minChunks: 2, // module => module.context && (module.context.indexOf('node_modules') !== -1), + children: true, + deepChildren: true + }), + // display relative path of module on Hot Module Replacement + new webpack.NamedModulesPlugin(), + /* new HtmlCriticalPlugin({ + base: `${__dirname}/../dist`, + src: `${publicPath}index.html`, + dest: `${__dirname}/../dist${publicPath}index.html`, + inline: true, + minify: true, + extract: true, + dimensions: [{ + // Galaxy S5 + height: 640, + width: 360 + }, { + // iPad Pro + height: 1366, + width: 1024 + }, { + // laptop + height: 768, + width: 1366 + }, { + height: 768, + width: 1400 + }], + penthouse: { + blockJSRequests: false, + } + }), */ + new webpack.HotModuleReplacementPlugin() + ]), + + resolve: { + mainFields: ['jsnext:main', 'module', 'browser', 'main'], + aliasFields: ['browser'], + alias: { + underscore: 'lodash', + // because babel-loader doesn't work with "custom polyfills": + 'core-js/library/fn/promise': 'es6-promise', + + // optimize some dependencies + debug: path.resolve(__dirname, '../node_modules/debug'), + inherits: path.resolve(__dirname, '../node_modules/inherits'), + argsarray: path.resolve(__dirname, 'fixes/argsToArray'), + 'offline-plugin/runtime': 'null-loader', + isarray: 'lodash/isArray', + + // stable access to our main folder + components: path.resolve(__dirname, '../src/components/'), + pages: path.resolve(__dirname, '../src/pages/'), + styles: path.resolve(__dirname, '../src/styles/'), + + // don't use es6, because transform-pouch cannot handle .default + 'pouchdb-promise': 'es6-promise', + lie: 'es6-promise', + 'pouchdb-utils': 'pouchdb-utils/lib/index', + + // es6 rewrites + 'vue-multiselect': 'vue-multiselect/src/Multiselect' + }, + extensions: ['.js', '.json', '.vue'] + } +}; diff --git a/clients/binsa/conf/webpack.prod.js b/clients/binsa/conf/webpack.prod.js new file mode 100644 index 0000000..57b8ba9 --- /dev/null +++ b/clients/binsa/conf/webpack.prod.js @@ -0,0 +1,312 @@ +const webpack = require('webpack'), + path = require('path'), + fs = require('fs'), + ExtractTextPlugin = require('extract-text-webpack-plugin'), + LodashModuleReplacementPlugin = require('lodash-webpack-plugin'), + CopyWebpackPlugin = require('copy-webpack-plugin'), + OfflinePlugin = require('offline-plugin'), + HtmlWebpackPlugin = require('html-webpack-plugin'), + CleanPlugin = require('clean-webpack-plugin'), + UglifyJsPlugin = require('uglifyjs-webpack-plugin'), + // FaviconsWebpackPlugin = require('favicons-webpack-plugin'), + LicensePlugin = require('./webpack-license-plugin'), + // HtmlCriticalPlugin = require('html-critical-webpack-plugin'), + packageJson = require('../package.json'), + + extractCSS = new ExtractTextPlugin({ + filename: '[name].css' + }), + compact = true, + sassLoader = { + loader: 'sass-loader', + options: { + sourceMap: !compact, + outputStyle: 'compressed', + includePaths: ['node_modules'] + } + }, + langs = fs.readdirSync(`${__dirname}/../src/i18n`).filter(f => f.endsWith('.json')).map(file => file.replace(/.json$/, '')), + publicPath = process.env.PREFIX || '/binsa/'; + +module.exports = { +// devtool: 'hidden-source-map', + entry: { + app: './src', + sandbox: './src/sandbox' + }, + + output: { + path: path.join(__dirname, '../dist', publicPath), + filename: '[name].js', + chunkFilename: '[name].js', + pathinfo: true, + publicPath: publicPath + }, + + target: "web", + + node: { + // node polyfills + }, + + module: { + rules: [{ + test: /\.vue$/i, + loader: 'vue-loader', + options: { + loaders: { + js: 'babel-loader', + css: extractCSS.extract({ + fallback: 'vue-style-loader', + use: [{ + loader: 'css-loader', + options: { + sourceMap: !compact, + minimize: compact + } + }] + }), + scss: extractCSS.extract({ + fallback: 'vue-style-loader', + use: [{ + loader: 'css-loader', + options: { + sourceMap: !compact, + minimize: compact + } + }, sassLoader] + }), + sass: extractCSS.extract({ + fallback: 'vue-style-loader', + use: [{ + loader: 'css-loader', + options: { + sourceMap: !compact, + minimize: compact + } + }, sassLoader] + }) + } + } + }, { + // it might be possible to ignore some dependencies that are not used + test: /\.js$/i, + include: [/chacha/, /ripemd160/], + use: ['null-loader'] + }, { + test: /\.js$/i, + include: [ + path.resolve(__dirname, '..', 'src'), + path.resolve(__dirname, '..', 'conf', 'fixes'), + path.resolve(__dirname, '..', 'node_modules', 'buefy'), + path.resolve(__dirname, '..', 'node_modules', 'native-crypto', 'browser') + ], + use: ['babel-loader', 'eslint-loader'] + }, { + test: /\.css$/i, + use: extractCSS.extract({ + fallback: 'style-loader', + use: { + loader: 'css-loader', + options: { + sourceMap: !compact, + minimize: compact + } + } + }) + }, { + test: /\.(scss|sass)$/i, + use: extractCSS.extract({ + fallback: 'css-loader', + use: sassLoader + }) + }, { + test: /\.(png|jpe?g|gif)(\?.*)?$/i, + exclude: /img\/icons/, + use: [{ + loader: 'url-loader', + options: { + limit: 10000, + name: '[name].[ext]' + } + }] + }, { + test: /\.*?$/, + use: [{ + loader: 'file-loader', + options: { + name: '[name].[ext]' + } + }], + include: /img\/icons/ + }, { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/i, + use: [{ + loader: 'url-loader', + options: { + limit: 10000, + mimetype: 'application/font-woff', + name: '[name].[ext]' + } + }] + }, { + test: /\.svg?$/i, + use: [{ + loader: 'file-loader', + options: { + name: '[name].[ext]' + } + }] + }] + }, + + plugins: fs.readdirSync(`${__dirname}/../src/manifests`).map(f => new HtmlWebpackPlugin({ + filename: f, + template: `${__dirname}/../src/manifests/${f}`, + inject: false, + packageJson: packageJson, + minimize: compact + })).concat([ + new LicensePlugin(), + // new DashboardPlugin(), + new CleanPlugin(['dist'], { + root: path.resolve(__dirname, '..') + //, exclude: ["i18n/en.json"] + }), + new HtmlWebpackPlugin({ + filename: packageJson.main, + template: `${__dirname}/../index.html`, + excludeChunks: ['sandbox'], + packageJson: packageJson + }), + new HtmlWebpackPlugin({ + filename: 'sandbox.html', + template: `${__dirname}/../sandbox.html`, + excludeChunks: ['app'] + }), + /* + new FaviconsWebpackPlugin({ + inject: true, + logo: './src/img/unide.png', + background: '#fff', + title: packageJson.name, + icons: { + appleStartup: false, + windows: true + }, + prefix: 'icons/' + }), + */ + new CopyWebpackPlugin([{ + from: 'src/img/icons', + to: 'icons' + }, { + from: 'package.json' + }, { + from: 'src/background.js' + }]), + extractCSS, + new webpack.EnvironmentPlugin({ + NODE_ENV: 'production', + BASEPATH: publicPath, + LANGS: langs, + BRAND: packageJson.name + }), + //limit the locales of vee-validate to the ones we know + new webpack.ContextReplacementPlugin(/vee-validate[\/\\]dist[\/\\]locale$/, new RegExp(langs.join('|'))), + new LodashModuleReplacementPlugin({ + collection: true, + path: true + }), + new UglifyJsPlugin({ + sourceMap: !compact, + uglifyOptions: { + compress: compact ? { + drop_console: true + } : false, + mangle: compact, + sourceMap: !compact + } + }), + new webpack.LoaderOptionsPlugin({ + minimize: compact + }), + new webpack.optimize.CommonsChunkPlugin({ + minChunks: 2, //module => module.context && (module.context.indexOf('node_modules') !== -1), + children: true, + deepChildren: true + }), + new OfflinePlugin({ + publicPath: publicPath, + excludes: ['**/.*', '**/*.map', '**/*.zip', '**/fontawesome-webfont.+(svg|eot|ttf|woff)'], + safeToUseOptionalCaches: true, + caches: { + main: ['app.js', 'app.css', 'logo.svg', 'fontawesome-webfont.woff2', '**/favicon-16x16.png', '**/favicon-32x32.png'], + additional: ['**/*.js', '**/*.json'], + optional: [':rest:'] + }, + ServiceWorker: { + entry: './src/sw.js', + events: true, + navigateFallbackURL: publicPath + //, autoUpdate: 1000 * 60 * 60 + } + }), + /* new HtmlCriticalPlugin({ + base: `${__dirname}/../dist`, + src: `${publicPath}index.html`, + dest: `${publicPath}index.html`, + inline: true, + minify: true, + extract: true, + dimensions: [{ + // Galaxy S5 + height: 640, + width: 360 + }, { + // iPad Pro + height: 1366, + width: 1024 + }, { + // laptop + height: 768, + width: 1366 + }, { + height: 768, + width: 1400 + }], + penthouse: { + blockJSRequests: false, + renderWaitTime: 100 + } + }) */ + ]), + + resolve: { + mainFields: ['jsnext:main', 'module', 'browser', 'main'], + aliasFields: ['browser'], + alias: { + underscore: 'lodash', + // because babel-loader doesn't work with "custom polyfills": + "core-js/library/fn/promise": "es6-promise", + + // optimize some dependencies + debug: path.resolve(__dirname, '../node_modules/debug'), + inherits: path.resolve(__dirname, '../node_modules/inherits'), + argsarray: path.resolve(__dirname, 'fixes/argsToArray'), + isarray: 'lodash/isArray', + + // stable access to our main folders + components: path.resolve(__dirname, '../src/components/'), + pages: path.resolve(__dirname, '../src/pages/'), + styles: path.resolve(__dirname, '../src/styles/'), + + // don't use es6, because transform-pouch cannot handle .default + 'pouchdb-promise': 'es6-promise', + 'lie': 'es6-promise', + 'pouchdb-utils': 'pouchdb-utils/lib/index' + }, + extensions: ['.js', '.json', '.vue'] + } +}; + diff --git a/clients/binsa/cypress.json b/clients/binsa/cypress.json new file mode 100644 index 0000000..846ae95 --- /dev/null +++ b/clients/binsa/cypress.json @@ -0,0 +1,8 @@ +{ + "port": 8081, + "fixturesFolder": "tests/fixtures", + "integrationFolder": "tests/integration", + "screenshotsFolder": "tests/screenshots", + "supportFile": "tests/support", + "videosFolder": "tests/videos" +} diff --git a/clients/binsa/index.html b/clients/binsa/index.html new file mode 100644 index 0000000..cca010d --- /dev/null +++ b/clients/binsa/index.html @@ -0,0 +1,90 @@ + + + + + + + + <%= htmlWebpackPlugin.options.packageJson.title || 'Webpack App'%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ +
+
+
+ + diff --git a/clients/binsa/package-lock.json b/clients/binsa/package-lock.json new file mode 100644 index 0000000..7da0bff --- /dev/null +++ b/clients/binsa/package-lock.json @@ -0,0 +1,15964 @@ +{ + "name": "binsa", + "version": "2.0.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.32.tgz", + "integrity": "sha512-EVq4T1a2GviKiQ75OfxNrGPPhJyXzg9jjORuuwhloZbFdrhT4FHa73sv9OFWBwX7rl2b6bxBVmfxrBQYWYz9tA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.32.tgz", + "integrity": "sha512-ysfIt7p72xm5fjSJsv7fMVN/j+EwIdqu8/MJjt6TqB4wM2r6rFRi0ujBTWDkLGQkRB/P5uDV8qcFCHAHnNzmsg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.32", + "@babel/template": "7.0.0-beta.32", + "@babel/types": "7.0.0-beta.32" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.32.tgz", + "integrity": "sha512-bm7lIlizycJQY5SJ3HXWJV4XjSrOt1onzrDcOxUo9FEnKRZDEr/zfi5ar2s5tvvZvve/jGHwZKVKekRw2cjPCQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.32" + } + }, + "@babel/template": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.32.tgz", + "integrity": "sha512-DB9sLgX2mfE29vjAkxHlzLyWr31EO9HaYoAM/UsPSsL70Eudl0i25URwIfQT6S6ckeVFnFP1t6PhERVeV4EAHA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.32", + "@babel/types": "7.0.0-beta.32", + "babylon": "7.0.0-beta.32", + "lodash": "4.17.4" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.32.tgz", + "integrity": "sha512-PvAmyP2IJEBVAuE5yVzrTSWCCN9VMa1eGns8w3w6FYD/ivHSUmS7n+F40Fmjn+0nCQSUFR96wP0CqQ4jxTnF4Q==", + "dev": true + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.32.tgz", + "integrity": "sha512-dGe2CLduCIZ/iDkbmnqspQguRy5ARvI+zC8TiwFnsJ2YYO2TWK7x2aEwrbkSmi0iPlBP+Syiag7Idc1qNQq74g==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.32", + "@babel/helper-function-name": "7.0.0-beta.32", + "@babel/types": "7.0.0-beta.32", + "babylon": "7.0.0-beta.32", + "debug": "3.1.0", + "globals": "10.3.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.32.tgz", + "integrity": "sha512-PvAmyP2IJEBVAuE5yVzrTSWCCN9VMa1eGns8w3w6FYD/ivHSUmS7n+F40Fmjn+0nCQSUFR96wP0CqQ4jxTnF4Q==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-10.3.0.tgz", + "integrity": "sha512-1g6qO5vMbiPHbRTDtR9JVjRkAhkgH4nSANYGyx1eOfqgxcMnYMMD+7MjmjfzXjwFpVUE/7/NzF+jQxYE7P4r7A==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.32.tgz", + "integrity": "sha512-w8+wzVcYCMb9OfaBfay2Vg5hyj7UfBX6qQtA+kB0qsW1h1NH/7xHMwvTZNqkuFBwjz5wxGS2QmaIcC3HH+UoxA==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" + } + }, + "@cypress/xvfb": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.0.4.tgz", + "integrity": "sha512-Ey34vw8L2L1tFBLAsjCYlv24TVjzuU+sCUwONj8xMdlM5iNEHgj+AoMPR6C1LCijm/9Ue/FNAMffDe/lmKYWTA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "requires": { + "acorn": "4.0.13" + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "apartment": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/apartment/-/apartment-1.1.1.tgz", + "integrity": "sha1-/ZQGzcyodTWULxWzYKGrWkqpfiY=", + "dev": true, + "requires": { + "css": "2.2.1", + "get-stdin": "5.0.1", + "lodash": "3.10.1", + "minimist": "1.2.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "argsarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz", + "integrity": "sha1-bnIHtOzbObCviDA/pa4ivajfYcs=" + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.9.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "asset-resolver": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/asset-resolver/-/asset-resolver-0.3.3.tgz", + "integrity": "sha1-GVJY/cA6AXOdZHIUHT6OALVk6Ns=", + "dev": true, + "requires": { + "bluebird": "3.4.7", + "debug": "2.6.1", + "filesize": "3.5.5", + "globby": "6.1.0", + "hash": "0.2.0", + "lodash": "4.17.4", + "meow": "3.7.0", + "mime": "1.3.4", + "object": "0.1.1", + "request": "2.79.0" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.11.0", + "is-my-json-valid": "2.16.1", + "pinkie-promise": "2.0.1" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + } + } + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, + "attempt-x": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/attempt-x/-/attempt-x-1.1.1.tgz", + "integrity": "sha512-hIp37ojJRRW8ExWSxxLpkDHUufk/DFfsb7/cUC1cVbBg7JV4gJTkCTRa44dlL9e5jx1P3VNrjL7QOQfi4MyltA==" + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000764", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "axios": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", + "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "requires": { + "follow-redirects": "1.2.5", + "is-buffer": "1.1.6" + } + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.11.0", + "convert-source-map": "1.5.0", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.0.2.tgz", + "integrity": "sha512-yyl5U088oE+419+BNLJDKVWkUokuPLQeQt9ZTy9uM9kAzbtQgyYL3JkG425B8jxXA7MwTxnDAtRLMKJNH36qjA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.32", + "@babel/traverse": "7.0.0-beta.32", + "@babel/types": "7.0.0-beta.32", + "babylon": "7.0.0-beta.32" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.32", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.32.tgz", + "integrity": "sha512-PvAmyP2IJEBVAuE5yVzrTSWCCN9VMa1eGns8w3w6FYD/ivHSUmS7n+F40Fmjn+0nCQSUFR96wP0CqQ4jxTnF4Q==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-module-imports": { + "version": "7.0.0-beta.3", + "resolved": "https://registry.npmjs.org/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz", + "integrity": "sha512-bdPrIXbUTYfREhRhjbN8SstwQaj0S4+rW4PKi1f2Wc5fizSh0hGYkfXUdiSSOgyTydm956tAyz4FrG61bqdQyw==", + "dev": true, + "requires": { + "babel-types": "7.0.0-beta.3", + "lodash": "4.17.4" + }, + "dependencies": { + "babel-types": { + "version": "7.0.0-beta.3", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-beta.3.tgz", + "integrity": "sha512-36k8J+byAe181OmCMawGhw+DtKO7AwexPVtsPXoMfAkjtZgoCX3bEuHWfdE5sYxRM8dojvtG/+O08M0Z/YDC6w==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-lodash": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz", + "integrity": "sha512-lNsptTRfc0FTdW56O087EiKEADVEjJo2frDQ97olMjCKbRZfZPu7MvdyxnZLOoDpuTCtavN8/4Zk65x4gT+C3Q==", + "dev": true, + "requires": { + "babel-helper-module-imports": "7.0.0-beta.3", + "babel-types": "6.26.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "require-package-name": "2.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.9.0", + "invariant": "2.2.2", + "semver": "5.4.1" + }, + "dependencies": { + "browserslist": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.9.0.tgz", + "integrity": "sha512-vJEBcDTANoDhSHL46NeOEW5hvQw7It9uCqzeFPQhpawXfnOwnpvW5C97vn1eGJ7iCkSg8wWU0nYObE7d/N95Iw==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000764", + "electron-to-chromium": "1.3.27" + } + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base62": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.1.tgz", + "integrity": "sha512-xVtfFHNPUzpCNHygpXFGMlDk3saxXLQcOOQzAAk6ibvlAHgT6WKXLv9rMFhcyEK1n9LuDmp/LxyGW/Fm9L8++g==" + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "bignumber.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz", + "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=", + "dev": true + }, + "binary-extensions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=" + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "bmp-js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz", + "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.1.1", + "multicast-dns-service-types": "1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "boxen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.5.1.tgz", + "integrity": "sha1-W3PYhA6388ihVcv2ntPtaNRyABQ=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "requires": { + "pako": "0.2.9" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000764", + "electron-to-chromium": "1.3.27" + } + }, + "buefy": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/buefy/-/buefy-0.6.1.tgz", + "integrity": "sha512-GRh7GpSbcjKwXHd8lFQbsiVexDk9mVgPGNeNxhQfNdlCj61b4ExJC4/V5KCn+OEEO9NzsLufVOo6RK38a/aS9Q==", + "requires": { + "bulma": "0.6.1", + "vue": "2.5.3" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "0.1.1", + "buffer-fill": "0.1.0" + } + }, + "buffer-alloc-unsafe": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-fill": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.0.tgz", + "integrity": "sha1-ypRw6NTRuXf9dUP04qtqfclRAag=", + "dev": true + }, + "buffer-from": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.1.tgz", + "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", + "requires": { + "is-array-buffer-x": "1.7.0" + } + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "readable-stream": "2.3.3", + "uuid": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bulma": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.6.1.tgz", + "integrity": "sha1-XyGnfAwG99gAUcBmKMI1Fggb1kk=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz", + "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.0.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "cached-constructors-x": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cached-constructors-x/-/cached-constructors-x-1.0.0.tgz", + "integrity": "sha512-JVP0oilYlPgBTD8bkQ+of7hSIJRtydCCJiMtzdRMXVQ98gdj0NyrJTZzbu5wtlO26Ev/1HXRTtbBNsVlLJ3+3A==" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000764", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000764", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000764.tgz", + "integrity": "sha1-1zqxGuYvap4vaYZ9bZwjrj8uXY0=" + }, + "caniuse-lite": { + "version": "1.0.30000764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000764.tgz", + "integrity": "sha1-l+p0cvnT5pHu3jTyGYPPwhmseEI=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "cave": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cave/-/cave-2.0.0.tgz", + "integrity": "sha1-DFd66oWSgBXQKgK2GIgG2VvrJiY=", + "dev": true, + "requires": { + "css": "2.2.1", + "get-stdin": "3.0.2", + "lodash": "2.4.2", + "minimist": "1.2.0" + }, + "dependencies": { + "get-stdin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz", + "integrity": "sha1-wc7SS5A5s43thb3xYeV3E7bdSr4=", + "dev": true + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "2.1.0", + "isurl": "1.0.0", + "tunnel-agent": "0.6.0", + "url-to-options": "1.0.1" + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chacha": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chacha/-/chacha-2.1.0.tgz", + "integrity": "sha1-9NV8h2ihtCBumWf4WLSNp90o6qY=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=", + "dev": true + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true + }, + "cheerio": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", + "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=", + "dev": true, + "requires": { + "css-select": "1.0.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "lodash": "3.10.1" + }, + "dependencies": { + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + }, + "dependencies": { + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + } + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "ci-info": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", + "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "requires": { + "chalk": "1.1.3" + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "clean-webpack-plugin": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.17.tgz", + "integrity": "sha512-Bts/V725v8Ijosp4K1cqppQXgXcrohxoMsg0CV2xL4y/vua1G5pAfHEW/eJIiKF+GNNG72mdjbipxMRFEms7yg==", + "dev": true, + "requires": { + "rimraf": "2.6.2" + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "1.0.7", + "through2": "2.0.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + }, + "common-tags": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz", + "integrity": "sha1-EYe+Tz1M8MBCfUP3Tu8fc1AWFMA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "requires": { + "commander": "2.11.0", + "detective": "4.5.0", + "glob": "5.0.15", + "graceful-fs": "4.1.11", + "iconv-lite": "0.4.19", + "mkdirp": "0.5.1", + "private": "0.1.8", + "q": "1.5.1", + "recast": "0.11.23" + } + }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + } + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "requires": { + "bluebird": "3.5.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-eZERim02YjJcepLjrToQMapOoRLfiXewJi9zJON6xXNNJSUhkGzL1L/yFjOufS0KxsnWUzc2szg9t8ZaZKJXAg==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "fs-extra": "4.0.2", + "glob": "7.1.2", + "is-glob": "4.0.0", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "node-dir": "0.1.17" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", + "dev": true + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "critical": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/critical/-/critical-0.9.1.tgz", + "integrity": "sha512-KOAU4B6l9sMVLA/FuMEK5COG5D+9rpvwYMilPf3KQ1uJSx3ds2DggSqNPt625AATYt2AIcFUIvhrhm3tKIwCjg==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chalk": "2.3.0", + "cheerio": "0.22.0", + "clean-css": "4.1.9", + "cli": "1.0.1", + "debug": "2.6.9", + "filter-css": "0.1.2", + "finalhandler": "1.1.0", + "fs-extra": "4.0.2", + "get-port": "3.2.0", + "get-stdin": "5.0.1", + "group-args": "0.1.0", + "gulp-util": "3.0.8", + "imageinliner": "0.2.4", + "indent-string": "3.2.0", + "inline-critical": "2.4.2", + "lodash": "4.17.4", + "meow": "3.7.0", + "mime-types": "2.1.17", + "oust": "0.4.0", + "parseurl": "1.3.2", + "penthouse": "0.11.13", + "postcss": "6.0.14", + "postcss-image-inliner": "1.0.6", + "request": "2.81.0", + "serve-static": "1.13.1", + "slash": "1.0.0", + "tempfile": "2.0.0", + "through2": "2.0.3", + "tmp": "0.0.31", + "vinyl": "2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.0", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, + "crypto-pouch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/crypto-pouch/-/crypto-pouch-3.1.3.tgz", + "integrity": "sha512-sHTsAchKCyl4jAig+1Jn9TfheZHnF9rq9+16U4nmBYWUOObB/47/utxKMLy/VXlQcCLu4gPceIKrADnBCf9mhg==", + "requires": { + "chacha": "2.1.0", + "native-crypto": "1.8.1", + "pouchdb-promise": "6.3.4", + "randombytes": "2.0.5", + "transform-pouch": "1.1.4", + "uuid": "3.1.0" + } + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-fork-pocketjoso": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-fork-pocketjoso/-/css-fork-pocketjoso-2.2.1.tgz", + "integrity": "sha1-ondI76ZzUfReRUmmgGRSvrQkQWI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "css-loader": { + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=", + "dev": true + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", + "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "1.0.0", + "domutils": "1.4.3", + "nth-check": "1.0.1" + }, + "dependencies": { + "domutils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", + "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + } + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + } + }, + "css-stringify": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.4.1.tgz", + "integrity": "sha1-JSzL8D9yOgCb3Ydw/n6ydBca/fo=", + "dev": true, + "requires": { + "source-map": "0.1.43" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "css-what": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", + "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "cypress": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-1.0.3.tgz", + "integrity": "sha1-7zqPvnLW9pssAuOE20BcxJxXc74=", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "0.4.1", + "@cypress/xvfb": "1.0.4", + "bluebird": "3.5.0", + "chalk": "2.1.0", + "check-more-types": "2.24.0", + "commander": "2.11.0", + "common-tags": "1.4.0", + "debug": "2.6.8", + "dev-null": "0.1.1", + "extract-zip": "1.6.5", + "fs-extra": "4.0.1", + "getos": "2.8.4", + "glob": "7.1.2", + "is-ci": "1.0.10", + "is-installed-globally": "0.1.0", + "lazy-ass": "1.6.0", + "listr": "0.12.0", + "lodash": "4.17.4", + "minimist": "1.2.0", + "progress": "1.1.8", + "ramda": "0.24.1", + "request": "2.81.0", + "request-progress": "0.3.1", + "tmp": "0.0.31", + "url": "0.11.0", + "yauzl": "2.8.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "fs-extra": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz", + "integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "0.10.35" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decompress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "dev": true, + "requires": { + "buffer-to-vinyl": "1.1.0", + "concat-stream": "1.6.0", + "decompress-tar": "3.1.0", + "decompress-tarbz2": "3.1.0", + "decompress-targz": "3.1.0", + "decompress-unzip": "3.4.0", + "stream-combiner2": "1.1.1", + "vinyl-assign": "1.2.1", + "vinyl-fs": "2.4.4" + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "dev": true, + "requires": { + "is-tar": "1.0.0", + "object-assign": "2.1.1", + "strip-dirs": "1.1.1", + "tar-stream": "1.5.5", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "dev": true, + "requires": { + "is-bzip2": "1.0.0", + "object-assign": "2.1.1", + "seek-bzip": "1.0.5", + "strip-dirs": "1.1.1", + "tar-stream": "1.5.5", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "dev": true, + "requires": { + "is-gzip": "1.0.0", + "object-assign": "2.1.1", + "strip-dirs": "1.1.1", + "tar-stream": "1.5.5", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "dev": true, + "requires": { + "is-zip": "1.0.0", + "read-all-stream": "3.1.0", + "stat-mode": "0.2.2", + "strip-dirs": "1.1.1", + "through2": "2.0.3", + "vinyl": "1.2.0", + "yauzl": "2.8.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "detective": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", + "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "requires": { + "acorn": "4.0.13", + "defined": "1.0.0" + } + }, + "dev-null": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz", + "integrity": "sha1-WiBc48Ky73e2I41roXnrdMag6Bg=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", + "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "download": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/download/-/download-5.0.3.tgz", + "integrity": "sha1-Y1N/l3+ZJmow64oqL70fILgAD3o=", + "dev": true, + "requires": { + "caw": "2.0.1", + "decompress": "4.2.0", + "filenamify": "2.0.0", + "get-stream": "3.0.0", + "got": "6.7.1", + "mkdirp": "0.5.1", + "pify": "2.3.0" + }, + "dependencies": { + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "decompress-tarbz2": "4.1.1", + "decompress-targz": "4.1.1", + "decompress-unzip": "4.0.1", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "pify": "2.3.0", + "strip-dirs": "2.1.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "5.2.0", + "is-stream": "1.1.0", + "tar-stream": "1.5.5" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "6.2.0", + "is-stream": "1.1.0", + "seek-bzip": "1.0.5", + "unbzip2-stream": "1.2.5" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "4.1.1", + "file-type": "5.2.0", + "is-stream": "1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "get-stream": "2.3.1", + "pify": "2.3.0", + "yauzl": "2.8.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + } + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + } + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", + "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.1" + } + }, + "ecstatic": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-2.2.1.tgz", + "integrity": "sha512-ztE4WqheoWLh3wv+HQwy7dACnvNY620coWpa+XqY6R2cVWgaAT2lUISU1Uf7JpdLLJCURktJOaA9av2AOzsyYQ==", + "dev": true, + "requires": { + "he": "1.1.1", + "mime": "1.4.1", + "minimist": "1.2.0", + "url-join": "2.0.2" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" + }, + "electron-to-chromium": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", + "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=" + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", + "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es3ify": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/es3ify/-/es3ify-0.2.2.tgz", + "integrity": "sha1-Xa4+ZQ5b42hLiAZlE9Uo0JJimGI=", + "requires": { + "esprima": "2.7.3", + "jstransform": "11.0.3", + "through": "2.3.8" + } + }, + "es5-ext": { + "version": "0.10.35", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", + "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", + "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-config-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-vue/-/eslint-config-vue-2.0.2.tgz", + "integrity": "sha1-o6sQBImeSTJ6lMY+JNR6OWsvSEg=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-babel": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz", + "integrity": "sha1-eSAqDjV1fdkngJGbIzbx+i/lPB4=", + "dev": true + }, + "eslint-plugin-html": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-4.0.0.tgz", + "integrity": "sha512-xK/909qOTq5JVzuO2jo4a24nQcWhkOBz9dOIkORvB7RxC75a4b6B9wFpBXAl8WDhwJGFDj5gBDRN+/L3kK/ghw==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2" + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "dev": true, + "requires": { + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", + "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", + "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", + "dev": true, + "requires": { + "doctrine": "2.0.0", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + } + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "eslint-plugin-vue": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-2.1.0.tgz", + "integrity": "sha1-UO0LfpojidkOaJdDo8wmtQJEG2k=", + "dev": true, + "requires": { + "eslint-plugin-html": "3.2.2", + "eslint-plugin-react": "7.4.0" + }, + "dependencies": { + "eslint-plugin-html": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz", + "integrity": "sha512-sSuafathF6ImPrzF2vUKEJY6Llq06d/riMTMzlsruDRDhNsQMYp2viUKo+jx+JRr1QevskeUpQcuptp2gN1XVQ==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "semver": "5.4.1" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "esmangle-evaluator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz", + "integrity": "sha1-Yg2GbvSGGzMR91dm1SqFcrs8YzY=" + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", + "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19", + "jschardet": "1.6.0", + "tmp": "0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.0.2" + } + }, + "extract-zip": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.5.tgz", + "integrity": "sha1-maBnNbbqIOqbcF13ms/8yHz/BEA=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.2.0", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz", + "integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=", + "requires": { + "acorn": "1.2.2", + "foreach": "2.0.5", + "isarray": "0.0.1", + "object-keys": "1.0.11" + }, + "dependencies": { + "acorn": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=" + } + } + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" + }, + "favicons": { + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/favicons/-/favicons-4.8.6.tgz", + "integrity": "sha1-orE4AKs/7CcVvI8n+oQdA41HYeI=", + "dev": true, + "requires": { + "async": "1.5.2", + "cheerio": "0.19.0", + "clone": "1.0.3", + "colors": "1.1.2", + "harmony-reflect": "1.5.1", + "image-size": "0.4.0", + "jimp": "0.2.28", + "jsontoxml": "0.0.11", + "merge-defaults": "0.2.1", + "mkdirp": "0.5.1", + "node-rest-client": "1.8.0", + "require-directory": "2.1.1", + "svg2png": "3.0.1", + "through2": "2.0.3", + "tinycolor2": "1.4.1", + "to-ico": "1.1.5", + "underscore": "1.8.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "favicons-webpack-plugin": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/favicons-webpack-plugin/-/favicons-webpack-plugin-0.0.7.tgz", + "integrity": "sha1-JTpGpPk9E30QlnYod/io7xLihkg=", + "dev": true, + "requires": { + "favicons": "4.8.6", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "webpack": "1.15.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "browserify-aes": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", + "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "crypto-browserify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", + "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", + "dev": true, + "requires": { + "browserify-aes": "0.4.0", + "pbkdf2-compat": "2.0.1", + "ripemd160": "0.2.0", + "sha.js": "2.2.6" + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.2.0", + "tapable": "0.1.10" + }, + "dependencies": { + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + } + } + }, + "interpret": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", + "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "memory-fs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "node-libs-browser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", + "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.3.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "ripemd160": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", + "dev": true + }, + "sha.js": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dev": true, + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "watchpack": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", + "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "dev": true, + "requires": { + "async": "0.9.2", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, + "webpack": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", + "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", + "dev": true, + "requires": { + "acorn": "3.3.0", + "async": "1.5.2", + "clone": "1.0.3", + "enhanced-resolve": "0.9.1", + "interpret": "0.6.6", + "loader-utils": "0.2.17", + "memory-fs": "0.3.0", + "mkdirp": "0.5.1", + "node-libs-browser": "0.7.0", + "optimist": "0.6.1", + "supports-color": "3.2.3", + "tapable": "0.1.10", + "uglify-js": "2.7.5", + "watchpack": "0.2.9", + "webpack-core": "0.6.9" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "dev": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "fg-loadcss": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fg-loadcss/-/fg-loadcss-1.3.1.tgz", + "integrity": "sha1-iTDoIJWfqvuyQoUO7sTy0CWUMMs=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "file-exists": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-exists/-/file-exists-2.0.0.tgz", + "integrity": "sha1-okFQZlFQ5i1VvFRJKB2I0rCBDco=", + "dev": true + }, + "file-loader": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", + "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.0.0.tgz", + "integrity": "sha1-vRYiYsC26Uv7zc8Zo7uzdk94VpU=", + "dev": true, + "requires": { + "filename-reserved-regex": "2.0.0", + "strip-outer": "1.0.0", + "trim-repeated": "1.0.0" + } + }, + "filesize": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.5.tgz", + "integrity": "sha1-PCpcFEY5GaIYQ0chRytjzDB0iZI=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "filter-css": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/filter-css/-/filter-css-0.1.2.tgz", + "integrity": "sha1-Sk0BWyGhRamWFxA4+AYMAxV17gk=", + "dev": true, + "requires": { + "css": "2.2.1", + "get-stdin": "5.0.1", + "lodash": "4.17.4", + "meow": "3.7.0", + "update-notifier": "0.7.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "follow-redirects": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.5.tgz", + "integrity": "sha512-lMhwQTryFbG+wYsAIEKC1Kf5IGDlVNnONRogIBllh7LLoV7pNIxW0z9fhjRar9NBql+hd2Y49KboVVNxf6GEfg==", + "requires": { + "debug": "2.6.9" + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-each": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", + "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", + "dev": true, + "requires": { + "is-function": "1.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "1.1.14" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "1.1.3" + } + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "getos": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/getos/-/getos-2.8.4.tgz", + "integrity": "sha1-e4YD02GcKOOMsP56T2PDrLgNUWM=", + "dev": true, + "requires": { + "async": "2.1.4" + }, + "dependencies": { + "async": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", + "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "3.0.1", + "glob": "5.0.15", + "glob-parent": "3.1.0", + "micromatch": "2.3.11", + "ordered-read-streams": "0.3.0", + "through2": "0.6.5", + "to-absolute-glob": "0.1.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "global-dirs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz", + "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=", + "dev": true, + "requires": { + "ini": "1.3.4" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "group-args": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/group-args/-/group-args-0.1.0.tgz", + "integrity": "sha1-5MXtYei+hH5/0aFCpqnfrESK2+M=", + "dev": true, + "requires": { + "lodash": "4.17.4", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "dev": true, + "requires": { + "convert-source-map": "1.5.0", + "graceful-fs": "4.1.11", + "strip-bom": "2.0.0", + "through2": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.0" + } + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "harmony-reflect": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.5.1.tgz", + "integrity": "sha1-tUymF7AMyK71Wbuxez2FQx3H4yk=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "has-own-property-x": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/has-own-property-x/-/has-own-property-x-3.2.0.tgz", + "integrity": "sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ==", + "requires": { + "cached-constructors-x": "1.0.0", + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "has-symbol-support-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", + "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==" + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "1.4.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hash/-/hash-0.2.0.tgz", + "integrity": "sha1-l4ZU+nI7ElLuqETlYMOTHa0nKJs=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + }, + "html-critical-webpack-plugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-critical-webpack-plugin/-/html-critical-webpack-plugin-1.0.1.tgz", + "integrity": "sha1-mvqkbhmxwoL1RB2zsdr4/R0oYuc=", + "dev": true, + "requires": { + "critical": "0.9.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.6.tgz", + "integrity": "sha512-88FjtKrlak2XjczhxrBomgzV4jmGzM3UnHRBScRkJcmcRum0kb+IwhVAETJ8AVp7j0p3xugjSaw9L+RmI5/QOA==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.11.0", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.1.9" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.9.tgz", + "integrity": "sha512-ari2E89bD7f+fMU173NgF12JBcOhgoxeyuCs97h5K58IBENrnG9eVj2lFadrOPdqf0KifsxVmUQfzA2cHNxCZQ==", + "dev": true, + "requires": { + "commander": "2.11.0", + "source-map": "0.6.1" + } + } + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.6", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-server": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.10.0.tgz", + "integrity": "sha1-sqRGsWqduH7TxiK6m+sbCFsSNKc=", + "dev": true, + "requires": { + "colors": "1.0.3", + "corser": "2.0.1", + "ecstatic": "2.2.1", + "http-proxy": "1.16.2", + "opener": "1.4.3", + "optimist": "0.6.1", + "portfinder": "1.0.13", + "union": "0.4.6" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "6.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "image-size": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.4.0.tgz", + "integrity": "sha1-1LTh9hlS5MvBzqmmsMkV/stwdRA=", + "dev": true + }, + "imageinliner": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/imageinliner/-/imageinliner-0.2.4.tgz", + "integrity": "sha1-EQ8LstQKEZaPyz202Fohr949v00=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "css-stringify": "1.4.1", + "mime": "1.2.11", + "mkdirp": "0.3.5", + "optimist": "0.6.1" + }, + "dependencies": { + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true + }, + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true + } + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "infinity-x": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/infinity-x/-/infinity-x-1.0.0.tgz", + "integrity": "sha512-wjy2TupBtZ+aAniKt+xs/PO0xOkuaL6wBysUKbgD7aL1PMW/qY5xXDG59zXZ7dU+gk3zwXOu4yIEWPCEFBTgHQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "inline-critical": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/inline-critical/-/inline-critical-2.4.2.tgz", + "integrity": "sha1-1PH9bO+MMuK34mjfbtw1xK6bFFc=", + "dev": true, + "requires": { + "cave": "2.0.0", + "cheerio": "0.22.0", + "clean-css": "4.1.9", + "css": "2.2.1", + "detect-indent": "5.0.0", + "dom-serializer": "0.1.0", + "fg-loadcss": "1.3.1", + "get-stdin": "5.0.1", + "indent-string": "3.1.0", + "lodash": "4.17.4", + "meow": "3.7.0", + "normalize-newline": "3.0.0", + "reaver": "2.0.0", + "resolve": "1.3.3", + "slash": "1.0.0", + "uglify-js": "3.1.9" + }, + "dependencies": { + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.0", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "indent-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", + "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", + "dev": true + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.9.tgz", + "integrity": "sha512-ari2E89bD7f+fMU173NgF12JBcOhgoxeyuCs97h5K58IBENrnG9eVj2lFadrOPdqf0KifsxVmUQfzA2cHNxCZQ==", + "dev": true, + "requires": { + "commander": "2.11.0", + "source-map": "0.6.1" + } + } + } + }, + "inline-process-browser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/inline-process-browser/-/inline-process-browser-1.0.0.tgz", + "integrity": "sha1-RqYbFT3TybFiSxoAYm7bT39BTyI=", + "requires": { + "falafel": "1.2.0", + "through2": "0.6.5" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.0.5", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", + "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "dev": true + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "0.1.3" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-array-buffer-x": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/is-array-buffer-x/-/is-array-buffer-x-1.7.0.tgz", + "integrity": "sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw==", + "requires": { + "attempt-x": "1.1.1", + "has-to-string-tag-x": "1.4.1", + "is-object-like-x": "1.6.0", + "object-get-own-property-descriptor-x": "3.2.0", + "to-string-tag-x": "1.4.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", + "dev": true + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.1.1" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-falsey-x": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-falsey-x/-/is-falsey-x-1.0.1.tgz", + "integrity": "sha512-XWNZC4A+3FX1ECoMjspuEFgSdio82IWjqY/suE0gZ10QA7nzHd/KraRq7Tc5VEHtFRgTRyTdY6W+ykPrDnyoAQ==", + "requires": { + "to-boolean-x": "1.0.1" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-finite-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-finite-x/-/is-finite-x-3.0.2.tgz", + "integrity": "sha512-HyFrxJZsgmP5RtR1PVlVvHSP4VslZOqr4uoq4x3rDrSOFaYp4R9tfmiWtAzQxPzixXhac3cYEno3NuVn0OHk2Q==", + "requires": { + "infinity-x": "1.0.0", + "is-nan-x": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, + "is-function-x": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is-function-x/-/is-function-x-3.3.0.tgz", + "integrity": "sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg==", + "requires": { + "attempt-x": "1.1.1", + "has-to-string-tag-x": "1.4.1", + "is-falsey-x": "1.0.1", + "is-primitive": "2.0.0", + "normalize-space-x": "3.0.0", + "replace-comments-x": "2.0.0", + "to-boolean-x": "1.0.1", + "to-string-tag-x": "1.4.2" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "dev": true + }, + "is-index-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-index-x/-/is-index-x-1.1.0.tgz", + "integrity": "sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A==", + "requires": { + "math-clamp-x": "1.2.0", + "max-safe-integer": "1.0.1", + "to-integer-x": "3.0.0", + "to-number-x": "2.0.0", + "to-string-symbols-supported-x": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.0", + "is-path-inside": "1.0.0" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-nan-x": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-nan-x/-/is-nan-x-1.0.1.tgz", + "integrity": "sha512-VfNJgfuT8USqKCYQss8g7sFvCzDnL+OOVMQoXhVoulZAyp0ZTj3oyZaaPrn2dxepAkKSQI2BiKHbBabX1DqVtw==" + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", + "dev": true + }, + "is-nil-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/is-nil-x/-/is-nil-x-1.4.1.tgz", + "integrity": "sha512-cfTKWI5iSR04SSCzzugTH5tS2rYG7kwI8yl/AqWkyuxZ7k55cbA47Y7Lezdg1N9aaELd+UxLg628bdQeNQ6BUw==", + "requires": { + "lodash.isnull": "3.0.0", + "validate.io-undefined": "1.0.3" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-object-like-x": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/is-object-like-x/-/is-object-like-x-1.6.0.tgz", + "integrity": "sha512-mc3dBMv1jEOdk0f1i2RkJFsZDux0MuHqGwHOoRo770ShUOf4VE6tWThAW8dAZARr9a5RN+iNX1yzMDA5ad1clQ==", + "requires": { + "is-function-x": "3.3.0", + "is-primitive": "2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, + "is-tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "is-zip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, + "jimp": { + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz", + "integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=", + "dev": true, + "requires": { + "bignumber.js": "2.4.0", + "bmp-js": "0.0.3", + "es6-promise": "3.3.1", + "exif-parser": "0.1.12", + "file-type": "3.9.0", + "jpeg-js": "0.2.0", + "load-bmfont": "1.3.0", + "mime": "1.4.1", + "mkdirp": "0.5.1", + "pixelmatch": "4.0.2", + "pngjs": "3.3.0", + "read-chunk": "1.0.1", + "request": "2.81.0", + "stream-to-buffer": "0.1.0", + "tinycolor2": "1.4.1", + "url-regex": "3.2.0" + }, + "dependencies": { + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + } + } + }, + "jpeg-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz", + "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=", + "dev": true + }, + "js-base64": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", + "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jschardet": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz", + "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsontoxml": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/jsontoxml/-/jsontoxml-0.0.11.tgz", + "integrity": "sha1-Nzq1sgcL43N6X7PjL9G3uBhwyqQ=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "requires": { + "base62": "1.2.1", + "commoner": "0.10.8", + "esprima-fb": "15001.1.0-dev-harmony-fb", + "object-assign": "2.1.1", + "source-map": "0.4.4" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" + } + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "dev": true, + "requires": { + "core-js": "2.3.0", + "es6-promise": "3.0.2", + "lie": "3.1.1", + "pako": "1.0.6", + "readable-stream": "2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "jwk-to-pem": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-1.2.6.tgz", + "integrity": "sha1-1QfOzkAInFJI4J7GgmaiAwqcYyU=", + "requires": { + "asn1.js": "4.9.2", + "elliptic": "6.4.0", + "safe-buffer": "5.1.1" + } + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "dev": true + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true, + "requires": { + "package-json": "2.4.0" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "3.0.6" + } + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.2.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.2", + "stream-to-observable": "0.1.0", + "strip-ansi": "3.0.1" + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" + } + }, + "load-bmfont": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.3.0.tgz", + "integrity": "sha1-u358cQ3mvK/LE8s7jIHgwBMey8k=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "mime": "1.4.1", + "parse-bmfont-ascii": "1.0.6", + "parse-bmfont-binary": "1.0.6", + "parse-bmfont-xml": "1.1.3", + "xhr": "2.4.0", + "xtend": "4.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash-webpack-plugin": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/lodash-webpack-plugin/-/lodash-webpack-plugin-0.11.4.tgz", + "integrity": "sha1-bD7Lo9S40ktTlAtjVCcVxe08SsU=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isnull": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnull/-/lodash.isnull-3.0.0.tgz", + "integrity": "sha1-+vvlnqHcon7teGU0A53YTC4HxW4=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.last": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz", + "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "lodash.partialright": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", + "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.result": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.result/-/lodash.result-4.5.2.tgz", + "integrity": "sha1-y0Wyf7kU6qjY7m8M57KHC4fLcKo=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + } + }, + "loglevel": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.0.tgz", + "integrity": "sha1-rgyqVhERSYxboTcj1vtjHSQAOTQ=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "material-colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.5.tgz", + "integrity": "sha1-UpJZPmdUyxvMK5gDDk4Najr8nqE=" + }, + "math-clamp-x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/math-clamp-x/-/math-clamp-x-1.2.0.tgz", + "integrity": "sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg==", + "requires": { + "to-number-x": "2.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + }, + "math-sign-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/math-sign-x/-/math-sign-x-3.0.0.tgz", + "integrity": "sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ==", + "requires": { + "is-nan-x": "1.0.1", + "to-number-x": "2.0.0" + } + }, + "max-safe-integer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/max-safe-integer/-/max-safe-integer-1.0.1.tgz", + "integrity": "sha1-84BgvixWPYwC5tSK85Ei/YO29BA=" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-defaults": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/merge-defaults/-/merge-defaults-0.2.1.tgz", + "integrity": "sha1-3UIkjrlrtqUVIXJDIccv+Vg93oA=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "0.1.1" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mississippi": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.1", + "end-of-stream": "1.4.0", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.3.5", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.1.1.tgz", + "integrity": "sha1-bn3oalcIcqsXBYrepxYLvsqBTd4=", + "dev": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "multimeter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/multimeter/-/multimeter-0.1.1.tgz", + "integrity": "sha1-+FbID8PPDx1K2Os2rWhzXj7Vs+o=", + "dev": true, + "requires": { + "charm": "0.1.2" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true + }, + "nan-x": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nan-x/-/nan-x-1.0.0.tgz", + "integrity": "sha512-yw4Fhe2/UTzanQ4f0yHWkRnfTuHZFAi4GZDjXS4G+qv5BqXTqPJBbSxpa7MyyW9v4Y4ZySZQik1vcbNkhdnIOg==" + }, + "native-crypto": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/native-crypto/-/native-crypto-1.8.1.tgz", + "integrity": "sha512-A+nv9MY/ZYxqhB86DQUrLPfbljqMmGhWM0Z3iTgKi9NvBgi4cj4H/7uFA3c2W/rx5M9VOr+zkvQURsAQB/uuPg==", + "requires": { + "asn1.js": "4.9.2", + "bn.js": "4.11.8", + "browserify-aes": "1.1.1", + "browserify-sign": "4.0.4", + "buffer-equal-constant-time": "1.0.1", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "debug": "2.6.9", + "ecdsa-sig-formatter": "1.0.9", + "elliptic": "6.4.0", + "jwk-to-pem": "1.2.6", + "miller-rabin": "4.0.1", + "minimalistic-assert": "1.0.0", + "pbkdf2": "3.0.14", + "pemstrip": "0.0.1", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + } + } + }, + "node-rest-client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/node-rest-client/-/node-rest-client-1.8.0.tgz", + "integrity": "sha1-jTxWa4F+JzlMtyc3g6Qcrv4+WVU=", + "dev": true, + "requires": { + "debug": "2.2.0", + "xml2js": "0.4.19" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.6.1.tgz", + "integrity": "sha512-0zQQ7tjEK5W8RfW9LiQrkzfo7uLZ0QtZGV69rdKn5cFzdweHLJ14lR6xLPvI6UimkXMO8m0qDsXwUCNdnqV3sA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.8.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.81.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0" + }, + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-3.0.0.tgz", + "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-space-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-space-x/-/normalize-space-x-3.0.0.tgz", + "integrity": "sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ==", + "requires": { + "cached-constructors-x": "1.0.0", + "trim-x": "3.0.0", + "white-space-x": "3.0.0" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "1.1.11", + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "null-loader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", + "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nw": { + "version": "0.26.6", + "resolved": "https://registry.npmjs.org/nw/-/nw-0.26.6.tgz", + "integrity": "sha512-16pYQ4V8GHxSoalRqq2YaN+IqA5/CDtWfpxmoTLRSyEVWg5xvl1c1PfAJLpEJofZKfRs1pVO7MDRNU3cBlOIJw==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "decompress": "3.0.0", + "download": "5.0.3", + "file-exists": "2.0.0", + "merge": "1.2.0", + "multimeter": "0.1.1", + "rimraf": "2.6.2", + "semver": "5.4.1", + "yargs": "3.32.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/object/-/object-0.1.1.tgz", + "integrity": "sha1-HgLO3orh81iqqHKtdUv2QNd6IsI=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "object-get-own-property-descriptor-x": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/object-get-own-property-descriptor-x/-/object-get-own-property-descriptor-x-3.2.0.tgz", + "integrity": "sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg==", + "requires": { + "attempt-x": "1.1.1", + "has-own-property-x": "3.2.0", + "has-symbol-support-x": "1.4.1", + "is-falsey-x": "1.0.1", + "is-index-x": "1.1.0", + "is-primitive": "2.0.0", + "is-string": "1.0.4", + "property-is-enumerable-x": "1.1.0", + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "object-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "offline-plugin": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/offline-plugin/-/offline-plugin-4.8.4.tgz", + "integrity": "sha1-EITFn2YGve1e5aa/YgjiufW90zk=", + "requires": { + "deep-extend": "0.4.2", + "ejs": "2.5.7", + "loader-utils": "0.2.17", + "minimatch": "3.0.4", + "slash": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "oust": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/oust/-/oust-0.4.0.tgz", + "integrity": "sha1-T80YEo+jXLH4VFXml/vSeNiATpI=", + "dev": true, + "requires": { + "cheerio": "0.19.0", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", + "dev": true + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", + "dev": true + }, + "parse-bmfont-xml": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz", + "integrity": "sha1-1rZqNxr9OcUAfZ8O6yYqTyzOe3w=", + "dev": true, + "requires": { + "xml-parse-from-string": "1.0.1", + "xml2js": "0.4.19" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "dev": true, + "requires": { + "for-each": "0.3.2", + "trim": "0.0.1" + } + }, + "parse-int-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-int-x/-/parse-int-x-2.0.0.tgz", + "integrity": "sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg==", + "requires": { + "cached-constructors-x": "1.0.0", + "nan-x": "1.0.0", + "to-string-x": "1.4.2", + "trim-left-x": "3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-png": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-1.1.2.tgz", + "integrity": "sha1-9cKtfHmTSQmGAgooTBmu5FlxH/I=", + "dev": true, + "requires": { + "pngjs": "3.3.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, + "pbkdf2-compat": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", + "dev": true + }, + "pemstrip": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pemstrip/-/pemstrip-0.0.1.tgz", + "integrity": "sha1-OfcHFyDPoT1ULJvedfH6W/nQiAY=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "penthouse": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/penthouse/-/penthouse-0.11.13.tgz", + "integrity": "sha1-RjHmAWpgd/OdC/o4Iq7rb+t1t0Q=", + "dev": true, + "requires": { + "apartment": "1.1.1", + "css-fork-pocketjoso": "2.2.1", + "css-mediaquery": "0.1.2", + "jsesc": "1.3.0", + "os-tmpdir": "1.0.2", + "phantomjs-prebuilt": "2.1.16", + "regenerator-runtime": "0.10.5", + "tmp": "0.0.31" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "phantomjs-prebuilt": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", + "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", + "dev": true, + "requires": { + "es6-promise": "4.1.1", + "extract-zip": "1.6.5", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.81.0", + "request-progress": "2.0.1", + "which": "1.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true, + "requires": { + "throttleit": "1.0.0" + } + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dev": true, + "requires": { + "pngjs": "3.3.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", + "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", + "dev": true + }, + "pngjs": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.0.tgz", + "integrity": "sha1-H1cwwYnJSTO4G+2iqy+OKFUmOo8=", + "dev": true + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + } + }, + "postcss-image-inliner": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-inliner/-/postcss-image-inliner-1.0.6.tgz", + "integrity": "sha1-48dgX9k00EpDC3WoQtSRvnUoRtU=", + "dev": true, + "requires": { + "asset-resolver": "0.3.3", + "bluebird": "3.4.7", + "debug": "2.6.1", + "filesize": "3.5.5", + "lodash.defaults": "4.2.0", + "lodash.escaperegexp": "4.1.2", + "lodash.isstring": "4.0.1", + "lodash.last": "3.0.0", + "lodash.map": "4.6.0", + "lodash.partialright": "4.2.1", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.result": "4.5.2", + "mime": "1.3.4", + "object-hash": "1.1.5", + "postcss": "5.2.15", + "request": "2.79.0", + "svgo": "0.7.2", + "then-fs": "2.0.0" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.11.0", + "is-my-json-valid": "2.16.1", + "pinkie-promise": "2.0.1" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-hash": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.5.tgz", + "integrity": "sha1-vdhE4DDQhhtpLKF1xsq2ho7CM9c=", + "dev": true + }, + "postcss": { + "version": "5.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.15.tgz", + "integrity": "sha1-qehoXlDgbMWz/epSlycyRsJvWzA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.3.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "requires": { + "postcss": "6.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "pouchdb-adapter-idb": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-idb/-/pouchdb-adapter-idb-6.3.4.tgz", + "integrity": "sha512-pNZjf6Qosno7vhIMxTccOmHGmJ4zwoAA289Gg0twcIYstK24IIDLHqed81gciVQZ5s+/oWsiAX3n6UFMDY967Q==", + "requires": { + "pouchdb-adapter-utils": "6.3.4", + "pouchdb-binary-utils": "6.3.4", + "pouchdb-collections": "6.3.4", + "pouchdb-errors": "6.3.4", + "pouchdb-json": "6.3.4", + "pouchdb-merge": "6.3.4", + "pouchdb-promise": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-adapter-utils": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-6.3.4.tgz", + "integrity": "sha512-YXGpAKsHXl6A4HV+HMUJg7/ebM+ZtiGgQBSgUGuX5HETOaoczEP9yawLpiheAeQ727EeNM9MtVvCPeFFZAmqBA==", + "requires": { + "pouchdb-binary-utils": "6.3.4", + "pouchdb-collections": "6.3.4", + "pouchdb-errors": "6.3.4", + "pouchdb-md5": "6.3.4", + "pouchdb-merge": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-adapter-websql": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-websql/-/pouchdb-adapter-websql-6.3.4.tgz", + "integrity": "sha512-3zha5xwGEOnt6IYDMBrNc6bA81aJIXDxuRWt2mA+86qu+AFhLWJal1bvQ6Xm0IjxTlpA2xS8bhkeG4t6O0c15g==", + "requires": { + "pouchdb-adapter-websql-core": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-adapter-websql-core": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-websql-core/-/pouchdb-adapter-websql-core-6.3.4.tgz", + "integrity": "sha512-vFwlMol2rblLJB8PhPTLuFSyCdKRr+GvnA/LhCkcx9y2Lz1w6qeaOgUS5kWbtQWL5aaWDwyY9Pw6kMSy8wWKpQ==", + "requires": { + "pouchdb-adapter-utils": "6.3.4", + "pouchdb-binary-utils": "6.3.4", + "pouchdb-collections": "6.3.4", + "pouchdb-errors": "6.3.4", + "pouchdb-json": "6.3.4", + "pouchdb-merge": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-binary-utils": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-6.3.4.tgz", + "integrity": "sha512-sjQwbtbg4yb6FOF1LJbdXlOVb2q7VImxxX2+8qsyrRyOzk9AdahTx/Ui4CVBPJO3w5M9HA52X0ou8eCsjtjEcg==", + "requires": { + "buffer-from": "0.1.1" + } + }, + "pouchdb-changes-filter": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-changes-filter/-/pouchdb-changes-filter-6.3.4.tgz", + "integrity": "sha512-6Q9koC6ZalYHjc5zUWw33Gg26CFokU/NoMCkvxgJe1tugquMc3f20Hvi2vjnIdwL2VwTpYcFrxEQ/5SlEGTf6Q==", + "requires": { + "pouchdb-errors": "6.3.4", + "pouchdb-selector-core": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-collate": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-6.3.4.tgz", + "integrity": "sha512-Tk9x+EAXLOvT4uk+63RYsn1K335u0PnBGSQUmynrkYqsVAb0etmuoBzKJinKD8ZprGhuAiFEyu0mZG71+atCJg==" + }, + "pouchdb-collections": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-6.3.4.tgz", + "integrity": "sha512-F+o2SGRO5FZwoURVVcuj1hd94YN9DVr8sD/kg2pXhf2m/nJ2GfMiR4l88h9bh2VYb8BDNU3OQj6gXebzfxSwjA==" + }, + "pouchdb-core": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-core/-/pouchdb-core-6.3.4.tgz", + "integrity": "sha512-5Gfr/F/0u0gW4EW/uNfEDG7nBd1RpvY+hEwqWdbPO4qqeBq6iOQ74FNqHgPykWwKfc5zOevy9w/9nNEXpYMBcQ==", + "requires": { + "argsarray": "0.0.1", + "inherits": "2.0.3", + "pouchdb-changes-filter": "6.3.4", + "pouchdb-collections": "6.3.4", + "pouchdb-debug": "6.3.4", + "pouchdb-errors": "6.3.4", + "pouchdb-merge": "6.3.4", + "pouchdb-promise": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-debug": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-debug/-/pouchdb-debug-6.3.4.tgz", + "integrity": "sha512-K0LtVuzQWA23QcVTkzvbs5uaSWMTg6Fe0vJ/Db+Zm3wb4HbKPQwSkBJVWWM3mOj7di+ioHndh2PaXjIN/lX/mg==", + "requires": { + "debug": "2.6.4" + }, + "dependencies": { + "debug": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", + "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", + "requires": { + "ms": "0.7.3" + } + }, + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" + } + } + }, + "pouchdb-errors": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-6.3.4.tgz", + "integrity": "sha512-w96XRbS6hSFmCt+YmoUA2s6TsP8aUTteZ9BZ/Jjkcv5EdSlHwTKpmaBG5WG3givjCSmfP7+ZMCSDEop2PPcdqg==", + "requires": { + "inherits": "2.0.3" + } + }, + "pouchdb-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pouchdb-extend/-/pouchdb-extend-0.1.2.tgz", + "integrity": "sha1-0c5RG/cE7S4p979CikFqz/+hJLg=" + }, + "pouchdb-json": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-6.3.4.tgz", + "integrity": "sha512-Aqa3rYkbjKYPJO8ZJvdOBUkR8Y65JQKB7+O0krIk79jGOST1rx4phFQWnKRIKEqaHPcunFCf+Esy1qWANQaRsw==", + "requires": { + "vuvuzela": "1.0.3" + } + }, + "pouchdb-md5": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-6.3.4.tgz", + "integrity": "sha512-rd162ZigLEJZ6OotY6EJsM/hbWPTE5Dhr4WHTOJekv59n4Sp0/3Fq/MB5XFFfM6lZFrvuvd9Q6yzHwk4edemLw==", + "requires": { + "pouchdb-binary-utils": "6.3.4", + "spark-md5": "3.0.0" + } + }, + "pouchdb-merge": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-6.3.4.tgz", + "integrity": "sha512-leejoseJNegA/hrEgEs3PeWAX800qM4+MuKYk24Jc2szY3VywinOzHMTv4sPeItRgAC6+9YG8CelC8F58525Jg==" + }, + "pouchdb-promise": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-promise/-/pouchdb-promise-6.3.4.tgz", + "integrity": "sha512-9kgpKXWFuFYJmhP7pjZvPhK9Lof8ipFVIoaZrFQN8HMep9/IdmhyXMUlISHkaNt3l0yWzW8bWYPg3OMocImvHA==", + "requires": { + "lie": "3.1.1" + } + }, + "pouchdb-selector-core": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-6.3.4.tgz", + "integrity": "sha512-7mkBFzN1k7ijp6kZccM20O9CrLWJeF7ZaP2d5yKpK4XSyBhxDGgSDNrmcyBHOmPFjDLrsQmYJVcaADUEXDhJFg==", + "requires": { + "pouchdb-collate": "6.3.4", + "pouchdb-utils": "6.3.4" + } + }, + "pouchdb-utils": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-6.3.4.tgz", + "integrity": "sha512-63mnIL7MX3ciyW1zWRl8OOUHZqRjeB1bC9kbFE+56F3U9T5OHMgkDcTukHRKXSfSnHPXoS+QujU3ups0SYsKIw==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.0.6", + "inherits": "2.0.3", + "pouchdb-collections": "6.3.4", + "pouchdb-errors": "6.3.4", + "pouchdb-promise": "6.3.4", + "uuid": "3.1.0" + } + }, + "pouchdb-wrappers": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pouchdb-wrappers/-/pouchdb-wrappers-1.3.6.tgz", + "integrity": "sha1-8+EbZk6JqbMX54XJYVHMsXNvJdA=", + "requires": { + "promise-nodify": "1.0.2" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "prettier": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.8.2.tgz", + "integrity": "sha512-fHWjCwoRZgjP1rvLP7OGqOznq7xH1sHMQUFLX8qLRO79hI57+6xbc5vB904LxEkCfgFgyr3vv06JkafgCSzoZg==" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-nodify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-nodify/-/promise-nodify-1.0.2.tgz", + "integrity": "sha1-DQ+xQ8M0ALAGG0flgSV1VwR9TFo=" + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "dev": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "property-is-enumerable-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/property-is-enumerable-x/-/property-is-enumerable-x-1.1.0.tgz", + "integrity": "sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A==", + "requires": { + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "inherits": "2.0.3", + "pump": "1.0.3" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qrcode-reader": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz", + "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==" + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha1-w7d1UZfzW43DUCIoJixMkd22uFc=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "read-chunk": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz", + "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "reaver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reaver/-/reaver-2.0.0.tgz", + "integrity": "sha1-epBv61vBvNCFZ/wjUV807LEnQQY=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + } + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-comments-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-comments-x/-/replace-comments-x-2.0.0.tgz", + "integrity": "sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg==", + "requires": { + "require-coercible-to-string-x": "1.0.0", + "to-string-x": "1.4.2" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-progress": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz", + "integrity": "sha1-ByHBBdipasayzossia4tXs/Pazo=", + "dev": true, + "requires": { + "throttleit": "0.0.2" + } + }, + "require-coercible-to-string-x": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.0.tgz", + "integrity": "sha512-Rpfd4sMdflPAKecdKhfAtQHlZzzle4UMUgxJ01hXtTcNWMV8w9GeZnKhEyrT73kgrflBOP1zg41amUPZGcNspA==", + "requires": { + "require-object-coercible-x": "1.4.1", + "to-string-x": "1.4.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-object-coercible-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/require-object-coercible-x/-/require-object-coercible-x-1.4.1.tgz", + "integrity": "sha512-0YHa2afepsLfQvwQ1P2XvDZnGOUia5sC07ZijIRU2dnsRxnuilXWF6B2CFaKGDA9eZl39lJHrXCDsnfgroRd6Q==", + "requires": { + "is-nil-x": "1.4.1" + } + }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resize-img": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/resize-img/-/resize-img-1.1.2.tgz", + "integrity": "sha1-+tZQ+vPvLFPqYxErwnLZXp2SVQ4=", + "dev": true, + "requires": { + "bmp-js": "0.0.1", + "file-type": "3.9.0", + "get-stream": "2.3.1", + "jimp": "0.2.28", + "jpeg-js": "0.1.2", + "parse-png": "1.1.2" + }, + "dependencies": { + "bmp-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.1.tgz", + "integrity": "sha1-WtAUcJnROp84qnuZrx1ueGZu038=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "jpeg-js": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz", + "integrity": "sha1-E1uZLAV1yYXPoPSUoyJ+0jhYPs4=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "rxjs": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz", + "integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==", + "dev": true, + "requires": { + "symbol-observable": "1.0.4" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "sass-loader": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.3.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.3.2", + "source-map": "0.4.4" + } + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "dev": true, + "requires": { + "node-forge": "0.6.33" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.4.1" + } + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, + "spark-md5": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz", + "integrity": "sha1-NyIifFTi+vJLHcbZM8wUTm9xv+8=" + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ssri": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", + "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz", + "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=", + "dev": true + }, + "stream-to-buffer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", + "integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=", + "dev": true, + "requires": { + "stream-to": "0.2.2" + } + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "dev": true, + "requires": { + "first-chunk-stream": "1.0.0", + "strip-bom": "2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "get-stdin": "4.0.1", + "is-absolute": "0.1.7", + "is-natural-number": "2.1.1", + "minimist": "1.2.0", + "sum-up": "1.0.3" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", + "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "style-loader": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.0.tgz", + "integrity": "sha512-9mx9sC9nX1dgP96MZOODpGC6l1RzQBITI2D5WJhu+wnbrSYVKLGuy14XJSLVQih/0GFrPpjelt+s//VcZQ2Evw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "svg2png": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg2png/-/svg2png-3.0.1.tgz", + "integrity": "sha1-omRNaLAjGsAK9DGqFjcU/xcQZEc=", + "dev": true, + "requires": { + "phantomjs-prebuilt": "2.1.16", + "pn": "1.0.0", + "yargs": "3.32.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "requires": { + "temp-dir": "1.0.0", + "uuid": "3.1.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "then-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", + "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "dev": true, + "requires": { + "promise": "7.3.1" + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "dev": true + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "requires": { + "setimmediate": "1.0.5" + } + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-boolean-x": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-boolean-x/-/to-boolean-x-1.0.1.tgz", + "integrity": "sha512-PstxY3K6hVEHnY3FITs8XBoJbt0RI1e4MLIhAL9hWa3BtVLCrb86vU5z6lEKh7uZZjiPiLqIKMmfMro1nNgtXQ==" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-ico": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/to-ico/-/to-ico-1.1.5.tgz", + "integrity": "sha512-5kIh7m7bkIlqIESEZkL8gAMMzucXKfPe3hX2FoDY5HEAfD9OJU+Qh9b6Enp74w0qRcxVT5ejss66PHKqc3AVkg==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "buffer-alloc": "1.1.0", + "image-size": "0.5.5", + "parse-png": "1.1.2", + "resize-img": "1.1.2" + }, + "dependencies": { + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true + } + } + }, + "to-integer-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-integer-x/-/to-integer-x-3.0.0.tgz", + "integrity": "sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w==", + "requires": { + "is-finite-x": "3.0.2", + "is-nan-x": "1.0.1", + "math-sign-x": "3.0.0", + "to-number-x": "2.0.0" + } + }, + "to-number-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-number-x/-/to-number-x-2.0.0.tgz", + "integrity": "sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ==", + "requires": { + "cached-constructors-x": "1.0.0", + "nan-x": "1.0.0", + "parse-int-x": "2.0.0", + "to-primitive-x": "1.1.0", + "trim-x": "3.0.0" + } + }, + "to-object-x": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/to-object-x/-/to-object-x-1.5.0.tgz", + "integrity": "sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA==", + "requires": { + "cached-constructors-x": "1.0.0", + "require-object-coercible-x": "1.4.1" + } + }, + "to-primitive-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-primitive-x/-/to-primitive-x-1.1.0.tgz", + "integrity": "sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ==", + "requires": { + "has-symbol-support-x": "1.4.1", + "is-date-object": "1.0.1", + "is-function-x": "3.3.0", + "is-nil-x": "1.4.1", + "is-primitive": "2.0.0", + "is-symbol": "1.0.1", + "require-object-coercible-x": "1.4.1", + "validate.io-undefined": "1.0.3" + } + }, + "to-property-key-x": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-property-key-x/-/to-property-key-x-2.0.2.tgz", + "integrity": "sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg==", + "requires": { + "has-symbol-support-x": "1.4.1", + "to-primitive-x": "1.1.0", + "to-string-x": "1.4.2" + } + }, + "to-string-symbols-supported-x": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.0.tgz", + "integrity": "sha512-HbVH673pybrUmhzESGHUm17BBJvqb7BU8HciOvuEYm9ipuDyjmddhvkVqpVW6sM/C5/zhJo17n7O7I/24loJIQ==", + "requires": { + "cached-constructors-x": "1.0.0", + "has-symbol-support-x": "1.4.1", + "is-symbol": "1.0.1" + } + }, + "to-string-tag-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/to-string-tag-x/-/to-string-tag-x-1.4.2.tgz", + "integrity": "sha512-ytO9eLigxsQQLGuab0C1iSSTzKdJNVSlBg0Spg4J/rGAVrQJ5y774mo0SSzgGeTT4RJGGyJNfObXaTMzX0XDOQ==", + "requires": { + "lodash.isnull": "3.0.0", + "validate.io-undefined": "1.0.3" + } + }, + "to-string-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/to-string-x/-/to-string-x-1.4.2.tgz", + "integrity": "sha512-/WP5arlwtCpAAexCCHiQBW0eXwse84osWyP1Qtaz71nsYSuUpOkT6tBm8nQ4IIUfSh5hji0hDupUCD2xbbOL6A==", + "requires": { + "is-symbol": "1.0.1" + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "transform-pouch": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/transform-pouch/-/transform-pouch-1.1.4.tgz", + "integrity": "sha512-YRiWhJxrzXyj9JfqkpYoIAJ3EtlNVfxldTo8NsPsbNHEIv5F8duWrAPeLujzXrb3Nmi+b9M2jVWj44oJBvxzqw==", + "requires": { + "argsarray": "0.0.1", + "es3ify": "0.2.2", + "immediate": "3.0.6", + "inherits": "2.0.1", + "lie": "3.0.4", + "pouchdb-extend": "0.1.2", + "pouchdb-promise": "5.4.3", + "pouchdb-wrappers": "1.3.6" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "lie": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.0.4.tgz", + "integrity": "sha1-vHrh6+fxyN45r9zU94kHa0ew9jQ=", + "requires": { + "es3ify": "0.2.2", + "immediate": "3.0.6", + "inline-process-browser": "1.0.0", + "unreachable-branch-transform": "0.3.0" + } + }, + "pouchdb-promise": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/pouchdb-promise/-/pouchdb-promise-5.4.3.tgz", + "integrity": "sha1-Mx1nCxmJ1aA/JogRIU8n9UFQyys=", + "requires": { + "lie": "3.0.4" + } + } + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-left-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-left-x/-/trim-left-x-3.0.0.tgz", + "integrity": "sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ==", + "requires": { + "cached-constructors-x": "1.0.0", + "require-coercible-to-string-x": "1.0.0", + "white-space-x": "3.0.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "trim-right-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-right-x/-/trim-right-x-3.0.0.tgz", + "integrity": "sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA==", + "requires": { + "cached-constructors-x": "1.0.0", + "require-coercible-to-string-x": "1.0.0", + "white-space-x": "3.0.0" + } + }, + "trim-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-x/-/trim-x-3.0.0.tgz", + "integrity": "sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw==", + "requires": { + "trim-left-x": "3.0.0", + "trim-right-x": "3.0.0" + } + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, + "uglify-es": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.0.tgz", + "integrity": "sha512-eD4rjK4o6rzrvE1SMZJLQFEVMnWRUyIu6phJ0BXk5TIthMmP5B4QP0HI8o3bkQB5wf1N4WHA0leZAQyQBAd+Jg==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + }, + "uglifyjs-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-k07cmJTj+8vZMSc3BaQ9uW7qVl2MqDts4ti4KaNACXEcXSw2vQM2S8olSk/CODxvcSFGvUHzNSqA8JQlhgUJPw==", + "dev": true, + "requires": { + "cacache": "10.0.1", + "find-cache-dir": "1.0.0", + "schema-utils": "0.3.0", + "source-map": "0.6.1", + "uglify-es": "3.2.0", + "webpack-sources": "1.0.2", + "worker-farm": "1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "ultron": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", + "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", + "dev": true + }, + "unbzip2-stream": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", + "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", + "dev": true, + "requires": { + "buffer": "3.6.0", + "through": "2.3.8" + }, + "dependencies": { + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "buffer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "union": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz", + "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=", + "dev": true, + "requires": { + "qs": "2.3.3" + }, + "dependencies": { + "qs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", + "dev": true + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unreachable-branch-transform": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz", + "integrity": "sha1-2ZzExudG0mSSiEW2EdtUsPNHTKo=", + "requires": { + "esmangle-evaluator": "1.0.1", + "recast": "0.10.43", + "through2": "0.6.5" + }, + "dependencies": { + "ast-types": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.15.tgz", + "integrity": "sha1-ju8IJ/BN/w7IhXupJavj/qYZTlI=" + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "recast": { + "version": "0.10.43", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.43.tgz", + "integrity": "sha1-uV1Q9tYHYaX2JS4V2AZ4FoSRzn8=", + "requires": { + "ast-types": "0.8.15", + "esprima-fb": "15001.1001.0-dev-harmony-fb", + "private": "0.1.8", + "source-map": "0.5.7" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.7.0.tgz", + "integrity": "sha1-FDxFMzg9CJCO9wVGIGOV/htauwY=", + "dev": true, + "requires": { + "ansi-align": "1.1.0", + "boxen": "0.5.1", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-join": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.2.tgz", + "integrity": "sha1-wHJ1aWetJLi1nldBVRyqx49QuLc=", + "dev": true + }, + "url-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.4.1", + "schema-utils": "0.3.0" + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "dev": true, + "requires": { + "ip-regex": "1.0.3" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "validate.io-undefined": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-undefined/-/validate.io-undefined-1.0.3.tgz", + "integrity": "sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vee-validate": { + "version": "2.0.0-rc.21", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-2.0.0-rc.21.tgz", + "integrity": "sha512-KryCEZcfYKuB6EAWQXYfK38C0nPagbmPLyh5CrXSbt8vsLjjUCHXENxyuzKdu545c6mt+TnR2nlYjR72gKbqKg==" + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "glob-stream": "5.3.5", + "graceful-fs": "4.1.11", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "0.3.0", + "lazystream": "1.0.0", + "lodash.isequal": "4.5.0", + "merge-stream": "1.0.1", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "readable-stream": "2.3.3", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "through2": "2.0.3", + "through2-filter": "2.0.0", + "vali-date": "1.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "vue": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.3.tgz", + "integrity": "sha512-C8O5ZtR9jpwm6sCre3k42/WvuAcil5hH1+c3mJks8kNCYKh57sQh6I5U7m9L0fD89OKkIofmebUORngZkLedNA==" + }, + "vue-color": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/vue-color/-/vue-color-2.4.2.tgz", + "integrity": "sha1-qhL/W8UzmucEYSuKlO6+UntWfdw=", + "requires": { + "lodash.throttle": "4.1.1", + "material-colors": "1.2.5", + "tinycolor2": "1.4.1" + } + }, + "vue-hot-reload-api": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.3.tgz", + "integrity": "sha512-LNdf9SYan0S8DurNuMzBE6yZGI8B42CRvpm7OtyH3OkhYYlNZOqcLAYsPszsxKnLfo5p93Oszw4qSwbHTJdrow==" + }, + "vue-i18n": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-7.3.2.tgz", + "integrity": "sha512-4NBhqrH4Pe1etecC2aafXEKH9gJY+TaO4EHYZ0EBYPwFakUp4FyDHHf+r2N1keSX60iEm1k25WcVMD+OxAH/yw==" + }, + "vue-loader": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.5.0.tgz", + "integrity": "sha512-O0+ZU1oyLlDXSAQB7pV/pwVt3wJLfyhXtnGpCVFBGMKGC0Yp9Un7ULFHKejrFEYaMBKY0s6h4iJzjMdSngNA2g==", + "requires": { + "consolidate": "0.14.5", + "hash-sum": "1.0.2", + "loader-utils": "1.1.0", + "lru-cache": "4.1.1", + "postcss": "6.0.14", + "postcss-load-config": "1.2.0", + "postcss-selector-parser": "2.2.3", + "prettier": "1.8.2", + "resolve": "1.5.0", + "source-map": "0.6.1", + "vue-hot-reload-api": "2.2.3", + "vue-style-loader": "3.0.3", + "vue-template-es2015-compiler": "1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", + "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "4.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "vue-multiselect": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.0.6.tgz", + "integrity": "sha1-fKgObFPbQeQUv3ama5N33fRlnr0=" + }, + "vue-router": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.1.tgz", + "integrity": "sha512-vLLoY452L+JBpALMP5UHum9+7nzR9PeIBCghU9ZtJ1eWm6ieUI8Zb/DI3MYxH32bxkjzYV1LRjNv4qr8d+uX/w==" + }, + "vue-style-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.3.tgz", + "integrity": "sha512-P/ihpaZKU23T1kq3E0y4c+F8sbm1HQO69EFYoLoGMSGVAHroHsGir/WQ9qUavP8dyFYHmXenzHaJ/nqd8vfaxw==", + "requires": { + "hash-sum": "1.0.2", + "loader-utils": "1.1.0" + } + }, + "vue-template-compiler": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.3.tgz", + "integrity": "sha512-C7yWPyT8ZPyXv9AL1eZEZSp72qDHGSgfD80Rf2A9s2vKmMbUuRInfsDsOfYtoiN2hK4hMGMQ71xaZs2e8RnucQ==", + "dev": true, + "requires": { + "de-indent": "1.0.2", + "he": "1.1.1" + } + }, + "vue-template-es2015-compiler": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==" + }, + "vuex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz", + "integrity": "sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w==" + }, + "vuex-router-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-5.0.0.tgz", + "integrity": "sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w==" + }, + "vuvuzela": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz", + "integrity": "sha1-O+FF5YJxxzylUnndhR8SpoIRSws=" + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webpack": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", + "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.4", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.2", + "yargs": "8.0.2" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.1.tgz", + "integrity": "sha512-a+UcvlsXvCmclNgfThT8PVyuJKd029By7CxkYEbNNCfs0Lqj9gagjkdv3S3MBvCIKBaUGYs8l4UpiVI0bFoh2Q==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "chalk": "1.1.3", + "commander": "2.11.0", + "ejs": "2.5.7", + "express": "4.16.2", + "filesize": "3.5.11", + "gzip-size": "3.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "opener": "1.4.3", + "ws": "3.3.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", + "dev": true + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.4.4" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", + "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.4.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + }, + "dependencies": { + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", + "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.0", + "yargs": "6.6.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-sources": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz", + "integrity": "sha512-Y7UddMCv6dGjy81nBv6nuQeFFIt5aalHm7uyDsAsW86nZwfOVPGRr3XMjEQLaT+WKo8rlzhC9qtbJvYKLtAwaw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "white-space-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/white-space-x/-/white-space-x-3.0.0.tgz", + "integrity": "sha512-nMPVXGMdi/jQepXKryxqzEh/vCwdOYY/u6NZy40glMHvZfEr7/+vQKnDhEq4rZ1nniOFq9GWohQYB30uW/5Olg==" + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "ws": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.1.tgz", + "integrity": "sha512-8A/uRMnQy8KCQsmep1m7Bk+z/+LIkeF7w+TDMLtX1iZm5Hq9HsUDmgFGaW1ACW5Cj0b2Qo7wCvRhYN2ErUVp/A==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.0" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "xhr": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz", + "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=", + "dev": true, + "requires": { + "global": "4.3.2", + "is-function": "1.0.1", + "parse-headers": "2.0.1", + "xtend": "4.0.1" + } + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.4" + } + }, + "xmlbuilder": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz", + "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, + "yauzl": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz", + "integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "fd-slicer": "1.0.1" + } + } + } +} diff --git a/clients/binsa/package.json b/clients/binsa/package.json new file mode 100644 index 0000000..fd95bb1 --- /dev/null +++ b/clients/binsa/package.json @@ -0,0 +1,107 @@ +{ + "name": "binsa", + "title": "Eclipse Unide Sensor Simulator App", + "version": "2.0.3", + "description": "Eclipse Unide Sensor Simulator Application", + "main": "index.html", + "dependencies": { + "axios": "^0.17.1", + "babel-runtime": "^6.23.0", + "buefy": "^0.6.1", + "bulma": "^0.6.1", + "crypto-pouch": "^3.1.2", + "css-loader": "^0.28.7", + "es6-promise": "^4.1.1", + "font-awesome": "^4.7.0", + "inherits": "^2.0.3", + "lodash": "^4.17.4", + "offline-plugin": "^4.6.2", + "pouchdb-adapter-idb": "^6.2.0", + "pouchdb-adapter-websql": "^6.3.4", + "pouchdb-core": "^6.2.0", + "pouchdb-utils": "^6.2.0", + "qrcode-reader": "^1.0.4", + "vee-validate": "^2.0.0-rc.21", + "vue": "^2.5.3", + "vue-color": "^2.4.2", + "vue-i18n": "^7.3.2", + "vue-loader": "^13.5.0", + "vue-multiselect": "^2.0.6", + "vue-router": "^3.0.1", + "vue-style-loader": "^3.0.3", + "vuex": "^3.0.1", + "vuex-router-sync": "^5.0.0", + "webpack": "^3.8.1" + }, + "devDependencies": { + "babel-cli": "^6.23.0", + "babel-core": "^6.23.1", + "babel-eslint": "^8.0.2", + "babel-loader": "^7.1.2", + "babel-plugin-lodash": "^3.3.2", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-flow-strip-types": "^6.22.0", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-preset-env": "^1.6.1", + "clean-webpack-plugin": "^0.1.15", + "copy-webpack-plugin": "^4.2.0", + "cypress": "^1.0.3", + "eslint": "^4.11.0", + "eslint-config-standard": "^10.2.1", + "eslint-config-vue": "^2.0.2", + "eslint-loader": "^1.6.3", + "eslint-plugin-babel": "^4.0.1", + "eslint-plugin-html": "^4.0.0", + "eslint-plugin-import": "^2.8.0", + "eslint-plugin-node": "^5.2.1", + "eslint-plugin-promise": "^3.6.0", + "eslint-plugin-standard": "^3.0.1", + "eslint-plugin-vue": "^2.1.0", + "extract-text-webpack-plugin": "^3.0.2", + "favicons-webpack-plugin": "0.0.7", + "file-loader": "^1.1.5", + "html-critical-webpack-plugin": "^1.0.1", + "html-webpack-plugin": "^2.28.0", + "http-server": "^0.10.0", + "json-loader": "^0.5.4", + "jszip": "^3.1.5", + "lodash-webpack-plugin": "^0.11.0", + "node-sass": "^4.6.1", + "null-loader": "^0.1.1", + "nw": "^0.26.6", + "raw-loader": "^0.5.1", + "sass-loader": "^6.0.2", + "style-loader": "^0.19.0", + "uglifyjs-webpack-plugin": "^1.1.2", + "url-loader": "^0.6.2", + "vue-template-compiler": "^2.5.3", + "webpack-bundle-analyzer": "^2.9.1", + "webpack-dev-server": "^2.9.3" + }, + "scripts": { + "preversion": "npm run lint", + "postversion": "git push && git push --tags", + "postinstall": "npm run dist", + "start": "nw dist", + "lint": "node node_modules/eslint/bin/eslint src --ext js,vue", + "watch": "webpack --config ./conf/webpack.prod.js --progress --watch", + "build": "npm run lint && webpack --config ./conf/webpack.prod.js --progress && http-server ./dist -o", + "dist": "npm run lint && webpack --config ./conf/webpack.prod.js --progress", + "dev": "webpack-dev-server --config ./conf/webpack.dev.js", + "analyze": "webpack --config ./conf/webpack.dev.js --profile --json > ./dist/stats.json && webpack-bundle-analyzer ./dist/stats.json ./dist -m static -r ./dist/report.html", + "test": "cypress run -s tests/integration/main_spec.js", + "cypress": "cypress open" + }, + "author": "Axel Meinhardt ", + "license": "EPLv2", + "window": { + "toolbar": false, + "icon": "./icons/android-chrome-128x128.png", + "width": 680, + "height": 720 + }, + "engines": { + "node": ">=8.0", + "npm": ">=5.5.1" + } +} diff --git a/clients/binsa/sandbox.html b/clients/binsa/sandbox.html new file mode 100644 index 0000000..2ca75cc --- /dev/null +++ b/clients/binsa/sandbox.html @@ -0,0 +1,9 @@ + + + + + + + diff --git a/clients/binsa/src/app.vue b/clients/binsa/src/app.vue new file mode 100644 index 0000000..3420366 --- /dev/null +++ b/clients/binsa/src/app.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/clients/binsa/src/background.js b/clients/binsa/src/background.js new file mode 100644 index 0000000..ccdd444 --- /dev/null +++ b/clients/binsa/src/background.js @@ -0,0 +1,19 @@ +if(chrome && chrome.app) { + chrome.app.runtime.onLaunched.addListener(function() { + chrome.app.window.create('index.html', { + outerBounds: { + width: 680, + height: 720 + } + }); + }); +} else if(browser) { + browser.browserAction.onClicked.addListener(() => { + browser.windows.create({ + url: 'index.html', + width: 680, + height: 820, + type: 'panel' + }); + }); +} diff --git a/clients/binsa/src/components/collapsibleCard.vue b/clients/binsa/src/components/collapsibleCard.vue new file mode 100644 index 0000000..0d8900c --- /dev/null +++ b/clients/binsa/src/components/collapsibleCard.vue @@ -0,0 +1,116 @@ + + + + + + diff --git a/clients/binsa/src/components/login.vue b/clients/binsa/src/components/login.vue new file mode 100644 index 0000000..27c13c0 --- /dev/null +++ b/clients/binsa/src/components/login.vue @@ -0,0 +1,94 @@ + + + diff --git a/clients/binsa/src/components/messageForm.vue b/clients/binsa/src/components/messageForm.vue new file mode 100644 index 0000000..22ebdfb --- /dev/null +++ b/clients/binsa/src/components/messageForm.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/clients/binsa/src/components/navbar.vue b/clients/binsa/src/components/navbar.vue new file mode 100644 index 0000000..c862b8e --- /dev/null +++ b/clients/binsa/src/components/navbar.vue @@ -0,0 +1,131 @@ + + + + diff --git a/clients/binsa/src/components/qrField.vue b/clients/binsa/src/components/qrField.vue new file mode 100644 index 0000000..270fe45 --- /dev/null +++ b/clients/binsa/src/components/qrField.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/clients/binsa/src/components/selectLang.vue b/clients/binsa/src/components/selectLang.vue new file mode 100644 index 0000000..88c7b3b --- /dev/null +++ b/clients/binsa/src/components/selectLang.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/clients/binsa/src/components/url.vue b/clients/binsa/src/components/url.vue new file mode 100644 index 0000000..66b3de5 --- /dev/null +++ b/clients/binsa/src/components/url.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/clients/binsa/src/i18n/de.json b/clients/binsa/src/i18n/de.json new file mode 100644 index 0000000..8d1b540 --- /dev/null +++ b/clients/binsa/src/i18n/de.json @@ -0,0 +1,130 @@ +{ + "currentLang": "Aktuelle Sprache", + "notFound": "Die Seite '{path}' wurde nicht gefunden", + "add": "Zufügen", + "edit": "Ändern", + "save": "Speichern", + "delete": "Löschen", + "cancel": "Abbrechen", + "send": "Senden", + "notSupported": "Dieses Feature ist nicht supported in ihrem Browser. Bitte updaten Sie oder nutzen Sie einen anderen Browser.", + "login": { + "title": "Anmeldung", + "user": { + "label": "Benutzer", + "placeholder": "Geben Sie ihren Namen ein" + }, + "password": { + "label": "Passwort", + "placeholder": "Geben Sie ihr Passwort ein" + }, + "remember": "Eingeloggt bleiben", + "login": "Anmelden", + "anonymous": "Anonym weiter", + "confirmation": { + "title": "Bestätigung benötigt", + "message": "Es gibt bereits einen Eintrag für '{name}'. Soll der überschrieben werden?", + "cancelText": "nein, doch nicht", + "ok": "ja, überschreiben", + "confirmed": "Eintrag '{name}' geöffnet!" + } + }, + "about": { + "about": "Über die Anwendung", + "title": "Name", + "description": "Beschreibung", + "author": "Autor", + "version": "Version", + "license": "Lizenz", + "source": "Quellcode", + "repository": "Repository", + "licenses": "Verwendete Bibliotheken & Lizenzen" + }, + "home": { + "title": "Dies ist ein Client und Service, um PPMP Nachrichten zu validieren", + "subtitle": "Die folgenden Schnittstellen sind verfügbar" + }, + "ppmp": { + "title": "PPMP Server", + "target": "Ziel", + "config": "Konfiguration", + "device": "Geräte Id", + "operationalStatus": "Betriebszustand", + "measurements": { + "title": "Messwerte", + "sensor": "Sensor", + "sensors": "Sensoren", + "value": "Wert", + "alias": "Alias Name", + "assign": "Zuweisen", + "deleted": "Gelöscht", + "notDeleted": "Löschen fehlgeschlagen", + "saved": "Gespeichert", + "notSaved": "Speichern fehlgeschlagen", + "translate": "Weise '{name}' einen Namen zu", + "sensorNames": { + "motion": "Bewegung", + "orientation": "Ausrichtung", + "battery": "Batterie", + "position": "Position", + "cpu": "Prozessor", + "mem": "Arbeitsspeicher" + }, + "selected": "{0} ausgewählt", + "sendingFrequency": { + "title": "Sende mit einer Frequenz von (ms)", + "placeholder": "Zeit in Millisekunden" + }, + "samplingFrequency": { + "title": "Sampling Frequenz von (ms)", + "placeholder": "Zeit in Millisekunden" + } + }, + "processes": { + "title": "Prozesse", + "measurements": "Gesamtanzahl Messwerte", + "phases": "Phasen", + "startTime": "Gestartet am", + "duration": "Zeitspanne", + "details": "Details" + }, + "messages": { + "title": "Maschinennachrichten", + "manual": "Manuell erstellen" + }, + "optional": "optional", + "noCameras": "Keine Kameras gefunden", + "scanQrCode": "QR code scannen", + "connectionError": "Verbindungsproblem" + }, + "configuration": { + "title": "Einstellungen", + "language": "Sprache", + "sections": { + "preferences": "Persönliche Einstellungen", + "im3": "Identity Management 3", + "ppm": "Production Performance Manager", + "ppmp": "PPMP Server" + }, + "login": { + "title": "Login" + }, + "user": { + "placeholder": "Benutzer" + }, + "password": { + "placeholder": "Passwort" + }, + "name": { + "title": "Name", + "placeholder": "Geben Sie den Namen ein", + "description": "Der Name dieses Konfigurationssatzes." + }, + "url": { + "title": "URL", + "description": "Das Protocol, Host und der Port des Servers." + }, + "filter": "Filter", + "messages": "Vorbereitetete Nachrichten" + } +} diff --git a/clients/binsa/src/i18n/en.json b/clients/binsa/src/i18n/en.json new file mode 100644 index 0000000..54b6259 --- /dev/null +++ b/clients/binsa/src/i18n/en.json @@ -0,0 +1,130 @@ +{ + "currentLang": "Current language", + "notFound": "Page '{path}' not found", + "add": "Add", + "edit": "Edit", + "save": "Save", + "delete": "Delete", + "cancel": "Cancel", + "send": "Send", + "notSupported": "This feature is not supported by your browser. Please update or use a different browser.", + "login": { + "title": "Login", + "user": { + "label": "User", + "placeholder": "Enter your user" + }, + "password": { + "label": "Password", + "placeholder": "Enter your password" + }, + "remember": "Remember me", + "login": "Login", + "anonymous": "Continue anonymously", + "confirmation": { + "title": "Confirmation required", + "message": "There is already an entry for '{name}'. Should it be overwritten?", + "cancelText": "no, please don't", + "ok": "ok, overwrite", + "confirmed": "Opened entry '{name}'!" + } + }, + "about": { + "about": "About the application", + "title": "Name", + "description": "Description", + "author": "Author", + "version": "Version", + "license": "License", + "source": "Sourcecode", + "repository": "Repository", + "licenses": "3rd party licenses" + }, + "home": { + "title": "This is a client and service for validating PPMP-messages", + "subtitle": "The following endpoints are available" + }, + "ppmp": { + "title": "PPMP Server", + "target": "Target", + "config": "Configuration", + "device": "Device Id", + "operationalStatus": "Op. Status", + "measurements": { + "title": "Measurements", + "sensor": "Sensor", + "sensors": "Sensors", + "value": "Value", + "alias": "Given name", + "assign": "Assign", + "deleted": "Deleted", + "notDeleted": "Deleting failed", + "saved": "Saved", + "notSaved": "Saving failed", + "translate": "Assign a name to '{name}'", + "sensorNames": { + "motion": "Motion", + "orientation": "Orientation", + "battery": "Battery", + "position": "Position", + "cpu": "Processor", + "mem": "RAM" + }, + "selected": "{0} selected", + "sendingFrequency": { + "title": "Send with a frequency of (ms)", + "placeholder": "time in milliseconds" + }, + "samplingFrequency": { + "title": "Sampling frequency of (ms)", + "placeholder": "time in milliseconds" + } + }, + "processes": { + "title": "Processes", + "measurements": "Total Measurements", + "phases": "Phases", + "startTime": "Start Time", + "duration": "Duration", + "details": "Details" + }, + "messages": { + "title": "Machine Messages", + "manual": "Create manually" + }, + "optional": "optional", + "noCameras": "No cameras found", + "scanQrCode": "Scan QR code", + "connectionError": "Connection Error" + }, + "configuration": { + "title": "Configurations", + "language": "Language", + "sections": { + "preferences": "Preferences", + "im3": "Identity Management 3", + "ppm": "Production Performance Manager", + "ppmp": "PPMP Server" + }, + "login": { + "title": "Login" + }, + "user": { + "placeholder": "User" + }, + "password": { + "placeholder": "Password" + }, + "name": { + "title": "Name", + "placeholder": "enter configuration name", + "description": "The name of this configuration set." + }, + "url": { + "title": "URL", + "description": "The protocol, host and port of the server." + }, + "filter": "Filter", + "messages": "Preconfigured messages" + } +} diff --git a/clients/binsa/src/i18n/es.json b/clients/binsa/src/i18n/es.json new file mode 100644 index 0000000..59890d2 --- /dev/null +++ b/clients/binsa/src/i18n/es.json @@ -0,0 +1,135 @@ +{ + "currentLang": "Idioma seleccionada", + "notFound": "Página '{path}' no encontrada", + "add": "Añadir", + "edit": "Modificar", + "save": "Guardar", + "delete": "Borrar", + "cancel": "Cancelar", + "send": "Enviar", + "notSupported": "Este función no esta disponible.", + "login": { + "title": "Login", + "user": { + "label": "Usuario", + "placeholder": "Ingrese su usario" + }, + "password": { + "label": "Contraseña", + "placeholder": "Ingrese su contraseña" + }, + "remember": "Recordar mi registro", + "login": "Iniciar sesión", + "anonymous": "Continuar anónimamente", + "confirmation": { + "title": "Confirmación necesaria", + "message": "Ya existe una entrada para '{name}'. ¿Debería sobrescribirlo?", + "cancelText": "no, por favor no!", + "ok": "si, subrescribirlo", + "confirmed": "Entrada '{name}' se sobrescribió!" + } + }, + "about": { + "about": "Sobre la application", + "title": "Nombre", + "description": "Descripción", + "author": "Autor", + "version": "Versión", + "license": "Licencia", + "source": "Código fuente", + "repository": "Repositorio", + "licenses": "Librarias & licencias usadas" + }, + "home": { + "title": "Eso es un cliente y servicio para validar mensajes de PPMP", + "subtitle": "Las interfaces siguientes estan disponible" + }, + "ppmp": { + "title": "PPMP Server", + "target": "Destino", + "config": "Configuracion", + "device": "Id del Equipo", + "operationalStatus": "Funcionamiento", + "measurements": { + "title": "Valores de medición", + "sensor": "Sensor", + "sensors": "Sensores", + "value": "Dato", + "alias": "Nombre", + "assign": "Asignar", + "deleted": "Borrado", + "notDeleted": "El borrado fallo", + "saved": "Guardado", + "notSaved": "El guardmiento fallo", + "translate": "Assigna un nombre a '{name}'", + "sensorNames": { + "motion": "Movimiento", + "orientation": "Alineamiento", + "battery": "Pila", + "position": "Posición", + "cpu": "Procesador", + "mem": "Memoria RAM" + }, + "selected": "{0} seleccionado", + "sendingFrequency": { + "title": "Enviar con frecuencia en (ms)", + "placeholder": "tiempo en milisegundos" + }, + "samplingFrequency": { + "title": "Frecuencia de muestreo en (ms)", + "placeholder": "tiempo en milisegundos" + } + }, + "processes": { + "title": "Procesos", + "measurements": "Número de valores", + "phases": "Fase", + "startTime": "Hora de despeque", + "duration": "Periodo", + "details": "Detalles" + }, + "messages": { + "title": "Mensajes del equipo", + "manual": "Crear a mano" + }, + "optional": "opcional", + "noCameras": "No camera encontrado", + "scanQrCode": "Esccanea código QR", + "connectionError": "Error conexión de red" + }, + "configuration": { + "title": "Configuraciones", + "language": "Idioma", + "sections": { + "preferences": "Configurationes preferidas", + "im3": "Identity Management 3", + "ppm": "Production Performance Manager", + "ppmp": "PPMP Server" + }, + "login": { + "title": "Login" + }, + "user": { + "placeholder": "Usuario" + }, + "password": { + "placeholder": "Contraseña" + }, + "name": { + "title": "Nombre", + "placeholder": "Ingrese el nombre", + "description": "El nombre de este configuracion." + }, + "host": { + "title": "Host", + "placeholder": "Ingrese el host", + "description": "El host del servidor." + }, + "url": { + "title": "URL", + "description": "El protocolo, host y puerto del serveridor." + }, + "filter": "Filtro", + "messages": "Mensajes preparados" + } +} diff --git a/clients/binsa/src/i18n/index.js b/clients/binsa/src/i18n/index.js new file mode 100644 index 0000000..78d7f17 --- /dev/null +++ b/clients/binsa/src/i18n/index.js @@ -0,0 +1,67 @@ +import Vue from 'vue'; +import store from '../store'; +import VueI18n from 'vue-i18n'; +import { Validator } from 'vee-validate'; +import get from 'lodash/get'; +import { + mapState +} from 'vuex'; + +Vue.use(VueI18n); + +VueI18n.prototype._initVM = function(data) { + const i18n = this; + data.loading = null; + this._vm = new Vue({ + data, + store, + watch: { + 'configuration.preferences.lang': function() { + const lang = this.configuration ? this.configuration.preferences.lang : null, + me = this; + if(!lang) { + return; + } + if(process.env.LANGS.indexOf(lang) === -1) { + throw Error("unknown language '" + lang + "'."); + } + if(!(this.messages[lang] && Validator.dictionary[lang])) { + const p = Promise.all([ + import(/* webpackChunkName:"i18n-" */ './' + lang + '.json'), + import(/* webpackChunkName:"vee-validate-i18n-" */ 'vee-validate/dist/locale/' + lang + '.js') + ]) + .then(([custom, locale]) => { + // if I'm the last update + if(p === me.loading) { + // i18n.setLocaleMessage(lang, custom); + i18n._vm.$set(i18n._vm.messages, lang, custom); + i18n.locale = lang; + Validator.addLocale(locale.default || locale); + Validator.setLocale(lang); + // = me.$set(me, 'locale', lang); + me.$set(me, 'loading', null); + } + return me.loading || p; + }) + .catch(err => { + console.error(err); + }); + this.$set(this, 'loading', p); + } else { + i18n.locale = lang; + Validator.setLocale(lang); + this.$set(me, 'loading', null); + } + } + }, + computed: mapState({ + configuration: state => state.configuration.configuration + }) + }); +}; + +export default new VueI18n({ + locale: get(store, 'state.configuration.preferences.lang', ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage).toLowerCase().split(/[_-]+/)[0]), + fallbackLocale: 'en', + messages: {} +}); diff --git a/clients/binsa/src/img/icons/android-chrome-144x144.png b/clients/binsa/src/img/icons/android-chrome-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..36d4240385bf7ff94cfbeeb8f50f7046732a9095 GIT binary patch literal 10798 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 yNWe#-iBur literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/android-chrome-192x192.png b/clients/binsa/src/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d4c3cb5aeec165212d857c03aacb6cce521513 GIT binary patch literal 14560 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/android-chrome-256x256.png b/clients/binsa/src/img/icons/android-chrome-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..f771420c90581a4c1cfc59d22488e43785b357a6 GIT binary patch literal 18807 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 RbWhGO7He~a8PNol@Lv>Dt^)u7 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/android-chrome-384x384.png b/clients/binsa/src/img/icons/android-chrome-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..e38269f506fdaae69af00c443210db05d4a36029 GIT binary patch literal 31441 zcmZ^LcRbbYANM)Ou{Xyi9ONK-??X1(lI)#*$Oz%sBO@atdxnfMk5PzFMr9@Q6h&rb zh46e&b^q?)?|D7XANN0A_kDe@>+^Z9Yn(gLP+yargqZ{c0+DNLsTqSnU^MO@A_Cwq z6+^8(AQ0+UTTR9E4tT4N_-@vkz3|4xY50ie@|B5O+$r}pXt+2z^Vm#=p!wI(TeJEF zE*|+sE$ucBms+lQPkbJf8kFUfc(%46b^Lk1>RSG~WlDSNT4@h{7NMvtbmK-gOnHG<#y>DgtnX`z5 zur3*$1^Nd52DuN?`bkGiMnEJ6G9{2wK@R4QY3N&O5`v_Numf&q!+ap(#a9&0+oH6r zLv(DAog_b#p0eSOVzJrnh>DO7gF|8Zgef?65EKnT4(^M9E4*A%^Y!F2+P2PW!&+`n z==r;BuQK%;O;UIgG$6DF1c}rRA>U3u>-6Nr!J!EvPefR0ekAnSA*=mW&@r}-Pp&yy zvAeo9*=d0p@kF*ju7mr}MM>QW?3kjRCE`DjEhJy3&2=T)a#0VD2XwoEL(~OY!O6e|a)1+{}5{7!QJ`&aSi3sEND8ZS>{%N3kN4sxy zPSzq>3AmZK|7}HOfYa<#%{R9e8})PX9`%hebGqqQ8eHkpp@y^9X5}~F_Zg$JR$e~^ zvFhi4edgA+``#s?4W- z*3_4nvqr4QSzfQ6q~Q;|-UJPRsYdnPNavP_9oL^4m9Kr|Jp1O0nv6n^SjI9o^52%c zE4StT^9rYvXp)JKvGQIc@4opZM(I=isQke2no$$}sW8mw;x|5ZL>C>Bn1s@iqcL?| zkuv#~qWqg1ng-~6G3WwMdbMUQmxR!j?^28OR02w14l;Dfu&7MAobL99iTuTTrj;9y zUi#B6WRaNZi5K%FM5)c%$4-4-ewuG+|UOo9(?4i$3E+h=K(ucy+ z-H)0)9(N1cW`A5H>c!i+OE#vhC|}KXGLyIUl-Hk|38Q=2sF-R`$V-6EG3ZWgMhZv) zVUrBjj5}~#W`Cc0ZZ|9^O16_hgzvf>CFq!q^XbNIXbS-d z9Ar=CKFAdD$@K6b;*wN|ZD6ij^eGa$fd6vQT$u0Z%Isy6-J2jdrUrW}b#J2NaBeZ| zgLDz$ktM{qrEa|W(+H38*c!+bJ@O#^=@9$o$n)<9oM*$E*d+$=kvzO%aFF?Z(^z=T z)+7juntXv0ODh=O>EbPAQ%Ha_WO%?2b{=0SaF~VRqai}Jfip#0G7rM`mc$3sg>X#V z<-msb3uMKt1<#xXzco8n2UTLL*rLTn-N?dsv(8VXhf>b%VN7`;VJSt|ib=c5Z87q&gX4_^n!3-K|<-p!8hxPK8J2^aD1)Ch9{N`Piu{lPrq)x;4s;($2Lf0x5gG1 zzgE~|xH?$Mg)lS<($!4~{UEKN`i%>Oz>EyKeEDedLHc}`b9=jxU_=Jt2UXXpQVPm+ zT`bPV)b3u6xgM1-%gDqg8QOm7z0G-pd+K8Zl@c?>=t0=}y-L4DTRfu3F5|iu$&+u1 zqaG2;?uUnE3DmICgju)G34-jrc9aRz*gZed-k#od+9D=YPbf(ko)Q?}tLx(0YB-Zab6`GjC{`7B9AP?7 z<=v!e?6ZkqnWbZbrWKQ@I%v^E-h-kAqdS==k8PPpyU(PO$W+pabXz44oM-s}QS#Ycfg=RajENUu;t9a&}?ge^NU zv8hLu5J}vbo8wm`U#3eir1YleIy;-oFWxn>-RLFz^2q3-yLUq{iRzpbB!;o*Z)uHR zHfBE?(H0j)!;yx)-KsT>MiysB0El-%L|Br@2d$aQABul{H7DmScZf^uw2bg6@)p|I%0~4AT5}J6QYe#_$gG(`}fifP6vzyw+ohBW#dvt>gJx^`D}Kce~GTT zn+60nH&oNv;A$9Dt|;;0*;bRryUIyz$PwkBUZQ=x8We53t_yNPy^K1EnP{c%5LNO% zRP<@`q|b>&a(}PIYI-;NwVxAmI#FO$zmV&gwV${#y}H@o$fVb7!~un&OBm~)^P?uO z+Vlm81I3v&j2tHI|FJMV^^U!`MbkJ}BiuK&{Z-K9g(cj~^D@UJ)Jx=#1fIvb3*Wzp zp8YJRpS%VGftwc;-UPfKH@U8?lZYX*GNMgXcr+k+WFj>hrtPr~t5VT=Xwok7Ej|8O z+0hD6I|o%Yc)Ny`t~V;--0C$m^UEu|cG>U}|AwQh(&OKS!ii!`qgKLs4B=+WTh2SQ zD}kT92nbCg(HR{(9@#?=%(|d(L5O(^^hH^v@xe8Uy73B0f12i8w1rlT>Zc`-i|)DR zbz3mB*LRJB!=~6OSl2K)m7GPn|+(FYC(3 zhw>m8Y9S*1nem5ul^Puu(GZ&eJMmF5hzm7?*m+C#1eb=U6hv0%J4dq zDZ9bF?6avvND(cvEgVn6yUYr00uc^~wh66qdP3Z5&^exzNL z#^bPrRZ#Wzr*_mL|< zG!fJefCIN`i+``)sW2^EqHs(`hf&(+NQo-ER$X@8D09C zM&plmWfkIQ%&gL}2x>=a^Od;@$^G0f6&W%D@S(N#pYuVqs`>@G*7e@Qgy;urO6T0wQ#@wfXpv;nubZ^9>#NlhN_!=z9um=rEvJr z`)d!Q)4uA5(1=s@kJE}j~Fk+4^ zZAw?gu`;OwkSwC7VjcEI6MCNS3$qdhw0h~_Cc+ks-Jg|;sm^slP}U*emyw2W352Rb z;GE14#%Q+{5^7XzONh^}9*FVFXCQ=3>Pk}b6{35p#?H3}*2Cr^x3MHts61*znj@P~ zkJv|FZ9!VNPZmtp`LysW1$MW7|tvjM=N@;+3EC?GG8+P_Z9&1c6Z}d5HW5tMd-eDmZ*W~fxZwQBc zS%ZXRxy>2_a?hM5bPD>MRehNZ;jgYe4_Ky7Xd%N5u**?$`%8$@FUK@0vQJ{vB4cXs zO#Jiwo$CX`48RPAtQqa;sLdTWV}duR`(NG6b%9h_q_}<`;$IZJphZJdS7dg=h}9mh zRfWqr94ZX;GFGLd-6S+`8cUmZ1oEOefKp)YsVJ!4inSzTV|y36^g^O6_p;JW<^(?7 zb6O;>m{vkobjB-3@P<32Rn&bFC2A!jS<1hv%qi{?gTP1OS3u>R^+o=6L8*+2L#(;H zATp5`#*TwEWcE-VhZH@c@A61l&T2AU$rPG{F^0s)>f8+^pm3l~($73Wv~ihVgY4L* z3s&C|JC;y#JR%k$pu&Sn^*Ry!1ZPo|bQ-&-%0l<7r{1e^#;9QNjv_r>cEfJ}h&%)` zdz>3mgnZ-K`@0ffEY3k72F#v4=rGOVQDDlt;~STHT0-8sb0aH=G`W^{pRFa2l+cf1 zIu@8{6Bx-Ro>=}4`L&RU|hMXLbZ43@qNPHUd5A+Je6ETi3#&2U%j}aq1?vnnDPjf2keum z_O5scJlH%RRnIcx_!hY$G}@GRJd@!2OIf2Xs4ea5BSO~f02C9E8eFN=U%%D$!%)BR zwpSLBAmCxP`7#;7Umi|==+_jDC8{#aoH&ftF`rZhuNggQ|whl>JsVF_wtI5t@V*WmLk%Fwa zj_Pp|KZ|YW4O|fUQeY&iPE@7U@hkM+m(#{@3M7&Gcw88^<$OHb@vCc_V_c2@m`~mJ zE2p*QL}AQmQY%sM=D;8CIM3cn12b8;$27|UDFKbZVOwx{bWvZ7NN82JFL}?O9!@wa? zBoD|6OJXGFMs|^gR}-%+Ucnx|7~}0oZ*Qk%*?&g7UC++%z_v$J^cbv#P>p$#1gfFY z&(|z+wi}K|E8H1CODy+%T!zAh)u{av_Qt=DjzoM*J=scQVkKp6Jr4 z*uaOWN`fE_R3ekFlulFU4u*!B4bFTfUoq#t^mKXXy6^bLMD>v0VfrA8BLTijb65A{ z+hT*+v$Nr7w89i7=PbO&^t2s>NJ{?b6v%#^{o<$F_PPoT8rLFu*JWTUxK~)ili?tO z2ng{~BgxFXyBj*&zaD1={DR?KwSO{;`S3ooQx^;0S+%}7})}eBR4_Ah)V-pF%4~_-`Oh*p2CD8(Yl6wt)q>HLMK8X z=_E~;f%UU3>Vq0~*->9ZsDJkLH|s+|!O-RV<_K#_Bvd;3sW`9L(0Pky*hX=a=K?a_ z4s}CSxry>gT3p4$K#&lOGEJ8(hk{8nP*jFYmgYWJI%eJM{4j#Lx&^BK!anemTIW&r z&elp76Jt^$`6824r!8S?F-5|=O`=G`S@s5>d4yU78&4L?lT7Pk$g&@_aQMrmJ)3B43=)t8Nqk+p~18A3P zN;I&w79vx3U<-JoR`J}&r}ENSCiUhNRg%@5+~S(Z=J9>2MGd4Xf+7lTHp({BwcDQS z%|!_Do7(94ehNuvHiXUQ^?zO5?$g;6@CkzaBXvNzcj`3By_#y_|P@AqUhX!;0yXx5ZDs5ByN@4 z*X+0e11m9S)zb6sU%hY_pM0TCgG#sJ-tsnXI5k(*BEuiIpLv_UFJ8-Lz&e=bCtf%T&HqY5Of!T^6p#C@}p6HJ*Q31pwg>Om8k3ft?{G?S#cBA zHu_}g^h41WsR6nR;rJ!-lIk#R(v7xM8c{Oux$47NgEYOsyLYEH*a?E(0l^yms>QtD zZ<`muv0Y5bl;FuYnVY8VOLZy~b?t(A{XGoxa|jaov1y!f==ojKu#I>!vW1uVB821I zV*@MH=KVKyV*F4hDK&?)N1Yk+O2vVfjj?{&P5Q+dh7%0;Uu=W8VIoZDKQT)CT+uv| zcR^r=(&>nmb|`#I6RbO5ez9p-yRu2q%!ZPkEZn~{!8}Ko&T<{dn34JX`ZGnp4kK3& zd&CNo33f7gw$Gzgo+fqRU)%&i@sp^G9U@uTr9+o{2}^#0M1zCx={=J!K{M%pscFwl z3wveXhQE_>Ef+7$x~6cOezF)ZM|z`;>Ugy;z3*G*g#&PuXk~MysyVu*@FLfFMHy+& zC0SI}lU`%~f{^N)5)mSAvn#M!*YJ7?QdCCK=h3AeN#|lF!W?NJ^k%p?xXw;vR5?@? zF}kYGEbruPG}k+6pFgZ@XzM#WEYH(+gjm@yvhq5oDOd_gdzYytl%XCNs~)B0J)&3% zBf7&59H^?-2OYPA5eU5xD|tD}p*NN1h`nF0>)*svsa31(phJU%cum`=pKS;HY`g>_ z;@}Ik*fzd683p~WgucIhg!uSx$bEcSP0Y#olj7q@wwB-2tKX?Zp!O8 zN;nxPb_<+?NIL^3ZwF&K^U*PHsW1hGA2e_u5N3lCg~zWqk8ETgOHu5!vybU9(_(*Q zH0iSor90ks-ms2&p%$jfN6-?@h5;p!BGT8cP$znDl9;%QJUiOsyRAkD4D5F|pxNi_ zEQ`n)>xZlPyiI(>2M#1krHJJA(qPw%F1TprB`X`Us)s{UYtIMJP?D@10v{pj$Nauv zh)~H==!&^Qlm`#V+ls>3z#CzQ;V6?Tz0^kUgZ3aQ)vLgmi}YndThSLAU@Ni@KAIcZ z0^3)u$GrnyFyaNh^5-oqRokM}d6xz$K}f_PlJD;rl^>B85WWn)qkZGbgI~o+u%BJe znf}HHpU8YMU`u#%{5mckg!ntxqrM)0s*Z1_xqDJe)^pT}d+0S80FEjM z=1;D=78EZJmpt#l3R%qPJbbnxkPmh;M61EAO@vwpd@sS)j8r$3Qy@+(wEGi9(e z5Admt>k*-ZJgQ7Uf7)Z$3qwEJzDv7%r(DD1^jT$^+0-#hpLLT_c~Hbm-cKbG+LVy| zbI_W~_exZak`$4YyG<%q zvZXU$SfO$TTrO`;F3%EhL_=Uy{62w3FH??6?xfMk&XBxdHnbxf3USoh4I{By!p+TP z`Q((3`gQN;nAcKe?awGKnpDtsuQ4MjRVhI^focvq0OK--S$E#Zy<#r|_M%tFMhFCMH=0hjal5gxZybk&B;k%?Rh@Eyrhz7NFc;J<;5AYX7kg0-%;*oZF2VE zSfzpK@3m%_Y_Kdt?yG)G?^iv$c84m|Uc4TW3R%t6^{G(fkRg023vqC6 zy~lqIA;Rae&I|OEW`XD4@b~Gl=LeL)W;=3(_<@(2Pbk~Db2O;0WzUrHTK*2-A`=cE zexF40Q|yK>WAxgt7n9CG_RNmHt{#j{on{->Z_Xc?Fywz(^>Ks4Svy8v+L= zL&`A_aqptLz}*L5=E{5N)0t(1L@I*+0jt2EiT(Ke9rHWp+*MQ2UAM|Lb}3*S#W0JM z+lJi&2=zr!cG;5~1}dC$gR8A)Os%yI)CMG!83?`*YbTQ!#X|Jm~tmdBf01jh@K=FfgsNs z4lhvm&DL@%zIWnbXh+oNi(*Frr%DpXGs?*S>QELAdUYRbMAp2z1-b={SBgn@x;=CI zL1GAnX>U&03kz6}+AmNU;)?#v)M?+dMjWry-F8dVh@wY`|6LEuF~BR9wk)OVM!P=H zASFk;;gW9{RfiU^t5E@+@0cJy6_V3_SbuKF48>r&EkUFsJZR0+UsQ%ddpk&1;} z!iQ07ZwasN$1PmHr=fU*07_4iu@KXY7^g{K#X}lu5lMjPF?&e>g@6N=BNKQ`-yf;i zj&Aa#;>bNvpwpPF3e^eHz)8h&t_Wd3w6i~~#JIy=XuRy_1Af>gHZ=K8kQ$&h^p#-@ zJPwS%jc^*LgQ95FPbtjx+edNijnzleQK#g_-YfKJy=>)0+-gLx6L{SJOdW9pXJl1f{cJ!dd$gut95M z!})+Fwjs8=5Y!_86gmY>7dsfv>F^K)OV#h@o_F{M1s6tKN@6Ajp-MqU3EqjAD445g z6bDIK`{?vKVZ0w;PA-+(yueulPJK)lpHse`P=V1J#L70F6-^Z4R2wEp1I4P^`+*G+ z<8U+sz81FwPm+~dYNOka`cO0wCI4uI7ds9-D(`%ASpK712vu+9S}69aeFhi->*>X+ za6071!|BskJZ@$kQs@leSd^Ans~ka&o3qQGIqxSXg+y>A=^55~LODuA5DvgAS&evL~1q(FL)p*lV2n%V4CU{Ds>## zrH*G5k%^3e9BnjFJv$3P=mK{cM?yH#{6k%J;HWi%GWH&%68^GL1jdm=bqlzn0K?J& z-Y%B4>{h6e0XRR%tv=a%_Dz@_bkx;tRDKXASef?V{qb69FMee;VJ{8riC>LQ8Svl$ zKLJz;PhTt5`iqiyBo=V)jV8l@Atl5;TCC7-h5-Wh(j1q@eaz@Wl+ol&hWO6vUZXOvO-|@#mw(= zA|D#fdV&aEHYS&&I@X52=NqAcsCF&W=PZqnx*v!?)aGmxm!q}6)sZB1R#|6jc8>5T~15@eJcc+20uUG?Ua8Pgs78kbUH zgVf!B-4-PcHq_x)9E$*>OL|3nLHEmKM(jQ)!DJc@e^@jc(!98WV}vEZ2$E7VV1-Kc zdrRI2FB?Cxx}Ib_V!zn!m#zxAi(7Ex>sxNi#wRz_pG}}GE`O?-A7;!hC%T~@==XwE z%cwxor2u$Mk_fp>B})(7=)+w8VasoRKbU+JuoPq!<}5Jo=)@s=vMT*%q2TM@a{?is zBENFC73+`IIJ%G0zpS)R?M^4%jgceyk6zrGyA$O0+Z3CT9gn|9vHg&gUZ6fl>kq3*90=&N(9eEC_8)kOOeXH8j z+N#CIf2L_Bu(EOLVXLt%^<>@fD>CIx79BOTp~+r5osU2g*I!L%oJ_m$9M}qr{B$Kh zZxkiwQ%;oC_3(U9APXu=`iG0;lsLsU*Dsz4UiLkBP(R#v%fZj-NIKqUd_UM0*dPLq z-u=A+@KRh&3`H->EY}XXx%LXGZ%sH`@3Ns298^(ISK>Q4 zYKn-=wWUblVM`wm5EH}4v@1n{o1&i&=_{W_Q!ztx1iB117bePgJ|rttYg@BzHMI@h zyejaSMw~!MxM?|cO3>U}%U{-@mUa-~0wRgLVytv%X7TMV*-PiGTN`;1PjX9*y9Jyn z*&!vRLMQLy5ejDy0w7at#`*n(fV)P7+HY@msoZUD<*_N90;+@nXeJ-z=df)?nC$C zNy&W>!7J9DZz zG5Rod?y=7G5zgBbz{iqk8!W%f%V3t59^^?}MlqS)`64}ahyDWCbE{X|&PO!5r;%Z= zfY(rV&H~nZz@J%OM&7B32%fnV!R?rqwnCBstP8h?#$|dOuA=8drWmC0lIZ}1d>eJ4CXJ?7qvgg==RE9 ziRTem9BU_1tJ6s5h&iEq+U-2M{(KoYE*Qc2WE*g4NrT%4J0H0f9vxH*dk;EiX>V*` z!J(mbk}bwUqK?=f@Z;?tosYw|6NT2afqn5y2}^9x@ou;3D=&m`%%|h>8rSD(LBulg zcz7x`P2&PtR`GDS(UDc8X#taT+H(pKD+&N|Z9w)=QN2ZE)li^Re|rSSLy#k8R7_hj zU&d~?&Kh=8kZ?>E_!yr)CcLA`{>fyxgt(iY-NOL|^TtMh=?E5dGF;MO|JTryr8D>v z4_2|;IPntA+Als(6#Nsz8M|1)z6oEbOr#r5VS$)N$VdI+k7%{y)j6ySao=b4{SVHqx@ViTr-i&?+K#Lyb*9zAUOyT?;Fqwz9AO>1^xS9Rl3Z*M z@g2%V{cG1l>BAsMzNCA++-4ECCYVFCf{ZQnGI5{>az2%6^q(?X;@aj&Fw7kgfa-bn ztV(j<-aOF)Pe?dpS*X#n)RTF`FYqz#AY)a60pg&IKuQro6)c;Si`Ui2d-_^2E>rZo z5O~*K)LQs~W4%!A70vWgHH7(q)=Q?dTZGa5A}?QCr+EE2YvBM$7It$jY-rlN4U%jh zH(asr`Kjbtd7#QGcUh-#a1O&O*PLmgJulV;ALWMtD(~~^K<8F1LmT1Q5fmU5>XBJm zc>^b#Q{r(>tb)^qly1dCW!3MTVh2Kgq_+t)lKXueNN|FL>)pScR@^8W13Bi}1HF^? zf4h+&i0II#$h+P9S>3n*<(b$c=-V591?U|I<=)wLF@NS}4>3|LU3ZZjFkj+)Tfnkra@{xIBeUwB*BqNqhg9yNmVOmEqS=Qw_g zTV1Ykr6t^EYbE{v@cVvr!out<)s2oqbawRBL1T8shV4`8=$9x8Faw848goYN1r-_% zS3~OPR?JS9yX>CPPYPN^;Sw6|gSdT|fGbk|NxkM`Gm{-zvl{M$*4H&X?bqdGZ{b>} z?fU|NrdJ}~;R^0xk)gC;T+oZe^NtqBCskCBL>=3_m_tBM>=6|TY~kwgWMc8|J!AzU zDGOO~L(RR8efsoL>;0$c(KvMCGT~pBW$SL#46_$^Db)iidNiLlKp%7cH7Cwcexs9q zR%XgsxkjJS@eaG#LC8Zq7WRx9S4oU5i*nu0^GV=(3->)K@xl_ruX{ zWsT7t21dqyb;MuAe~*7B_B_95g-%xqydym^GfZjVynF|`#)%EPr60nv;eE^sqD*4=PEzU-*0R6< z;F~J&69W>V$h9Kvs!xb3}?S?qq3b!gm;wrmBm%serw?R!pI5y8O-aB)Ax`7`W8nf1q~cqy^wj^Ei@}cB_PfkGX}~@x z4qzZy^%m9ts3$@MSmHHSRN#ytiH$J+m^&(%nvU11-RgtL>{o?{g)JE=OO_X9ru?UJ zz-5RJQ~ODeQpK}p3=AAtyo&AgzTDl70B8k$LAz5c* zA&QUd;8p8D&FxQb`T6XwM~~bC&UPJiv!nu_v{o#*{bB|&E%-Px%4LL~G?HsxTLDgt zq0}$b3~NuIpd`2^^31s*E?<27hUVZUmXzV|t%5qI`oEV1q~P1SX`Qa(N$7`D)4)mk z;SG=Ve!t(E3B(+=o3nHN=BEBlG?-;6@1uxz;nTtXJM0i4)fxSwI)CY9twctALdeg4 z<1;x1vnjb<$z`q>fG6_4JIi*U19tMjIRmcGg!R@> zV@o$z|0$KhBx35!NTxFZ?zHc8xRBizcZ#Bht^)TCTvT$ftXgk;WS=j?(9U~`rT6vE zpD-=#8uF(2e?qq^2AZKNS(_XHXMf=Iu~0eL-yEiYT~+ke?27W{_|~yhbU$t&gonYQ zY3EvFm0BI%P?*RgTOjy8e%=CT@j|e3h6WISwi5(N>a(N2umUK*%G^B$6zF>2J9QXw zGwaar``IAf@<1KOE0q{bsZ1m0DHt&NEfL~#k%rCn+#Z$<2xijFK zYlEAae`DZ33scPrxO{OW|JC(^PL>KqY#O?6s+Ky$vtdD&DzDsyn@_z`7t?~e3Gacw zL(l(jU8V5kl>J)a2q`bhG~fbM2prwd>b^~>d;0>0CS^UEF9_epX4@Q80^tYim!Zx4 zp%3qHeC}oGwBK8tCOT+Ew+AzR9p?ustt#PO^mAxwYh*s13!H=SO4Wl7==5$@y_}P%=q1 z^#J=j0+O4=sd!sB0O9(M>8{D_d^qdl)#yeZc0)+i12A*`S1;rv7{4|k3hH81eZ}TO zhuog+1z17A!6F59Dk>pYjSqOi3D~5($ws!WM)R<6fnG)oUpla+0hLhK#ZPY!jC<<{ zav1&#h6A3i;wyPqYl_1j^x0#ekRMqs@%k~JPj2Rg zMK95NJizOX2#wY_T8tXx$3SnccWo&D!rnO%5@hxC>1k{KQNZIjUIfx!Q@D*&3ww<< zl@(un9d1{^V{vDVl53GJHuHf9OJ(7t?WTUuPpTgrb|g+8)UK;mD|5v9fH}|t^!hzB z9hK%`pIOk`==|$>Sw-6Z7V_>4@eMf;TnJC#BwzYsUm^b(yAF4uB{*$ucvTqTCU#Bp z5>zj}Vlk*%P|ItR8|5_UVy|1Cm`ig<^ubK#OLrK{eZZx1I)wws$6;ZK+Oj9B4 zK&^p*jTfX2P&Kf6WT)Di^(GJgD9(_sGAmpwH$2k(2o$MgpLl!vO)}$9nqv}CE`e)u zDT9FZwa56X9=&uV|57Zu^m2gY)8)BKUHlkh3Jc)IDP5=O+c>*MrvM4Bfc@pXx3sq5 znrFv>dYs_NUi(^mnOD-lf!Gl6#7uf#_H3^2pOuXv@+#8V6mZ)M)_=AaaT0g(fmc^Ng`k+IZtGrMy<&LD82`y>j5yA(qw6sDmS61Wbi$PFZXO z&Nr^xE|7T-;`#=x&gQlmU~^85>#w*EaHuruLbT|RW0ExvmZYN{%qlIv z2@^_B%0vT45Q{)M0~jnogagAylbi#oZbRljKBBOvQM!}%;+?u4Ug)sGk35q+=|ij- z6^cprNuj9tf#;M-1YPVbnRnHb)7EG}Q-nPU%u!R?SFic!%{!7tz5najZoeIyJ>kVW zZaq$q+4bXju9`>T2_tH~&MwUrz(Zn#><(sWW4LKl*Ti4fo&aJA3ZE}iqA4+Y24?}A zm1r~IcR&Aa0erotuAeUCa~Gb*M#^IJpjP0{%<-za(qiDXZa#uq725!FHDvjz(SEY} z3@{Xuo4+0I1^@`W#})sK=DPIPy6-ZkcAnP1(%covt^FuQgNnVS@1BJW7v(k!1Frve z{F+aj3y%U_i@F)C-Wg`bJ(RKYN)sfq5%?pUmA_>(jDtio6U9fS8Fu?(wV(Z!%nF~C z3#6e$`>`^oag6|nnh$;?*^Zy@No%HMi1?duJUcQgqgR09VS#CC}&&~`;jzCiK zx}?$BOp+=DXGnhPsQ5KUNzVR={3Gy`Hx_sjqbL@@esqsc8bZ}~P1@B^9@At{mS@AiIc`flKiHxVBv)NDw>Hz}CAd={Q1!rZ4ASamG zTjZ^j)r$#XH=j8uttZE`vx%AeQal~nSEJ0gW~+z^=ItDHe>}I$cGkY+rqNt1JAW#B zd@G#dd)Ye&UGd#LBJAM30EK5~`Gh7c&+&zJdCEhY+WUVwV}F!wuELuM7OJ&)+%Q7q zobNtH*K5n94VSLUw;xoMx+ zI{a0SPUTW6O_)j7bnvU#7pfD~nXM+TYI!zB6;k_NCOdqazB(v;>Al=ipZaCH7jG?! zpWbdZFH&JOEy6=bu?QRzdkrnK>or_lwi81wxEYHoF1~jYDi-VdMr$1Tl~9`BA)R22 zCt9oR)Xr7yuHK23`$|q{>-LBUm?+ndAo*+;rfb4svc?K*Wo}svwKn*$>78%nV=>KI z8V623@y8<%^J44$(k<}3O)D}ata9S+uYc>C;l9gFJKfdOqI|r0F#zSXi+Y+D`NY@B zF|k}DBVkVt_)VJDhoQ;&o?w}SLuF8M( z4?A?SO;DayO;LN^PY@%unn`ft+#wcR3iCS<2iSqJ*Lu0{Z~LfK0hM?(*<^kc#X|Q~ zEBf{Z$H|dPk^8R2sX?+ut`=0!(8l-m7XRm_3qlTlOr7CNHM9BaKb3>3-R*=em`L61 zQ41o+qaK$^<}H;Pr_}H};9zfmV3FOo_300G^c(dGT4-{SP(9@5)EdFbY0D+EE77*rpHt*V96Wpxs*{@}*E zqgMMwX|vni;PdF*1@2TSsshv=_*tU`Fle?hKeX35_BH)oO7GZ5m4qBW*^FAdB~uzK z2`S%BKfO;+FjS~+=;cLNX+zblbxK1PNOv&u?%euIqDVaRFJw)5xt^RrBb+uv30vk zjZU5vxr)5oMX7TQ=BEx>SSJ#zdEB!k+ZB}d^osAqgl{@=F2`#&lSleN%iRSuH%WyA zOxv&?^ALkQVl*}x8gF)EvSK`q6~0-{+X_Z4@IkW(rf1^MbXM+xxC_AI_}p`0hVJnk zIlO%-sT}EXHO2R<4!iShvXlE?sB_yv5IHQh!rvEuR3QgO{-+i)yg)4?KQshK6RvOE z&?1c<2~}x5_=uipAwnnLwyQ!rY4ZG2i&(>So9l)GIjq43mLB;}eA9_A!~ARkJd+B= zH`P@h0^{;uzUyU)b^F?fO04}{|4ipusGYR+B^IstzR&dp0ply-mEYAtVsVj7kWcer zhE-%L4O&qwYzDD!KXqAUQ}~Sjnv()fMmVr=Kf_k6@lpK+r}2;#%A&L>wzf_1n?x~) zs0og^ZhtLvvu&8OQz*ok1(aj{8xmf>ho))j)dMGPDP_%yqr`I};<~spVQZG4+nI3Ms0N+;Bfl;@o zHx_}|kn|g3OynB{_`e%Qk&IVGn&9&|%9u9RDjg*4*OY1c{*6)8P+OJxEh88E0%8o3 zMBVm-#G8c&Swxc9xD?#ngt?OkdXX@FXR#LOOidGY2f9=UoQ)vw`9`kb)+ z#pDDYl@%4xHN2FK`j2={0TLCleb;URr7cBI?9+gl7(f8m=EG3>iK_etQ7odyrh=^* zZl0lU=1;)MT;LTwZi*0#zU>PvENO>O+S63@BaXznltK~!&-xxucU|pz^*dY5a$OG88-n%wM$FMVEPUVAD998Ntk z{1DaXMXE5y3yQiIC0F<2p-VvcDwPGhVhuSuANCI$e5pai4F4+(RFRLr@S9J5OqmlF z6P1tl<*;Kl6A*tym?aPa?j`rWQSI4xguM>n78qE^-(soPGr;C2$byX=Kmx7JUxft8 zpr}Rvuz}A=3xF3FS3)j8-$2%->WkM?p2?En6*anUo*azNT@wyJHjI5~60z+cIv4>Q ztM~AY2tfhv@O#wj(Q>Ylwr*C?-bi9Jpb7wJC5?vZh*4ZC{AK0|VuwLKV_Pp6X+0r zvPHtmKq5Z?wh2U^bB1q+(44%XIjuts-bee2JhM9wQ#YQL1`}b&@BM2Mx%btke-OAl zZYSH}ee8&LlW`%2+SGC$qB9Bnj8hLe3cJ5m9rKqA3DvDRa*uXwb53GwL`fahdKm>W zH#a>B%?0tXkRTgVQKRWL{G#kjdj0^iqTg2^k!^7blyM4@?UZ>Ku3h;ika7<+oZFkr z$??3NOEU) zR51P?{lBX>{j>VL7lgwPZvnQ@g^hCeu*9ihZ=`li9wdWJNya0d;{k7QC?pEeDnKA=%&qi=IlsA)uWKBu~kNsfQGAVCrYUH?z}SDF8#0qZ|zk#c0-qmuv8 zfK@6Nq6D8Km6}A=1}!v;(kqpXSf>43M~!0JjGW-|lDCkd%A#OpSfT>kf`!q)5>TMV z1{h+qoU&g+U0Tr;L2n8%L?_zaBOk{qq$-6&6VNl;{zX-!{nEGl5}5$0)oY11AQuXU%cq zY_K2B@P=yS$n#oHUzy!-6q@>*Y?btJfw&C;N8~Bj@1_4v0xC8%W+N=Q^-E%y;)Yc6 zihgXIAYdx^Syefp;o+8=T zXoDaaW#k{-^9I}x^~f;Z;sy|o(^$(q%6TX8u;U5niITawFXqg)P>yK4|7QJoys1fK zOOVgV)=LrM;V4zoucJ{c;gI|8s0j4Gl84pjs?C-b(Jf?9LeBi2Cp+<xf1Nw?wZ;2Q6Xlc~+PK|Qi)^p&Zun?39FBRwQLl)twDxct*wm{)ys2|K;hMR<6h z?j4Y{k3s?K#}OVNCPw*%KRD6L%+S5;z5oq&Tt6$()-Qu?sLd(Ro)Joxsf#!SEb=0j z<|gsZ5#UWYAbp_){=XO$Q}*;Tqk+rJN{G6YxQXcD+kevVZ@$xDn*T!H8j4f=4|LbH zO(?vy&bo@6=*O@2icCK)#=Pgsj-XrE1!%O}C-|+U0Jze!r!t$g1j@;>plLotFk!#? z^go0r+v&z-pPgti=ierhM=Vw&LhiZk_Wo!^0ZJCFi@3fyy&0jEXh^Zs^OZ;X(yu2! z+oGpAuuUAbRqYKgZ@>S&BgjqVp!}EbsQy7R@T)`qzah<4Elk|$B3@a)J8q9kgzW#+ z_0@4vc3reH!;sRQ(%m7Abf=`0GzbU`2#kPqcSuWzfRuo=64I%3!w9G}3et6-@s02M z?)_ccG(4sj}^(h z0vuoGF&R!NdJ^kjbrGO^`an!DW1EPe%~KB1-JYajUBozBL0{E_!W(e||BxXKMF8f3ccWc4-wNI_WsJ8__xVZ?(1 z^~PV>55@>|9SE#rp)(p1$t-Iatuhve;=rxfwulRn12aPM+B{kTj!T{b_NxnY4~0Pb|AmhpPIMyi)e@ifXUVvSxxEWnfrKbo? z+Xk)CdMLt#O<9@419W^UfbHo5Eo((;M9l3L+BXp7SKp>)!AVqSEFdyTorLW~oo&Dw z&*g9~B)BfxRTa4DXa@QGL{KwQg_+-I_U%7#4oFsGaNaOvhW({afc%W@`u_3qPGFm0 z)3d@p&xq%u9a7Injb#$kEEv|nGEj6fq8&NEv5ex6Z-NsEV5EXG?N69eh3EoHfeVGM z+9wZddoVI1Txc%n>gp#gOun7I)JH9hFKXmX$*g$h+vzB!XYBc;YgMzMY z^QYT88hPt3Er9I+7+Dc6Ud^m?2Ks5|%K;6TfQ8U9W8$ZtpA+}U<`mI&Q8E$#IxH_Z zsXIQMK;$ZaJC64zuMazdi+auVCHYgs;oR`wYB1OfwuMffljkF#9!KDt@yBn`m#v3r z2KCxa7DRJQDs&D6v$bV5UyvXVfmlB z2kEd2cN&1h9+OT{)Z3P1df67AdLQo(vu3K4(R~)vH(C6+a&1+#rm-#rd8kwrqkrgh zQzKJCxk+!|K(k~m{gKl~S(lvgjiagZs&-ZR?+nBC8zmy-SMN`m!qcwuzTmq1aOGgx zK%D;8#NdBj*7}djlGDrEe3wbQsa$kUm8g*UFzDt~w04c?#q}4_Vno=e^=A9#3v8GI zkx7B(hk!XvIrQ{T@Wk;?y{|qv-E70Ma4eOu6bcO*2|);9Ionqr_n`Nl)CEt2STK;1 zX;(g=)SVxMx%`yEz2Pn^VSZAPRFGWBv3w~`{msmig_4(OK_QagxeA8ND|OY~DZ#XY zeLmm(-#+#wJ4&RPNRSTTyV*4$XN_>BFsJ=rT<;@s1q6kW8O^=2PnjT~0G9`sZZiY! zKVgmh*!XhVWzyY_hp1I78wPkM4^-lzj_b`KIVZjPp$2Gn_zH!ixJo zEH28ojf}V7@9f`E^d~zm&L(q5r==N`K7@BYLjz}^PT2VFnk>U3y)ij$zUq^cJ^H)M z!j?f3G2ya5m71V1y(|KPgTI#x@w0s~GGh#m%FLP@FR6&SzO&+3g$2)&I*$sPdeOV1 z*7!TS7N<25P?>+~*1rLL2mlJOn|KfE zm(IDZn(WfYc^+TwH|d8|Kl&M#J>i?g?qo&?O-YFaMh59KXwUOWzKZTU2N6oI5T zvyx|GM8Ni|wQ`IF$>BLlR+`0r0WWG>goQIHyF~v}(EbVhWIiD9qmX2S)`LpClDn!K z7`w|N%k*GS+NovarT{^%~OD_D#PiOV{dSo2i(4NDNGwp(J(1lg66f zeD+q#;C`Rk%?HM&5h=c!9mrS8V=phzqjoJ?Cyvo$Dk|qGd_j2>G$bH##?o{RBFan` z{%!CXF7>5(=!Ap3g^QhJyW%*H)9lcV&AAH$P>^I$WGy0!Y(DFwwx`0H+0%OL9_Z1* z*(jjfe#7}mt!!;|K#u1nomY1e`_N; z(fCi<3p>|8!S4Rg=pF=F{mI|JMA~1vVI=B5Nb!LeNSA0^Czr{kbvpH#=5V79;P-UMXc)rSMjz*6q-=Dc6ga*K9^!N?V*$EHOOol3siJNVt?w(C9I%T!c~ z<3DrH+~VM>>w=OToIz8{Amz2%ptyUjH$n-!kDOTqJ4~H{|G;DFpV&N*{?H8x&l}cf zr`?^*9Vm1Wl3$$&c3@b2?BCSnQ9N>n1g^B6N~Bv6PNpc??-%9Op164OfKf7-hhA4* zZ0hA11aI4AtYah7@0^rb^{6j62#VyhnLB-D&uva*uY(z>1kj6a`U4rXp;**2qT%br zpL$I;TVB}z%zq$}*Ts~kW~=K=O6$k;e(c1C4`!^(F{$Tv+2&BuSy%<8)hl~)WeH5K zKxH5RKU=laemX=;AR^(HjmGG%HqqGRX6 z2Jg3vCpVZ8QD3ZIQa0{aWBD=AXhX#+=D`6 z-#yGe#c2;UpOe!67lg2dv-pIqNh2NGl%@QIyMp--O7@B~X501k|bh zpsdO8V3q&Hd9nW?XKhIENJ2U_g9=Qi3&H{shz&MXuhJiX5#AK#cC2DF-hl|!af#opc}HIe!Rr4K6-dg%9VEyhWv zAPH`5_txp3*!3dN=bgu{69r~;9)H>kYyy7jgZwGi%ghhxLG;Q5U1*t#-E6W6lg3U& zM{)llunUeqAu1fwWzl)BP6g!*{qg9Yf05Mbcez(~E8& z&UXaCCOx;yma~P}?b9`uZw5fHc%0k(lMXcLW_FUrKK03bK7V z9F;w&`H@s`eNeBWCC{Xx{Hn6hrG_>X7)4z&*^`hl0KZK!q$=2t-q z>xk{U2b9fzf*`KV%v6$X{>*fl`+wp}VxVKXdFVd|%!$ZwO(vE7=|AHovj5LEsUmI$ zAN?vx+gq{PA`Zgsl1rG_pH>Bs@zGMJx?IfgyT8A*Wd;Gz#|^~3Wfhh?dXwaU6hiTU zBV=#`j!@WL>`M!ZFiY*C(<%h12Y1UHY@?q^R4A}C+W)FkmRmBDMgy3rR5)ZuSwtS_ z04uV#`DXxpoPH)zpcXKSgu}2 zKs0zz|5wJ4zi%Uh6%6h!tNemIIOcTsaWgu9Z!zjEBju7Jx^MX#CyvWf4ZJ)W3jWeWdc#^ zvQw^zrTe*w1_aP12C1N5{#Mk-iw{Er*vo->pr}DvY|$VfLs-$74@$Yh97=)Iuz%K0 z_S?VU1KQsne@|GJL)9upaNY1uFSpK)*L2hpq4fhw$8c7H+nI6D$4*@K)bKZ(2aY^@ z%X789lj&@-Hd*3X;{W!fo0jH?1;|Mo}w{jH_Vmn3mPBMG`xvWVKX@W&-qDOU1^pEqdg zMDj(9`_aynr>(_N#hz}p_~^$jV&=%XW1%cWQZwo~w1Os34?etqUs&t^4dA2KsYU>s z41G=PzB^Y^StVw{WOO=t*eKYxP69aFGDWo3WDs>~!aPkxKe<++DDyK<8WefL)-Zay z9#ah0$GYxPjrNbujO71erC5NK>;X_UU|c{u?Sf6#g?-p)2UR;YdX&kb35tSCKM7*= zusKP3vyHA zd@zS^9B&{&ESm+>q`N3D!`4&day9x!J8lN~-|F~sw^Th&C!Iuk}bE5X#B zTQ2@mTJpaLM&30+_>xT3I5#h~gQy6&?QCZ|US3ah#E&xr^u76W01^0-h{+9$ESjLv zH-C}B^jAFqw(DaK`@sh_3|~1m@9)Dbd>MhJl9N74qrLOqB-Q26{)oODRZ5sOot=?* z^ZASLT;kv9MPwfr8z=A2#ST+OmhNSFCGGm%KvY$y`^2ksACFuw^yiME%WX*{P2t);9oTa)&MJ0 zxLFLf=WnTfZs5qBW6JlgND!4m0=tL)3a?(qz2)+fbzi5kdnb+FoGnNmd{+l> z_JcSgQUJ6S3iDrp975x9j?dSlMW>@b%aOc(V$b+6VqHky{&SH1fC&9SRPTgjpVv$^ zLP_&K0q9GDZI+(8hyk%!1J$YYklO(9Mc8Q5!8l<|aro|2LId#gRX%Jgdl^Ao)Wq^(>VN z+3xLE#vrIz`IY?s52b8=WP3~}KYc-%o8-x&H7D$XhaeG_KM{%K_x~#*DV3rXt5+T1 z{f1mX$u3fU)m|!+?NQ=qZ zI+mL!8i56q|E8R<{|QY-U1EGQqt7QVse;0&Q)B8aejiQ{iK2jMdo20LyjrnJh9#2y zhV^wR#U1yqK+BnYI7>UO+SQfiM}}=EN`lDg8dQoF9vT@BWz@a*VO&W2w`nH6#R38l z#^`-K6>h;6TSZ? z>c6Ack(}kf2i>*z+DP#8E<{& zcvt*mM-qeYQa^6+hE(ktlxYHt`~p5_PrD&!d_P4O#VPaLNrGai8FhWyxWw^r?GyGu zBKE-KYnw#MF2`H7m#&=)P@uTAmPM=CMo~E^56Vr4p&_Zv*TM6G0m(q+qyAMtzfM*h z&4KVY-xT8AG1gg@4^V#sCb93uEBbNJWUQ)3BNPt^mgN>$t?kzWpLz>{T}S`Sd#YDe z)NohoRmK@3G#u-7_6Der5qe9Ffb#~ z%Ybvx{}5OGJ=!u9t$H8dww z3ph4^G~Ed*phL%0c>5gVzHkBUB@T)WLMa|tn%Z5IK9k74Wp8XAm9@J!9>IrPWq|GK z@JdAg?hufo#*}VgYk+WvC(RT7$mf?|WK3oB7Mm4XJ* ziA1|roHwP4wTRm(Uv|YuF_qg!IN!cX8{b|-L39P$K!X87}4c4g`z2tTRkedfoLT%#gwD#`};`;c*)!M%fH&apY*3Zmq8 z>L+5NA})$XB~>tDGeg_A!-Bv@XQgEQlV%XpOKL`yeQuOAE>WsaAfV)Ra0&G=`bzxu zXC2;esZmHqsq=ld7XR-nJ9uExq@}$CkrZuDm!Z90J`8d+Ieeb<>oZ8f;G?iF^@J6t z!*LIP+Na<+A|e!ly--a*YC7TfO4mSi>(2nh@;oqHX~x?yfRPEsH&TuFR0ifEfoNDl zbDggVc=xXK*Zq?pAgtt#6av59S~5H-7yHa;D`35f-ERw4x-m%wWte4%d?e?r-&(|8 zLVMlXhfTCBHZ)y2&U3w&XeRe71FVyS2N+WYGSCp+Wked&+M;x=KQxmtw690htQGpC?zeLqH!3*gt37GR^BS^(W0#L>s1mRQpXnC<<-Fw z#p$1i1nvDho{|JPZGsucR?Uw)8MT*K$Rkv{_)7PF)?p3&7K0=^C2!d7Ke&+7PuXrh?^od1fpFI*W`?V?-1bnD`uc*PjbR)G{)=N!{eXE^#QS8)kk7TX#>I6Y&=fnKS- zgKo4m`mQUOFnGGHwym}M0h}3JJ@Aw-WO^J+Clb{`o*eKuCJ9x|9-NxbS(Lk5Yc|xV zXA*PL`mk?yXCzhlb|#UMg?N;m=VN!#fpaQ?w(>Hh>$5`#PIiX(m_IQO`YRNv=|xMH zI>|_1H}zrD_-HU_Z4;iwyBH*7-C-9%ZGs6(PSbKPiIx<2G5Er6!}-@-R(KWWpzidJ*dqo_Oi}1r+8~jD z*BDn??X$7W`3@l{e2{k_hnq%C*h(f5|kCy*CO ztW3jB>S>Fu*)%s^lUT}08&HOcg5&a=Q-_#FHn?KYA(WJU z&8jxfG;%Z$h0gXD+Sn6|m9Gmd_yMGPx0B1z1jbKt&?WF2GhK_3bfy^X$G{{nd{44y z$Re`JgKrovDJK)FPJMf&Us&SzMf5{#F#l#!&~D7EF!-9?}6@hzVMJL+1b7MCnDQV*jzEYr&Ya$;v)$`R?exm_# zzzz(7EPFxgLr#L5eDvVBYlaHzp)xg^le9<04#nM*lq_NyI%YzZTjQNINpJ3g2n*53 zhyd!~MDfam%|-%*G#ca*ZUdcfRU&!lx z9{-o$X@+-GUTL8KOQsB+KFp^VtGT{-{Xs#GhUcT-%PdF6l*I6Y3I>&-^>R`o1{@jV zf>}+BF8zKknb<`7^e1FmXUpf0enXdRJR*xRsOuv6^ z4rdc2XvTdVxh_B21!XkQX+5#}@nN@9_qw>q=~5Adb@Y0r(ZJ93IOUv|UkMr)Okccf zS!%OLoXnv)Xb~n?emd-R=2I$eF?oMEuWkcVgHFIpwXw$eR&uN3G?J%qQyY`sRReg2 z$O$e6ZN_yl2dF?PQ3sqxl9te3wzht$?;c;JcvbarJIcih^7NXh@gyQL_SWL=+qeTX zS|5dO@Oeel$J4pkp1|Du)-3%P-Q@1EcFdaL`AahNqabuXreecGIIzCU8@)B4jbPv) zc2)~LBFX248Q$@N9%Pna*s-<4(bZg~F!0e_pYa#$o;Qu|DvLa=-M`YjOez(OxL5v# zmpvXneC%YhlGqxvt%=YgGdVd-{(g|}IKUr)(f@^bZYICVtBDH*0XdV1Tkr>Jlf@Ckev1EaaH@TDkdd=V2)z9=g*ig9t%fp|Kyk~N`ueSd z+L>ryqo+vR=BlIx5HX`#V!$IoF$tN-H>@S*y3c@ zPuR(DFUo!ZCr+mDvB7u37#{YF5E0Um2h9R z22K(fVqb0wy_sn0dO$@WU63b8xQi)B6if_a%kpgyMCc4wUG9Ekd5t*-Vnc;L$zoc1 ze`)&F^vZkJJq{(rUFTaie|5J{k1xao=iuc!%Set;R?~=#?||j^d47l|N)%s+XhUZ3 z8iRh3<&)P1av?&cqmKeHGhejI!)8%Rpg~cR@=R2A`77Zm7wDi*z{W~aP&}9dLJr~r zVS`ZVz%URDICf*l`P-rv`$=bDd zfcF*#_ssHI4nNZN1_rw`S>`BI6J6a?$S=o0ectW95l+AaHw*$YE>h+VXnI$<<=-|t z-vw-;lRH5AF+<1Xd^e>!H&QCu33mScJ2FA5kph|>cyWTI8kTX<@F0-v!a^w~3;6>A z`N(Nj=ko$r93xBRju zVmeEehwZ{}QwHr{Bhw4m2~^tu+ZhG{yv{Oz zn|(NgbQf@508*c6g}0*|pvQs!T4CoYXds^TzqKFG_`5=d?^m1_)R(5D;qkFDU8wf_ zQpLtYGj<7=5*R9CqOOvF29f$#gS24MQ`Fra?zkzCl_VI8^ALi`WEXMEQVd^cR#1Nk z#W#Wc=~8P01lTzE3h(+aqC$fMN zh6YIG0dpOI;Jjwm!lcO#1hlPzl$5L(ziOj3)V{)^)^$^$?dq;%Uj)0 z21|&gB?gr;y#47fcLT0gA`mJ7?O#H}iO+#gLk8$%sMTFRbA|Syub>Y(QCtvaNHBc~ z?Ve6wip^Uc4^9v!wMZWMgx_gd$NGmVhvv%6CP)FIg4uu{D{T=rOcAf${wG&q9+dsD}f5-jf>0LwOevKoJSLG z6++0@&BrJFlzQcWP%WWSZYURc_rmp=UBrB}GF;J!$7(br+5U7QelcRFlDNk}<_8GB z%e^?sV}5D&R`NP4R9ZN}8bZVe=I0}w#A~Xw9bEdzt@T_f8*_)e=G_l&}Yz_$2>!D;FI(9H?j# z=~^_d&f45JnB(g}KJk83h|a;A=7vHSx)G7cj9&eqGVk8q_7`_&(5s*z%(!4H9qG0a zc2cjmA!n}0Z`iIY>rx%Ay;}V#n1fJ4+- z?cOF0w>4LPyPqaMPC`^(B3h*1!2JtuZkBj)0~lv*UT4}uH5gPmmtWo9aU1nufIyh9 zkdGiPh7uvlhf#15cZa#{Zm*uD=Ol$uQ-e1N@#)#pIc6%Vn;v^k&(2ch)FqfSYMJ^O zJD4a|>7#pz3up~!QAo;gz5o%#kh49-0H?~(VQwyRiJiW@TJ6}l61S1Csh&k496Si< z%%@s4EYUK-DgaTRiLsHGi2q($+vmrl?xIkGuKe64y_(5ZT-`2;Q$@5SF6_6*OEgK7 z`cINu<4z_;3BB^{K~aT2l}|PkLszIm8}LVqWr08Fo3#+L&EM-aj>-3a#cKK+C)il+ zNsaag44`7}!Y08AX-PCQOb?PNjt-edkg3&z=mTKJ;R4MKBTgUcG~MP0 zyI?$F39WSpEY3Cy8q8}OWcJ8p_%`@^d^Cwfe$+#o{_;?41_nmHu>BgXDH>lXi;8Sc z{5pu4p{0zTy7g}3$A0v9Z0sK?1f}*P!Zzv!8haS}!$u&TZad;7%dz-f#*x!n^#hno zf0C7gZ4wj*FT8r3>;Zq$4}xPJ2vEIo7{Md+BuH0YP8Cei^!j{adwk`3tn=7g*g)%a zlvF_%%tQ3$apK9|sWPJo?V6((gM9QLAF28xilM204PVU?;{_=pK91R&=y2WYGiuFg z>6`)rlwz6lf~mE-f#t`-dXGK?xbuJr%uI@SF57Wg4*hR3k|T>{=VZ``l7q?FaE!S% zQx{GybQNjnOQ2>-uq^-I`c7;0!XK?(jXWbOj-n{8z*|#s)q5V^!`wJr3Oed4O|#8B z@IU08_~w_V`K%C^O@LZ9;y5N?KP0Ep@S>z>3Ahk@l4NH8=c1wi0I#(xU&x~x&um@K zg%zL52#nR3zuGDg*jDx!1)*@fE@yRk`*()^UPCQu``woAG3D{@H-KX~i zGy+;v?;8DX;OWyGXDB~ICCV~mYjlclEpM`W+ib&320ft08VoVIubyuo)eTQ8gHwYg z*5rWa0Ytd_n|`=tzfbCB;W^bZeOY@*Z=9Y1#_x(3n%il}du#FP@r*y;%)J9fDD_ca z3_sD!*xMvVvQ>x-3cRKiTjYAq<}zVTY2T8zK5UbD^V2smuSWI8w2mMhbl{b}<-He! z{>Ou+Llz=#Dlb6?z^2AT3(~An@{n2la}JWE1-@gkPY@oz?a<+8H}^nUyVs#i;zahU!P| zMUo63#j?uwfzat4$J2oGdQ}@VQDP0^565mNYeE4{zS87bkb_Y^q2`Y2TFG;{^_fEa z#;zL+=(59+YPdc!BRg}22<40&^+CP(723&Vw)ou* zq)-spdu|cdM!E#|j65lmuT>E4_hm;t3&&{roW`0)YV_jAGQU#I2Ti(lQJ6zm@Tu}% zo|n1O6m5^U5ncbiF&i_Je-Z8nFOfY;#s#jt&+F>fzY>)bTw4<4c(a85x&9=A_7w|rOLiIL;r zML~cavgAE)ZgDObXZMFbrfZqQEGWQdY3E^|KKxo-Ch6NLkpN8tBJ-iTL+^oaP0x$N zicA`6hzJ+Q_ZKlgo)q7{vwU-=q)Oia!Wg_SRNC<73&E8e`jdptFYsQhUGQ|)< z|3&Py&l=?}dxtuyBpL7!)&j0N&4D&e;F~GYi?^!UxWQBe9UPA;&5E7~IlCX6J;xeM z3y~QHnv|Swe5}p1)iH5e(|9mHdwy%1Nr{L+1;Y)AWnaaVQruJjFw?xL5-tK7R6OO! z7P(Z*n5YweM!W1h`2uTMOiw^@yw(h1tgrXuCNHq++y$SQ?gj_@{gRvKp0I`3Nx)8S zx3>haAWH!2d85KL1<6~aLhe>)j6M;Pg2P4_l%H!&gbB2R**( zI(Bbz>@TL6d=q%oEd-)el4dNO>Irojmsq(PYhFAnS&c`d0ahIu5D~cw`eH^LJhi$G z=EcLPBL?(m5YUB6AZF}NHG#y1N9W0{^P{rnl{fZS%jKJ##M9Rv74JQ>O^g~;s;Bxf z?n$;*C`IIXXar?*b@aK%ety5#!14Vp z87LD{fWgQLL2SuHt_ZyNHUXTJ9d!A)~f8OO3vdM&^T~10zeNzkO*4T0>LjYVs<`)aB&{9;);&CVr6j; zP^ZU;j(T*v-xZ=NFbr#e=%IIg!kNzfz`F+N7%h)jmAR&wWVuI@2jWhWQz-G{$f6~i zRI(mpeSri)L7U(~6a=cwPkyv6PyxypFgApox?Vz_bjABSTnM#V~^`EPN9`p87i?{qSfvt}pBB+u`}1F15MS z?wd8MK7{)mHHv^2?@VJJ!9?X6P#>?Vz$P zHJdXj>GL((2819{+Z=5E|uL^l!~XdjLqF|poh@{`p>|*6BS*{c4?LmK#3|h z0-S97rn*ve=^bXDN#Zr>$2tW-NK2XNI{NmM3nN^ew=!M_<3!w}rjvR-dAh${aX=Xa z89t)6H}=(UaY_4+7Ag7k;m@@BTOIh>JGZN`h_hb@7<}#430?zg+Ucf>zjS?;nN*rD z@xbEn2-i}U2&gF6E_6MtSHHr}Em5OM?aU!e12g_VMrZXrcG2MNSbzpIWen0LTVm z!qz)ddnThy5nCl+VIcuqR*Aef@M?QQxc6eq;e*wxhKGG5A&8X2%dWlZ-y)7a!k1}d z598fsrVoj$ut`;$7pb9qo1*Dc)QIhNs{0F#TUm~8#oqmj2l%kCAF7+>WmbX_qO4%c zIO9AtMmfUhlElPOKfyr2;`6UFn~2zJ^kB=27l{F%p6tz6rrcS$z(0^TEaDT?aIU&9 z^v%&@;AdZC%RDgOevj~YTNg&l6w4gK1KccArfaA68AKhWCf4gIZwgjlSf1Mm&gz7h zUQMa1{B~>ClZ749{V6RNxG)=Otz7#tt2FRz=4kh9yPa0!>|2t!>|){vPP6h0uy0HJ zvjrnn5$*_kczma7a`)=aDfFD|$>+~DdFmTG5E%}$VNS%LGIxkIU*ITmnvoP6=8L_n zyz|kis4KsqkT0(y8~J$^1FLXa@EGAnA~d_dZQP>e!@=s0=mx~iYb)+16XZbRJ6d2cl}}=w}acAe1>b$Ms+CSMlY8i zIrJgP&qw{0X)p<*9>3YsB9{>(Vib8v{quVpl_qGEq>>+hV4absP|Br^^C_~fo#Ia}$Jjp2Xtn|S#gfRj=CSLiyT{16AMZUESC@&%Mi&vAAk zILB&_G}E}y&Sd4jdHB6Yn6*yMr4_xCQhe&T+)k!p9;|pW2<(qKp=(zB97WdWK-Wyh zLEg!JXWvQ%E3o-kM$ix&jZw-KP8i8R(ZzC)gQS6x^1|Ud3DfSM3Yu8|KfZXl_E7EW z>JIm!veNw_8&6Silgq7E!HjHX@Yx)sUO2Z4+kY43)r7QTzlta$x?S_W=2s0ab>%cS zaEvi4)5fG(T|+93xY}dy`m5Rw?D>mZ7D5?K_7>N6RN93QvDA=ZLcsSQaZYzosFIca!)o`A8~Cj;~zz zsF5nK_K4NI$L0Ak>)44?eXdzDpkCr=<41suHOo&T0wD2^%!bc@5+Tq3N6u3RF31P= z9Tit&dZ@;eE8{oKjBhVlyk?9*-@^N@&}P0D{n+va&_Jg}z8td+;03S1>ZyN{;Pw9| z`NI$UGcEGt6l0nf1gcry+QBXzI)vPQ%Uyl z{fT5lc`%gQx2K~}h#D}GPGmX`quUyVy6!)mm8p2Z_lGtvrEOs>yK z8YSxxdl>klC-MnEZhu~~OgeB-&B^26Y@v8SDz5P($}$OEh^_K`@y$> zOtohaUWOC|AcZ)pPn_`45B;S^|CYMDRi#AxQZ_T&f0AKC1G-yj{53f(9vj|-^8h|3 zm%oS%LKvdlY$dADx_y~{=%w_>NV1ic(5pCH6URdOYfjgSVq8u}y3}fMeIo5(YTi87 zn+IZ5>*0kaGPDV(6?y9cAP|C7QTGbCYBem zagGT&G+|66* z`Nhnll%gEykrfh9U^8jT}UWxtHavRh`t;pr`U5=v_iB|jyB?{~*Ot04y4~cxQ)gwv5KHeau7Yyi@Er!Ionp3iL z)`h+7iC3f&VbZM1HT^I(pZoV#HAj@pTvL;6)z3Ejgv-&|sGb67BjqX$Q8xKGXC0vS z2>3*ESS~de8w=OGZT`?bAI;?;k7=Z)hv##*+SNL?N?eclc8LaqMHV0LfMP?X{dd)o zdO>89iX7L@PhmN+)RcsJg4LvE^n^rg6RR9c63>|}g{rn%&n*j0t{!Mys9ez5=S~>n z05~d3pd}ES>nP%To+h4rYcIS4cLW?2Og%jw}o%%+r%@cI^G+O`OL3n9S2pE zEHwBsrrYC-ApsP^YpG={r-o^>Ax{zL*EG(_BW=A?a2n8p@9o{vadte&zi+T&2`hrYcQH@4NVWV;3BULiF?ZiJG>FDtw) z(3V@*-n@FSvsagn1!85T3RUI1Xq6du5uGPh4`Pyce54DR&Z_0u-+lQ9X6H3ClPF4) zF7rj9Vy3NA{y@(N-VhKNP!M~Eto&r%eZz|o^!39jx?VjtyGLM8J=YS;DnUWJGXHs4 NObpEpDiJ8`zW|^*VV3{^ literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/android-chrome-512x512.png b/clients/binsa/src/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..2500c81ca463815f93e945b5b6a017d153b04952 GIT binary patch literal 38567 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/android-chrome-72x72.png b/clients/binsa/src/img/icons/android-chrome-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..4506df6e42634de9b4a95e0ae5a5007cb476c744 GIT binary patch literal 5183 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 a literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-114x114.png b/clients/binsa/src/img/icons/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..78898f0d7306829e24e0ad3982d804690ff22940 GIT binary patch literal 7680 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 D+wUlm literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-120x120.png b/clients/binsa/src/img/icons/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..0da28829a43ba3831c2b34f08e0264c5bee295c4 GIT binary patch literal 8067 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 CK9?Q< literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-144x144.png b/clients/binsa/src/img/icons/apple-touch-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..80ccace64b30a5da4a61463bedbe1a9a36edfc4e GIT binary patch literal 9848 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-152x152.png b/clients/binsa/src/img/icons/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..a6a313e9f8a82c57b73c63634046414ad796d4f3 GIT binary patch literal 10235 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 Ld9e}^1E2o~tmE*; literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-167x167.png b/clients/binsa/src/img/icons/apple-touch-icon-167x167.png new file mode 100644 index 0000000000000000000000000000000000000000..9d843c683e29f5f2529c274eb6ebdedf15e713b5 GIT binary patch literal 11598 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-57x57.png b/clients/binsa/src/img/icons/apple-touch-icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..80d7566b5ae8c029e3c0a9a275e01e76886a8cbf GIT binary patch literal 3747 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 S33YM{KBb1xf|n>+2LB7F38Cl! literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-72x72.png b/clients/binsa/src/img/icons/apple-touch-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5fe99c612ea633cf88228fed15218f638c2e5f GIT binary patch literal 4770 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 XUA(?Sy@8Q%=|rTfZKzcZz7PK|#;_!M literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-76x76.png b/clients/binsa/src/img/icons/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..aa407e88cb425e66a8ceb75fa818a17e1eca6dca GIT binary patch literal 5058 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon-precomposed.png b/clients/binsa/src/img/icons/apple-touch-icon-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4386ef04eca7e43bf61d77e219b8fc68454f6f GIT binary patch literal 12646 zcmZvD1yogA)UJ|8LP9#FK_mq!=}u{s?vzeRX%1b|ozmT%(v3)WcQ?F!(0l*;{`bZZ z84S*zd&W1vwPpa8l@Ucoz(aWU>>0ASn2Tf&>2N9)x2CzCno#@hdt#-@|hs zd-jZp81mD88@%hp`SQ{6@TE&j!(4>4SX@LrBMcg9yA=sJrC9iDW7u@%0%5*Na)fFn zFC{A-18RP-*Dq68+O(=7#2?}WQmn5?2Ka2mL9uRi$8MpUB_;m6D6h#JFZCK11-@E& zmZ|nD$sN$kopoql92TbCeG4%y@J{Fx!P`l&V&Om&&}KHP1Thz+S!IIE^(apQUvqX> z=eVQ}o$b96{PYPY*6ZfR`Ar{fUg3|Gt%%J0yf(VIzL2)pO!3G*RY;ji`jV=`BGeVr zZ)?Aqs6WHQ!@GL#g3poqz^Cc(!rxH|F?M`#n>xFcjUD(Wq{Kn+yZ565l$I{S$kqs% z)H&WS&s~cH+8dOef?$!%B`6gQjlod5y1UY^*j@P@QD1#_T zXW+-uU4HD$#0H<5&zE}v<=DX7R;O$z^lSr3}rO?>q)qO)b6eEw|(&R13 zOSC=`CfZd)yuV7=+>MUGH_)owN#US!+&hJiiAgiUl>T8PA|U~f$LW^$ZZm|KdfE-f zV{4}5d;NNf=Sqw*Gc>JrC!$pN7dm0Iv#=$i48}-GML@H!$p)vbD zedZT-BGf2$Y5DnqE%a)`RF-Rb3HflIFNGXHBwu%)QQmRB2ds_5LRM>mw%c+8% z&yQr%Au^satP{Vd?^5SouX_zA=_!RO!z_YI6jfBBj`z6UCN;+-tMyrN%x{S+WCqVm944D8PC1FH!l~p}6h=ZvMcr&${4pY_=0RQzuJ6XNH>kc+YhayO(>o zWDz%L*x0r2P;t=o$ar|bHvMqzp7avi*|5Yha9?XrXS}5a(_GJc+e(=0t}Xn)GmJXh z>2W{o>&}7WbgWjduNckm)28pk3yTtpDiu2u=Lr1oW@{XIw=Wrt=KIx5e%M=)lznF_ z*EvUtjy_o3NuPfK0=32>Z4+JbDNV|4$Y|v7d@2`a-=n9uJ7;xxe^2%?T8U79$-e1( zj)~W4R`klDWuegncLB#I#V%h7ny!PxzH8liL(YqrnQnGmu3dmivF6u?T(;dMOFxSY zyn+Ub%?m(KQ^^twBexxnbswNbT3JT(%m*dhZd`M9>qPT~@6p#Sd z;Er)0p=V+Gn?DNOcs?HGUd{(bb|Fqz};JET#9nv`9%c%VJBUs7(S#(|B$ zuDrGxUFvpc;yzzamTq_KXKaQ$2vvo4ssUbMd6ziYokSDVrLr4X7fqf0 zyUd!{zwd%+EvMjnn>K2aSI4sK@FR&rA!bwE-ZzJahFRM#G^Md3vTdYH|L1zoa0)oU_e;vaw;ZoUgd`5nujMcPB-F#rbj5*{J8>1?664pHAn?0s_0ywuqvL20sx=3Js9)n*{M{SGEr zV|51yF9EvB15_EsTPrVtw_D=E;>aHtQo#Tul1M_{jr{)oBjsUUEu*q&EPS%w-60~%I|^A zA!E1|N7u!HjGY}s0`rqP`$utcI-?^MmyN^8er}iPq2qe{zVel%`;bn|kVnwsaFhSL zbZa;)-s_m(iE7{$yRabL_Tb$*oi$kl7ChKTK`R0h7?DglyP$oEn%~92iR^*Ep?18@ z``FK`wKy;|s7$Y9-ryT$cd0}^?~oZ7{Dp!YmIOveCmpHT;k9=OVb6pp8W*Bto=0OD z{}*UlmQnhQtnbK zd!r5*`J#OjXqTFL&Q)xBm(VLnQ8q5VH%zO4RWfI+Nrf#dI;mu7 z>9vIvp3tyaX3wo5LzPmToF^EWR@?Y26?e^s1jB&GrGrWjD-yQM#&aQW>%-AEY)?FTAL&Ke8I>`lL zVOii2iaLq*hDzUBbE>Ovz2$%Y;mGyFJK|JQFK_RooNwQrSx69(&u!q@RJ=^X;8CbO ze^w(!1h{%l9}*Ehny%Db0~_N@IoIsnZ`9|p9s?NrT$LTzfZ|*8A+>TElNWoWavIY; zzHjP9afXZQv^2Or$T%$_3V?1<4y2u^dSgBYSvSmG2_z4OYRur+X=ura*q~1*HZM0I z!ykP=@XmBPZi*)*&7f$;8gD9ax?WYhp|V>OU@^8cs@hwu*v6U_UV_)7oEzA~q=EUw z;<}z0Ob9v5d&Ojy92&mv)*)X>#6HkX+FA~iv#?-zyg)`?uVW*oTt1+!3!mf6OjQlP z4hJD1w5N)M)~ATZCc1CFYpi zE&JxpaTqZQfX)WA!|x92&~`4jFG1dI--v< z9FDnnee0w>^4+_1l+)BqXAfOtH(Q+hHd}O5?X!4hs6U3hrNpmElG=FQBp{mA#eY^v zpxUXdjo4?j+%5hjBe+d_2_@(t+h7*UNeysEmB+o16+!REgoFgeA@~MNO{_^KpLp9t zfszwj#JG1lzU80sVL3_YUS=2>=z)utjH+8*u`H6P3x6^D4hacW>ffB!EFq>o(h=9p z4i1y^UY`V63fUWYxAq^zb46m&siuj-e)av};F44Rc^@h{91DK5!ltxS*@je2`#B<; z47##eynvAix#sYt-a$7P5pG#O>~z zPhW#*2Sh~E;k&$ZSWrK zWZ17<93m@a6r1pk`w3YxaZ;3?p%`n}OfGi_O6FC66dCSoLsx5?E{DY`wdx?3)3i|9 z>Kws`L!ar(I4Un;+gri`i;n*CMqt2qQuyc#JdVkHTRo*{U#F4wYHZ~-Co8_>7ud}{ ztmt7x`~wV#L*b#IpoE6g_m8UYEMEdvtnxKWFBzz4jjN@-x~_vAAbL#r*A0-jEA(DJ zy?s?krz(cV?)ApbFDQoD+j}&iI*2$wKaVE<(VeI&0$Xr&#CVqWx+I+A6|<84*C;-! zKOlQshRK5c6i_KhK--5i8mii6zpS5U6ix)b~-`)mrzCY5$k{ zgM)zj?IEvxCslKfGL<9fFf}(EXahaw{6Dz%1lGV-j$pV$p46)`%HOeR`1|57Z<)S3 z1<{p$^Tnq^D5#QJrV@#wJo5B*k&FN2htrW}l;t4IoeckA4o+W?K z5(z;IkFv6=Cj&vz58)a7eJ8c`bW7h>MkU-Mo-%p+^4j$J{t@Rt+M zlvB8B{gveEnhiu_dR0qda$OooFFFDth@uMMmgy&0KPjqdSTn0M%9f2lEQ_EYl!gUG z{QG8F)0Kp`=G*@~2_$CT^e5dnqlkZU3WB5dpymggpdWeVh^~Bii9Sf?xLHS@86_wR z&b1hpeZzE1WwY=8zmxzrJr2zh-D%>k%e=H6X=P<{qXYj}PQMc$i=m2QF(m&PEEz|NK7fd70qv~!M1D_c z$&%U9e3EWzYPUj5Hw!~XMyiTFH&%G$*%ztGb2ZyyA_GZ{_)-C-*jZT4^my_-++K3Z zur()|<0x^)VbNL&Ko}&)pO}=zJJQ?#YHtwA6UBaO0*}TgP4JS@Gpz8Te<}mGb#BOp zYjq~Qh|jNY6i<7VARd_zAvG2kkt8K?r@sQdLAxBY6+*|D>Wfba39NOBW_*nZD=Ygk zCJBs&E+^^nma~0yyJ#puv0hhD0f!buv*vx)Kb!+NjP4_)$$*%Qk$O8ugtq24EBq0B zHCYH1Lc+E}V1Dz~KdGt#h6e*(M|ppyMtH?~atX(EI~A9Ux@Wex4v3xhkPl{l{T%(s zi$QYnK`~0EujEFg6z z(n=YUHIL~#9=CTKQu}wLvr7U*KM)_Dm*1ZV^N;&NaC@i4z^PKMt>Y4Z{I}%GKnY1z zYb;IIJ-Wi%{Nt(=>wSPD(Xg;2V%^cM#t!x|b*C#V5r+iaEuL5WERmgD2T0$TQherw zi5w7EhZD;vOdf~*ZT8zAsQe*sqow;AUc+%0;VZ$p5EYsa~(?hF&arJ-2 z2nczC!ao3dpT<_5204o%sn%s}YG(G;^#no5y%f&_H--6Is(5G=yUDYMQr?olpNB56 zkO;{H(T1Qmh1EU|C8a-XbOD=$3(=_+Wn@Yp{#7nOjZ zbC{ee&gvsNoq*I;zkkUdYFAc;p{_)k_`+zy`gE$uXbwCgLp; zzw}jtVYF02L>9Z}8hOru7)fomur+vGDsm!NAM&zP`4y^HmMJAZky{~k3YeoNpK-hr zjGYDLO z+w_^ic^?gT+Y-+uruXN=EbqvAwdKs4}_H6^)G58zO$m_=!)#MfQIe2@(24hN_p zh#yGUrzgP+aa>Ah$uU6qz!j6+#jNjA;|kdYBP&Ll1-T3vTBLEL@vxcyu(8Pih@SGF za|aoKi|t>yuq!N^(+#+tYXUbs7$Y&87&w#$zgw(eKA0+$NOhZndOtIrKoC8j=yKkW^Zd2RP5y=i4=i0*DF# zf~TlhGdtcNt498$vZ5#76qD#(4aymN+!)$QHjMmmvQtD(x!9RaPT`L5;`v|Ks{iBK zg`#&id5Z%{t#y$}@Y3UPsT|Vh_@ih|%y2kjYCL|4qQH~XkS8~C(Ihh1HUI$S8t8yb zSK_W{nw*>tEPdcNC2Ud#3@e;&LQKvG=HQw}2N-F|;vq)%0Y);8T}8Lk{c+EDInKkb z#lY7GcOTRw6!CZLit_n|w`L=+Osq$E>|eoaEK;M;8_48FnG-95J7|mf>tF!ysQd1A zhbh@hvu;Y-q+DPe8eCkhXPn3qIzN?5kZY!Pfpy-eG7Ha>CHXZw&iLCU^ztbTz5Zse zu>mt#3(tj5>nOU`7y3$SD*e~tN&aIU1_O2XtZyWDMiEV{QMqa1fr~xwtf~4N<|*#X z54F+k$ub)}wLW{3U3UX9Zm`)9O<Dj-&0^Sbl)zlaOf0o`i?}M9(z;3 z=H;G4!_By5Oa)sD`X4DzRoff2s_Z{fg5t-w^$&u()*4&<70L`8vsi4Oq>xr=7T&Fy zba8|yQDkGB8Z}Ycw0sEA1ZuXIPlcbADpWOIY~a)sZ;*UoPy|GXw`7m1#sI@VLg+>k z2M>^rhZz=^zlaZw?FKFCjV}g`{PBoCRvBhe-r$Tb^As=Ok+@oQ`i-Ga0v9{FL(y~% zWZATEY3fi-*N*$CSH;>vD{sYy+H;0&uV%dn&LB14(=EPjdM1MoEq)gZ2r3*9)Vg?!;_xpj`yY#J3*@n zd-K8nTQ?<@(9NJn)IH#?xB2$0+eAD77+Ij*aQ#OL`c^N`HLThDranM~=Q=~9;OLaW zmM2hm$_xS(3BT?1zqXM7wWX>)ZbP?!2e5^eI+pKa^B32YUKQe#@@ z*N}o9Kxkf8ojDUdX8dld9FaOGNrr0sU2HhydBZ1=KBunXV<0$yTj)&<8Q)&BBhS^T znVk$mX$c!&ZeRS@2B&^3b8wIPWAF*zFaV!z6nc`~Cf&xanE8k?OlSb;nglUwpA+vn z0b&ke!z#hLMGRfC{I_&ns1{ZuWuBswCE5b;um*vqszz`P!~^v!ctAL?Kc6$mn{p52 ziOJ|3rrZ~5lp}jY{p}fiL@q0kPh7HVvM_#7?21!M;4eH(>-lS**Oba_b{1k-dQ z-pO~~?HYAS!E5C2J(`j&d1lCtfW{7LazY42HI&D6AswadJk+`;Z=E`QN?dbX;ba$3 zwH5pYqlYamw%KXwx;{CTtVEejTg&mEm*Y!HQ9M+4)hg;2yC{EMLIHwz1|J*Vl!N0@ z@lQG()wuZ~-^rGSyb_l=nv6~C?dS1ni5n0pPSNQ=R|9K)VWP(>DRCjn#%KokMLf06 zhhcFxMDsV`xtp73(P~Q{5!h1qz6x7I^}cv$HYR(>z(vlY#}~YT?g!_G2!4EzuSIG* zU(pAxWmTs>kX+_dco{f~ucj>O#TF(91?JsXP7S=LaN$UKYE)e>_j_M?qk82Hhpla_ z;lFtCf`rZlQ?AN-s~5|>tVjK_@T4^nz>uxcTS^ycCTEr}UxJ-Cz!bVpt*J*;Y%h6k zA4&pO#X?WR*m!;djp&XNBEt5o29eW>@NiW5S1RaA`2H54-@58=0lM>-N3gVd3a7-c z9o;kI-@kEK8T1lHSVCq+Wefrg;2xq&9!P+<0llKE^mNZX6o*w5wz<*d+i~|Uuz;YT zI51(=-+%2J3OETc(v~{gScX0}2;$@O1&jX*OqIrcz~NRzc#toUxW2fRzLPqM8s>e7 ztj~0CrQ1k&zfF7h$aSdr_6_Fh83T!@JL8VvM7tm^WVRmM=hPK z{iI*)CiB&b=ifxc;l_LaUL>0#5h79_ILvB2j%)<<)$VjsXMPa8^lukjk<-%pxZr_; z=qe`Bc8DF8u5nwP1RfcY{f|Rc$(g5kazC(R|6{-ApWsMnT|7(3vF0?-n6VK(L(dvH zs^XNR40PB;_&`pS*fPWKCjF{8+G_Ya(#Kk5D=fgNU-c&vg?_!1-|E2{CoR+6ujuox zSO!iuExv0Vmv;5j}~S{XZJMmo`r5p03rqlA4q`SGoHA z{8kx|g<($r>S|;HmaPC7V-G1A8&l_jX~BhrStE$g)ue)iHfA<~=@94t-`;9qW?q~5 zvqB(>(sf&mkLPDkP7bC0>qk&C<=9%RPtyLi1U>U2sq@yA4*$k!xP%&9icSE!<|CTWB&EO;kKQ3DvPT8K$cvQFJ-65bxV?CVyaZW19Y7aZDJc zgLe0h;B#FUQ^GwF`&`rxpW!0J`1-)Kkpf7F$}FY7fLJAE+Ra;p5ZHe}n^{+d6!uz# zVwu)KM{p)|0_3V~WrHLy(MSV%wo{2TpB{kz2+NTzsR(vDTSs^Ik23?5G!wi9=28uW z=CQSWmGb6ap$zJ=BiLFXWMm3DYfL$N>n-s$A9d15#L*zYZ~q{!@rPCkN#9$+W7ynT zk}Nw|>c+R!odP91+(+L5f&svW1`te&&_ax;kPXShdw`u1VwnJV`PIY^8lr7)1u=-} z$f7TI&(3ti(MXRUW&f9!0vhSU0!D?e`T^gXYId`vo8UE%&5TGcLqDes3U6P-aQa+8 z3kB=`AIBm;k9cJR7NhT+@(T%(+wLdg8)tFN`<|WI3Lkucs&6IsdI4*O8RYRFA{AdV z|0+a|y+R9d#8=#LpHX9st50b(1X{+pIAEk8r0!XkO#Wrj|MCXvS2ZHEUSX%%|IzFr z4VT3=UCGKtU$KF)v8Zf;{;1+FC4A-*OUH&H{ke(GR1dPmePS1vXMnY_a4v)kl;M?@ z<1ePuZSfoTe^e2110G)=m9qr*%55urYPN(EXeZItZV2EcW3A9aUS6DgYg&h=?Mg z{`dS&3MR*L`T3z4*uXpn!i?n(;Q|aWLZQQCx^`%rW?R24Oc%;cfS9$^&0F*hs2x{d zoUH==@z@761O}VBIep9D!6`mK@`{Zmk^;2K{a5KtQ$T5FX1#hwJYd7)cU5jc=8&6{ z+OR_hy9h8tw4!P>ADwbIUxML^~|0G;AnKl<8f9eLf$;Wg530@sE9(VsBLzJ z({Ch07!eR)cQ7Mv7hnQrW1UXEGoSvsB?siUiFiT4Q+^A{^iYu2g=;atr4ZqcXVL%+ zPbnP!>g_B?a#YTfo_Q7DDJaqVty2bp;dZac6=+F?5&8P~gvV3{LWq_8r1}GpB^=+= z^&0ZN_UF8i9v_Jc?6Wx!`2>Jo==Ib&aThSO5hvhPTrvQ5TVi<1;F=JCbNzoC0fvMv zWgw28MOyGTOtz2>~?vOyy6LWjQ@4}ZzuLl~gY zdXm>R0`zEl2-njPUq<1M`vSfk+|(+`6f5kSh4EURr=$%f7Y{{Z!h7iE5x)m@w{^ZYYx19U z26v$L3@;2#WuuDIwWfj}d3pSnz&V+~rS~Fnfj(y~n`B~LG#wvGbzYTkcCDiwx{1S- zt8W+fGEfAVb}rWk2x`UCVxGSbixdCs%w_(cLXl zb=GoeBj)N|LS8A}rOjvsSy%a4_UWzSY=7?{PXNQ-V9}b@^>e?FJ^yHQ59&8p5u#LY z^|TJqWJK!7S=DCs4pe<<%3n79kfZp*b;d9%gG|bt!TK;VGSWI0(t_Ebfq(qn81tt_ z$72Ah7jVy9DTcRzj0dm!atltxQp+%M$H66TH^b6*?uu~PU6VTeM09kA>^;f#E}gyT>HUpiv6V^ z{&!_Dv3V+NIg#_VVzs5KW;MdiLSe;jfA$nmaVG%CmTiU!@m_b%#fg2FR@cFN11MG_ z02H>SJ~=UQwBVtoGuVckp?LrL$a`UiaL&C0$sG(dV8^$(O8sv(TDXMP(>Yy>RONI#V@p_yu64y2WyIM2ke1qgI0-D|bb5xs{sd7irufk*nUyaS)Tgw=xjUK9UG(BG>+7BIC`!+{O z{3~&ZPG?otK$#5uZiVW6<0HfTM=>i93i7a`20;xq{cX$JHv;q6_b=UCkTUAT5_)^& zrcOK69JL{4J&M)0u!Y^P^B}=N{{%KHBNCEGZt$pV^ANv}4s6}?xH+p!+eWfvn)&|( zdTx}jfFXUYk2p=O?T{>y+l_lxG{LYoBO~hrt_3L08v~ABIO1SoXZeA6q)MSMEnYlf zn$`Q}c*S4AWSqlCGGa7~>7Ie@w4sswSruHKqW&!mGu0OU zY{1Tsu^}BJrw-OYyL?C}_F{fJUnE@Xfx^K$Iw+ox zS;!?kkBv8I`b#%tKhcRFSPVk%Mp6DnMv-yVfI#n%>?~ZWeeSlB@2+C=UbQM%S37a` zx0-xm=noCAAX!A*?yDY(Ip=%JaQPK!fW{j;wHX6;(Thn~@R}cOh=(Y#u`_oq!`8RI zkDCCDWUKQ&5qFN_GdoI+;;n|(iy9l7GUEa`#`FA|tyx>tW^J*{)_&&;u#T**%J&8X zHqrhaSnL;)Y2du!pYP0v$bp77JFx)B*Y+pq%)}D}PvQM(G3`)1+Q#vd0Wn zzZ&$b0FrrV;sE1GdGdQx5NoK7gLwtQy0Ust{m&|$2d+!zy>5O86Vr95fz2AE(#pui z2yDzdgkNDN{5o*oNjWG9LW5Rd#6f~0X3lb1B1^~tldxU9a_y{u!EB2Bz-_t#K8w| zm#h3O-o4`cNSoD{lWF-doBXdqQ7R+dOaYoje(!3BLBO`#C>L@v0tkefDKEnO#(-Qj zjEG`4$nyH)6e`fBFgkW($$@srpW?UJlzY*(<0_`Q$0^?=u!R*aZBq@s z5sMG(>sN?qmkL(}gp+1yFq(7vk1$oU0*m39E+sgasHm^6h`oXW0On>&c0nDlgD3KO n1vJ5<<$)qf9)X_p5gzkIJ?FZPst5SPiD%-%GD5`y+Ft($8Ln&7 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/apple-touch-icon.png b/clients/binsa/src/img/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4386ef04eca7e43bf61d77e219b8fc68454f6f GIT binary patch literal 12646 zcmZvD1yogA)UJ|8LP9#FK_mq!=}u{s?vzeRX%1b|ozmT%(v3)WcQ?F!(0l*;{`bZZ z84S*zd&W1vwPpa8l@Ucoz(aWU>>0ASn2Tf&>2N9)x2CzCno#@hdt#-@|hs zd-jZp81mD88@%hp`SQ{6@TE&j!(4>4SX@LrBMcg9yA=sJrC9iDW7u@%0%5*Na)fFn zFC{A-18RP-*Dq68+O(=7#2?}WQmn5?2Ka2mL9uRi$8MpUB_;m6D6h#JFZCK11-@E& zmZ|nD$sN$kopoql92TbCeG4%y@J{Fx!P`l&V&Om&&}KHP1Thz+S!IIE^(apQUvqX> z=eVQ}o$b96{PYPY*6ZfR`Ar{fUg3|Gt%%J0yf(VIzL2)pO!3G*RY;ji`jV=`BGeVr zZ)?Aqs6WHQ!@GL#g3poqz^Cc(!rxH|F?M`#n>xFcjUD(Wq{Kn+yZ565l$I{S$kqs% z)H&WS&s~cH+8dOef?$!%B`6gQjlod5y1UY^*j@P@QD1#_T zXW+-uU4HD$#0H<5&zE}v<=DX7R;O$z^lSr3}rO?>q)qO)b6eEw|(&R13 zOSC=`CfZd)yuV7=+>MUGH_)owN#US!+&hJiiAgiUl>T8PA|U~f$LW^$ZZm|KdfE-f zV{4}5d;NNf=Sqw*Gc>JrC!$pN7dm0Iv#=$i48}-GML@H!$p)vbD zedZT-BGf2$Y5DnqE%a)`RF-Rb3HflIFNGXHBwu%)QQmRB2ds_5LRM>mw%c+8% z&yQr%Au^satP{Vd?^5SouX_zA=_!RO!z_YI6jfBBj`z6UCN;+-tMyrN%x{S+WCqVm944D8PC1FH!l~p}6h=ZvMcr&${4pY_=0RQzuJ6XNH>kc+YhayO(>o zWDz%L*x0r2P;t=o$ar|bHvMqzp7avi*|5Yha9?XrXS}5a(_GJc+e(=0t}Xn)GmJXh z>2W{o>&}7WbgWjduNckm)28pk3yTtpDiu2u=Lr1oW@{XIw=Wrt=KIx5e%M=)lznF_ z*EvUtjy_o3NuPfK0=32>Z4+JbDNV|4$Y|v7d@2`a-=n9uJ7;xxe^2%?T8U79$-e1( zj)~W4R`klDWuegncLB#I#V%h7ny!PxzH8liL(YqrnQnGmu3dmivF6u?T(;dMOFxSY zyn+Ub%?m(KQ^^twBexxnbswNbT3JT(%m*dhZd`M9>qPT~@6p#Sd z;Er)0p=V+Gn?DNOcs?HGUd{(bb|Fqz};JET#9nv`9%c%VJBUs7(S#(|B$ zuDrGxUFvpc;yzzamTq_KXKaQ$2vvo4ssUbMd6ziYokSDVrLr4X7fqf0 zyUd!{zwd%+EvMjnn>K2aSI4sK@FR&rA!bwE-ZzJahFRM#G^Md3vTdYH|L1zoa0)oU_e;vaw;ZoUgd`5nujMcPB-F#rbj5*{J8>1?664pHAn?0s_0ywuqvL20sx=3Js9)n*{M{SGEr zV|51yF9EvB15_EsTPrVtw_D=E;>aHtQo#Tul1M_{jr{)oBjsUUEu*q&EPS%w-60~%I|^A zA!E1|N7u!HjGY}s0`rqP`$utcI-?^MmyN^8er}iPq2qe{zVel%`;bn|kVnwsaFhSL zbZa;)-s_m(iE7{$yRabL_Tb$*oi$kl7ChKTK`R0h7?DglyP$oEn%~92iR^*Ep?18@ z``FK`wKy;|s7$Y9-ryT$cd0}^?~oZ7{Dp!YmIOveCmpHT;k9=OVb6pp8W*Bto=0OD z{}*UlmQnhQtnbK zd!r5*`J#OjXqTFL&Q)xBm(VLnQ8q5VH%zO4RWfI+Nrf#dI;mu7 z>9vIvp3tyaX3wo5LzPmToF^EWR@?Y26?e^s1jB&GrGrWjD-yQM#&aQW>%-AEY)?FTAL&Ke8I>`lL zVOii2iaLq*hDzUBbE>Ovz2$%Y;mGyFJK|JQFK_RooNwQrSx69(&u!q@RJ=^X;8CbO ze^w(!1h{%l9}*Ehny%Db0~_N@IoIsnZ`9|p9s?NrT$LTzfZ|*8A+>TElNWoWavIY; zzHjP9afXZQv^2Or$T%$_3V?1<4y2u^dSgBYSvSmG2_z4OYRur+X=ura*q~1*HZM0I z!ykP=@XmBPZi*)*&7f$;8gD9ax?WYhp|V>OU@^8cs@hwu*v6U_UV_)7oEzA~q=EUw z;<}z0Ob9v5d&Ojy92&mv)*)X>#6HkX+FA~iv#?-zyg)`?uVW*oTt1+!3!mf6OjQlP z4hJD1w5N)M)~ATZCc1CFYpi zE&JxpaTqZQfX)WA!|x92&~`4jFG1dI--v< z9FDnnee0w>^4+_1l+)BqXAfOtH(Q+hHd}O5?X!4hs6U3hrNpmElG=FQBp{mA#eY^v zpxUXdjo4?j+%5hjBe+d_2_@(t+h7*UNeysEmB+o16+!REgoFgeA@~MNO{_^KpLp9t zfszwj#JG1lzU80sVL3_YUS=2>=z)utjH+8*u`H6P3x6^D4hacW>ffB!EFq>o(h=9p z4i1y^UY`V63fUWYxAq^zb46m&siuj-e)av};F44Rc^@h{91DK5!ltxS*@je2`#B<; z47##eynvAix#sYt-a$7P5pG#O>~z zPhW#*2Sh~E;k&$ZSWrK zWZ17<93m@a6r1pk`w3YxaZ;3?p%`n}OfGi_O6FC66dCSoLsx5?E{DY`wdx?3)3i|9 z>Kws`L!ar(I4Un;+gri`i;n*CMqt2qQuyc#JdVkHTRo*{U#F4wYHZ~-Co8_>7ud}{ ztmt7x`~wV#L*b#IpoE6g_m8UYEMEdvtnxKWFBzz4jjN@-x~_vAAbL#r*A0-jEA(DJ zy?s?krz(cV?)ApbFDQoD+j}&iI*2$wKaVE<(VeI&0$Xr&#CVqWx+I+A6|<84*C;-! zKOlQshRK5c6i_KhK--5i8mii6zpS5U6ix)b~-`)mrzCY5$k{ zgM)zj?IEvxCslKfGL<9fFf}(EXahaw{6Dz%1lGV-j$pV$p46)`%HOeR`1|57Z<)S3 z1<{p$^Tnq^D5#QJrV@#wJo5B*k&FN2htrW}l;t4IoeckA4o+W?K z5(z;IkFv6=Cj&vz58)a7eJ8c`bW7h>MkU-Mo-%p+^4j$J{t@Rt+M zlvB8B{gveEnhiu_dR0qda$OooFFFDth@uMMmgy&0KPjqdSTn0M%9f2lEQ_EYl!gUG z{QG8F)0Kp`=G*@~2_$CT^e5dnqlkZU3WB5dpymggpdWeVh^~Bii9Sf?xLHS@86_wR z&b1hpeZzE1WwY=8zmxzrJr2zh-D%>k%e=H6X=P<{qXYj}PQMc$i=m2QF(m&PEEz|NK7fd70qv~!M1D_c z$&%U9e3EWzYPUj5Hw!~XMyiTFH&%G$*%ztGb2ZyyA_GZ{_)-C-*jZT4^my_-++K3Z zur()|<0x^)VbNL&Ko}&)pO}=zJJQ?#YHtwA6UBaO0*}TgP4JS@Gpz8Te<}mGb#BOp zYjq~Qh|jNY6i<7VARd_zAvG2kkt8K?r@sQdLAxBY6+*|D>Wfba39NOBW_*nZD=Ygk zCJBs&E+^^nma~0yyJ#puv0hhD0f!buv*vx)Kb!+NjP4_)$$*%Qk$O8ugtq24EBq0B zHCYH1Lc+E}V1Dz~KdGt#h6e*(M|ppyMtH?~atX(EI~A9Ux@Wex4v3xhkPl{l{T%(s zi$QYnK`~0EujEFg6z z(n=YUHIL~#9=CTKQu}wLvr7U*KM)_Dm*1ZV^N;&NaC@i4z^PKMt>Y4Z{I}%GKnY1z zYb;IIJ-Wi%{Nt(=>wSPD(Xg;2V%^cM#t!x|b*C#V5r+iaEuL5WERmgD2T0$TQherw zi5w7EhZD;vOdf~*ZT8zAsQe*sqow;AUc+%0;VZ$p5EYsa~(?hF&arJ-2 z2nczC!ao3dpT<_5204o%sn%s}YG(G;^#no5y%f&_H--6Is(5G=yUDYMQr?olpNB56 zkO;{H(T1Qmh1EU|C8a-XbOD=$3(=_+Wn@Yp{#7nOjZ zbC{ee&gvsNoq*I;zkkUdYFAc;p{_)k_`+zy`gE$uXbwCgLp; zzw}jtVYF02L>9Z}8hOru7)fomur+vGDsm!NAM&zP`4y^HmMJAZky{~k3YeoNpK-hr zjGYDLO z+w_^ic^?gT+Y-+uruXN=EbqvAwdKs4}_H6^)G58zO$m_=!)#MfQIe2@(24hN_p zh#yGUrzgP+aa>Ah$uU6qz!j6+#jNjA;|kdYBP&Ll1-T3vTBLEL@vxcyu(8Pih@SGF za|aoKi|t>yuq!N^(+#+tYXUbs7$Y&87&w#$zgw(eKA0+$NOhZndOtIrKoC8j=yKkW^Zd2RP5y=i4=i0*DF# zf~TlhGdtcNt498$vZ5#76qD#(4aymN+!)$QHjMmmvQtD(x!9RaPT`L5;`v|Ks{iBK zg`#&id5Z%{t#y$}@Y3UPsT|Vh_@ih|%y2kjYCL|4qQH~XkS8~C(Ihh1HUI$S8t8yb zSK_W{nw*>tEPdcNC2Ud#3@e;&LQKvG=HQw}2N-F|;vq)%0Y);8T}8Lk{c+EDInKkb z#lY7GcOTRw6!CZLit_n|w`L=+Osq$E>|eoaEK;M;8_48FnG-95J7|mf>tF!ysQd1A zhbh@hvu;Y-q+DPe8eCkhXPn3qIzN?5kZY!Pfpy-eG7Ha>CHXZw&iLCU^ztbTz5Zse zu>mt#3(tj5>nOU`7y3$SD*e~tN&aIU1_O2XtZyWDMiEV{QMqa1fr~xwtf~4N<|*#X z54F+k$ub)}wLW{3U3UX9Zm`)9O<Dj-&0^Sbl)zlaOf0o`i?}M9(z;3 z=H;G4!_By5Oa)sD`X4DzRoff2s_Z{fg5t-w^$&u()*4&<70L`8vsi4Oq>xr=7T&Fy zba8|yQDkGB8Z}Ycw0sEA1ZuXIPlcbADpWOIY~a)sZ;*UoPy|GXw`7m1#sI@VLg+>k z2M>^rhZz=^zlaZw?FKFCjV}g`{PBoCRvBhe-r$Tb^As=Ok+@oQ`i-Ga0v9{FL(y~% zWZATEY3fi-*N*$CSH;>vD{sYy+H;0&uV%dn&LB14(=EPjdM1MoEq)gZ2r3*9)Vg?!;_xpj`yY#J3*@n zd-K8nTQ?<@(9NJn)IH#?xB2$0+eAD77+Ij*aQ#OL`c^N`HLThDranM~=Q=~9;OLaW zmM2hm$_xS(3BT?1zqXM7wWX>)ZbP?!2e5^eI+pKa^B32YUKQe#@@ z*N}o9Kxkf8ojDUdX8dld9FaOGNrr0sU2HhydBZ1=KBunXV<0$yTj)&<8Q)&BBhS^T znVk$mX$c!&ZeRS@2B&^3b8wIPWAF*zFaV!z6nc`~Cf&xanE8k?OlSb;nglUwpA+vn z0b&ke!z#hLMGRfC{I_&ns1{ZuWuBswCE5b;um*vqszz`P!~^v!ctAL?Kc6$mn{p52 ziOJ|3rrZ~5lp}jY{p}fiL@q0kPh7HVvM_#7?21!M;4eH(>-lS**Oba_b{1k-dQ z-pO~~?HYAS!E5C2J(`j&d1lCtfW{7LazY42HI&D6AswadJk+`;Z=E`QN?dbX;ba$3 zwH5pYqlYamw%KXwx;{CTtVEejTg&mEm*Y!HQ9M+4)hg;2yC{EMLIHwz1|J*Vl!N0@ z@lQG()wuZ~-^rGSyb_l=nv6~C?dS1ni5n0pPSNQ=R|9K)VWP(>DRCjn#%KokMLf06 zhhcFxMDsV`xtp73(P~Q{5!h1qz6x7I^}cv$HYR(>z(vlY#}~YT?g!_G2!4EzuSIG* zU(pAxWmTs>kX+_dco{f~ucj>O#TF(91?JsXP7S=LaN$UKYE)e>_j_M?qk82Hhpla_ z;lFtCf`rZlQ?AN-s~5|>tVjK_@T4^nz>uxcTS^ycCTEr}UxJ-Cz!bVpt*J*;Y%h6k zA4&pO#X?WR*m!;djp&XNBEt5o29eW>@NiW5S1RaA`2H54-@58=0lM>-N3gVd3a7-c z9o;kI-@kEK8T1lHSVCq+Wefrg;2xq&9!P+<0llKE^mNZX6o*w5wz<*d+i~|Uuz;YT zI51(=-+%2J3OETc(v~{gScX0}2;$@O1&jX*OqIrcz~NRzc#toUxW2fRzLPqM8s>e7 ztj~0CrQ1k&zfF7h$aSdr_6_Fh83T!@JL8VvM7tm^WVRmM=hPK z{iI*)CiB&b=ifxc;l_LaUL>0#5h79_ILvB2j%)<<)$VjsXMPa8^lukjk<-%pxZr_; z=qe`Bc8DF8u5nwP1RfcY{f|Rc$(g5kazC(R|6{-ApWsMnT|7(3vF0?-n6VK(L(dvH zs^XNR40PB;_&`pS*fPWKCjF{8+G_Ya(#Kk5D=fgNU-c&vg?_!1-|E2{CoR+6ujuox zSO!iuExv0Vmv;5j}~S{XZJMmo`r5p03rqlA4q`SGoHA z{8kx|g<($r>S|;HmaPC7V-G1A8&l_jX~BhrStE$g)ue)iHfA<~=@94t-`;9qW?q~5 zvqB(>(sf&mkLPDkP7bC0>qk&C<=9%RPtyLi1U>U2sq@yA4*$k!xP%&9icSE!<|CTWB&EO;kKQ3DvPT8K$cvQFJ-65bxV?CVyaZW19Y7aZDJc zgLe0h;B#FUQ^GwF`&`rxpW!0J`1-)Kkpf7F$}FY7fLJAE+Ra;p5ZHe}n^{+d6!uz# zVwu)KM{p)|0_3V~WrHLy(MSV%wo{2TpB{kz2+NTzsR(vDTSs^Ik23?5G!wi9=28uW z=CQSWmGb6ap$zJ=BiLFXWMm3DYfL$N>n-s$A9d15#L*zYZ~q{!@rPCkN#9$+W7ynT zk}Nw|>c+R!odP91+(+L5f&svW1`te&&_ax;kPXShdw`u1VwnJV`PIY^8lr7)1u=-} z$f7TI&(3ti(MXRUW&f9!0vhSU0!D?e`T^gXYId`vo8UE%&5TGcLqDes3U6P-aQa+8 z3kB=`AIBm;k9cJR7NhT+@(T%(+wLdg8)tFN`<|WI3Lkucs&6IsdI4*O8RYRFA{AdV z|0+a|y+R9d#8=#LpHX9st50b(1X{+pIAEk8r0!XkO#Wrj|MCXvS2ZHEUSX%%|IzFr z4VT3=UCGKtU$KF)v8Zf;{;1+FC4A-*OUH&H{ke(GR1dPmePS1vXMnY_a4v)kl;M?@ z<1ePuZSfoTe^e2110G)=m9qr*%55urYPN(EXeZItZV2EcW3A9aUS6DgYg&h=?Mg z{`dS&3MR*L`T3z4*uXpn!i?n(;Q|aWLZQQCx^`%rW?R24Oc%;cfS9$^&0F*hs2x{d zoUH==@z@761O}VBIep9D!6`mK@`{Zmk^;2K{a5KtQ$T5FX1#hwJYd7)cU5jc=8&6{ z+OR_hy9h8tw4!P>ADwbIUxML^~|0G;AnKl<8f9eLf$;Wg530@sE9(VsBLzJ z({Ch07!eR)cQ7Mv7hnQrW1UXEGoSvsB?siUiFiT4Q+^A{^iYu2g=;atr4ZqcXVL%+ zPbnP!>g_B?a#YTfo_Q7DDJaqVty2bp;dZac6=+F?5&8P~gvV3{LWq_8r1}GpB^=+= z^&0ZN_UF8i9v_Jc?6Wx!`2>Jo==Ib&aThSO5hvhPTrvQ5TVi<1;F=JCbNzoC0fvMv zWgw28MOyGTOtz2>~?vOyy6LWjQ@4}ZzuLl~gY zdXm>R0`zEl2-njPUq<1M`vSfk+|(+`6f5kSh4EURr=$%f7Y{{Z!h7iE5x)m@w{^ZYYx19U z26v$L3@;2#WuuDIwWfj}d3pSnz&V+~rS~Fnfj(y~n`B~LG#wvGbzYTkcCDiwx{1S- zt8W+fGEfAVb}rWk2x`UCVxGSbixdCs%w_(cLXl zb=GoeBj)N|LS8A}rOjvsSy%a4_UWzSY=7?{PXNQ-V9}b@^>e?FJ^yHQ59&8p5u#LY z^|TJqWJK!7S=DCs4pe<<%3n79kfZp*b;d9%gG|bt!TK;VGSWI0(t_Ebfq(qn81tt_ z$72Ah7jVy9DTcRzj0dm!atltxQp+%M$H66TH^b6*?uu~PU6VTeM09kA>^;f#E}gyT>HUpiv6V^ z{&!_Dv3V+NIg#_VVzs5KW;MdiLSe;jfA$nmaVG%CmTiU!@m_b%#fg2FR@cFN11MG_ z02H>SJ~=UQwBVtoGuVckp?LrL$a`UiaL&C0$sG(dV8^$(O8sv(TDXMP(>Yy>RONI#V@p_yu64y2WyIM2ke1qgI0-D|bb5xs{sd7irufk*nUyaS)Tgw=xjUK9UG(BG>+7BIC`!+{O z{3~&ZPG?otK$#5uZiVW6<0HfTM=>i93i7a`20;xq{cX$JHv;q6_b=UCkTUAT5_)^& zrcOK69JL{4J&M)0u!Y^P^B}=N{{%KHBNCEGZt$pV^ANv}4s6}?xH+p!+eWfvn)&|( zdTx}jfFXUYk2p=O?T{>y+l_lxG{LYoBO~hrt_3L08v~ABIO1SoXZeA6q)MSMEnYlf zn$`Q}c*S4AWSqlCGGa7~>7Ie@w4sswSruHKqW&!mGu0OU zY{1Tsu^}BJrw-OYyL?C}_F{fJUnE@Xfx^K$Iw+ox zS;!?kkBv8I`b#%tKhcRFSPVk%Mp6DnMv-yVfI#n%>?~ZWeeSlB@2+C=UbQM%S37a` zx0-xm=noCAAX!A*?yDY(Ip=%JaQPK!fW{j;wHX6;(Thn~@R}cOh=(Y#u`_oq!`8RI zkDCCDWUKQ&5qFN_GdoI+;;n|(iy9l7GUEa`#`FA|tyx>tW^J*{)_&&;u#T**%J&8X zHqrhaSnL;)Y2du!pYP0v$bp77JFx)B*Y+pq%)}D}PvQM(G3`)1+Q#vd0Wn zzZ&$b0FrrV;sE1GdGdQx5NoK7gLwtQy0Ust{m&|$2d+!zy>5O86Vr95fz2AE(#pui z2yDzdgkNDN{5o*oNjWG9LW5Rd#6f~0X3lb1B1^~tldxU9a_y{u!EB2Bz-_t#K8w| zm#h3O-o4`cNSoD{lWF-doBXdqQ7R+dOaYoje(!3BLBO`#C>L@v0tkefDKEnO#(-Qj zjEG`4$nyH)6e`fBFgkW($$@srpW?UJlzY*(<0_`Q$0^?=u!R*aZBq@s z5sMG(>sN?qmkL(}gp+1yFq(7vk1$oU0*m39E+sgasHm^6h`oXW0On>&c0nDlgD3KO n1vJ5<<$)qf9)X_p5gzkIJ?FZPst5SPiD%-%GD5`y+Ft($8Ln&7 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/favicon-16x16.png b/clients/binsa/src/img/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..9202898e697bfe7f58c448af974bcb6b9b05fb7b GIT binary patch literal 968 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/favicon-32x32.png b/clients/binsa/src/img/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..cff67273e08fc7d1f1807e7e381d7b5d97a11d15 GIT binary patch literal 2164 zcmZWrc{CJUAGVvZ4P$KC2_s$xUwAS0u?|M+r7UCjW*FIbHDgba3{kQaA~lvsmMoE( zCQEk460%dqzEwVb-|4*PJKrDo{?5JUKF@ug-}&8hf2k;IQ%<&XY;<&VoaSc6m(HTZ zuK{2=n}egGcFzKXxv|0J2>Ok4af5VpfIoh%?smlb5yI(NX`7n|Ei)(1(N0xx3&*03 z6|MIB^zNkc>AXRj%58M#(RDVIg;JT$be3aMD zWF|#kT26>VlwYhh29pQTo#m&rQg|DU)q-|_@F>aW96#hMNJ?%(O#G_L6>QoM(K`S> zGzspxy@kshZUf2et~`U@D_5xNYuo|J7>;Pv=%`n@oKBAHPAp%MRs-=e@K$kCe^#$o z4C!QA1d4McsXjdJpUcn8e-T`t4^9zjk1aPj_P)7|#8|YAWJuwqGEl9t@tA&A0*y-t z<}KKRg3kFx=xf6XxF5PAkJ;j0i0|a4=;BJ#9GQExde{Re_>8#R!ce^^^0P-+egIcuMX&TAQc#9$e3Z{8U0hq%W!zG#&;kb}A%NYR zpn=b&+kE9T6-lnSgINvM8_iP%WfeIcD2DEMIl9%BTZNt@W2$Mu?A|@%=n#PxmU{-O z7MLkpmtYDZ*@io6&TDd{=?tk_Qa4OtTQt55+X6Eg*j(yLQld?{A2GbXpe&)G^A24{ z{9Bs(-7j2*`r#s>4T;j}oz=4yml=3*R7!bwZG-DP?}b80`Aa5*ZgFkn%t+Kj@JxDh zO-;zyK(6{Q3;RDXXwVIr^{JR@9@)q;r9f-!dlmul2nd33O z1q>ifkJpEcWv)7XR>*=kay>%>j>c%5FiEBo-^w~|ct3Wg70WT)T&N{uYtM(Arw+Gi z-d$XxEH*8>&d*wEP&I9?+>KpVmY@6jMz}fWo0jV1b#2_K$NzIpW;>m71}+tUtn~i@vSE*U~4G}ofiOZosd+fu#Cwq2|=0Qs(>0& z|L80`!06~e_i1bQbs>ZZo97zwKkpLwHb18@KCNyQn{^&76U2LYw1PZ9-dFWYv}bK(`d5m!5x}OxHddw1TBx zFskBu-=`-oI^6V^1||AWoEZ%GON)itfWaaI{o*^KS+xF(X%IV0Sw@K#XxCXJTC&a{ zs;3cOi38377DqK(_k|10N}+>!wVw(jd>-Ih9yVpS35kCCA3o$FWV4rallv?$op{`; zbVVPdir3+JHP^1Bx^KyaLErCjqaa)0%nE%^JtY5dYIsQ5dE0+!m*?NyJakXX@iKSN zi6Z|DiU3XiR?f(@T$8-6=G4hhO{VQ60IZK={52GRDv=;Z{&}t|+Rn?O^b~moe?{JuUHq za3ICaL&Z|$JLTLYn=7jP-i`yZCi+K$^XcKD_eSCIQaDN+_Y+cmg_46OR`No+zaNL6 zB~b=XuV(r~w&b91e?ARv~)Gr*dapDE%v=-tHRuCSA;P$*F(b=wak zfI1q&q8@Q682L1=6z$u(_*hh1Pf3!yIJ3H5sBiCQU;}IiP4Gozxfj0A!|TIP?i2i0xP`pw zH0p5UE?y;i&u?Fu$QMJlf3L@Is~s=&DOr!)a@_H8E5HXU91N3m;FpXG+#?o2bT{}Z z4eZ7)#cH7{#R$DTJ5%a1p)x>4Fw%iA3J9&YdhNpi0#2Tn+gk*8$M~7S^{9FN88+)< cHFr+w5uQ<2{^l2X&)Nt&bA+`q(a;tDZ|7AKCIA2c literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/favicon-96x96.png b/clients/binsa/src/img/icons/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..5d05b1cfe4502415a0726a2a5867142ff5ffdb20 GIT binary patch literal 7074 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 a literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/favicon.ico b/clients/binsa/src/img/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dddbd59657f1f4c91821f2158e6c5c3a39b79d04 GIT binary patch literal 33310 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/firefox_app_128x128.png b/clients/binsa/src/img/icons/firefox_app_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..1f721fb9e66ed9e7b5cf3a972162bb4b3c4d7cbe GIT binary patch literal 10747 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/firefox_app_512x512.png b/clients/binsa/src/img/icons/firefox_app_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7651563d492a440dbe54adf7dc23ad573244f5 GIT binary patch literal 47250 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

R=Pq<@&#Jr6zb*~A3fQQr9esAgP zPQVt1!F?XDm66DV@%HBLE)HkiH#nhTSmDcJP)n#WdUsYmXmZO&)(T^xv-;oMB^)7% zc6z0C6G9zlwkNhKKr@3U_Mz8nPM0 zmxqQpuX1r)eCP8EW-!@cHYR=5;~&xS1{KU?o&&CpkOYl_Z?Gejmbq)gx_@Q~+I&!L zP2ht9&F&8=95L8JObQ@q5AXcwi(*~Cy4oCWz@RI^yG!!bO6}x$x;7m6x9@)Z^ZU26 z6&V31hEY@cCk|QxzWw)_wI695y zy3U~Q?M8~is_Al@I6V^Sb$RvWH36X`zY+{w z1bI5_4SJ-&FM_$#*0;>g@;i_~>i}ATtgI(D0Sfk?B2{WF@@UW0R>uvklcp?%0SvTU zT_)tcEdQtvHKfc@9pGHZ=$k5q|E-z-00TnRJ+q!glUhf1O5|Yb2!m`O?mY1!&*Hf~ ze!r%EVQG4vYunogpmPhX+n99Sps9V46I51Q_;GCleJqp>7KQ(gRnJey3muomBMtD~ zy%aew>_-4yx~;h^p?gP<%(yC2mNDM*mWUn<4q3YcSnV~|uz&pKqfPbuKD3j^ggOh+I2PMvI$lmGbDx<*R#P>JD3n5!$E zrt?qTB}-jSl3y1eAVG^S-5+eiTfP>OsC|~H6#fwgy3e$<;~dt#RCQac;w&j;#t0n_ z5F}DPUR%Dlv#Se(k<)Djk)T|YUi!)531J6QuLP?aV$&L{gz^cZE&!(+UP9o=ZNTW; zV|?j`l6>CtqUp;1YT2OhX-kfA!E*1kcuFIdFmu@h!M*nhwicY8*wNUu=4GJLiobWX zT$U|gYVRqWFP!{sLwQ=bBDKC}J>JT!>?HUAT7Q5;HQ9A9k3pjsDTa4SOeSYFtFG48 z$JNpK3byCNM|Q*swRwaGUQy4+4GO+K&YWI&st^q=Gm4O9V-QTs*&ooHwERp zR>rQ@Typb9YMhcs4~{|;)n=P)N?c$QPRoz1%GqO| zgP`lx@MLKvHn-dPHe$(i)twGvkYLXjyXRVnM)!p8cuAtWV++keQqm#q`}#On^Sjzz zd-AKD@P7qW(Wbkc%W3ylQ13zQL-KR|0pQ5{CZ~$$|)T;%$``WAE+J$7aQq&ahK>+*Bx0{swrS;bQ zqo-ZwdkJfui_M0dG60{+V5W*IiuP4^Tt;Bey>bNXCOYFhGJMo!&*;8^Z|pOkww;JV zth0fBDof-nJ|@q{U`vRQ!Sg^>z3U7aN(hKIQ{=OcKiE#yFKzKj4wQ}E4(fC6;!opc zB+W~(+Puj%UEcl5G*B$X8yrRCD}@7fXQF0%yu5W)ab`n^h{hmT<@Q(f@WXqz2Y1Om zCwussjBikyQ$X5536fEZ(XVFE!4;RQqte<&XWN^2;64HD???@H^Bj50P8D|V?2rcC zlfd0QsR9nf7CkF8S-U0pdt=-pC$lKVR|7_Q8DJdo`4V3<_Z;D*p1VkNQH2tj797a8 zfO^c3rFW+>N%O39g2&Dk9HzqYa0ti4aCknj;hf%on_A0vr@zPTCUFKnUU)b$QmN3N@b4A2Jt5mx=N zKf)^R7a{2dW}Eoc;LD!8=j(%UM3V^y8H+xIUoI4K3u9@GSVHh?amYq4cw%TEfO=zN zQW6QVc~ankJ0=ogfiRF9x#swjM?qaqyMmYezxnRlQRrqCn_8lAHORrYTO3g&^G_k! zj2|G%7~v1L1y4bZYCni-RKl)$5ldWkZo;?a-ahSfCU*Hm|0TM6_Q2W!2L(`xfF=(u zKJpbW%9*}8QXa^8m(o1&I|C=>v`aSN1m67)f)K;+YfU+WMil;ur4UqY4<@yzH-)q! z;rm(|eA$itAS!u4(=%zkMpi#q3Vcy_T^35g2uYe2(3SxWyrFBv(O|>>Z9L@F0ZQ`` zf!`g4apF{KO)IR`;OpY;f4lIUTO6FsmA+yDKu>s#&;NFO=&sA*PwBwTZmYC~f80nG zwjH$VdYw1P#e<5*^Ks$J3CK`Bx?=PzEmVT*qMvJj*6#M3IQjxRDRLDB)jrnZUQ`=x zLyiq}TgMMT!O&L&om#rQAE-}?DTcqzz)`7vLe8vpMmMAd3KJjW?PG^U)Mm?6QkDn| zZ_v&Fkwb7T26QzT>tIhv;9@J*^x5?JPHiA^iuXTGoHZQfS)Te$W6{#!S_2p&RBO=r zmza&WEfBjP7#PFB;JYu8_r~faO+#!Qpr<$(>gEwqX!;lI7 zw|*i3OK-;m>=?>C%=Y@M$zhL>&8 z-8~h?Jca#{5hKXZpF4i~QJi4<>1fjt{W$4Jwb;jG>T0}XD#TvR;k8MAoP!yG+W3ax zhMd7WnMr*UpD~%YhVGK9#Caw>o(mNe$gQGfE)t(#4Ik7fJn?zp>AAFB8Md{j5=QwM zcNSIcY~Y2F3BQOd7>|NEMuzc2rg)rOZCel5^L^J3M!~+h`z4llhFFB|BFJdBen@6H zuvf*(Tw#)kCf0A>dHU$uYlL2;5WEf~Y0OY3fgZwwlZQdPu@-ZgWjS7NhKFaPUi(&x zlzkt%T<94bbMUogO6tKA{h(K*(m?#-jt$-MPXiaR9G-idedFzK%FcuaaAxqmh0FN| zz7^0U^;mIq25v?ZhsE;ubi@+#?{F9L{Xq6bFu$61j=Cx6a+A)*KUX!nq~caBr*QJq zK!@fbfp-zAYFHLuse4C9B^(_q!6n-6)^OvA24%rLn0yzG*S!l>l$&n}lY_5ivaK6U zH=f?T64HE{LKoJ$XnAH;{z^%G#l6K3!*K4nQNrP{jrnwFx}e1`X)fn>M*imp*0$${ ze>hE30vv7Qh<*USx^q9S>mG*0Qz6{2P)}-V%KyXv_vS&+`F!S8fTER1vV<8^ruN1? zxaadzFJtbWX+HV)E*i(JJta6KXxpfX)xp3wu4vR)2JWUscYe2CSTCAiGqq;blI90b zJl3Wc%u zZ1N8pF@D{*NfnZinE)wTVcPKT|1x5|I?QPJvJ(9rGWU)xcWKDY7)Nd#iK?#76&+IX zhjEj5$WQ1f9A+$Z?6nB#^xamxTu!<3Rt!`$ky<#x{zrtf} zV{@n5_eUA;cjW@t*vJgd25AR1o}0FszK;;&j~#nm>%!1}igHnF>+kZ(g1iJrO@6*Epe!-I_Wj6E(J1s*(BewA^}ww)oHSh6HywWSsD2&3;3T>KD|iRDJq=?7>wDDE`1L z@w53BwjKrfmpshUZ^Zl|R<5Z+e|O5gbJ!g1sy93}%o9o7iP^Kq1`8JN6QB@hwc8JN z6LZifZRsw(Q+`$Qj(bP$)nI)w$ONIHbf=u@D@OfSqw10lOJEtD8IEnZxe4caf_}#z!!hm?!Jfk)&{ajPa`i_-{ob+ zRu*%@cRwE}wCb8Znqk^$fCAP#WG}n`C+|Fzc+Ei!4=!K#_5gq~5?4MQK$LuXX+*#I zkr$LV1xTX_e3fgOfzvdwhR&7XWqW}9O;k(BQZ)(@KWu8Y*VQRrIceOKyYM+*^>63~ zS_jQKsGThgK5{A}kVxx))A5?)X+5zEL^WeSldR0Qw8bj+-x6>-+2j1&x0qW~PQ8i{ z*^>!gv?sGc*7uIl)(7PbWa&7l08o7HBA8iv_C6b*&Kl+txKfC>qlcK_=DTAW;&>`t z(Vj7N;JL1|xHkPFaP{W@2D*1LIp~piAkHnGRvOuFKCA=izEL6Ze%w9*^d%EeYf04q z+J>E)fS%vxiUqw+;qxFPR(2=RT=SG4nzj%-{6+C$-&ZyIS2RaTODFTJKQR zaJ|`xdsa+oOw5W76i+Cu3wtMGpKiAH-XN=vLb0*bDWNNm62DwxXdt%yyHdUHFM6-5 zS=?gl^kkJjNZ}YfzwFBU5l8`bz=j2X^*iEx<0ZWe2P`Ayq8MpRcC_TC9(RMpiIhy&ZI4;Z?75ux zQfk#?wbbwXxtQlQzqYJhDM8D&`@=1#wAK0X-roYAi@V_ovX)NE8kFF{-F_V8?d@G! zbFpDoIy^kQ3<9jdQN;Hpf=YyIY<&F0CyuOvSQYLV7k(EB)a8ZZK-V_1=^d2xR8E;$ zsMuYS{Co;vL`Mf%sALrZh+wjz@Qd4z2@YhMdaT%x4+`+WF6N8E7^z+tL-m~L^Z{D&H_E83Yh*6bj2Y3Kx+zLNS~9~zl+ zI8w>(tsXO{n9NI)fLTmGIEoSs@e!7+YV#i!Y9F zW!NaJL|jrV*l6}L%J|`#m_Sm`59pz28pw@uVRqZWbY3uO|J+*~CI=2cEOpmOO53%$ zyu7j(mAhlG0@TCqjPx4BK1fVsO5K~kfQeO*;UXg3uXZk`rZ%2?;#BiqV0$HwZ<|kx z^q`*(eBDrUoh|-}GMwax=c8Vmqlz2VKRawV?a9s0ziF_-2_9P)^sadQ**s>jA*j8Y z8lI1w&0w(DxH!$wfhXj4`_i`zuf?u}b?Mu$bd%3x)zLJ*-R~ zPvdKg%|%cOeGm*vefybaDD}H%B+Zx&j?@F>#NA-~Q{3lPHk$&)H0BcQjDi+^q zYv*oVB>DMXkD(EtFU$^#)P^@CYi0P-z+*!;j;m7W>xsF8D#Q8g`W+zV;{$b~=)H*q$H*BU^ z`g)9IgDiTp4Jb}6EBqyu7C!pH)phl3jjQC);>?Bbf-Tb}K8ky0I4##)wnxIQ$^Bl2 zXzI;gKt1!cz&X-sU1kXFu|mUjqf26T1cSODR;J#l8pj}Mh8%6RQ}JjzP>aaJi`9e7 z-iWQD-1esIuIw-4ZA0Q30?n@ZTz*lu=iyyEVp|QWr5gs%i7BKE^dnBjrj)JTIJ9Mk zbQ7JqhXn05tGmNyB%5#Voou<(FLlPX<*gd98EHOH>tAD&<=z=!r+rfy1`M>F+(xDB zZhK?=boYmJPbe^OUD!Z@VS|^JW3x)Eld${KSC*QslhxrQW5-yH-PQLPilh5|R<#Hp zk-TAAVnMgc_u`acR~|g)Vh8&?fn&;DL;H_9@nrbk1y1S0Ex@-RGtK#s+I}U&z;HCG znc;qdbh;Fopu$6|N+$NbglMh9MfQHjzK1ONK%k~e()atp*y2PowL5(C-d6{5mop(fT*10S z`!J$!1+n?7@1St}Bm&`RE9FexN4(L1ooV3bO^r2CmIxR~!A`#?seRB^BZmz$ziOW! zIe(FJ%!>PcJ$H_EnBeM(xEgsHp_4O(dv-=hAFdjkMdcHWeHzAIkzc?6g zd({hL_Khx`kAVPUU_CLm>%PJAUJUE!uPpmb0BjsN*?+r_UP9G*j=77z97+?Od%d9x z?j*yYyEebxvwosbe%k$vz&qK36xP1fzx1F#el!@yy=!Q*8`15k8fU5EFw=j-s=4MW zN5^bJvVyM8TxN{tTc*|7g>w6m^E|bpY*Is(^PsVGK?C0`$jNAar6i|kFiDm#Y?#EW zVSd%WQ!;bA^K(r5U{a-`Hqjlr=c`E_?h`EX<*4!Q25hI>G3Cm5A$l6AXad#d4y)vs ztnag}dw`|=e!9J;Ef)`V-DaXKArLJ5jkxb6hIf}RK#Di77pk{y#Hu*Bdug{mjR5GY zyZJ6HmMXp;=6I?2`Enxtdc%(ulpa2ry>7Y~X9+o%+Sz?Ngl1l;yClK(m%R-keMm`o zc0DUr%hH&#XZK}l;kqvY8#`IB4Sf$(K$<5c+Bj%?8z07g5vsb!v5y8Im+dS^& zx{=c>Cncdk%W^y8dJ5P&%}esWyV-9|7Oh=g%5oPR8l%?xu&A{8e|3D`-QZU+zyQ=0?^SR~$wM)Z*E+0N6VF?| zXB5xk$E!S0I9PVIVh~OBx8utAD7}2|>Z)nm)9R}Tt5ky8z8nC>`?e-40d7jZ4Lt6P zpCMPfNUtuG$#p2YVqH*EV{=AhHGJ&r{W62uCB{d~5{T26alAz_m4l#!vf$5NYBj&! zy>72yeXz_zgDHI4;MuG2Ne@xNwP-dTGu3t~oa^#U4^s^1D_chUNuP;xhY>oXnnN!)eTtbXQNvl9WWB&BoMsKt_-yuC_*ve=Oz2W>=hAMd5l= zUc6~9Q&|{O9m(aox%?WP%|XB1skdP2yr4mC#k1zAM8uu2t_Ai$E-Dj?(ZEz+#8rF2>pKb`m%luu6mMQMj{)D24Yf}axh1c^ppvt0D!(jRwA zadtlvA!T^~GTVSKqVHzX{7bgOhEgph;VmMWkk2(6SSl4x?818gVJA9tFlZ+M^omfB zDt3tF&!`$0xQmvhdtcaU2oZT>7SGA0@;tCY9p96svh?mJ5!*uXiQ6T?D|qeF#CvS5 zo1#f9bH}-P*i9$i)?}7Ep((T09L#{9=OhaFq&UMyA}?{Eyyc*g0NfW2Ac5;GiXRL7 z7BaDW{~t&+-Hm##h|lp-GC-DcTE3m^%D!RMHp0Lgjm!0H8?WlUI9GE>&MRc8I{V@F zOqm()GXeh?9JFU|ql!}2$vz%f%;mo8yY1+7rY<5EE7Ug_O3Q^{al|Li_GcYLZ+|73|LY;({vc%eUvNm=X;pPI{C%_V$mk>54Lv zzW+gT8Juq_ad~6pELpT)icCBJrF9|F0I1jBOu)2R=9!Wbn#|#MGO+ycN3v1_57|6= z>QOr;nM76Cn^_`($!LYsns1L$oT=)}UDjkTm&;Wxn#hUS6~R~3MbGrVFss6o2ZHp2 z&9t0_S2r4dKoc_fnCyS;Klgh>i^WYRwV2QDK~Y?ip7kGR&B&tX{9pWYbRm-QQ;qRA zf}#r+E+H14z2ZP3Xi8Rv*?-VIt`dH+W3NDmpKvI8+I`K!lfAx+&x+A@;wlRHiB{tP zs6WpKINzJ}!lj6wWSG))nZgU2WfdatM(GsFwgxUU3ea%jC#vjam@nQX%mvHR(Q=X? z-snQ;n(g4O6?e11%^32`UMA;1-y&_8Pv{h=YlGDh&DN*5t!IsjNnzL zq?}gd0E@2usOrZ(^SRt_P67Od7c8Q3jn5^aiqZ@u8sTrx3?@V|VhU4bv^UExX=S_q>;M0JbNCCFsB}^3j4_i9*&vZROQ%=e$Ya$ z*;r0k6D3rVW<$)>u_>xTPFJJaQ96QGxhan?ikZO=vC$qXAPP`&bM-lXKlQp>%#Oe% ztCPREOP3vCMxuJLo30&cYR zdCuxXNQ;~d_~q3x;MG&d^!_)0jl=%qc}`Fz9-s9d#MIng218X0uPn}*u6xw|Pygos z`($X_dD>`KnN5iJqP6HehIG+l!1Igc!{?G$Y+|9grf0fN(+1qC@|A%RdPgaFA$Xek zi>xEAL({;mE3&|?nwmu)gwMu-@XNDTD4RP}_0rbDFZ=oRXeV*oNsP$Cb4Ad=@?(pc zZ#lQ~!>g3h0hdqSv;VF|wOX?4=V2-IDT35@!uXszP*o2_|JY%}4m4rU>~#5 zy5tL!Kc87gB*sXas9z*@h11;@F8e^-p7a4b_r`tHR}-hE*RJ6uN{BpB^k$bzxN?W_ zEPIp(;y*KrD*XNY+;8V7XFaEt_@X#;y0SW~fBQi8U_#=Rg=2m_8=H4>Q88)KJu!5I z6hY!a(#0LMM+uj7-h~|kR)s{`|H{{M6i1yFRWR-PFTnzX0Xv`v|H@ukD^SMh(GkP{ z+r~jU=g|r=FZL0{(2)W!sdKp7Q=g5lNMdDWToE@6oHrFkyH2Szqwjwo3;AL>=S;sg z-#9$m)-ztAt_gB=UkuPLRjKL1kIRQ3SKm&(7H}DFy53MnwA8(?)SBsw^LW2D%!-AC z_X7)=db5fi4cnc}VS)3uy+-tZWj~X~mv;y7C%%@oWDS|9_=P9Pmrmy;0R-Oe?1+IR z3i>ed+9aGhBBBWE9d4aRNY5~-U`tZ7VKjtys3yY3^z!H{(H8k2-nRQbH0UZJrzTFCN`FIa)3DDcTUtu1fA&P9}&x~o#t9la!Q?F zZwCh*gQ`0o`Qtl!fKCgc$CbaM%69(6A{^wk8#(~)fozNOnH>2meBSK3buW3;`6{BL zo9kfS?sM#-PTR7CB;97r`Rd*6UmfL!TKo!zAQzspLg0i?hD|41;oyYG|1TFNXONu> zdo!?qkx34ajk2GQbVe@n;-)L!mt~!~Aa^0}-ug=c-Oh(MNg1z02DvsB-#BDAJ9p9E z+AwQi;Dhz#%=q)N$PuA7qbohM;o#+X_u4vIyP4>*%T(goqN}Lj-iprBi<$lQbaH;A zOh+h#oX+{_*JeSSC0Ivv$7`RyWdu`R{XwZE{~nDLHq1br?#^h-6)YmLMv7>@X>xJG z5Ec(h)I@r7f(ShO>H0hI^Jg9-h z2mQ4G184y@YEXX1o4$~J*~&(VD*l)-M6*a9HH7~0vbuvew0^EXxdLw9q|t*<#;G$W zrnAK~_XQEEx7DlpXENFzf(eLpbwv2Pt8*5O^r#_nZrv5dh|3H2v(=lSjtYWHpS=WQ z!6@XyWMzI^T=L3%C2b<2ZVc(ep4&34F|veaLOUn|Gq7V31Rk>;r}*$vsAjcqK7mTB zWRJvi`!3r1t@D@(Di6X>jyDLQ0IWt7o-NCNYQ$-tY3rjQ3K5DYOW?4NXUvp-7;mcw z(4W^m?}+xf$%9meFCsDg({4o&r;8qCy91awo~~bK(JXpdv!x=C)Uujz^s#o>rPtJr zo&quOiT)1>LRq`!A8gkfW47Y7xi577sK*iAvhwyD@UdT~BNbHWMGExh-`kUU;P<~2C)^_t{hv_=JOE*Vt>>FFmi#{fR%QDFPTQ2P#Nc{u)wX@-{3M!jiUkB#r`JN6VdVH)s!k=MuDsQXJqvxlzM%Bwtp4B$wf%KaSE_&Wf^*vUb( z%_5l5y-z_R^&@yE;s|RKp&LB^lQa9QK;VBZTuB|~_u?&!JV+v#7N3(&=QZ|X#euQJ zv}cbAXE)eA_s%@-ksE9?XRCYv+;zID%lty&gD0B~?YzjZ`HbbU3Rb4$;Dhk8^P#5e zh||=wn4}GaT8&Zc#j%O@c}4F*vAWg&#m5eZU0dDU8y-SXS>W5}r+c#aAnprA$lh7b zTUv{ge5g3hatoXBirZWB{1}R+)(DI?d}cd?nE(M##fBBCATJzbegkj0wu`UQqr*%+ z51`iI`Rg~ZIf=#wH6RWi76u$+Q|P3Cvut8jh&`ab6B6^*E@2RAT*%OX#loKjtnhss zJ{qK*6D8Gdd_13hZ$08Z=Wx-Jjm_RE0$2?1V|zOzbcP?;hVQ z(wsX_e8nQG@RgWO;Qz$~r5JmAfyl6)&ojE9te_({5aXh$9^q0UVq)(U=I=ywV**hZ zQFQ(=-n9B4SDkz3D@2UHJDCWUr_WEagI}wm4MHIAX>ld!Qf4 z^4@1HnX_ICQa+q(?18p$zmo9pOsIhWc}}d__Z&4s_yXidcTshO8h`Bh4K4F{1JO(9 zM`z(lbgyj~Yp$^${QZ4awE(C$0bIy&5Zif@bEXY}tDk5pj7scNDeNH(+Ud6jY4+`iZpWd;4 zi1kB2xaTrPqSw-BcLDc51&N8@I{0-A3fFaHARBSDG9cO-=r zvXr@CLoKFojMCknYONNLBGPIMD&{#cGVs>5JHIvll#f`PNO)m1NiYP@3<7JFF>|{; z0Qw`rwgFISPwcPv29^^zIdwtmh`aCulZ!egKaN7eNw(DDQNjzxMN@M`WG%QP4468hCNGb2zK-6PId@(Oi}*WWQ11TPUo=22 zxmwXnZ8<~k!d?AcJ&rU#3@R56zpuduRqtEaRmWmW5YNnAWPd&$dpKC_ra%O#35dj& zX90JhM018qqkji&mS$joc9x2DfK^q_Z}lq5vT;!3)73(s-xVv>mJGz z0I!m_6S|m`a@P{Clupk`eZ;wJN(7IPy+konwx&y;aHBMIZu5nd4t8p^sz?uif?C-0 z8)3g6l#x@u_{wJQ*MlNQYTt`&qIicQ+?!GjD=4`NoZns%duA{n;{NdZ`)j(`{1+nu zB^N;sv-rrc@U1g&cVgT~pLL-#Ll)i{gU3o$>*L*CAjSlaEczKK3c4Y49W#SASKnl+ zU^bmjDZ!^z6EU;gd=w$?tfjYaXn%{l{as?JXk zMum>JR$mCMF)!ooZ}b5*ISD8ORcLU+lBL!jUco)Ko6B6k^CUapWVIELz~T$mRW_KL zcEj`%$3&Fi+b^fHnCsc&bDD1Hw9AYgy}?to8veVqP%FSI`e}b)`C?v$-tVX7B9Rz& z*LGubTz7NY;&s$8>FGlXnKxX0<@$UZFMi%(Gdth-xFE`WuB&s~nH-kN`yV&mPyWZI z@jXipeNCFC8+i(ur@8kj=w^D~pO!4wNYApP_6km%BY~Tq<~kjFd>#~aosAX)|0 zBmjtTDgk91KXCZ?mdPVGD)!u zQ$+RamV7j_@00CnN3O4X`Ka-B&=KtTIJdif(LbRnTn6IK28g@WfIm=)Le(GB+o5}j z@xj2C$cyUYyi}DunUGKBQ;l=~FoP5-(fd#Q?b}C5r^<_apu=H@fdjccK8IBOL!oZt zQ))ObS5Qa*-NGg)Yu3q^8~>v8J|rR(o@>aE-sT}uT+M&vvM-%7g=Yv-`QTgG;IJI-`9w>}(>BAtl_RlDm=i?V$ zTas)gX@NnkI9&mE$dhbY6TN5Kq3p+vIARF)mufy&26GWoRMj(9h#SRhlzI1A4qKR$ z+5D&i5lY_8o3b3w7|Z0-H~3+}=1qV#5jhcXNsx;+iR0#=Z2FshedrjPKw6-4<>!0S zsaJlMWLunjc>u-lK0t-fBkYm&bCP=2(DX?nCs4z`|0oKXw4RZ1XiFuOH<1pxb{C%( z2@@MB4;H>?b~&e3Tte3DM+ha!NsX+g6tCW`{OMz1aHXM9xoy;uXQRJoCaB#q?+>m) z0e994(^tsz)R~)quwQ?A@oe?mzPl`I@q(@Ri*&*&LOJ1C4%8<bsD7QLEo3*QDL;Ztgk*d+ggnnE)E%uEgopJL zSM&q0<><%@Hx=S?NJ#pWY{?|1I=y&{UU$MiD4I3i?z(IceayIs=o#W=&l+4%Dww-` zb44l$IYR~YNA7W0fxf9DILstjMGDavBfgj;tSiE20ptu_)>`%oDwuEd**XL4?8mt= z+QN0|fQNRJ#-nr^ApyTw4K6!E_fqBsPmr^R-h&g2*gmse@N4@Vje+%jRf}=?NB!ag z&TPFow+MV_TqU(RP~`+zU3L~8GM@@AjU4aHn|o`}hEw|AdzRTxD%;S_@3hvTwT4Y?- zgifMJX5&8DnNw8E^SYh(Qg@l6J z3MnxvdGrt46N_NH%U5T{6T8@ykH3!U22Y>m6P+-0QEY5RVWdaS9wD<`7dCU{daHhw z^=7WVQU38Y6i-CFo0+ELWe(d6GND}Vs z(HyM^t_Oj)U>e@PjTbyyS0l4|vDDFcrcf1b?UOX%&WLzZu2CuQ{G+z7&FCla;)Jw% z7z$Nw6CV3ec}>?R8}x8tB1-&7_vtD2?bVkCroMQutq}Xlqm?RtD(Km4r{c3{BOX}a z`ocvzTi+3-t8%+}LGH!ePTBs^5qP1piPhP{?Uupq6#z!1Pbd(I{_!^V>pCh_~9$grcZ;TCs3}z3| zT>|HE?ehaZw_aOzHD|x)!TyF5yr0p`j8*(b!E}posToyxyTv_@1Q+>yN4)6YnUkZ8QnwI1>p8c_c~1q2*E(s4QR47ETI-B5$|lSg zd63s}n>v<~-}|tdx*8IxC3Oe9xOIPjf4hQ^Y`huoYA7&VL5ym0mhK&!$R|pVm;N6L zKFahkVcsptzHz^<6)UH`V>QX*hy4>anU`wZ&g0F4g)PK1adJQzi55mLPq6nzf_b>t_$XH>2w?iCz9Y z*m(V%Hzv7bpv3rlG-pox&_swG^U?kA#|X(^-d!99*T^f0b_V&b=S_PwqFhYF;?F zHE?zm4~*LJX#}TWM{?qPh@US8jCS3Vw!&5VL4Wyc&v>_JMv6+ zQ~#8Kpi_+#O;_igjZK^F($v7X_WX0Y*JZA84 zEnoRc(cuvqk=d$^VD=EUdj`4=gV?2I>yM?W$C{3kYZnIXY=Jwo+_&Ojf*GPoy0{D! z_$7qHmnOrS2L~2?#xg?kx-t=&pC=7a1Z8INXrmePoQ(-1FnO1Sx z9DFA1^C3cdNXHN(xtYf-IFD2(<^P^TD4K#KX)3@$9{lJHW%Gz%6Y5C|>qP!rm#GWNby0};vl9ip|xq_hSMn4jl8ir`D@E@pmP4l!dH z`7i;+5dzC$O<4tgZs41=#a-6}o!fYo;wWcUl@*n7U| zL?<$ta=E=NPwI(NkL+L~{xN|>Eqx~iM$ZJ^XXLVD=P_Qpi*0)`KmWQaZtUHGWhbR=oxt$ElG?a$vg=xHCsxrM%$_@&Hl~wZSLge(_9roS7jmUC0UKkx zd(%Uy-ti%M@`B_2nCJ^50kTrU`3*fQ6?KyGsNozk>?TTCbT8&oi+AV#ld?DOz78A> zOisgdEN`ydp08634CnZPw>+w8s=Yav{b+4K^*eXQE0&g?s~)O}!xOYs(=EE`^znh7pB!o-|73QbRxUwFiQI(-WmC z@$um6Yo%urck`%!U;}=k$0YVPv@+9rJpO=4@NPj19Z_xnSgi`zu_;}KoVFzcMIiR| z>EssE)vK3zuqYkUk-);5&ftrp^PnQ;h(&xXZQKo~)lg&g(x`O8PFf<&=RbiWzuXVL z3N>>+6d1!gL`R{YB%>Hq75&5jcv+4cbw6~y)Rn2c=6c5I62-lbIf{&Jw=WoYH_m9p zRimARaNbNORy)l9bWaGxi?d)0^~)>RVX3;6^{I@WLdqlfJwM;sj8cL?rjSgGV7UA@ zlYW*OaB9uB7hn?B!Gr%5lu*UD1i$!U*1Xknq|z(Pv_2w6qV++9Jf7c%e!_)GMKQ7N zx(c`LpEKd`Q0B7sN>ZFZB z_190e0s~g4avfMg-Yt0(i9eiA;~ykVRG+dgsdMrV*go^bDB*JQofateYOmmsi4zRh zi3B%@XT)WqY zS2KupCk$U39O}kx`fX^%j|Qf?=bd@oG22K&5bzIYlR!oDwws-0J1Y@?`GYO|ae9)@ z-nnkv@i>V~v%--X?Sqdv{xAQi5~{HJ&F`Iu!GGYCd`>?Q<~(W@R7zwbINaH!iW zUU(W#hmY+aMCZI*?P_`KD0MB);-mGg=A2gtI7xS_!se&~fj6nq4z0IylL`#9vV6Qc zWSi!9p07NtDvL35-V~_5a_o_uo_!)I`lnSk2A*5sdo~Z&7$kU{kG+5H*fY|L_}tpk z3t016kMMcgN4J25;yG93*wy8%-1Nv&g%*(16z>5m+4I2=h4_y+_0%_%BKB6}raK5+ zcLfgY_=FHFNPP&C>|!d-Ts3UX1SmeTU8!sgOc#?`EVErt(o!&ZV5Fz^zOz8nT~B2J z_CoI{S=xG#PdIavq6d@{pMea+bF7C`+}qdjM53=z+D;bheP?Q@!}Jf|Mb!?I&b?_d zx*S(FH+BSmOjJf7paqZba*Orr5*o?Kl@V_<`ql2kpJu8dWu$>~vzgv+_zBHbXZRSI zGD2l>g)I)7hx$|w_%0l->FS7ja)q26hBzWNC zu$Yv{TqK)Km$YtTs@)Y*x;;=^KtuLSrz*nLp5);F>Fdhlq58kRWy+FmEE#KzY}tmw zSQ4^ir!i$qb}eMz5{4{8lae)SvSo-6vNwE@Rc(b=5Gs zsaHyMvr|Vw^^iNbEe0`_^}lypr|+`qR^hz&v`K5JC^Noe#kp~-gL!bEB5|wKWz6p) z7b`3gAJU6&BjwE)s<0WRsS5@)?UYV)$cRg}rLpsuKOrWcvGg}%{88@qI`jr38FX%5 zBvy|*bqvz@PI?3w82IoIV>e|y@(v5Pu_S_6XoS(V?{}&%n|PNG$;n%gzS!|`Gz*Ac z$i{vC+>oQu5ar|-$?tm3OIaL2Punie$yg*~TZP}Z6bVNVzMsC)lS5YW5SlIu1QUyS zS!Com8dQYxDU7+8+UrVqJ^1EVst+jFk+k}aGvRWt)O)uj*I|jb^{(R@dPS8m(f*dk zr+XP+g`{cnF4c*(>9UlY&*oisU&l&4aP!L*;~JRr#WK)EzfXls&RuhyE5Cz0xH4S2 zbf_W{i=azE+pZTsFA0^`vBj5`eY(4imTQuZY^ltYYe}u7FQ*q`w+971s3#w9@$=_5 zH0AuJo9=zSPADAER@z&x{k%Zp!u}bd!UjjL8sJ@s@u(PNmaEVEa zTZwMP@DZ4XTRS2y385*bw$8ZIE1G3Ecmv5ho2O|j7RKE8u}2sxFB!%GVqGBPX^kbNC*e zE6_eBS`++xWkK8tFly_h?xxL!Xcgrj?WCJ*|Gga4Ct?DgX}+Dd_~1>2+uc{b0M!9e z5&Vx>10fO%`iBZ6QE=29)s_2(N`KXvs_Js2Htt}%*tnT`rl-i4R*0R2!7&N=y%$nL z|4s<;Jc~Z|f{B{9!A{3`&73zoMTTmM_g=M3@InIDRMZ;ho4oh5(Oxh9a}tRVGj&)l z#`I^T-?Or%!)w;atbFy6xw@niHZu}Mcczf|1%Uqh+ux5&fS$Sw;T%bx|F$E zgc)JSd~;>r62rVUY)DJ0D&{>1T#}(4t2u`fSGZ;MmfW%c^CP?1>N6$2N{B;azd#; zM13y91bnTUzcHPN;RLOO5%DM>V|aP36I^4Dlg;(@jZ&$XnfTMTrA7}LLM|Gv#+ldO zA5I=kzDfN+KLapZ3`D4-*NsjBZhPDds#aRc$brvwYsst0{UPE_PpDi_7%;8YSIg?( z0xTkLXI6hgkhAhZ{_mK7;UUh9ML%I+vi`9_sL%Z)1^P^*@TF^tYjmUADv!#hlQBkj zSwnNEBJ6o%02De_vqEfKL4-YQt?+32`-Ha1#MnB$_QyhuUw%eFlKd5nyp~mbu0B+}#@**qOHn#Lx81j1AyG&e*b7gi%Kgh3S27+H z(vGqx#G7xHJwLWUOtz;+k`!ik#06l&?w?QjY`<9U|EE$azM%D%o~NDc<*5~?YqUDW zD0MNT;IE}i&0>2^TWWDhMhT183wCF1P5WEK58=^Jt>hlvqc$~W(2)wqS(UiJ$z6E20<4n3t>^G1aVM= z8EeX;S61J`R_G;3vw=x}x?g7B$?re7ptlFf`$AiAe-d1SQ@3r=I4;vD0lW;kR=(92 zSkps)i!RBYR}gdD>=$FlUL8$xU7%4Ljl_DwRrzHGQH%^@&{!xO7>c7cN<(N zRi|xHO&?Ux zK@hvqN}H>t)JlE-f!g2onw6J=`jJKn_eqUoQ#nsnEy%Zap|7~fey!GktEc)aqn=z* zF-f1QRX0cf|9|msW+Y<+#AJ_3VA{H3UZXa9@i8sjEftQsat3r2;*>x~hrta@$+rUO z5PW0{b{1U3j}41Qb5EZ5nvren8HV;a?Y52bIyiN_fRmfnYFm_<47j?Z$a;&b;GdBs zEP(Vou0lIQyJrBB zUJ(;$1ir14$MsU*CsNA?!)}T0v}^pesa8d1!GFEDy5Bp@F;W6=PD$A1rkyd&WQ)jeq8Q-5MTRz>8IvCmOLL}@+MV7>8n`&8yuK{B z*X{or2@BGI3Bq)dpFQ`&E^lY;a;nsbqF^nKs9E5grDnSiFF5trL*BF^`Kf4$`4w(6 zO~cu(f6iGMs-;;e#NczIc>Uc)CG>D~c^JFKL_*Cc}2m;d$KbYwa4Q zuu*08t#$t6B20&0qI_#%{7 zwL4AN^|K1ZHQ-+>W!UNhYW%DOT*rUdXNsMIINBIxE&jk~q+aVSEuIs4Hg3@5!&G4$ zLx>9zfRV3K5CW}JkUMIP_#b%xwkdD z{N2FvDGtj6+8N<>UD6u4v-D7UZ;sWgVUj&ge~qEoSm9bLhy67s$4tbjNRU{4g`tS> zl6-qvg$6jxk`U(e^@yn`yT-S`WOWa8lh)2A0|%vN%D=TBoMSCelx=B{>&+YUHYQBl zX)jM8&K`FrS@i3K_wKX28DB-BSB31GrvY7!q<-^uC#e}xqEIcqf2 zT`pPR@|8Uo6H8mov02QUZc<+IvXlYvfvS}U=vY8vTr}$TVegfI&2R+J2>FAg zcuQk(z1w#gj3rFefJ+eOA^dK3V6pK>rL#qfwya)Z^qt>R9fFoI>%rg>Y}L!jL)150 z8kL**$dPnJuQPSaC8;zr4TFR|$O(Tt*fW>NA;Z1o_w9b{RVjx?jaEU5T(ORS`2lMu zkzAsF9c;BkkEhWnJ)9X7$5ta5*j^17+X6SY%Vao?&c(boxeI+h`?;FVl)qwU5OMe^ z9;Pm|@xm1NOB`Fp&d0AK)z7{ue>h9drzO7Wk@8UWF&*Hp+& zehZS657t67$H0U2LU-x0a+&~a+2OvDGs5^=?zSCJmjkgOz)(JT0KjP*lC0b}G)K(PEYXtUjPw{a0n+x!WlU+Fq ztpy=fde+%|u#tYs;GW7?77X)*&rt%Epr<8TbOkyrhK2sJejLU#nWArpQz5_aJLyhDz1`hN5jqC9zZ&69_VFDPr8bDVS!=k3U~cyl4e+1~Oj zycG(MaJHoHL}*0{X+fZ7<27D&HnZM!@7#GHH8q!u?e~A2&!V*75EB5Y3Iq|O_5q~w z$`#(mS34NO2(SQBcX>0?Tw%rkxi*YV?Vgi}cgy)Hvuy!L5WPvEH|vA_JaBJ+wbfYIUOu%3

|899ZG|->z_e1{&WM_v3=>zerN1*aqNrHL|L6mdzBKj-*<8)l zJ$(CoYS^TI7bk@xQR^7&G-|-8H&goN_B?EQ>Nqodq4DJBT~1*6`sVC9a@6gHlI#o8 zyeayBXwn8W0-|(ZoiyVnBN^Dx^Ry@OGZha;g{9TSV&lL#0YL(AixlBD7U;3u9&Z6T z$3zh-C7m;QS3N{C8&W;j$a9y3aE!nW^@#s;`<7nsKDab8nZWmwmzd9r)01s@J=22< z`SIv#LJ0+-QzquAw!e9rE`DVx2;GXM(bfof$A6|nWd%s|yL82NQcxlxVEPDRs> zUS;~M`@aAnjdq6GI%~W}?Ni8Y-}?$r5;!4_*L$T@To*Gp3RTo){^_Iv7cRv7x=oeq zU3NI|$0nqW29#Z-@0dn1E&5u~(9jgr)^hTN%N9DpQk)lOn&YRo*U#ne{F9UMV(>kW zqqjIuLjYrF@Jc_5S-WkKSH~8LYedvG-kr~^EVK?!hW#-NanAlHSgm5Z`pWHX*`kN~ zLvF9=P1OV0jzxtv76KN{oT@AGUDEku?1T0)a8iVR(HFcA#2Pw`gu^nXV z+4Wt5p~zsZ-w)!KF@nk!UK^GcXxdZR1ol86y@arl_sYL>U_l0mjqZt!!kvEc`+vDR zPr?3Zg=goNEbp)VnQL4N+mH7kQYxA<^_=cIokHdMX2}g&Og+JXLW2|z(Lolh6#~(2 zNAk@CqNee>S#qi!|AS;lKi%gf^vLqkKLqfLFPly!>DJ39^T&fI^cZi+A5ecc^ljP-l#6A9|3#0;j{gP?R z75?pkUh`Jsp|3C29)AHt!T*tFmqKRxRHM3*Cq0503Cu)xx_-fuV}*qgJmFW#g?RD; zVnz(#jVPe)LZG#^06-G9NUekqAAmlP0nXo|_08Whg4a0@7OzE{nWA}qIm^A=aFSd6 zR^{5i)!f`X8m>O=TRyDP0U`nE)cfhqmT35OVK`-nS0k@Bn(NfO*s%#yJvL@Wk!Q)J!W^rgG)>hX zt=5%R^c}g) z37>xC#jU@f3az`cKCojIV{1$5^1&pzk1K)UUJ6*982R++lLmBD04@#ndV-aL*I++@ zVtO{9RT2TTT_MeT_j)!=4%$c$vy&?ETKQv@rTPK_@Ok+4)4LS4Opa-I`ZjYkG7kF+ z&&v#*xdR9GP75ZYe)^hH{KfNdIy9dzuj@yzO#Tk9hhRQTL=qQ!oaC}9EPkqMYil1Z z7Ug7DNJcV8B+e!_k>mtxUi0M|? znc#i71eG0Tzp0_rpo$nh)~7meCmRB+!6X=>LsFcBq(~bSw#Pi^sFZw${UAm128S#D zsllq*&)vsEQ%M{Un-u3{%M`Q-`~g&)6MBY4Cs2x1sT4;>DhafQnGI#)MR+^9@b@&) ziTHF-m}=cdn$w`*I(41RgKOw2e7e~X4)0HnK{QH%FloE#KcU zi&w3l9VA#*KWV%On&Z>H-woPn3&@5^mdfq5CIGYRVVbnH?2I8K=T-?B%hGM zqA;-H8>gKkft#YF7Zci|Rj1SiM@S4+JZb)QX{n(&1>-QJa5*@OS^mo@H7ajemVDoz z$(d?(>xa8}AOIS@gG_D}(~mG?|DKZL37>}@yfS&u(DZjio!C?;v*{ocEvsMsWHNiNptgjbgZyZ;>edV@W0j#kGk!}{xcfrX4egnK2S1+OK-z4hCS zt4oV^n9IWIWqcME58ZrOz%ssTmle$&&PR6KiC4q1@Lud{=zKN- z@k{?wCX;Sk@p*Jn#jUoutXRZiClrOhw!89i=#e=C^tiU9wpVL=N(a9T^`&{Fx zO!f2Td->%Lzdf4DWy0+nsX=-rdG(=3a!IImLG9r)&9c2s)4tO#FOIH%^sgQX6lk8Y zjN;r8Rp4z!&|9?0Yn0>1Qr@K2KK~iM(xuf=W60D769O49=bE*N#gutT>b}h7`^qS7 z&ew9xxzVwTke{fL%gjB;f+~B_ g5COr^2J<;$UQmlD>Q!*qWvZt{OgDhhm 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/mstile-144x144.png b/clients/binsa/src/img/icons/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..36d4240385bf7ff94cfbeeb8f50f7046732a9095 GIT binary patch literal 10798 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 yNWe#-iBur literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/mstile-150x150.png b/clients/binsa/src/img/icons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5a64b29fd4c88eb110f2841c5ba11db3347d51 GIT binary patch literal 21354 zcmZ_#WmuHm`#la1Fm!h+4MRwYfYP1PAP7o>fWROk-CdFr5~3gtiUAsh%v9`i7R7!GW=(r))R3U=%VGl&G6v)J# z-wXeB%$%7J9;h$hoDqJTJpL?6#A)iFsm4CJz&`oAYX3rDXf4f4a8&CCdh7rPE{O_y z+)97OChv7=W|t3R7x7D~dv-+omt-lX?^xPdpHsa&(Ee;pNk$l(+u0{)AavN(LW&l| z7>FH+6Nmu;b%TC_2y6zBF%NSdJ^6ZgpVsk@LMNU7eJck}p`#88HI7gX4E;}1Xkaia z?|nOK&t9b-LRLtSir=?hOTE7Qwew)hF-a-9oPkIqj24VQ^Vh$#SRM1AEcRJ*d6^;E zs{0oe-zNil=O5y;*DB=SmE{P6aqDX)7P*v|LB81Om*9SV!HyaAib>C<5Bl8>d3|2YEqSY&XbCU%sBLiaMZ?PLgWt7i4TV?6-q$! z9e)HLo-7BKH)jZ8nQ3J-iYKj{&eHNsy10cbiYP(pcZa{p=sTatC^($JSlYKRNJ2xP zzx}xO7xqKK$gf?cJYE+L#G$MCM+GJYk`za)>D?uWawoHH!56ZnzL7&pnpz-7L|+hdq%>&?&oodLJ!792a4x^&x#!$jzu~P9O*QkM8}g0Mnk{FXaw$euV9kf^PljjvHSz}>nE2JP z(!YA677{}Wi&c?CgxVcN@JQbOKoTj20SXdN_fik27WG*w^$WY4e(7ukrEMnBu^JvV zD?RGJc&5}&3xY%^43y(PMa~>+t{(e4{uc9~<5QR?V>#?imMCYe*!%9Q!=!tErf<-s z?unKSvGo1)fJFoP)Hs$^yX9YWb2D1X`DfQkttCi0iEQD)%ahkDhhGZ%n`)6PV8yqA zNveDOl+{i3IToXC)Xt1=rW(F~7Og*yxeTlQp&jbWOOdsad0ZDcx?_w^7v!@X9-DJ5 zmOQz?%2l;ZU>cYk8P?uD%5}va@YkxB4g{_(ocY|A;c~cibYb5M6N_YF(v8<&uUoAx z^&R=Z!tf6E4EiT+01+UO;lEf)dp^TXAsEcERA>`)*3#Amx11#h`9jcEkHT^`e(@hH zy}61QAjBt9z-1jnq`rHQ;}yU~;>zKy$Ix*7a;rs8GDGxgV95(ZF*3JXzpq?jq~6LaHc=a;Q*QIZfL zuwt8f-)Qlb%}|OeZ5hJA3}ONO)NbV!@o! zU?O6lb$PycHgv^iXa6V~EK3@xuD2?BmUh9D*Y-Nal;7ECYX8|^YJX0f=VB4K+I)|5 zrf6W-AFRndLG0T-av#^NZM$3!ZQ?hTNX?-FY6{~Fo;y8H=VrEbxd<;VOdQ8M}V5HB+dUVw7}EG?G2_BoezD5N^)wWDcD(?9$F z;VhxK76zfQi}o>+k;ik%2@AZ;nX_<(x6|N#E$KBpL^7tTj(xyj%3D$r_@MnJKtIR3 z*_p68wJKR23c_w7l=j(uO{sRjzK6RnMK? z5EHhwMttBm9+O7u(#WzWo8d4oL+WfoNdi>LF21s~=QA(%YtpA;Vp~9Qf>d;4 zew@+k6mRh`CFlroKrC8cx$b@GQIHa~&Jk~Kb>;E>uABW);)Kznc%=%YkP^$WVr6sO z`MJ0X5HmlGL|T}add{vk)x#yHF25R9Bc(O zSWg<~EqX6OIBK2XyuHzM2{)%fI&XHXXLmy}1T+K;iX2|xR!nkhZ=tLO2eW3+3qY$9G&=$ z0E?z#j{+0=;b3g{p@$iF7Q%ARmufpCFcIrIdamqn;7kgQ@T2t%35l6XiJwCLtK)=U zJ~ZT!7Qy=6BaG>EuVCl$KyS+!wTJ46;mRLJRhuDz#X(w&hDC2*rFU z5y_uNqNERZl|c|S4l=#4-`|8Pd+!^GRStxA2oBP8P72#hvOYj$NV70WrHJ8S#wp~7 zi_9|kN;z_3yM}38<`~+{HWynid1x~Qyw88>88&m_ z0%A)MBV+!~%OX-Xw%JNuW%x>_0PVA))A>g&9LZp^uEgR1%?zVwqDEqq7VvKZnlzm~ z!q-V!hMoo2_d&GmZ{R~bP7zDhz$mwobDuRwT1OD}wTm&) zV2}8!OFu_CT~ULC)S^|<0z;ENB?$3d%zv#pt<}gGvWgXqt>n1IU@Y6wyuJ$z+!6jU z|3x?NPcpI+M=U(fn%`ev#xjQs>NAUe0TL5H6&Rb8lqASmCF7`)rT;)%?3Xiqfrgd9 zDqk+ge`vHN=`pxH9{3Gc){&MCA&VrJuh2a^5#G0gEdp2zx+4eny%;7qFTm{V?2DSV zL73=VeT1}}9u@=wvEP95_L7Kqt~XMc7Wi-SFo@iVe~`B~Km9DWKrf9_Vn2G5aVxPC zX|V^DnwlC1ok7@%8h)50*M6I7EK9f!3rXUDzG1*nU+-N7Rn;gx9A?*HIIT~Sq}8*n zE{FvUCOA}>tM3}ZHhv)me9sUT=*emc-wSGsx)$=}3(;v2z;kGHn=tfwdgTHl09No; z9)~Mljj)`0uPdk8A_JyKPz&J}(RAA3M=0PJXzS`O7{#g(Mw9FlQD`=`TPzw1%%C$8 zo)?tz_;YL5k#6aMe&Pow|8W0HA>&O;ij77AIspl!P>9pFFa?31Neb0 zHVwRDj7%=qB(2o>{djO zOA3w!WqD_C`@Hxn1u-1Jt?c!=u-rgX3*`dTo7Gzb+kG>|;CavHxv$^v4RP(ShqWUs z=2(G*f#e_tCQwlui+>d6``*wsV;jpuKPf6>4V*7ZyH>c{+1I%le%Sn!gADM;EHKpv zO?8gz4IW>xTeQn?!u6Eqw6O6wo87nqEIr0G?Oe&hEUL_0zx0{4u3u;uo#C)9Sf_{u zIqk?zm^U4FU51g<58EE&CQ}p4fD=O-mUWje@P-cNw8M<(0f9#@Zyq2piV2Tb%Ji{B zgXTFPa%F3phw?sL7L*V+R4w4>z-!#;G4Vl{5D2nr4kLV-xGOvGzcesY& zIFqomWS09MbotAkGDU02R-HBbnNA-T{&24$wu&T8)bAZh)7TrlBF{LZ2BDlXEX4~s zSAW0$dhOewJMdin0t=`IM z6^$K(2&2egqnBX7hMD3T57@~1E)H8tEFOH2@nN#p@>DXD zo{A%(gV5?Lbj@J4>A*C@=s^f+F%^3)3*e5Ys}a>{*YWwTYcwr_iDF_}bgOTPGO7JP z;Z=J?>!-)EFy9Y|8Q7eKubh&@Gzlh(r^MZi!$vQtf&NY=X#LBZ&mv#$@@72(WA_-z zV_crrUiHCKfY6Q`Dt=?M4Z!eu@E6LL^aRk<>Psxi#&-(=iNFMu#p0x zujWP5WQ!+A?{0GpQA6+0RD`HVEZpgpr-zVo>wtl>aC}TGeeP)Nb3(?@y%7FTTWt5e z{pxcba!!7BuxyGcvCr>6=i@q?r(H=allP&J7<$_PTppJWf+ znR?5TmvQMrFEMS*H&%fbN&Hr+U8uNZ!MDayvSs%<4MI8Zx``hg+AR+iDdqQAig8*0 z;vWZJfe4B4);I5rizIsgprkS*LdRuqPN|BhWl(W4D$Stw(asmHYVMk^dji+pq(fhb z2*GV1$*PVp8!vBt-hdr`Ok(}u9br(|9L9W@+iufLB7bvv^VtKUX(iJ7m#-Q7_eTd` z+3#_qFLZ4VG`)Nsun&|T54@U+yl#8j>xap!9-*J#6Qj4|ud?99j6LgaKE0! z(9&~6#8{W9U#7W9uJSbid6H;m3X>n?qpERAK^Q@M01}YsGmOwL>=;_NT z@j%sO7Tv|P^ShNB`vbw}_{5J13q6`DyTTPp1V+Co zwJ^mw9zR)WTh_FBbLkdj_dMi&v5wY$o+ov*2T3GvdwV-8lxd*hWHzQw)U3-%=F`<4 zmHVcaAMa~XQ~ymYrOnn5(sT-fM^E1uFW z5ydtMWnq7A$^*ECn1C-!Xn6Qe)Q|K=n=TDT&j=;^O_W<+oFwVtfB zbe!$GY)+J`&qZLU_Pc3mmz8vgYd6SimpEX^%nM+gA_7#63%!xA$PUwLOV%G<@Cp<2 zu_+0uNFZ>F<=}B7lsq+i>cF~eZTL*f#Ou$8K-NeJIiMevZNTWDjExj#<1lRX8m7iS zzveX6EVxoBof_Y=`gjTeRl>TvM5ID#KSQ8XY01;fu#qnOECWA{uKR;TaR!ETIL15N z-;Xpt5%ge)o|ATzM}0%W_(xrWyr7FJh)@CcEVJk#d%7A?@VZ2@Cc!c!K7N zPb4TeigGIY!_>2f?p`T_s2G$in;uFr>xTg&LC6bv!Ax)qthnU4pcvIrGsLHg%i{R3 zt#Eum08yN8WTFcN=@iDID=u`uHvUk}z@VlR(A;?7c|?-cMW4974X31d0uI~pgVGTB zzsZHZqBd3g)C7&08b?}vtOu5&ue`9U2}Bjkfr{z_0JA8U+q@7Jf4Y1a!VW28BX_84 zD(f1?-M$?TC!k+7>otB##mA--;8psgVs=PwfBxTaxQA)*KRI+5`ak@wGn+pc)JL#1 z^c@~_QRZ8zB1ymsQ93b#u;{vAFxdVUt0m-P8ky!SdWf<0K zz6TJAAuws|dI+T=f=B8vesn+w1_5_OdxP*8IDo$H4j(Iu${BmO|d4WwP- z%pD^%TAv&gpGe(#`2|Q!koun$b7}?%M1Qao_}t$R0q#OJQq?|&g(~sV6EOMxhe7VVY=(Uo+ptpR|F)@#m;U);TQ zmr2}WmN-i$)Tbk@<;ev+ZaNAyOW>^1EOZ5QzzUOTNok@ZH86frRXfE1w%HoiUi9`o zrw5=C9SxL9Jh^`h+W!!uR+J;P9GN%8!)%$?i00PUkV{M`mLC38F}raq_5#*j1|P~AO+-b)A{f+72!(_h#83p{2Ev2TdB2emaq5`C6ra_O-KywTiMzrxGWun| zdkaH0QOJntYZo;!27)74LPOBI(Y_*OfL)zXkO~Wf8emQ_Kb%W%qfCGMerP)oNXTP_ zj_C3WHRyW2?IE9-wtk5jA+~x31_vgLs3jOfkVR83jB8|GMu<=WwQ7H=_t?~Ad5;_b z1__qH<4~*KwQ=vu|J!RS78xHV@6Y^$;ce=GE_~22YZ_CGynIhs0xu%*AFOUF2)>f; z>HOBErG7+a6dF&>LNO}nNAyIb?`$PBWO|Y23_o8C-mQ6=9s(`OH9AdKX}l};e}qFN znxw3I$I<^tt1vZRvqw6jFA5;?>GvPiC{mGYBwob-=m;9+E*tXI+4HY29N6@Dg%!c5y+}7HK z8>C_~d-%%z42H#O@wbzHWIcBFvo(Lb7dnHRMveinEN%1%ko-d$JJ-rnXK8$Cg04lc z%uGKD)})m%E2zlFPSIm~bTxrNlx-9_ik=(2kOHFa{7LH6x0dhvhPs0JLHeDkvqI_# zHm#^^=tG_APdqtz&gIU!E9P0+EZ@9sTJM8s7zP(QF=v0|>&12(_vC?i#nL0V`*M>}INiCSG7!DQr|K`XLW6G>{PMA?#GF8le~s( zhEAFUd#0&RHBLvBDC6vivrZeof}#>B%Jt!aTcZnw2)ivezNAGx7GJ0J)|brfXA=Rj zE+bfYtAf!b68E>uf#ZB}5PEdTugux=&kg0zY+-V2&r{Uhn{gvpnWPK|CQQ2-&4w)8 zVp(oTUGqj7RgjElXdVGsP^Gi;SfEwF|N{ zocrjRaa|PIM>55>V6PgWzoCtx7lBi9h(>UD+4F+HJch;GKzRzNPT*e) z0g#J-amNvr7aI0|kkg)~YtSMx#)Z)&!!t=e?w&=7#^Q4iNmar{{3h#h08) z#!`+e-fvbXCTdDzmJ$Zy44(g51&(CNxrKyb*IYB zT+|{QPgBBjzCOF1Yv8zoUaYhBGmt9R5KGI&?8Bh?515hI9iO2>=ljy#(^CRU0u3QO z`+o0o#HH|MWJpOO_3x16wO(BmucG0L0zQ1x*#Rbwl>0BT8NS#`-|_y#CX1J9{rXhi z|I)9vrM{v$ruh>g)fqG!U5rh)oaQ!sFx5z zcDDqf7zur3f56aAn1I3&=$fj2`l4v~k@e~MRK9Bs`6Al~!B>qwc=V1YV;!%$OM+qq zqt4fI}ZzaC&wMBht}-#mKrNpKQIy1 zmt7|!PPsoL9L;wUQs>_{@8f@r|0K41{|qr?y`dfg3r0Q@GTa+wb6MX;OVE*6iZr?o z`tIc=KYo|4)91DTukYOS2`Ggf4Z~IQd^kC7(*{uFdr6EWb16z;cZ=$$r$wLy(|Q=E z`>^Q0SJ+J?NeiL)6S#=LaYj>2LCR{ydk*sdmnZ_Ceg(LgyenL;2eDCn={NcN#J{xVzHtKv z+`xMC?5KB_f*c#ECkCmpe=w0*x&yI+eS>9*wibRb@ld zeLMRPx42%GHR?4!`B&V|LAB-AG;>?(k6kMEXAfCH{uGtp-TzA0SJekZdRV~lh=`(2 z^<+P;=}<5e8`yEl>C^IN`Ksn4v`c?%c`@S8Vp4yDJ@i#T72vGRQ285%XaNi<_5Q%{ zjSS^g*Gpba#9oN3V;z(IB8c<&^xr1|qE^J&9rXgHAv_`z~E zxl<#1ink++X}z)MFH@tN6-Po(V^OAVWHw#Gmnv@vn7Y@?50B1+%NXCnhpj0}8_GR$ z`ZrGQ6VY#XLJ37Q)R`>#Acp0NiF*QvcN4u!k#ZuU;q~7KN|Th1`6!}pG^+Dk%)a2; zPx2badCO5pxr|xtODIDsM;^{@&c@adN8G*(lA8t*;{5E<^S^bA@Dv=<6tQrW_@>lL zla-D&DKY>^vu90y3l}RI|G}LEtawkeXt^&wmc6D+Bk)+IukJdntDP^E13;>g<>z_*>8bU&BNz){c0^8 zMH8VyrNrJ(fSBNafwROz(GmWDAb5={A;C60+#cg7Bf)5Y9XK}U2))tWLP`FwDssNW zq4c_~34D47lXr@*x+{WWbiUx)ykR`35GzX|z+Nn@`f|PU)%6ODz<|5|?7vE;%qe!m zT*!z{a@vAVcW{POC$=mfW zzVF~Gp2P$bVXTgh=XtLdIdLOHlU%J_t^PzF4X@oS=N+(|Dj)nzho|qt{@>-mU5(xo zMD#FD)Jm3^q@C?b(NyS-s}XTqj;>mL^wAOG<8|hUf3XQvwk=JVDGK5v3X$=elH(p` z9yDsyV#=icJVOmqNW+_TZR_!7;@I^Ljk8QI>}z4$$c$1HiDFOsH(18T@N=VVVedz- znca5%rb9VxXH(*1KFdP?ca+#DTi5;mUk58@qF#Iv>n%_Wjpq<(CL_N314hgiZ6S^u z=~F*pj~fwp&Fn#qv>rxSUEa&`(0bxFSM{h|83I?3-@Nx-E{@Evmi$dQ!|C&lF=k~e zIo2$KP9e1Jx1|P^Dg4^ve`x&w$v;6-VXGbKxnZ+Y?uY@`Y#L{p2wT(Nw8?g5R-p>o zLJqvn1b2Qtf0`-$!(%}t4FDM-8TPokd<|I77-~HV=7x+yD12gf+buqbCvADM*%b=U zfWkA)cU~fvGA@^OXS>h@Qf7pJ{uZc5@0s)J$$XUNLCusOu2|gxzz?&*%v1R>OPeD zD>ZVY82kOKUjW!+bmDgISf;Ev7g^^_c3KuzPBGuKiT4TzHH?J9RxQRLZ+k^eK8oatwcxZx9 z$_xo=N#&PF6xi(BTpt8)I=;saI#k|rsJ_zsF{J7|_r`%@MTl}9RWvqu|K3<{eQXI+ z^b#*$cJd2QC^^SLJuT=!HSC+8t5s1TO|YYe^1;h=Fc||R22^d7#0*gq<9*x-`F6G! zAw7~geJ$aP28XDaV9eev$VZnukWFde|9`O-1&Y6$BvAYvw)MA@`^vzm6@hIJnMWui zKKIZN%7>}XJ<9RF;ujO^x@S(qo`z?4q_7mO7In6gyY&8+kBpjhlHxkA^!8})PgIFt zzue4TW2x&0L@#(NdX&myO%f}^pGzkBZ;5K;h(cp%lzy3CwfB*pz71m`UDMvXwsK{i z{M-oRw$DO@C7C1*rJv@^p2j`6*DI&hT@m)Lf7}d}Y2mtf@aq7dvD+vunFf;}uRGk{ zVf?gQr`Up$U5P96gj=YZKOSi=13s&X zV)*~Ga%^#IGj}mlyfL_Kl_D5RI?&)bK0n#GJiMd~!hsP2js4oq=2Eg=Td3e>r24N- zH3r6P5gS0iu@CtEv8*%$kUkiee~;Myf$Qb63lthF5-ymZaas8Ct{7?3r&2T=Sey~6 zagjE8Cp>t;z`h9Jv=1-=Fv?NCBU<2$BW?D2 z#h>(pk;d7f0A9O7d>Si?MTJk#J2+DUKz!^hyhfmni$^IR&pmvuOKw7ZQ)mYE`)Em9T5-iF!d|onNtS%S*7ka-} z#rRS(hxp)wuxS2ZCS4~EoF=JA>!r@bWy_G9BXIQk@A2&g9x&*9Ofa*-2BOeqRb&-H zOMN@)WEGe<(qo=O(c6r&;ZUB$>d{QBkS@Zr_WMEm+nF=p_jUqUG@X$Vp2m)o5lzch zALD_wqC$TJgzjnp#u44=X#JM^yOF;!J6@(IJ-RneJrko(l;kT@MQ|p?6vDxCJ%Xw8 zHH?<@h2ntk>DJbS+Yr_3=PeK`8VqoXCL!@y&7Li7#iqC*5`w2+8H^Dp2PA zi*gX;4Rq+w#@ow}O_vL$H1a;XH>tfU1PMe1hd8)7T<|wr6Ulu-D#CoJEyz z;gFIP+d+E*UId6l+EfX3Hv-&2u*7A`$+Qsy!RJTMo*!(^tT3?GvT=y=IpOh|Xte~x zaA)#WwoAin{c$WcB4QHvdfJ5g=D(PUIb^j#0PBt>`SLA~OBMrnB;v!rPZR z*&hc{4v}hO<^^U_{B0cD(a@BOUWf9aFKF?mQsw;4IOk{W*oR>f)J6sl16#l^=f$SJEO$1fTnoNB5Qi_*8lpkdVoZukW?u#$%R_DGv~Z$yRC{SkuIV{N}~s6LqRGp zTj^uwEnfRjxyJw)5{Q2JX2{6f=*Nj=WB)?A$Q&scVZU8os%6(;xsua3C-qZo6SyBz z1*sfDN&jP0CnnlW<|$Hs{9`2-(f`B_&|Z+}miC4IIKYWK4{3LGdCsXzQ~IgL{h@m^ zOyQaG1w4!=PXiUDaHvW19-%T1T>VtwkN~pp?KRLkett=b%Dfp$pzkqwa#(ZmI!OUH z0WzPFg|aB6V3m@-62&avd-a5(kw^}Wz5Zv*iZ5VTB>TNI4j@;Lh7O3jmlleyzHOlOkK0C75bfqq zNz-~_D4{IVha~$iJsQ9vxxjoY=-v^YgdgGvmSlB49b9wNO z*C`z&aaZg9)M`rIYDwF~}l>TJF90GB_^$yr$fa;%t zWM|?O;b9{=!fI;ia?Y4l1n)SLYvAnjAJME=-(4rG0CqlmLSq3Ddq2I^j4(}QV*jZ4 z`eOqQqs$@$LyPHci!Su}aD`X>jk+=f?zar`btrIDih}s@QZd7} zF8`ujh>sjF3=z!Ka!zwu3N&Y-{9}Vw6KSwu0bEh#MANl1Ds6x6fly7@am$Vr4vxKU zs-Ip#P`&mN3d5VS2H^(dXd#cWP>ON!7H33Di@YIXpD5W^rf3{duJ3?b+)5BXDgjS+ zzR(*1VQBF&_hfX{TAy(kx)XpM_$e}q6u8yASz^i!wfp2`>i`AP0}4!x=|PpA8)iq7 z+%mhE9_49NNV>}9_M;6Cyhox?U{f1J7BqlUc2Xm=Tnw?aR8U^n7ia2lr+9!KO850E zFRJW(HbVjxLRSZ%jhlIg8<;JSr4vX>)4xeUqg26(&06=hmXhbyPfl?tZt5b}*O!uL_-%@?o&>}b zOc%IKg=os#eV1gMw~@DFd2ED^?!hbr zOPnh$v5`CWcLMSf5%a&im;ydF)x_;d&nF*itGyxjplqu=Yc@0VE5EMg{-4O^^8?HtWe1)1bQP;QiaGb)fi~3!e7Hf1dU9q-8Dew*5E)NAv;0)d<($jEP5@7dP&^gJGu zEDlMSOzpXq=KGzlBL@7bKOkRn-wHL0@ELVLYhN!_-bwmu6}FVyqw}-)9ZiNmlKJju zjU{(7!p~)7<~hJ@5@G!MV?vd7%{AHaf%5H3#eMJ5`zFY>Df!Z>s^7{N$HiNh>x-m) zt7^pFze89mQ40Qv6P+TeLVrd?KlkgbTo^d~d)83aFWM2XeGEF$Ha)S)JI}ECo7Nmu zIuA@&% zly&*#pNHNLP2Ag&Qo})qX!aYPbZkxR)$b4yYzqM`3#*OgSeLf7ZfD1}Seet6JW=K% z-AN=u{%PS{>C;4xCNOvl$PsJv6NBE+t;;Eq!G|1b8qU7CTwj55OW3yjs%G33QvElv z>_Jv*J%PK4e2?4s;E#IAcv3uE#iBCPNCrfHz;sQkD<)i=M0+@&_w{XeepaY_22402#v7%9|D0~T(GGB0~v4*qhFon@B1DXNym6wU5bjs9$ z$~fKN0$uozfvOy#hC7+uUocv*ZFobv``Xk=i*hWCO1?yp#^?a0sef$ z$LM@go_2kKeI_sm6(IR{mJz5l4$e$yU?}}5iveyApc&MBs<-nsMFnyL4{oxZrPKeJ z&o68Ci5OKzd;hnmuDGD!1v${LhlBFb1K218d^qTWD?!2_5K#|D(xcfF?-Z3T)s@+Gdp*F0I3` zNdgMm9%T$=aiMDmlX;p}C?+Or+|~J&T<)to(HM-~AI=tvU#SHaK>gQhWDsGe8U51oHy zN(8RJmsk_4&iAiVw`z5P8N<>HIvpB3t|)QXfNMG}4+agVGe3YUR6C@N*wuIZAHD!m zM}gwXUhz?*0~6aJ!_S&sQW~3o%Bm7N6+q0**XJKc3zVzIp;)5K$=~PLxQ7TS!Mg^9j-bpz<1k!dx%zHGCERNLuACb5u-Nlm8mPm5ByG@GAPvW`F*|6$^0ShO_n5%6?yl@*%&-)2D= zC#`S#@Bb!?vVrETiM$b!n!kiVaC32R$aX*c&bf4c^Lv~|smL<_$JEFfJBTIA>E!X{ zX-(OKly({v~D6JP@04` zXYYmmHh*36JA8qO=+J10xWOsQl17JbjGsG=BLJPqL-2Y$ZOHc6-8>e>LY4IcpJ1hY zTy@!bKA@^E$BfAstvyVb>QtV8gz5(WX^eo7p59R6+c=cUYRUHrQe^~hNbZ;Xx(--K z^<4XSz3v$St3!j^-TlfP45&adwdQMke!t+0ux~Iqft`t6k9s@-nH^b>0%NdtuXA)vqGu>*T=BKqgG7m;6^ze?q z@dMTYPY^1Ao#uDP4_iPWIvLa-JWhpB??BeY&F1IkuCtG`d-~au`>m5mR1(xd%&jaA z)z5QB)k8)P<$|Z3KRCrZ)lQTR!|S^Q-IRRf!EZiM#wb%nkdtQjDQ#zbB}`F-uJ$QIeK;nmoIP zjh!cbdVD zA4mDMsvW&;28ypbl#v=oyQ5}OnJbHV(1fe;_NKrufz-QWi@aje*Na2U6@PZ|%n^1HF^Y`KG2M&K*DqF3WLVc48D?M?Y8~(6SyOA4fks z)Y1yOcY^4`s`)PZ)rVt5oUz=T5~iC?3iM8@rb#eNJYnj8R$W%b#T zfH{Q}e~isP#WI$GGQY1Sd}%+Ynb{fzcS@HzIAV<~+XmqntFK07-*b@9w(WW#_FF~S zHX$$>T0u|+>qN@f^NjPgV15Iy$_Y!09BBKn)-wi+&4lABtWS|tY=Uu&m4R=|9jvl# zOX(OipLlV+8Qut%cO_Fz{njNcrrk#OS1A>#_r8`$VieJ`6~Y7~LSsL40;W|E`SmY9 zcZI)&+I*rPY>)6Jco&oqiecPFqeQh}8rc{REH~i&EQTz)vpo8*A0i4OuR-9hzMb~B zhSe5%wp}CLEEw2v7GlZl3z34LWGEY{aw?hLku&{?vkyi+br!Hv@Fx!jrKJ_3zlYSlk6xD4S412blVk*E*2K&F{3Rk8l;X#bUe9fRDs(DX=DN z@|acJ7|NtaP7Z%&_`V~yl@uhxpbY7LmF4#9;`dMaO~MT+95N_92arhMQ-D1*s80>( z*M&{S5*mG>OoPATxCmNE0tpx*@aEBd)%I(G?rp|xJjV%MPmuXuL5Q5v41~7+m8h&T za4H+w@T4==!2KpC_S0OwfLzb0jqdGq8%+q@^YaDpka95W_xYce)T6>lQD&7ECzag% zCc?x_aZnp(-tNhN;Jo^!n1d&#{c2PymWx1-*Ju+;BaMGAG$xYEr z@J=XPCDve7HB1&puxffsDvWyKU@(v>wY6yy<2hWCLGc^)5FY+0FF=wlJ2pH3Mb8U7 zjrCyH{GFHHCcti^wSjF8H}(zNn;~uqJ4so&ajn1q7fQq*)7i;SBBS;-@55twjaKT> zh=jd{f7@lsnd8AzzCV~`1xsT_MD^ldWASy=k@zs)nHjzkKIZ`A!U%CwMr)Y?NCvU9 zyF9)Z#nHQ)JccVSfmD|t^p-<&5k!k#S)Brkt0fi2YmU(L1R3hJ9kE3X!$C6ZNpr)F!Phx29u2#slk;`>l#dP>7kbp56C4G%`p2#scpamZ}J&$lfWd--kdpAqa&T9(CDEw@pe z)v9ulB{7Wvf4UJe2xmKEaIAm|B}gFWqn|T_J(5Gw#p3;5*4Er{VL}R{4aVg6_DX2| zp%cU3S4Y;#XTam}abWL3XHUt_(GdwczJlXHGC+HXP8~02MDWy3a4=+`srg{ljNPAC46K>FgGKe*I?4lS2O?omux$!Ub!sS?D*Pdc ze^ASDgxSDc>Pb5u{O`!WQ6nSb2Fb-uMmrzP8a{xfbYYiVdY@2xg$;9yX?N{Ud1yA2 zG`|&1*ukQediZGKiJv%Y9eA)!?$u<8-q|l@r*tY)O`P232dBC%X)Zv~d5S7JGUlfc z7_;np^!(-@z=BI|)6?PLOj!2i>0$s0sMQ{<>*LRGo^p5f5kjVo9tY=cLbSZB*6tyc zMoBlyj9W-4cCaxWvpwZ1)!OYR^|$D>D0e0pK3WiE-h4Q?oF`cHww7yu0cts)VNEyr z>HI`=&Hbq8c^UYf6&Io_sZ*1Ns8G?$x-q>q6QElqW9a0kd|p0TDP6F!E8CAQ2jaZJ zTD#!H(iaEp!OZm45*&R0MRv!D7NGg3{{TXhta`SC(a}s03fwVqoDapbNl8!I5zarR zL0Av3(T{E}G0tnK89)bW0x583ep38ax!n^I06J{WtwkcMfgyK?5ePOAwqU27)gISgb&-#4mKMzZZgecH$8o z$XD!YV^cP*^fl{}iM~0hq(*}1mQZT+3-vA}*Xa3CqGKP{_SOV##ah#`;WX zTrCsw9yGm8UQLKCZ4S-uQ!eML>@@Uei?%NGrbXOPr)M^ZwJuy-Wb~x& z%h?+xU5df>z2zjrEXOZJN8PS46$A54>OMc70Nj?C+T7z%i$ZI#qY@~1-4o;GWN_); zH~|rjc(rU!s5QQYD=QCz}}LXzf+e^@RZs-0 zLZ_4(W2k~WBo43T@qfe4;C!9jGelHFr@TYN))4Yt5}~tV;u@onqbo)c4!Bd$I4aR#!&ne_!h&r1UHOi4ET3V~w)>^cG+3D`L+@VN zm@}Vq62^v_*oVtu{?X<;e+ABW`Pdp_QXc*?UMPLK&b;j_MiX>FYSX$&bTh@1zO`gI*r;x< zbbqjB9Am;K_#jlXb)I;3KMM_aI~Yzz>s+nah%bdJ6C6U?O>Nk_-k4)P7y4@&4?DT% z3okz6gn$16Nc$&}!9)akc(y)C87&r01>0(6hk6CE@2HT%>W)qoInhzmk9orNCd1!s zJ^DesOfLn`W@@btiv@GqX%nDW!$*J26LkeAy7u@(_Ek@H4^nf5l{19T-#_Ffir`A( zp{nTq;wQm2REHlJYX1qKm!lB+7%NjS4=Hm1f_uB5uC&3%>drXN(=10Q$%hXTPXa#f zF!I;k+rc4~>n8eC&UH9;WcQugHJmMrc`UkFq^owx3Y<#3YUQu>XNtw<>a(iP>-bhZ zRk1*YZ-v~@O-?Gzip%o;JqHj;K?X{Sk~{p2Xo4`xzIe5?Cw`DGMChEIKL)I3!doy6 zzbWw5pH3^r4>q>@h>}`cM;(9zERK&ku6ud|7YS6wTxrl?n*$MjDME$Q!TJu8p>HnOx5?af6W|wty7mBm#ZD@ zU+$tgqEiQUb^W#pp#HHu#ZMu;LaFuyoyi)PIl&W&O$4&Y3?hm6Tvn6aK-^9 zisni1n;2GeZ0o&CJMGhdF!ElkhdiBmf1)?W`NZKQ5%YDwKLAA&4v`IEJ_1J9gP{i+K`ffp8Wil37i`rmZ1Q;m481 zEWvvwjqYEMWV(MpVfD6iVc9qfc~W6vv9j>`s8Usz?}@Gl5QLKu5WeXcqMHtZn80i! zYz&Qd8P6VnCG*VCp-gjZz#h&dxrKM(Q9w$N18jl@Rt)Wvkw`~xF5VpV+ zg2Vu@d`~pwXOZRka^%XeJb$fE3S9-D2u?;o_{L)>x$_Xf1ZFYIHqjmHH``-_c2{cD z9t1E3Av8=8L_q>dBMUv1h4ZAEK*X~QKrvjT@Ab_0cWs{dXPg7VIVklmyL?&T`WHY5 zzig~K*&;hPZ)MeL9lulAmq#8|PFB!+!m!ga0xL#93^}tya?ejDH}wC-=)g3PaE=5l zkuV3IFZM23BavK*oUEYtguyi#ffXYlh8%aZ4*WiO*P({=A2CfNOaoJ7j7g*a**V@7 zbwm_GPFB#n!{C~XV9f|X$Z;nz)T;lt=O2#$6w^q;G%-b5)kR`&L|JerfxO7c3VL@K zc2Yrb6?=qlYKme^FYFRFkzh7@0Efg=!vccK*-4odQTW!lM$#M0TFVtRBD1B-0{tckHk(| zlQ>T#oEHLR{;Ihe501P>f#w{G%{k?c??@O6p%m4}J8HZ($8QnXJ?~9& z=6jj{6683VW+xwSRU1C3TZzo^m-PMl5UH|M}O%f81qo)xc@JFK1fyglMh2%zFy}1v!q89=G=Y z;hu?`CJtCbm|+rT5Em97F}nT`Rw}~^^IrjgkmDHRX7A4qBpN?w3C+ZtjCPuxdR*+S zyxjW{00HD&P^oeIxgFn}{7CGiHI55F!VKfE#8{^5S%vu#^b}tUfFb8X z|CI~d!rK@N8z;~rbp$g>8BtF<`{BXy=Onf0d zY3sOvBwR2;j2p*aRp2=q^pxF9L<(|dmO!dkd-aoD={=7K2%M?Zn4LJ*rad)xvF{>( z5vvA3$T{Eiqkq)ye&L6)EtW29TwoF|unDXGXvR+LE>;$708tP*Gr|_;P;cthTl)0< zyKolFF_G!or#JfNOGfcrc`X2job$pq#qjG-r0ZXOH2zy|!4V`lK++x?h}(k=5#^$* zC6ddLb6#;+2ip=mYDbLD7Mugy5Tf@*y;+jP{?d!RHxh#%Inzpu^ZmQO7pv`fHvKvr zM1n);c49J?>HlqkTyl}Z0@VNrInzy~?aA#2)TeGuT4O_)CIhYJvC$5*ao(lg%VZx_ zAZI%8i4(@w9ruiH8tt@(;V=>$#1QGsh|#rOVg5wW6I}~HLe6wC#*FR<+7r)wS?8%V zrkQ%mo;cQ`JsGV~eEB8PFso?;B0#f#-@m_$M3yroQH|AF7eI7svE=OF9^fsp-ZhkcNlhnAaA@hi#Irf9@^vgdscp`}`RsKF@&gxCUyUSN9pN60!xQqae z_PwV4bpPYYe;e&G$KetLmk3D3k@HmzkfUN@HLH4jx<9vTlv-Y#r?Wu<3 zsGWdI5nL)DMIv*3SNwg6chQ$5!bQkZLhymXOwZ3pG6x?~ty9C8CGz~B^7rShUUrB7 z6LaS)^+brmp@hKj;34zL!+%I_JN}A(0J8wWSBiMOi0Oj&Z9#PY5HAj3IqgPR8@%&vx0nf51C^VD$xTOjBEAdTICfn zk2k==`6Vn;Fh?#0Pz;EIk|jz|&Vx)-FeM%5#>8s9j*KtmZFLiMnFNx4fSc^@%UB^4^A z)j7H?6xz=F*o!$&ciU#o3p#!;e6l+u=r}Ium?#*jM;Y(p(68@`<~}s;B{D^y;f^N~y5ore}*}NH-zKfkYD@A>%9`9GCGtgXp3Np z;QB3o`BrB+gcOZO+wG0co1L1dT9&s$+ut<3FQ$v%^c%B?5~6_9g$Lmuq=tFSV0$-(ia{o#mCF)Og2LkZRT@wr zAyPjrnQvxY_PebW*!qqeJKYxfO+}m-CeEa$2y{=kvRUgO@oFK4FhfChk~X(;-{mO6 z$sTvGL1yewd=?G0EMnciIjhnqyZtKL!2u1HAOFt&`n^9Eonq`Y8n*PlH_Th^y+HM! zE?1A8fP{8~MGCsKDlY#+L)h7v)po*^4Eh-@s;rXQd?T79PZ;o;RiZ*=T@k(Th{O&yy*gHu6^1>fLBRFXQjbL5ReN* z&HcURtT%u3-cST09uQ*GFVXi*1zZ^Jx2HL%SMr8fC~2;S?VP*FzCF1hSmKSRc{Z#| za=oc_-PC66HY^To@ZkS;XZ5T6ogu$b5kSso!sHJ22LzZk8s+#Vv~MI!(4>rjmD zAa z(72ekCDtfB?|T4KNpZrgxH@Wpr7R?7ydvx$V+dlVNN#8&g(>A!ar-V1ry|Mvz6rsn z8BeiTGFzHk;7k4yfzS_i))6kuU-&o_*&pg>+eXhpp~=#jm35!&B%npr@r)FLvs|`F z+pv=pDtMFA%)j4~m_>$0E7>jcdMv-%Kxg5-^Pi-QS|SKi1_x`m`6u$~hEE5hN7l+t zf>Eqr^XHmZt*+iSJ!AEvfS?}K_NzE5mmJPBziUpdiFg`>p9_O_Gc(+epYHPXvvG3S zkmBzpfIcgzY|jpzzIMV|krTPtZ^WmZ*5&`NjzI!4XwxNNu6Bv%KGS`F|JRUv$g0gl_ieBtW8Tx}q z&dF&vRBBQ$E&R5KGkvHV8 zbt)lovt*j%Pd=nf<-UN`gM$FK(8C#S@?rAmDMSnZshLVi6#KTp!Ol-jd1n3+rF$(i z>u0YNVxvxb#Nf$P?=4E}H6D=)=|u|gj5 zle;jLw>Yx>DyEHw0dX8C;S~lU+`;&GAmr#DP-Ae$w))i3p^${&^L=NKQ+0fyCX!vl zor^$A-68WDtzQL(bu?m(anR@)jQ^Y1O(nx4po40cQ+TQZm{^2bg!A%D7FXPCr;nd! zK|{STk+6DGj*mX1e7~`Z)IbOw=E0S<(lv1Tl?ph1gBBQq|63%wDm-+$b=~c3d5MdX zB6JuE{zXl8BYlDTc}o(n5*lsy7h%mA4-qoTvTSetb`)Cvu#k8%g2YWZtZ1BtRK_x- zYfS_m>~MbXwQ0RT9QVR#gdzw!!XmV06om)XgtT2Aq60Mvh6P|Cn(Spje?WH*dhF%Kw5X1VZJ~r#?bJ_i$3+cxb%0+Zf-h^sQU&cHM+PS$OPsfhn5^u}& znDFJxsg#4NHu6u|*Fh_(99rrRRhecG>#j83W?mN!FY6Vl1Ay1!tUa$%u@nO1ZM(r@ ziRqnbq`Nm(x|0iG)0(_*KN*W!QeTENyPG0wzUB`Tu*I4j#^gHldxBYk+%8?H&uDLa zz1Gp0C)MJF(-O{lKXEHsq$7nU=94=Of-X@_Uqk#whuB!Mu@`x$3O%Z9p}O_@jm^e#lvj1 zKi1~Y$a!Atg)+}01?GhdcZvpZd@;A3Z+S%(szQh>TNp|E(P{*z!atjrHF{dTQD5>Z zgRr61cw{<_%On${-mJ6nbTj2(AV4i&jj?lSsN-F*R@h4F(`;_>n~tQjkJptz$#{?+ z$7Zx>_n?B;JJFwln? z5NP=(dvuuo3@z|2*BTHj<;0NZ?Yq>m&&m-V7kr0Wkh|dX;phirO$n431t3ey;uO8U zbVvGSlm(n`93DZGz5ngg%G5Py`_bd{sS0FhNHZgG-QI!yncuFc@oC4Dk$P#n+~7`k zcgmacLowDF0_|F2VCwT=)ow5pslf|X;RUYIRoKgkBeh%N?zrfFXnE=0H?rMk8s&yU zZ7r%3UT$FBrd?4pPsd+|w9ITK8;zIt{Bk9!VfQkU@eQ$8PJ5BZaSzJC29Tn? z`alPcv7aPu>MuuJ@%h4p(KBRap6f^%x2;iNb09jqKN@7F_F=5M_|D}JM6T|N6~5j4fA{>NEuh8m)ap3|EwTGOzv;c7ww zmG0MqK`k&nLU*qpK8#&J1EwD{`>!2cx(9G9V*Vf{iS?;Dn0_vgiM=UaLygVWkC!qV zImc~P=ghm!E?1;p=;zT-P_VW+QHw^ZOG?f3MOx?ETQ8>FXdHlfr%XRlPU}L zQ*a0q`Va&)>>}%83o(glO5UtX?+h$>JnRX2ntq%TmCADUPA20DpH#~$nWOlNkuDl@ zsj{_nKM}|qn4w-Ayv)8AQhZEdi|U2^=QRlKQwoMZ5hXQT%8go{lTS~+8+ksIG5wlC z8Dy=lR@p#aghbkUH; zPvoNe%2Mct!&g;l`P;GBn2733vFj{EbtUKgQ?uA{+#Xl4fY+fjuOfD+7ATmXO%fRX zEl(HS(m~+ydV1ynYrp6PLD-GcPSB$9mi-nPa^t}`R+Kt78jm9g!$|-(cfEtg&wMvfGk_`&?+-qYaFjLMCD>o>N#u6xwsRg zgve=Ku+~?s+q|wTBKaZphQhJjla;;iEa6E%_Xcc?l|Qx;Nv>kfNG9#x1VD86-X%{T z$zT{F(mtaLif2<|Idn>3m`91b*WSG`n;_MWBb_39H23JK@#{XP2t3wE@o_ww!0Gg^ ztUOXxv!#z8{5Y}x7VK34J&j#?Yi}HeRxIwKpk?cXbZ0NJWJCf&DsELRetDv|_J_w; zHKh|LD!RD-IY+@0!V5S9OE$>&yN1p+(IP zEBw|fK7X_J-idl^<3)4=7brsWF=fRkOCRTj?WLCreBOFxX@f6W_>UL5&Dj@ky+9B5 zf=W1nD*=Th*|xpjJMNIDMr_nK6cAkTM=N;+v?7z(vL(_0H?@z$1}M@YebIW>t=Kf0 z1uk-RRVy>J)J;^9`3wh&QlDw;*dpxIu$imC0q0Xy{aAf%eu(;Y6ZE9PBs%H^Pn^K% z2+)gziwpyV#2-l;l9pwQpyz57sQJ}>`%dz^Y6kFvF79vFl^TV65tF=UA_YyKtxdMkSYok=rnxui_oxE&m041CEmx*iXa$cL2Dm zIjgT#wQnm4HPI^0Ct_BRr5Ti<7Kxzmp_6YSCT`W)SWhCEuas~~_u-?^e`poA8<9C^ z%EsE5G<%v}Wqr$1i%v30#z3q+($OE2ffo7y7<&JB$q*tc&SY=wO)dEWj&qfz=j%T0 z_B(o>=P|jbS9(PmLD!mIe|du{8j3= zA@2JSoNBH&)rgkb0D(q>z#C2@upLoW!17bw>N?9H!19E;KGa1S^#)rE@O6w(6^(SE z7oG0imGp)bl6jBw&YeDd z%;$#CCNTuXD`6hkP>4TzXVHoFfHiSl@YO3h@mfU5{O&_VsYbvOG;TOcU`gLv^|1b0 z7MXgV=;MN(PYq+gCIUVm20-D#BzDEUqIbQv8p7Wk9exq7R;}#OGA1aTfAcRI5O03S zo82AW_uh}w=$!8dOJ8w&6e)f@S*CP9gCf*|;DreBq6+V#05+RlI$PKl3Asem-TH8r z&f*EAgpjb_11znwaUMeSW3^M$a>Q=WT7F0QBsg9vUb=sI9b(}X&0(wlgXJ0KgeQfB zPp5b-<=ysY@oIR{xHbQcVnA}cXh>97mTusN(%sgH?jb@u%t41?pq=pt>8+lY{bK;W z{xmQUq5lpZz2@H};L)olCtUrY`4d8@N-)4atQf-JHRdpC5ljC5E>^|v6q7D)QsD$h zoSHIG*MAk$E|iPeIoNXp9Gd~3PlR$lpTcd4;|Kcfx|~h2x41I^+{f`4GZZ*A;J8=a zsUvk?1|3@cJkD5R$Uomkq%L5O8B#~mV%2KdttoOE z^j>TrCQjbRK=i0!uc&C&4G%(0-IESTLmL!7z>44kli{_T6wN5c6n~u5x$k7YmBSOq z3FLS{TwkgcP8=z9IP#t!e5^dk>N-LQHfKlnDoZ8oLT(+G|5_Y^M%|s^mP9+&gh35r zxmy;*^1r))C7*SX4JV)=s`?ipT@h08YZkJE2RR)FBG; zDTODj8a$9Vwg2cG@gA*$ZU*76Rb##~`1d_QZ7hB1XWVO5MYVQ?r{EGMcg^$k8P|gHy z=Ni$RlGCMDb;Yek7TPi6g2#C?FxON~Y82WeD2P(>IwaCxxf9~ByR(`bK8AJ0ECmc?nXc@C~DfCwdAPl?X(MID7aVd$zh4 zMHWTlp?e9D1`p2v$Ax^iE(BoD=l`iOD?B+VpG}kaNF6wKn|F#qz@}AUYqCJezUg)B zNIi<_pP51hhQakl38cm+)0`9*N{$f`O3^}tiEb5nLibL$%jaH(4^>M^>v~(&U-A>CBW4mQy`YeQs|}^(GCDiI z$?<${6&H2)j272)0gQxA>^s)cv!GXX#FD)N_j10_)gNstRZUTr8Ojn1pxvLJ0CSKu zh{X?7`+BcsP0OifTv?_dP)Vxk;^S;)8;AGtR>tT3sC&+pJI%C+sg=MMM$s6PGk;s8 zigc1onI22VS8-9cGo)a>v^{mPw4R|`QsrE&?(C~)>U7se^(oK6zpb;iWYpe}WBrX0 zV`LJ_dn8=RjeQ@_ulHUm*4=uQVG@$;^?PyPXGNF}o zX)?@TOR2#oEgbh*Z5`*E`Ldqu2fopt=)~8KO~xjY%qm3m$vPN3wsx;+WXhc%;;=SO zU4%#VwW7!}MS`wTuz#)spa_MpXtjHFyJ8i5#Ws^|749E8D4TQI zr=(L4y+#KYCqE(m)^jiA3l?IfVU2xGm%3p{g$!4>m-YHwKUv93DUu;v$!lxT@ZJ^yMJQ#cR*ZD~)*D(O zCz)*%^#WI;d9n+q4zjk_LNees0m}cU;qaoV|DN`0=&y_RdXGGs@1=&-%5o8GGc)() zcYzbh?;?V)e&sGAq8FJL(JOb>kpjq4&36?X3Dyo3z}>kb23%Se!Ceqjb@fl_;`;^2 zyS$e+u9iDuZpTO4U|xwR6$UN}bG?(`>IO3AEp47I`ty|i6d^ETL`Gxvbr zMFpL^6W(!jPIv1cn==CcXcU-_)IH4^N!-9Z)Rehd*c6t}4KhArs1^bsjzyH4Na3&@ zo{Jxb9lE(jwW?zy0Or`$AX)j87u0vUHh=&AbIzAm?XxYc<~UT{*z9nTfeps~mGyh} zACW0VccPMDJ+@L{Purt;0oo=#S|%OFi1BJ49t~9l9A|p$c;jm@0$ei!>nU~CuK6Gs z0uQb1+zsD0t%I4!QZ0+vDc%FtY*13Z1obFf_O-3r|IB3ru?bX2hDU$c;OPHe65FXo z6q+N@$42iZr*K*hpQK75s;M_&R;=V)rMzJwl2J?n;{!{1&r1!Bw{0>Bh-F2*pYune zSoT*zcV7}=s)s_0)v&F9{TE2MpbUlQZmR_(cxn_cG^|waieML;b`sbbzxC!bpl^IX z-H-Brk_>XKXA(AUQ$RY4OhwkF+i-!{P=#vU1DG;F-yOIJvI$9rk`u*8_cUgI1wFeQ z?R*o5gsP(f{J1$(8n;jh*Umq4;!Z~E5eg}A7rI#b0AX|DT+N4>8xq2P4ax1|HaA{g zm6P$P&16rxk6pd$plXB2mb?c2o%p)G(FZ6_-f7)lhypDATiTCS3Kf;#U3kihzoY=T z(ea!3TWj``i$mhrN&dj|L2a#kuidR`dbQ(_DRbGMEwKt0hU-6jd3Xf|mN!j-Sh6KR zx>y%GUs@ClPZ*~YRp)V&$y|G3 z#un$HM&|v_i?b?Kt^k}~f?B*;erx|R6H%y5!OV@aoBuXCbLX=Gb>H;@mu_?>436r} zotH=tgH)v?LvfyXZ#nMcVmi5<(ytL3krbcfIutO0fwy5ayNPQV`6r^;MkJs)i|AtR zotLAju3Lsuc3KT4Y2kR!UJgHZm@SwPu|2)r619v!6s7Nn8hy9g{+_c{X%zE6ZLF1T z`wBRE(q_%~EFLvHnFmpt9-R8Zy?O=G zRc&Wq{yQAM0rUeTR$)CHYNk=*+?y4Qt#Mm?K6%i@G%NHwQZYBV=F31?4N(!((IrG$ z1xjtd4)rYrqSD2!^>S3dr~>mxQ`sIbtBss7U-0EV5v67bNy_%{j^>%Q6#F9Pohdg& z`6=<#ucH2uLB-JTz3|%UaAO3Rg7}sIMw7&9y{zRL*RkaV8Jh{kab5XQyi`uGx!qp+ zLGk5$1n5hB0=+&^ec-%NwNlX`$ODW;;p3zpi+W) z#CI~PXtuIQNL(qTSQNxP!WU1#aM9NkTJXegT=XY68E(pyKKZk)H8tS) z3t~Bh_B&{|+A^Bxr{OWw7}UD;{)RqVLbtyRJ^Py)E#L(as(0()!l5bu<6vMhTMSP@ zfSUL8#DhDfLA02PV$_p7T|TGgXwW0Pn_^@zzOghQiWMkwmqZT?QOTtLGmP=&B*@ji zl4d#LAGBH=6I|==yN~bjQiI6*hvqy_y1^S6<7N%XBSiF!N0gz%f!X|`l*_C_bW>$0 z8AR{{9u{BlPku#+zsUzYkc(iSnZ8f9;jmHI`0q=_& zs=^NjeTu!JHzE12zB_)-A4T#upft5a9sVe2S?Z1^<6jCtA65Auo2|+J#VEjp0dPUD zWobM3+;B*%oID8TSb$S@I;MYXxGF8rE6+WNkbL40Dyt+z^)o+~Jbtvpc3MhbB|<9-i=k(iAowi6QdV;ruUo z@QUJNc3)_4o+TGWk`)J2VLaBRhGttMZ@~hO)+pY>koMbK+AheQvk37eZ17`(5~0>0 zW9f;S$j-^8Q8n-X$6s*5n}FPObZr4c&)j&rCwbkMSWmLOcpk_fB88 z!+MWZNPjZR9c0I~21iZRqCz+{OEMG*J@hQtaJu@Vdgh;Q_Kn`h^Cb@Tf}?LSt;41J z-YZ|`?G+S4CInT`UAn#Q0x|7RzTMYtK0JS`4^KM#cd~qom{d@`)!TqSTGtt4Sm^k_ zL9ybMY-=pB^`?I#J@Y5FbT3Z#Jx~T+?i5CQTwg%H1Hgtr9ElnH-vB#R2W@|;o5xOL z=H>s6|2gb)#qOCLk-u-IkMB%G~IsG*) z8X6!D(%9b3kZzZ;WWv@}I=dlwk^pCh=ZNT)nOZqb%-*>tB!1ES)|w9uY27FlB;(#n zuo1ba;V<3`ZSxxKwc7*~)BpP(5h^^F$qStvC9Uq@>Ag1#!H@e5URfA^%9bGiT_vkq zz5vNhl-2e(FXv1#uIh`oAShH|L z=>u>WN^qEuN~RxX)_>h!t?~ffz~|ENZeWbak2>>b53FoL6x@Bn*pd6A744|(#po$s zcCNnK(d9>UBr7Twzf}3nA$k(KSXkw*z1uCnCW^k#0-jo^Bz3}^KCESd*CFV4?bX|+ zF&=N_`ODHbz1WU>icS??Nd481?Wndy>9^{56;bD*4j2s|M$m@`q@S$9tO=|=+;`EN zmo~|Ke2x(LkI1-?r=NQ&L^Orh0yI{^X7iXMUZ;h!*+` zHL)IV6FlPh_gJoxOqKho93Q#t2q#-m`!l&tesyhXJpOwlS21^>4U!u{o_ z&H1Yy{J0hx(2~T0clJO>ktPb^Xxq%AnyUnxdSsi>8Dvq6GIK{Ai>sHY)ID*u4j8Km z_mS6P<&?mlRZ__fbZqMIB#mD+Cz253|E2{j#tvZ^i7UP8DjL63znfF-`xg~c`m>?_ z7$f}j;pmacp3Su$3=@HmF;Ty7y1YO9Ep}pTuIx{OVR}yV;Zf-)D==&Qhjv*ld_M(V zRMvkm#K%S7M+YbuvVVpNf$vyDcuu1U#^|qX;O#_bOr*`3DmHTd>W&W$EdY!B61d&b z{&Ol|S4ie3fm>fDzRl2`UER%6W%h4h(3BVM0jr=DA#S0)I9ax__?sJ1ZIK@iF_>gf zxO*wXA=V|1k)Qb2EE_P}2+TTSCkE9?|D?Qi9$7@@a93aYH;#qEkIVLJxT&~7@P{wm z^qD`xl*Q;i)gf_U=c?Z|+~MPv&i2ijo=ux!HPpD(6AT^ncqOG zP`BLEb;@-KgLoT&&1T+WApS-PzZUsW5ew11FOTVPk9XefQ{(;tdkWR6r8UUi@b@+8 zbSNQUI7C%K)J!b-0koF`n&Cs35)>t(t89_#QUb83v){2XzqH z1ECie7fG9!QpnH_1^C!5;uZ)-Qr%J`5OMDZ7r)I)0+JnQGTsHo45=59=D%K}f_tq( zme)3+@GuWX@|Zg~o(#-!ux-_>xYJ1*wp>x~2gk9%hj%AnY-#!!9>-Op?#@474-4b#c%~OBDi^N9HS7~pZk^UjlI+p z29GvCg>&^2@ro*d61MMohXEi%p#^DZ^u|jukLUz4VK@zikC_$WQN|w})U#^# z%%~*~hk8JQJ+wWBtJtG-`%URW2XrGHp))mJY%;X{5B3irI9fu=&m~<4yjRb?FX+%S zm_P;mp>px%zuG)XXA==EO>Q*2<_H5w1ZO35)R=1){{j!4;ctb)*62zvX z+h<+Dtj1T-X;Xuw?b>kTleW6<-J_Klr*A?x^3vl|9nAlsz#;~AX{%9b?0+Z_M4_Uw zrTd*suPr8Mssjm5t$dV@h9$K`@6#9pi;+i3*;0osW>R;hdJ>ak$MkADX8@{nFdoal zgX<1WQndvxZ3T06_(m(>8>NFEKe}{b07|xpZ>r1_2O#yNwBy5Ti!59r)(J0lT#a|f zxw}fp#8besjxK6JTeTA{*^7GPb{N=|1dPUtZEYU4FMhlH0+dTK?JHoFyr4M1bPsyR zDwCI}c5HZ3rh(+U+E#6o2A4upsI;1Iz*T@p%5Ch!J&`lX)4+e-M4i*yZnmxaj0A`w zeM8G{oV{WYR^{xU{l!A^ySn}ft6yXQ&r60PC90Lui^~+9GVlfnehKT@T&b-Ufu$HD zz02#p9bLoOpU1>gsSA>gK1m8%+{!V~tW!9kGh}*oF+mFINOw+JoONXZP70k^D4BIT z&p43MN0|bTenP=Dzq?)cW9tr9CQ$>9fNJF0KXX5UFodJSZliCyT4dshGtBdlTtyoy z`$oDgPo6y%yVw7d`^H7l0)wB0#s12!$lu*NWsBS2TXF_v-4FzZk{80qfw$wZ%@;1=b#hu?kNi$ zZ^i<_uRTV+@zoFE@J9B|MQcC`<;&kN4;3J>;BQ19FKmDm_* zNd!Eo(`iN!VES(~?IFNDZ!Zh?JRhEvjZKP}@q*5!8zVOdXfJ_aLKr0~)?C>0)1%|D~5i=AT#@#;Q< zYnTfGHbq{`wwFzLX(LFcoOXR;u6U%Rm!WXFy?tb)MIo9B&p3;`O5hOI7G0{Sg-vj^d-D&woTr9eiaF=Fo>BpH)d-+O>pm7 zYYVzjgmiIdUBTYLdYwDxOicC&QMIL>mhwf5TCS%zJZ(mxPWZ7}0VHjq7brzTqWy78 z_T0Y7w}Jc0dUe8=8VwbGnkGrutg+<8(T}(3`^vbpbly^;7ZZRf323*;9(H>Ap-7|G z$Q#z7O1bl$46p5*qa$FqCGX8*C zDFmKu2D0xFz81o6b2yF&2`AhovTtAH#xB~$_auAuR@`fN79;}|khf02g1aXFYrzbb zMTKZQ(WQ*2(IAmJwD~@Uq9Pd&9JkBU(aSVLl7ITbozN;(zmYYI!kQ1^$+Lg15x$&U zrLv^%^Mhlyq|eYyzEANYnG6i-cnb6qRvt^v>$t89FQ*IjZiW39$SM}?w=Q&hxfUXC z{r+{XiSO4|{GzU{fwO6C2&F(cd#USX@KxE?+P3;#!#$Fg*?I(%>slNVOAf=l=yW}7 zIw8(xpW3^R-2x7Zq|WS5xPyQclFL(hj_dj{udh1KeD(Q0s!9@^oS;r&27>$_;%t|{d4M9-{9 z_*Sl~5bfU=CWghf>U&#_&UIW^rZB3@{lJeh7S_K0IQxtl%)a3BDD;Cu3;VrEDU^^m z9=NvqS7GodW7Kfwu`q zVxUfw)OqRN!fov-sr7;h(~AO=tj=Ne?bY^BNE^De{C4~Z`{=iXpur*V=tdYk11fBP za?P{WOh!hMIWDM48 z7qAc3`Mh$)w1hA1!4D7G;@Bws2mavMtBcJ?`n0#hWw^D=$a1}^9mudA;EcvU1xN_o zi!{R{cGsCZJ!o*<)e*AXjb_-?>pa| zSu>R&C7lfo3S&RDJPWEEpDUswBHWWq@nSD8#&$aA3?T|0D)4^as`Tm8x9#*;C9^D9 z8|&dT_VU3CbcXv6arcTizPhRfXvOUdqYngQ%YN2+M>LkTCU)Zl!OZ5I%=BGlnxm%Z zBf3ZUDl-uW!8zzzGonsVP{$KeU5f@kd6`PZ4X0=tup~8DQcxRJ=qgnPvttFDdSR+` zVq*OzN0`!misj5UMe0~C9Vb~Qwcf^U>u}XfBPatFANqjCLnAluhem&0g=eK3ujap; z8(i@8gyOH;#?s)P%38THmZOF=@j#mm4b}0nKh4EVN0}kc7Z5o2Or&%?@xazVFytCp zIvUY8s&VRjp_0&=I=nw<@0Z3ZX^Y_|ZI>;S>pkLy5^5oXN~@YN%s5rr(&!uI+6H1~P_ zBAam9`nQGi&7xnf$lpspiuemJ;^_6H{Dh#Q3YnU~F#Yvd+WLJ~Z7$_`5dt1X*8Scj z?s!sztsw~xMtJl@-!aC?UbL{|RL|bzTY)#$RoFO+i?DG}vYjv689MM7vg~J~&VFJl z%?n^c3$^HAM^Q##aVb*&a-pLnnH`9P&eff#;6oFd-pA$)I|;(TaOw=SG~mC1Xme5B z=q$Jo9hMiHo5<7~X7+7mRX38)O}-d@r^!vhtkJcKb#1otN;s`=Ngn-`K^g8&OaAgm>Z^X=PM8U$ zQx`IOLro7!YaW$}3uj2*iGZ!gtucHfZi+FCSXyBNe6Tk}T0K(~mm=N5k2zT1!;$te z06AXPPCh=7hNJno!~p--I4)0p?7u#WEm(w_&uKf<4~avpHDwg|Nf?TbWB`KLHEJODo=&eXJG4&uDi1 z>ydDFx{Hm@Zk<7HY8%F=@N783H-k9(1DJLo?OK6%GhCu39iK$V9npNDfVc>!;mCdl z&zl_3QJMMVOGLVk9=HWA%0BqBGxw`8VjE&j=|qq5&{-s?KUFZ0)|yPbwLhMN1rA-qHJ5kE0`qL`C~nAWvJb?kZ=~(tzTie)a-mRy>dyu5t-b_% zAO$A$?)K0{M*cJ|S3qo0EjtqVF3RGoBRquFX376NjD-;bH%NZfXP-mrSQN!(DYlid zP!@BG{4a#ymm!32U6|$|Io(3#VjcqMV+)*q+qiaB}H|393L} zZMi;lvOyxHWCt?%M1T7wAn9@rX*Mf81}_kEfFB2XFB(jdBZQKv9_YgP%i0}Nv39bE z8AU`m`kxDMOk5~$$x}1YSXL09#UUJD9Q7>-mmTHq>(SQds0cq@DD&w0Tu0@*K3w5d z-;xKRE&=ZSdvNv$hyQzYusRnF6ab==0hDiPyj)9LDopB!Jp5*qs(v zV!Y|gk?jT-I@6+{%DenRlmv=tNI2Pt!=L{_&h=YCj+?NWS-&K%>}T+Zl|!#mAI9U) zT8+#_cZ;5hec1~cu{FWnOI-zO=?C+zC`d7S;W4GuD>sbyPKsiH@Vz6~%Ko%wd zS!z~%3NZp>&|RBf5u1zd7D#HFe*_l5FcVAP+(2cLE{Ga8C1mR%0DxRXoQGneMy+59 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 VZB1d+a|j0fBt&IJDuncW{vYAAF?j$0 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/mstile-70x70.png b/clients/binsa/src/img/icons/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..841d49876beb1c2caeeb8b8ed62ebb72b7361ec0 GIT binary patch literal 9435 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 literal 0 HcmV?d00001 diff --git a/clients/binsa/src/img/icons/unide.svg b/clients/binsa/src/img/icons/unide.svg new file mode 100644 index 0000000..2e8e68e --- /dev/null +++ b/clients/binsa/src/img/icons/unide.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/clients/binsa/src/img/logo.svg b/clients/binsa/src/img/logo.svg new file mode 100644 index 0000000..713a62c --- /dev/null +++ b/clients/binsa/src/img/logo.svg @@ -0,0 +1,67 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/clients/binsa/src/index.js b/clients/binsa/src/index.js new file mode 100644 index 0000000..2912576 --- /dev/null +++ b/clients/binsa/src/index.js @@ -0,0 +1,38 @@ +import Vue from 'vue'; +import App from './app'; +import 'es6-promise/auto'; // needed for webpack dynamic module loading +import Sw from 'offline-plugin/runtime'; // mapped to null-loader in development + +if(process.env.NODE_ENV !== 'development') { + const idle = function() {}; + Sw.install({ + // the new sw should take control immediately + onUpdateReady: () => { + Sw.applyUpdate(); + }, + onUpdating: idle, + // reload the page to make use of new sw version + // window.location.reload(); + onUpdated: idle, + onUpdateFailed: idle, + onInstalled: idle, + onError: idle + }); +} + +new Vue(App).$mount('#main'); + +// if started in nw.js, allow/fake 'multiple instances' +if(window.nw) { + nw.App.on('open', function(cmdline) { + const win = nw.Window.get(); + nw.Window.open(location.href, { + /* eslint camelcase: 0 */ + new_instance: true, + width: win.width, + height: win.height + }, newWin => { + + }); + }); +} diff --git a/clients/binsa/src/manifests/browserconfig.xml b/clients/binsa/src/manifests/browserconfig.xml new file mode 100644 index 0000000..f64f581 --- /dev/null +++ b/clients/binsa/src/manifests/browserconfig.xml @@ -0,0 +1,12 @@ + + + + + + + + + #2d89ef + + + diff --git a/clients/binsa/src/manifests/manifest.json b/clients/binsa/src/manifests/manifest.json new file mode 100644 index 0000000..636ba0f --- /dev/null +++ b/clients/binsa/src/manifests/manifest.json @@ -0,0 +1,34 @@ +{ + "name": "<%= htmlWebpackPlugin.options.packageJson.title || 'Webpack App' %>", + "short_name": "<%= htmlWebpackPlugin.options.packageJson.name || 'webpack-app' %>", + "description": "<%= htmlWebpackPlugin.options.packageJson.description || 'A Webpack App' %>", + "version": "<%= htmlWebpackPlugin.options.packageJson.version || '1.0.0' %>", + "manifest_version": 2, + "app": { + "background": { + "scripts": ["<%= process.env.BASEPATH %>background.js"] + } + }, + "icons": { + "36": "<%= process.env.BASEPATH %>icons/android-chrome-36x36.png", + "48": "<%= process.env.BASEPATH %>icons/android-chrome-48x48.png", + "60": "<%= process.env.BASEPATH %>icons/firefox_app_60x60.png", + "72": "<%= process.env.BASEPATH %>icons/android-chrome-72x72.png", + "96": "<%= process.env.BASEPATH %>icons/android-chrome-96x96.png", + "128": "<%= process.env.BASEPATH %>icons/firefox_app_128x128.png", + "144": "<%= process.env.BASEPATH %>icons/android-chrome-144x144.png", + "192": "<%= process.env.BASEPATH %>icons/android-chrome-192x192.png", + "256": "<%= process.env.BASEPATH %>icons/android-chrome-256x256.png", + "384": "<%= process.env.BASEPATH %>icons/android-chrome-384x384.png", + "512": "<%= process.env.BASEPATH %>icons/android-chrome-512x512.png" + }, + "sockets": { + "tcp": { + "connect": "" + } + }, + "permissions": ["system.cpu", "system.memory", "notifications", "storage", "geolocation", "*://*/*"], + "sandbox": { + "pages": ["sandbox.html"] + } +} diff --git a/clients/binsa/src/manifests/manifest.webapp b/clients/binsa/src/manifests/manifest.webapp new file mode 100644 index 0000000..4078269 --- /dev/null +++ b/clients/binsa/src/manifests/manifest.webapp @@ -0,0 +1,23 @@ +{ + "name": "<%= htmlWebpackPlugin.options.packageJson.name || 'webpack-app' %>", + "description": "<%= htmlWebpackPlugin.options.packageJson.description || 'A Webpack App' %>", + "version": "<%= htmlWebpackPlugin.options.packageJson.version || '1.0.0' %>", + "icons": { + "36": "<%= process.env.BASEPATH %>icons/android-chrome-36x36.png", + "48": "<%= process.env.BASEPATH %>icons/android-chrome-48x48.png", + "60": "<%= process.env.BASEPATH %>icons/firefox_app_60x60.png", + "72": "<%= process.env.BASEPATH %>icons/android-chrome-72x72.png", + "96": "<%= process.env.BASEPATH %>icons/android-chrome-96x96.png", + "128": "<%= process.env.BASEPATH %>icons/firefox_app_128x128.png", + "144": "<%= process.env.BASEPATH %>icons/android-chrome-144x144.png", + "192": "<%= process.env.BASEPATH %>icons/android-chrome-192x192.png", + "256": "<%= process.env.BASEPATH %>icons/android-chrome-256x256.png", + "384": "<%= process.env.BASEPATH %>icons/android-chrome-384x384.png", + "512": "<%= process.env.BASEPATH %>icons/firefox_app_512x512.png" + }, + "developer": { + "name": "<%= htmlWebpackPlugin.options.packageJson.author %>", + "url": null + } +} + diff --git a/clients/binsa/src/manifests/web-manifest.json b/clients/binsa/src/manifests/web-manifest.json new file mode 100644 index 0000000..8f38c32 --- /dev/null +++ b/clients/binsa/src/manifests/web-manifest.json @@ -0,0 +1,61 @@ +{ + "name": "<%= htmlWebpackPlugin.options.packageJson.title || 'Webpack App' %>", + "short_name": "<%= htmlWebpackPlugin.options.packageJson.name || 'webpack-app' %>", + "description": "<%= htmlWebpackPlugin.options.packageJson.description || 'A Webpack App' %>", + "version": "<%= htmlWebpackPlugin.options.packageJson.version || '1.0.0' %>", + "manifest_version": 2, + "dir": "auto", + "lang": "en-US", + "display": "fullscreen", + "orientation": "any", + "background_color": "#f9f9f9", + "theme_color": "#3d5165", + "start_url": "<%= process.env.BASEPATH %>", + "icons": [ + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "<%= process.env.BASEPATH %>icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/clients/binsa/src/pages/about.vue b/clients/binsa/src/pages/about.vue new file mode 100644 index 0000000..3a333fa --- /dev/null +++ b/clients/binsa/src/pages/about.vue @@ -0,0 +1,438 @@ + + + + + + diff --git a/clients/binsa/src/pages/ciHelp.vue b/clients/binsa/src/pages/ciHelp.vue new file mode 100644 index 0000000..d6b81b2 --- /dev/null +++ b/clients/binsa/src/pages/ciHelp.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/clients/binsa/src/pages/configuration/index.vue b/clients/binsa/src/pages/configuration/index.vue new file mode 100644 index 0000000..2928e99 --- /dev/null +++ b/clients/binsa/src/pages/configuration/index.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/clients/binsa/src/pages/configuration/ppm.vue b/clients/binsa/src/pages/configuration/ppm.vue new file mode 100644 index 0000000..29c770d --- /dev/null +++ b/clients/binsa/src/pages/configuration/ppm.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/clients/binsa/src/pages/configuration/ppmp.vue b/clients/binsa/src/pages/configuration/ppmp.vue new file mode 100644 index 0000000..5022b99 --- /dev/null +++ b/clients/binsa/src/pages/configuration/ppmp.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/clients/binsa/src/pages/configuration/preferences.vue b/clients/binsa/src/pages/configuration/preferences.vue new file mode 100644 index 0000000..2d1fe71 --- /dev/null +++ b/clients/binsa/src/pages/configuration/preferences.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/clients/binsa/src/pages/home.vue b/clients/binsa/src/pages/home.vue new file mode 100644 index 0000000..f806bf9 --- /dev/null +++ b/clients/binsa/src/pages/home.vue @@ -0,0 +1,38 @@ + diff --git a/clients/binsa/src/pages/notFound.vue b/clients/binsa/src/pages/notFound.vue new file mode 100644 index 0000000..22705d5 --- /dev/null +++ b/clients/binsa/src/pages/notFound.vue @@ -0,0 +1,31 @@ + + + diff --git a/clients/binsa/src/pages/ppm/index.vue b/clients/binsa/src/pages/ppm/index.vue new file mode 100644 index 0000000..50ea68b --- /dev/null +++ b/clients/binsa/src/pages/ppm/index.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/clients/binsa/src/pages/ppm/measurements.vue b/clients/binsa/src/pages/ppm/measurements.vue new file mode 100644 index 0000000..d8bea40 --- /dev/null +++ b/clients/binsa/src/pages/ppm/measurements.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/clients/binsa/src/pages/ppmp/index.vue b/clients/binsa/src/pages/ppmp/index.vue new file mode 100644 index 0000000..c3f2fab --- /dev/null +++ b/clients/binsa/src/pages/ppmp/index.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/clients/binsa/src/pages/ppmp/measurements.vue b/clients/binsa/src/pages/ppmp/measurements.vue new file mode 100644 index 0000000..e061362 --- /dev/null +++ b/clients/binsa/src/pages/ppmp/measurements.vue @@ -0,0 +1,369 @@ + + + + + + diff --git a/clients/binsa/src/pages/ppmp/messages.vue b/clients/binsa/src/pages/ppmp/messages.vue new file mode 100644 index 0000000..87d061f --- /dev/null +++ b/clients/binsa/src/pages/ppmp/messages.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/clients/binsa/src/pages/ppmp/processes.vue b/clients/binsa/src/pages/ppmp/processes.vue new file mode 100644 index 0000000..39691ea --- /dev/null +++ b/clients/binsa/src/pages/ppmp/processes.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/clients/binsa/src/pages/ppmp/sendingDaemon.js b/clients/binsa/src/pages/ppmp/sendingDaemon.js new file mode 100644 index 0000000..4acc981 --- /dev/null +++ b/clients/binsa/src/pages/ppmp/sendingDaemon.js @@ -0,0 +1,220 @@ +import EventEmitter from 'events'; +import store from '../../store'; +import sensorBus from '../../sensorBus'; +import isEqual from 'lodash/isEqual'; +import cloneDeep from 'lodash/cloneDeep'; + +const sensorsNeedPolling = { + cpu: () => sensorBus.getCpu(), + mem: () => sensorBus.getMem() +}; + +// jobs Object and methods are outsourced from vuex store because this is too volatile +export class RecordingJob extends EventEmitter { + constructor(configId, deviceId) { + super(); + if(configId === undefined || deviceId === undefined) { + throw new Error('RecordingJob: configId & deviceId are mandatory!'); + } + this.stop(); + Object.assign(this, { + configId: configId, + deviceId: deviceId, + running: false + }); + } + + flushCache() { + const returnValue = this.cache; + if(this.cache) { + this.cache = {}; + } + return returnValue; + } + + createSubscriptions(samplingFrequency) { + if(this.subscriptions) { + this.subscriptions.forEach(([name, subscription]) => { + if(typeof subscription === 'function') { + sensorBus.removeListener(name, subscription); + } else if(typeof subscription === 'number') { + clearInterval(subscription); + } + }); + } + const translation = (store.state.configuration.configuration[this.configId].translate || {})[this.deviceId] || {}; + this.subscriptions = Object.entries(translation).map(([sensor, measurementPoints]) => { + const subscription = value => { + if(!this.running) { + return; + } + const ts = Date.now(); + Object.entries(measurementPoints).forEach(([measurementPoint, alias]) => { + if(!value[measurementPoint] && value[measurementPoint] !== 0) { + return; + } + this.cache[alias] = this.cache[alias] || []; + this.cache[alias].push([ts, value[measurementPoint]]); + this.count++; + }); + }; + if(sensorsNeedPolling[sensor]) { + // eslint-disable-next-line space-before-function-paren + return [sensor, setInterval(async () => + subscription(await sensorsNeedPolling[sensor]()), + samplingFrequency)]; + } + sensorBus.on(sensor, subscription); + return [sensor, subscription]; + }); + return this.subscriptions; + } + + start(samplingFrequency = 100) { + if(this.running) { + return this; + } + if(this.startTime) { + // resume only + this.running = true; + return this; + } + this.createSubscriptions(samplingFrequency); + Object.assign(this, { + running: true, + startTime: new Date(), + cache: {}, + unwatch: store.watch((state, getters) => + cloneDeep((store.state.configuration.configuration[this.configId].translate || {})[this.deviceId] || {}), + /* eslint-disable indent */ + (newTranslation, oldTranslation) => { + if(store.getters['configuration/ppmp/getTotalTranslationsFor'](this.configId, this.deviceId) === 0) { + this.stop(); + return; + } + if(!isEqual(oldTranslation, newTranslation)) { + this.createSubscriptions(samplingFrequency); + } + }, { + deep: true + } + /* eslint-enable indent */ + ) + }); + this.emit('runningChanged', this.running); + return this; + } + + pause() { + if(!this.running) { + return this; + } + this.running = false; + this.emit('runningChanged', this.running); + return this; + } + + stop() { + this.running = false; + if(this.subscriptions) { + this.subscriptions.forEach(([name, subscription]) => { + if(typeof subscription === 'function') { + sensorBus.removeListener(name, subscription); + } else if(typeof subscription === 'number') { + clearInterval(subscription); + } + }); + } + if(this.unwatch) { + this.unwatch(); + } + Object.assign(this, { + cache: null, + count: 0, + startTime: null, + subscriptions: null, + unwatch: null + }); + this.emit('runningChanged', this.running); + return this; + } +} + +export class AggregationJob extends RecordingJob { + constructor(...args) { + super(...args); + this.aggregatedCache = null; + } + + aggregate() { + Object.entries(this.flushCache()).forEach(([name, series]) => { + if(!series.length) { + return; + } + this.aggregatedCache[name] = this.aggregatedCache[name] || []; + this.aggregatedCache[name].push([(series[0][0] + series[series.length - 1][0]) / 2, series.reduce((l, [t, v]) => l + v, 0) / series.length]); + }); + } + + start(samplingFrequency, sendingFrequency, callback) { + if(!sendingFrequency || !samplingFrequency) { + throw new Error('AggregationJob needs sending interval and samplingFrequency to start'); + } + this.aggregatedCache = {}; + // aggregate flushCache return value to aggregatedCache + if(!this.aggregationInterval) { + this.aggregationInterval = setInterval(() => this.aggregate(), samplingFrequency); + } + if(!this.sendingInterval) { + this.sendingInterval = setInterval(() => { + if(Object.keys(this.aggregatedCache).length && this.running) { + if(callback && callback instanceof Function) { + callback(this.aggregatedCache); + } + this.aggregatedCache = {}; + }; + }, sendingFrequency); + } + return super.start(samplingFrequency); + } + + stop(...args) { + clearInterval(this.aggregationInterval); + clearInterval(this.sendingInterval); + this.aggregatedCache = null; + return super.stop(...args); + } +} + +export class PhaseJob extends RecordingJob { + constructor(...args) { + super(...args); + this.phases = null; + } + + flushCache() { + const returnValue = this.phases; + if(this.phases && this.cache) { + this.phases.push(super.flushCache()); + this.phases = []; + } + return returnValue; + } + + phaseBreak() { + if(this.phases) { + this.phases.push(super.flushCache()); + } + return this.phases; + } + + start(...args) { + this.phases = []; + return super.start(...args); + } + + stop(...args) { + this.phases = null; + return super.stop(...args); + } +} diff --git a/clients/binsa/src/router.js b/clients/binsa/src/router.js new file mode 100644 index 0000000..5398a9e --- /dev/null +++ b/clients/binsa/src/router.js @@ -0,0 +1,66 @@ +import Vue from 'vue'; +import Router from 'vue-router'; +import Home from 'pages/home'; +/* +import PPMP from 'pages/ppmp'; +import Configuration from 'pages/configuration'; +import About from 'pages/about'; +*/ + +Vue.use(Router); + +const routes = [{ + path: '/', + component: Home +}, { + path: '/index.html', + component: Home +}, { + path: '/ppmp/:configId?/:deviceId?', + component: () => import(/* webpackChunkName:"ppmp" */ 'pages/ppmp'), + children: [{ + path: '/ppmp/:configId/:deviceId/measurements', + component: () => import(/* webpackChunkName:"ppmp" */ 'pages/ppmp/measurements'), + props: true + }, { + path: '/ppmp/:configId/:deviceId/processes', + component: () => import(/* webpackChunkName:"ppmp" */ 'pages/ppmp/processes'), + props: true + }, { + path: '/ppmp/:configId/:deviceId/messages', + component: () => import(/* webpackChunkName:"ppmp" */ 'pages/ppmp/messages'), + props: true + }, { + path: '*', + component: function() { + return import(/* webpackChunkName:"notFound" */'./pages/notFound.vue'); + } + }] +}, { + path: '/about', + component: () => import(/* webpackChunkName:"about" */ 'pages/about') +}, { + path: '/configuration', + component: () => import(/* webpackChunkName:"configuration" */ 'pages/configuration') +}]; + +if(process.env.NODE_ENV === 'development') { + routes.push({ + path: '/ciHelp', + component: () => import(/* webpackChunkName:"ciHelper" */ 'pages/ciHelp') + }); +} + +routes.push({ + path: '*', + component: function() { + return import(/* webpackChunkName:"notFound" */'./pages/notFound.vue'); + } +}); + +export default new Router({ + // mode: 'hash', + mode: 'history', + base: process.env.BASEPATH || '/', + routes +}); diff --git a/clients/binsa/src/sandbox.js b/clients/binsa/src/sandbox.js new file mode 100644 index 0000000..e0b886e --- /dev/null +++ b/clients/binsa/src/sandbox.js @@ -0,0 +1,29 @@ +window.addEventListener('message', function(ev) { + const id = ev.data.id; + try { + const testdata = event.data || {}, + tasks = [], + render = function(tpl, data) { + return Promise.resolve(data); + }; + if(typeof testdata.data === 'string') { + /* eslint no-eval: 0 */ + eval("'use scrict;'; testdata.data=" + testdata.data); + } + testdata.times = testdata.times || 1; + + for(let i = 0; i < testdata.times; i++) { + tasks.push(render(testdata.tpl, testdata.data)); + } + Promise.all(tasks) + .then(function(result) { + ev.source.postMessage({ id: id, result: result }, '*'); + return result; + }) + .catch(function(err) { + ev.source.postMessage({ id: id, error: err.toString() }, '*'); + }); + } catch(err) { + ev.source.postMessage({ id: id, error: err.toString() }, '*'); + } +}); diff --git a/clients/binsa/src/sensorBus.js b/clients/binsa/src/sensorBus.js new file mode 100644 index 0000000..10ae9bf --- /dev/null +++ b/clients/binsa/src/sensorBus.js @@ -0,0 +1,257 @@ +import EventEmitter from 'events'; + +class SensorBus extends EventEmitter { + constructor() { + super(); + + const eventTypes = ['motion', 'orientation', 'position', 'battery'], + fns = [], + eventRegex = /^on[A-Z]/; + + // make sure that all event handlers are running in this context + let proto = this; + while(proto) { + fns.push(...Object.getOwnPropertyNames(proto)); + proto = Object.getPrototypeOf(proto); + } + fns + .filter(fn => (this[fn] instanceof Function) && (fn.match(eventRegex))) + .forEach(fn => { + this[fn] = this[fn].bind(this); + }); + + if(window.nwDispatcher || (window.chrome && window.chrome.system)) { + this.lastCpu = null; + this.pollingInterval = setInterval(this.onPollingTrigger, 1000); + this.onPollingTrigger(); + } + + this.measurementPoints = {}; + + eventTypes.forEach(ev => { + this.measurementPoints[ev] = null; + this.on(ev, v => { + this.measurementPoints[ev] = v; + }); + }); + + if(window.DeviceMotionEvent) { + window.addEventListener('devicemotion', this.onDeviceMotionEvent); + } + + if(window.DeviceOrientationEvent) { + window.addEventListener('deviceorientation', this.onDeviceOrientationEvent); + } + + // eslint-disable-next-line one-var + const me = this, + getBatteryInfo = function(b) { + me.emit('battery', SensorBus.fixBattery(b)); + b.addEventListener('levelchange', me.onBatteryLevelChangeEvent); + b.addEventListener('chargingchange', me.onBatteryChargingChangeEvent); + b.addEventListener('chargingtime', me.onBatteryChargingTimeChangeEvent); + b.addEventListener('dischargingtime', me.onBatteryDischargingTimeChangeEvent); + }, + bat = navigator.battery || navigator.webkitBattery || navigator.mozBattery; + + if(navigator.getBattery) { + navigator.getBattery() + .then(getBatteryInfo) + .catch(err => { + console.error(err); + }); + } else if(bat) { + getBatteryInfo(bat); + } + + // eslint-disable-next-line one-var + /* + const a = document.createElement('a'); + a.onclick = this.activateGeolocation; + a.click(); + */ + this.activateGeolocation(); + } + + async onPollingTrigger() { + if(window.nwDispatcher || (window.chrome && window.chrome.system)) { + const [cpu, mem] = await Promise.all([ + this.getCpu(), + this.getMem() + ]); + Object.assign(this.measurementPoints, { cpu, mem }); + } else { + throw new Error('Cannot poll on the current platform'); + } + } + + /* + * singleton will not really ever be destroyed + */ + destroyed() { + if(window.DeviceMotionEvent) { + window.removeEventListener('devicemotion', this.onDeviceMotionEvent); + } + + if(window.DeviceOrientationEvent) { + window.removeEventListener('deviceorientation', this.onDeviceOrientationEvent); + } + + const me = this, + removeBatteryInfo = function(b) { + b.removeEventListener('levelchange', me.onBatteryLevelChangeEvent); + b.removeEventListener('chargingchange', me.onBatteryChargingChangeEvent); + b.removeEventListener('chargingtime', me.onBatteryChargingTimeChangeEvent); + b.removeEventListener('dischargingtime', me.onBatteryDischargingTimeChangeEvent); + }, + bat = navigator.battery || navigator.webkitBattery || navigator.mozBattery; + + if(navigator.getBattery) { + navigator.getBattery() + .then(removeBatteryInfo) + .catch(err => { + console.error(err); + }); + } else if(bat) { + removeBatteryInfo(bat); + } + + if(navigator.geolocation) { + navigator.geolocation.clearWatch(this.geolocationChangeId); + } + + if(this.pollingInterval) { + clearInterval(this.pollingInterval); + } + } + + async getCpu() { + let p, + keys; + if(window.nwDispatcher) { + const os = require('os'); + keys = ['idle', 'user', 'total', 'irq', 'nice', 'sys']; + p = os.cpus().map(cpu => cpu.times); + } else if(window.chrome && window.chrome.system) { + keys = ['idle', 'user', 'total', 'kernel']; + const cpuInfo = await (new Promise(resolve => chrome.system.cpu.getInfo(resolve))); + p = cpuInfo.processors.map(cpu => cpu.usage); + } else { + throw new Error('getCpu(): unknown platform'); + } + const current = p.reduce((l, v, idx, a) => { + if(!v.total) { // for all the cpus that have times + v.total = Object.values(v).reduce((s, i) => s + i, 0); + } + keys.forEach(k => { + l[k] = (l[k] || 0) + (v[k] || 0) / a.length; // average over all cpus + }); + return l; + }); + if(this.lastCpu && current.total !== this.lastCpu.total) { + current.percent = 100 - 100 * (current.idle - this.lastCpu.idle) / (current.total - this.lastCpu.total); + } else { + // can't determin percentage + current.percent = null; + } + this.lastCpu = current; + return current; + } + + async getMem() { + if(window.nwDispatcher) { + const os = require('os'); + return os.totalmem() - os.freemem(); + } else if(window.chrome && window.chrome.system) { + const info = await (new Promise(resolve => chrome.system.memory.getInfo(resolve))); + info.percent = 100 * info.capacity / info.availableCapacity; + return info; + // return info.capacity - info.availableCapacity; + } + throw new Error('getMem(): unknown platform'); + } + + activateGeolocation() { + if(navigator.geolocation) { + this.geolocationChangeId = navigator.geolocation.watchPosition(this.onGeolocationChangeEvent, err => { + console.error(err); + navigator.geolocation.clearWatch(this.geolocationChangeId); + }, { + timeout: 5000, + enableHighAccuracy: true, + maximumAge: Infinity + }); + } + } + + onDeviceMotionEvent(event) { + this.emit('motion', { + ax: event.acceleration.x, + ay: event.acceleration.y, + az: event.acceleration.z, + + agx: event.accelerationIncludingGravity.x, + agy: event.accelerationIncludingGravity.y, + agz: event.accelerationIncludingGravity.z, + + ra: event.rotationRate.alpha, + rb: event.rotationRate.beta, + rg: event.rotationRate.gamma + }); + } + + onDeviceOrientationEvent(event) { + // left/right + if(event.gamma === null && event.beta === null && event.alpha === null) { + return; + } + this.emit('orientation', { + lr: event.gamma, + fb: event.beta, + dir: event.alpha + }); + } + + onBatteryLevelChangeEvent({ target }) { + this.emit('battery', SensorBus.fixBattery(target)); + } + + onBatteryChargingChangeEvent({ target }) { + this.emit('battery', SensorBus.fixBattery(target)); + } + + onBatteryChargingTimeChangeEvent({ target }) { + this.emit('battery', SensorBus.fixBattery(target)); + } + + onBatteryDischargingTimeChangeEvent({ target }) { + this.emit('battery', SensorBus.fixBattery(target)); + } + + onGeolocationChangeEvent({ coords }) { + const pos = this.measurementPoints.position; + if(pos && !Object.keys(pos).find(k => pos[k] !== coords[k])) { + return; + } + this.emit('position', { + latitude: coords.latitude, + longitude: coords.longitude, + altitude: coords.altitude, + accuracy: coords.accuracy, + altitudeAccuracy: coords.altitudeAccuracy, + heading: coords.heading, + speed: coords.speed + }); + } + + static fixBattery(b) { + return { + level: b.level, + charging: b.charging ? 1 : 0, + chargingTime: b.chargingTime, + dischargingTime: b.dischargingTime + }; + } +} + +export default new SensorBus(); diff --git a/clients/binsa/src/store/configuration/index.js b/clients/binsa/src/store/configuration/index.js new file mode 100644 index 0000000..f3f99df --- /dev/null +++ b/clients/binsa/src/store/configuration/index.js @@ -0,0 +1,264 @@ +import Vue from 'vue'; +import PouchDB from 'pouchdb-core'; +import { uuid } from 'pouchdb-utils'; +import isEqual from 'lodash/isEqual'; +import idbAdapter from 'pouchdb-adapter-idb'; +import websqlAdapter from 'pouchdb-adapter-websql'; +import cryptoPouch from 'crypto-pouch'; +import ppmp from './ppmp'; + +PouchDB + .plugin(idbAdapter) + .plugin(websqlAdapter) + .plugin(cryptoPouch); + +/* +if(process.env.NODE_ENV === 'development') { + PouchDB.debug.enable('*'); +} else { + PouchDB.debug.disable(); +} +*/ +// PouchDB.plugin(require('pouchdb-replication')); //enable syncing +// PouchDB.plugin(require('pouchdb-adapter-http')); //enable syncing over http + +// default 'anonymous' db: + +function createDb(prefix = '') { + return new PouchDB(prefix + 'configurations', { +// don't force idb to allow websql fallback for iOS +// adapter: 'idb' + }); +} + +function createCryptoDb({ user, password, force }) { + const newDb = createDb(`${user}-`); + return (new Promise(function(resolve, reject) { + newDb.crypto(password, { + cb: (err, key) => { + if(err) { + reject(err); + } + resolve(key); + } + }); + })) + // test, if provided password can be used + .then((/* key */) => + newDb.get('preferences') + .then(() => newDb) + // catch first to reuse the following 'then' + .catch(err => { + // it shall not be an error, if preferences wasn't found. Only if decryption fails + // TODO: also check for err.constructor.name !== 'PouchError' but uglify-save + if(err.name !== 'not_found') { + // is an deletion intented? + if(force) { + // destroy and try again + return newDb.destroy() + .then(() => createCryptoDb({ user, password })); + } + // otherwise it's an actual problem + return newDb.close() + .then(() => Promise.reject(err)); + } + return newDb; + }) + ); +} + +export default store => { + let db = null; + const namespace = 'configuration'; + + store.registerModule(namespace, { + namespaced: true, + state: { + // null indicates that it hasn't been loaded yet. {...} === is loaded + credentials: null, + configuration: null, + expandedCardId: null + }, + mutations: { + setExpandedCardId(state, id) { + state.expandedCardId = id; + }, + saveConfiguration(state, config) { + if(!config) { + throw Error('no config with _id defined'); + } + if(!(config instanceof Array)) { + config = [config]; + } + if(!state.configuration) { + Vue.set(state, 'configuration', {}); + } + config.forEach(c => Vue.set(state.configuration, c._id, c)); + }, + deleteConfiguration(state, id) { + Vue.delete(state.configuration, id); + }, + resetConfiguration(state) { + Vue.set(state, 'configuration', null); + Vue.set(state, 'credentials', null); + }, + saveCredentials(state, credentials) { + Vue.set(state, 'credentials', credentials ? { + user: credentials.user || null + // , password: credentials.user || null, + } : null); + } + }, + actions: { + async saveConfiguration({ commit, state }, config) { + if(config._id && isEqual(config, state.configuration[config._id])) { + return state.configuration[config._id]; + } + const res = await db.put(Object.assign({}, config, { + _id: (!config._id || !config._rev) ? uuid() : config._id + })); + commit('saveConfiguration', Object.assign({}, config, { + _id: res.id, + _rev: res.rev + })); + return state.configuration[res.id]; + }, + async deleteConfiguration({ commit, state }, id) { + const conf = db.remove(id, state.configuration[id]._rev); + commit('deleteConfiguration', id); + return conf; + }, + async loadConfigurations(nsStore, credentials) { + // reset any configuration object to null + const anonymous = !(credentials && credentials.user && credentials.password); + if(nsStore.state.configuration) { + nsStore.commit('resetConfiguration'); + } + try { + // close any open db synchronously and set to null + if(db) { + try { + await db.close(); + } catch(e) { + console.error("Coulnd't close db", e); + } + db = null; + } + // now start opening with the new given credentials + if(!anonymous) { + db = await createCryptoDb(credentials); + nsStore.commit('saveCredentials', credentials); + } else { + // fallback anonymous + db = createDb(); + nsStore.commit('saveCredentials', credentials); + } + // load actual configuration content + return nsStore.dispatch('afterConfigurations', credentials); + } catch(err) { + console.error("couldn't load db:", err); + // fallback anonymous + if(credentials) { + return nsStore.dispatch('loadConfigurations') + .then(configurations => { + if(!credentials.force) { + throw err; + } + return configurations; + }); + } + // otherwise, there's a real problem + throw err; + } + }, + async afterConfigurations(nsStore, credentials) { + if(!db) { + throw new Error('initialize db first'); + } + // db object should be refreshed, now populate the configuration object + const checkSingletons = () => { + const singletons = { + preferences: { + lang: ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage).toLowerCase().split(/[_-]+/)[0] + } + }; + // first login should not have credential popup + if(!(credentials && credentials.user && credentials.password)) { + singletons.preferences.fallbackLoginIsAnonymous = true; + } + + return Promise.all(Object.keys(singletons) + // potentially no configuration exists (ever) yet + .filter(s => !(nsStore.state.configuration && nsStore.state.configuration[s])) + .map(function(_id) { + const obj = Object.assign({ + _id, + type: 'singleton' + }, singletons[_id]); + // TODO: optimize for batch + return db.put(obj) + .then(res => nsStore.commit('saveConfiguration', Object.assign({ + _id: res.id, + _rev: res.rev + }, obj))); + }) + ) + .then(() => { + // should fallback configuration (credentials = null) be regarded as explicit anonymous (credentials = {}) ? + if(nsStore.state.configuration.preferences.fallbackLoginIsAnonymous && !nsStore.state.credentials) { + nsStore.commit('saveCredentials', credentials || {}); + } + // logout sets fallbackLoginIsAnonymous explicitly to false, see signOut() + if(credentials && credentials.remember && !nsStore.state.configuration.preferences.fallbackLoginIsAnonymous) { + return nsStore.dispatch('saveConfiguration', Object.assign({}, nsStore.state.configuration.preferences, { + fallbackLoginIsAnonymous: true + })) + .then(() => nsStore.state.configuration); + } + return nsStore.state.configuration; + }); + }, + res = await db.allDocs({ + /* eslint camelcase: 0,indent: 0 */ + include_docs: true + }), + docs = res.rows.map(doc => doc.doc), + listener = db.changes({ + since: 'now', + live: true, + include_docs: true + }) + .on('change', function(change) { + if(change.deleted) { + nsStore.commit('deleteConfiguration', change.id); + } else if(!isEqual(nsStore.state.configuration[change.doc._id], change.doc)) { + nsStore.commit('saveConfiguration', change.doc); + } + return checkSingletons(); + }); + if(docs.length) { + nsStore.commit('saveConfiguration', docs); + } + db.on('closed', function() { + listener.cancel(); + }); + return checkSingletons(); + }, + async signOut(nsStore) { + const prefs = nsStore.state.configuration.preferences; + if(prefs && prefs.fallbackLoginIsAnonymous) { + await nsStore.dispatch('saveConfiguration', Object.assign({}, prefs, { + fallbackLoginIsAnonymous: false + })); + } + await nsStore.dispatch('loadConfigurations', null); + } + } + }); + + // register further modules + ppmp(store, namespace); + + // load default db + store.dispatch(`${namespace}/loadConfigurations`); +}; diff --git a/clients/binsa/src/store/configuration/ppmp.js b/clients/binsa/src/store/configuration/ppmp.js new file mode 100644 index 0000000..150baac --- /dev/null +++ b/clients/binsa/src/store/configuration/ppmp.js @@ -0,0 +1,78 @@ +import Vue from 'vue'; + +export default (store, prefix = []) => { + if(!(prefix instanceof Array)) { + prefix = [prefix]; + } + + store.registerModule(prefix.concat('ppmp'), { + namespaced: true, + state: { + registry: {}, + translationCounts: {} + }, + mutations: { + setTranslationCountsForConfigId(state, { id, counts }) { + if(state.translationCounts[id]) { + Vue.set(state.translationCounts, id, {}); + } + Vue.set(state.translationCounts, id, counts); + }, + register(state, { key, configId, deviceId, daemon }) { + if(daemon) { + if(!state.registry[key]) { + Vue.set(state.registry, key, {}); + } + if(!state.registry[key][configId]) { + Vue.set(state.registry[key], configId, {}); + } + Vue.set(state.registry[key][configId], deviceId, () => daemon); + } else { + if(state.registry[key] && state.registry[key][configId] && state.registry[key][configId][deviceId]) { + Vue.delete(state.registry[key][configId], deviceId); + if(!Object.keys(state.registry[key][configId] || {}).length) { + Vue.delete(state.registry[key], configId); + } + } + } + } + }, + getters: { + getRegistry: (state) => + (key, configId, deviceId) => { + let s = state.registry[key]; + s = s ? s[configId] : null; + return s && s[deviceId] ? s[deviceId]() : null; + }, + getTranslationsFor: (state, getters, rootState) => + (configId, deviceId) => { + return (state.translationCounts[configId] || {})[deviceId] || {}; + }, + getTotalTranslationsFor: (state, getters) => + (configId, deviceId) => + Object.values(getters.getTranslationsFor(configId, deviceId)).reduce((l, v) => l + v, 0) + } + }); + + // sync local translation count cache with every commit + store.subscribe(mutation => { + if(mutation.type === 'configuration/saveConfiguration') { + let configs = mutation.payload; + configs = (configs instanceof Array) ? configs : [configs]; + configs.filter(config => config.type === 'ppmp' || config.type === 'ppm') + .forEach(config => { + var counts = Object.entries(config.translate || {}).reduce((o, [deviceId, t]) => { + o[deviceId] = Object.keys(t || {}).reduce((l, v) => { + l[v] = Object.keys(t[v]).length; + return l; + }, {}); + return o; + }, {}); + store.commit(prefix.concat('ppmp', 'setTranslationCountsForConfigId').join('/'), { + id: config._id, + counts + }); + }); + } + }); +}; diff --git a/clients/binsa/src/store/index.js b/clients/binsa/src/store/index.js new file mode 100644 index 0000000..b72cbd5 --- /dev/null +++ b/clients/binsa/src/store/index.js @@ -0,0 +1,14 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import configuration from './configuration'; + +Vue.use(Vuex); + +export default new Vuex.Store({ + strict: (process.env.NODE_ENV !== 'production'), + plugins: [configuration], + state: {}, + mutations: {}, + modules: { + } +}); diff --git a/clients/binsa/src/styles/variables.scss b/clients/binsa/src/styles/variables.scss new file mode 100644 index 0000000..b04cd7a --- /dev/null +++ b/clients/binsa/src/styles/variables.scss @@ -0,0 +1,96 @@ +// https://www.w3.org/WAI/ER/WD-AERT/#q100 +@function brightness($color) { + @return ((red($color) * .299) + (green($color) * .587) + (blue($color) * .114)) / 255 * 100%; +} +@function findColorInvert($color) { + @if (abs(brightness($color)) > 50) { + @return black; + } + @return white; +} + +$fa-font-path: "~font-awesome/fonts"; + +// Bosch +$bosch-prussianblue: rgb(0, 50, 100); +$bosch-matisse: rgb(58, 90, 130); +$bosch-wildblueyonder: rgb(110, 140, 178); +$bosch-spindle: rgb(168, 186, 210); +$bosch-red: rgb(226, 0, 21); +$bosch-aluminium: rgb(128, 130, 133); +$bosch-darkgray: rgb(167, 167, 167); +$bosch-gainsboro: rgb(221, 221, 221); + +/* +rgb(168, 1, 99) +rgb(63, 19, 108) +rgb(8, 66, 126) +rgb(14, 120, 197) +rgb(19, 153, 160) +rgb(103, 180, 25) +rgb(10, 81, 57) +rgb(66, 76, 88) +*/ + +//New CD colors: +$bosch-eggplant: rgb(185, 2, 118); +$bosch-windsor: rgb(80, 35, 127); +$bosch-cobalt: rgb(0, 86, 145); +$bosch-pacificblue: rgb(0, 142, 207); +$bosch-bondiblue: rgb(0, 168, 176); +$bosch-lima: rgb(120, 190, 32); +$bosch-watercourse: rgb(0, 98, 73); +$bosch-fiord: rgb(82, 95, 107); + +$bosch-prussianblue-invert: findColorInvert($bosch-prussianblue); +$bosch-matisse-invert: findColorInvert($bosch-matisse); +$bosch-wildblueyonder-invert: findColorInvert($bosch-wildblueyonder); +$bosch-spindle-invert: findColorInvert($bosch-spindle); +$bosch-red-invert: findColorInvert($bosch-red); +$bosch-aluminium-invert: findColorInvert($bosch-aluminium); +$bosch-darkgray-invert: findColorInvert($bosch-darkgray); +$bosch-gainsboro-invert: findColorInvert($bosch-gainsboro); +$bosch-eggplant-invert: findColorInvert($bosch-eggplant); +$bosch-windsor-invert: findColorInvert($bosch-windsor); +$bosch-cobalt-invert: findColorInvert($bosch-cobalt); +$bosch-pacificblue-invert: findColorInvert($bosch-pacificblue); +$bosch-bondiblue-invert: findColorInvert($bosch-bondiblue); +$bosch-lima-invert: findColorInvert($bosch-lima); +$bosch-watercourse-invert: findColorInvert($bosch-watercourse); +$bosch-fiord-invert: findColorInvert($bosch-fiord); + +$bosch-colors: ( + "bosch-prussianblue": ($bosch-prussianblue, $bosch-prussianblue-invert), + "bosch-matisse": ($bosch-matisse, $bosch-matisse-invert), + "bosch-wildblueyonder": ($bosch-wildblueyonder, $bosch-wildblueyonder-invert), + "bosch-spindle": ($bosch-spindle, $bosch-spindle-invert), + "bosch-red": ($bosch-red, $bosch-red-invert), + "bosch-aluminium": ($bosch-aluminium, $bosch-aluminium-invert), + "bosch-darkgray": ($bosch-darkgray, $bosch-darkgray-invert), + "bosch-gainsboro": ($bosch-gainsboro, $bosch-gainsboro-invert), + "bosch-eggplant": ($bosch-eggplant, $bosch-eggplant-invert), + "bosch-windsor": ($bosch-windsor, $bosch-windsor-invert), + "bosch-cobalt": ($bosch-cobalt, $bosch-cobalt-invert), + "bosch-pacificblue": ($bosch-pacificblue, $bosch-pacificblue-invert), + "bosch-bondiblue": ($bosch-bondiblue, $bosch-bondiblue-invert), + "bosch-lima": ($bosch-lima, $bosch-lima-invert), + "bosch-watercourse": ($bosch-watercourse, $bosch-watercourse-invert), + "bosch-fiord": ($bosch-fiord, $bosch-fiord-invert) +); + +$primary: $bosch-windsor; +$success: $bosch-lima; +$info: $bosch-pacificblue; +$warning: $bosch-eggplant; +$danger: $bosch-red; + +$primary-invert: findColorInvert($primary); +$success-invert: white; +$info-invert: findColorInvert($info); +$warning-invert: findColorInvert($warning); +$danger-invert: findColorInvert($danger); + +$link-hover: $bosch-lima; +// $card-cap-bg: $gray-lightest; + +@import "bulma/sass/utilities/_all.sass"; diff --git a/clients/binsa/src/sw.js b/clients/binsa/src/sw.js new file mode 100644 index 0000000..16fff62 --- /dev/null +++ b/clients/binsa/src/sw.js @@ -0,0 +1,37 @@ +// console.log('own sw.js', self); + +const API_CACHE_NAME = 'ppm-api-cache'; + +/* +function useFallback() { + return Promise.resolve(new Response('errortext', { + headers: { + 'Content-Type': 'image/svg+xml' + } + })); +} +*/ + +self.addEventListener('fetch', event => { + // cache PPM REST API + if(event.request.method === 'GET' && event.request.url.search(/INL_CY/) !== -1) { + event.respondWith(caches.open(API_CACHE_NAME).then(function(cache) { + return fetch(event.request) + .then(function(response) { + if(!response.ok) { + return Promise.reject(response); + } + return cache.put(event.request, response.clone()) + .then(function() { + return response; + }); + }) + .catch(function(err) { + return cache.match(event.request) + .then(function(matching) { + return matching || Promise.reject(err); + }); + }); + })); + } +}); diff --git a/clients/binsa/tests/integration/main_spec.js b/clients/binsa/tests/integration/main_spec.js new file mode 100644 index 0000000..45f6155 --- /dev/null +++ b/clients/binsa/tests/integration/main_spec.js @@ -0,0 +1,144 @@ +const pkg = require('../../package.json'), + i18n = { + en: require('../../src/i18n/en.json'), + de: require('../../src/i18n/de.json') + }; + +function deleteDB(prefix = '') { + return new Promise((res, rej) => { + let req = indexedDB.deleteDatabase(`_pouch_${prefix}configurations`); + req.onsuccess = res; + req.onerror = rej; + }); +} + +function resetPage(prefix) { + Promise.all([ + window.navigator.serviceWorker.getRegistrations() + .then(registrations => + Promise.all(registrations.map(registration => + registration.unregister() + )) + ), + window.caches.keys().then(cacheNames => + Promise.all( + cacheNames.map(cacheName => + window.caches.delete(cacheName) + ) + ) + ), + deleteDB() + ]) + .then(arg => { + console.log(prefix); + if(prefix) { + return deleteDB(prefix); + } + return arg; + }) + .catch(err => console.error(err)); + cy.visit('http://localhost:8080/binsa/'); + cy.get('.home').should('exist'); + cy.get('#navMenu > div.navbar-end > div.navbar-item.signOut').click({force: true}); +} + +describe('General', () => { + it('correct title', () => { + cy.visit('http://localhost:8080/binsa/') + cy.title().should('equal', pkg.title); + }); +}); + +describe('Login', () => { + before(() => resetPage()); + + // clearing service worker + describe('display', () => { + it('login modal', () => { + cy.get('.login.modal.is-active').within(() => { + cy.get('.modal-background'); + cy.get('.animation-content').within(() => { + cy.get('header').within(() => { + cy.get('.modal-card-title').should('contain', i18n.en.login.title); + cy.get('.dropdown > .dropdown-trigger > i.fa-globe'); + }); + cy.get('.modal-card-body').within(() => { + cy.get('.field input').not('[disabled]').should('have.length', 2); + cy.get('.checkbox input').should('have.length', 1); + }); + cy.get('footer button').should('have.length', 2); + }); + }) + }); + }); + + describe('functionality', () => { + + describe('remember', () => { + it('should disable credentials', () => { + cy.get('.login.modal.is-active .animation-content').within(() => { + cy.get('.modal-card-body .checkbox input').check(); + cy.get('.modal-card-body .field input').should('be.disabled'); + cy.get('footer button.is-primary').should('be.disabled'); + }); + }); + it('should enable credentials again', () => { + cy.get('.login.modal.is-active .animation-content').within(() => { + cy.get('.modal-card-body .checkbox input').uncheck(); + cy.get('.modal-card-body .field input').should('not.be.disabled'); + cy.get('footer button.is-primary').should('not.be.disabled'); + }); + }); + }); + + describe('i18n', () => { + before(() => resetPage()); + + it('globe should change language', () => { + cy.get('.login.modal.is-active .animation-content header').within(() => { + cy.get('.dropdown').as('dropdown').within(() => { + cy.get('.dropdown-trigger > i.fa-globe').click(); + cy.get('@dropdown'); + cy.should('have.class', 'is-active'); + cy.get('.background'); + cy.get('.dropdown-menu .dropdown-item').contains('de').click({force: true}); + }); + cy.get('.modal-card-title').should('contain', i18n.de.login.title); + }); + }); + + it('and have persisted it', () => { + cy.get('.login.modal.is-active .animation-content header .modal-card-title').should('contain', i18n.de.login.title); + }); + }); + + describe('general logins', () => { + before(() => resetPage()); + + it('should be possible to continue anonymously', () => { + cy.get('.login.modal.is-active .animation-content footer button.is-warning').click() + cy.get('.home').should('exist'); + }); + + it('should be possible to log out again', () => { + cy.get('#navMenu > div.navbar-end > div.navbar-item.signOut').click({force: true}); + cy.get('.login.modal'); + }); + }); + + describe('named account', () => { + before(() => resetPage("mickey-")); + + it('should be possible to create a new account', () => { + cy.get('.login.modal.is-active .animation-content').within(() => { + cy.get('.modal-card-body').within(() => { + cy.get('.field:nth-child(1) .input').type("mickey"); + cy.get('.field:nth-child(2) .input').type("house"); + }); + cy.get('footer button.is-primary').click(); + }); + cy.get('.home').should('exist'); + }); + }); + }); +}); diff --git a/clients/binsa/tests/support/commands.js b/clients/binsa/tests/support/commands.js new file mode 100644 index 0000000..c1f5a77 --- /dev/null +++ b/clients/binsa/tests/support/commands.js @@ -0,0 +1,25 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add("login", (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This is will overwrite an existing command -- +// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/clients/binsa/tests/support/index.js b/clients/binsa/tests/support/index.js new file mode 100644 index 0000000..d68db96 --- /dev/null +++ b/clients/binsa/tests/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/images/collaborators.png b/images/collaborators.png deleted file mode 100644 index c984d3de22e63d29a777e7f3ac3aee6b1f9dd7a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24022 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 diff --git a/images/logo.png b/images/logo.png deleted file mode 100644 index b46b8c6f155fc05c813cab06bf74353976e93d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6737 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 diff --git a/images/messagePayload.png b/images/messagePayload.png deleted file mode 100644 index 5a064eb76867675efaafa3c2f938cad89b3ac5fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44289 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 beBeLxr{Yb<_Vd Date: Wed, 17 Jan 2018 18:44:50 +0100 Subject: [PATCH 13/66] fix(build): directly generate after install Signed-off-by: Axel Meinhardt --- clients/binsa/README.md | 2 +- website/package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/clients/binsa/README.md b/clients/binsa/README.md index 4bc8c71..0e291c5 100644 --- a/clients/binsa/README.md +++ b/clients/binsa/README.md @@ -39,7 +39,7 @@ Current compilation targets include: * Edge 15+ * Safari 11+ -The targeted browser can be adjusted .babelrc (presets/targets/browsers) with [browserlist|https://github.com/ai/browserslist] queries. +The targeted browser can be adjusted .babelrc (presets/targets/browsers) with [browserlist](https://github.com/ai/browserslist) queries. ## Set serverside CORS headers diff --git a/website/package.json b/website/package.json index 6833150..d6f569c 100644 --- a/website/package.json +++ b/website/package.json @@ -7,6 +7,7 @@ "scripts": { "dev": "nuxt", "build": "nuxt build", + "postinstall": "npm run generate", "start": "nuxt start", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", From e1766ce281244383d58a20d7380799f4a18ce050 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Thu, 18 Jan 2018 11:37:18 +0100 Subject: [PATCH 14/66] refact(lint): linted and added google analytics Signed-off-by: Axel Meinhardt --- website/components/blogArchives.vue | 2 +- website/components/navbar.vue | 2 - website/components/recentPosts.vue | 2 +- website/components/schemaDetail.vue | 148 +++++++------ website/components/schemaLink.vue | 4 +- website/components/schemaToc.vue | 9 +- website/layouts/default.vue | 5 +- website/layouts/sidebar.vue | 2 +- website/modules/postsIdxPlugin.js | 125 ++++++----- website/nuxt.config.js | 30 +-- website/package-lock.json | 3 +- website/pages/article.vue | 12 +- website/pages/blog.vue | 23 +- website/pages/faq.vue | 34 ++- website/pages/proposal.vue | 2 +- website/pages/specification.vue | 2 +- .../pages/specification/machine-message.vue | 93 ++++---- .../specification/measurement-message.vue | 113 +++++----- .../pages/specification/process-message.vue | 208 +++++++++--------- website/plugins/ga.js | 16 ++ 20 files changed, 425 insertions(+), 410 deletions(-) create mode 100644 website/plugins/ga.js diff --git a/website/components/blogArchives.vue b/website/components/blogArchives.vue index bc54ee4..0d925c7 100644 --- a/website/components/blogArchives.vue +++ b/website/components/blogArchives.vue @@ -32,7 +32,7 @@ export default { }).format(v); } } -} +}; diff --git a/website/layouts/sidebar.vue b/website/layouts/sidebar.vue index 47e5963..26896e7 100644 --- a/website/layouts/sidebar.vue +++ b/website/layouts/sidebar.vue @@ -63,7 +63,7 @@ export default { components: { navbar, recentPosts, blogArchives } -} +}; - - diff --git a/website/pages/proposal.vue b/website/pages/proposal.vue index aa3befa..561f16c 100644 --- a/website/pages/proposal.vue +++ b/website/pages/proposal.vue @@ -84,5 +84,5 @@ diff --git a/website/pages/specification.vue b/website/pages/specification.vue index 73157a3..b621b51 100644 --- a/website/pages/specification.vue +++ b/website/pages/specification.vue @@ -50,7 +50,7 @@ export default { asyncData({ isStatic }) { return { isStatic }; } -} +}; diff --git a/website/pages/article.vue b/website/pages/article.vue index 441a4b6..7aa3d33 100644 --- a/website/pages/article.vue +++ b/website/pages/article.vue @@ -38,9 +38,10 @@ const locale = process.browser ? ((navigator.languages && navigator.languages[0] export default { layout: 'sidebar', - async asyncData({ params, payload }) { + async asyncData({ params, payload, isServer}) { + console.log("isServer: ",isServer); return { - post: payload || (params.name && (await axios.get(`/unide/files/posts/${params.name}.json`)).data) || {} + post: payload || (params.name && (await axios.get(`${isServer ? 'http://localhost:3000/' : '/'}unide/files/posts/${params.name}.json`)).data) || {} }; }, filters: { diff --git a/website/pages/blog.vue b/website/pages/blog.vue index 2f081f6..7c42a71 100644 --- a/website/pages/blog.vue +++ b/website/pages/blog.vue @@ -28,7 +28,7 @@ const locale = process.browser ? ((navigator.languages && navigator.languages[0] export default { layout: 'sidebar', - async asyncData({ params = {}, query, payload }) { + async asyncData({ params = {}, query, payload, isServer }) { let path = '', list = null; if(params.year) { @@ -41,7 +41,7 @@ export default { } } if(path.length) { - list = payload || (await axios.get(`/unide/files/posts/${path}.json`)).data; + list = payload || (await axios.get(`${isServer ? 'http://localhost:3000/' : '/'}unide/files/posts/${path}.json`)).data; } else { list = await import('posts/recent.json'); } @@ -94,6 +94,9 @@ export default { li { margin-bottom: 2em; } + a { + text-decoration: none; + } } diff --git a/website/pages/faq.vue b/website/pages/faq.vue index 4d386d9..5ea7386 100644 --- a/website/pages/faq.vue +++ b/website/pages/faq.vue @@ -37,13 +37,13 @@ export default { answer: "JSON is a good fit regarding understandability and size. Having a structured and comprehensible basis is the first step for acceptance in the industry. In the spirit of Donald E. Knuth (\"premature optimization is the root of all evil\"), further compacting is possible in a later stage." }, { question: 'Why are time and measurement points separated in multiple arrays?', - answer: "We have discussed multiple options for series: having an array of
tupels ([[0, 23.34],[...],...]),
plain objects ([{time: 0, temperature: 23.34}, {...}...]),
objects with time as key ({ \"0\": [23.34,...],...}) and other.
When parsing, we had to recognize, that unsigned long int for time and floating point measurements are of different types. Also, all former variants are more verbose due to additional brackets, commas or quotation marks. We believe that the current version is a good compromise between readability and structure." + answer: "We have discussed multiple options for series: having an array of
tupels ([[0, 23.34],[...],...]),
plain objects ([{time: 0, temperature: 23.34}, {...}...]),
objects with time as key ({ \"0\": [23.34,...],...}) and other.
When parsing, we had to recognize, that unsigned long int for time and floating point measurements are of different types. Also, all former variants are more verbose due to additional brackets, commas or quotation marks. We believe that the current version is a good compromise between readability and structure." }, { question: "I'm interested in Unide/PPMP. How can I contribute?", answer: "The first goal of Unide is to provide sample client/server implementations of PPMP. Secondly, we're looking forward to improving PPMP in future versions together with the eclipse community.
If you want to contribute with source code, use cases or implementing it in your devices, let us know and discuss in the unide forum or by forking / filing an issue on github." }, { question: 'Why have you included content-spec uri, if that can also be expressed in the a REST url already?', - answer: 'content-spec is included in the payload, because PPMP does not rely on a specific transport protocol (like REST).' + answer: 'content-spec is included in the payload, because PPMP does not rely on a specific transport protocol (like REST).' }] }), components: { diff --git a/website/pages/specification.vue b/website/pages/specification.vue index b621b51..d291bd9 100644 --- a/website/pages/specification.vue +++ b/website/pages/specification.vue @@ -90,14 +90,6 @@ export default { } } } - .property { - ul { - list-style-type: disc; - padding-left: 1em; - margin-left: 0; - margin-top: 0; - } - } #messageDetail.columns { margin-top: 3em; border-bottom: 2px solid $primary; @@ -107,7 +99,6 @@ export default { font-size: 1.2rem; color: $bosch-darkgray; display: block; - padding: 1rem 0.5rem; text-decoration: none; &:hover { color: $bosch-lima; From fcc176d5748a408db623e2aed228514c59c43d21 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Sun, 28 Jan 2018 14:45:16 +0100 Subject: [PATCH 16/66] feat(ppmp sample config): added button to create sample config Signed-off-by: Axel Meinhardt --- clients/binsa/package.json | 2 +- clients/binsa/src/i18n/de.json | 1 + clients/binsa/src/i18n/en.json | 1 + clients/binsa/src/i18n/es.json | 1 + .../binsa/src/pages/configuration/ppmp.vue | 17 +------ clients/binsa/src/pages/ppmp/index.vue | 44 ++++++++++++++++++- 6 files changed, 49 insertions(+), 17 deletions(-) diff --git a/clients/binsa/package.json b/clients/binsa/package.json index fd95bb1..8df2f1c 100644 --- a/clients/binsa/package.json +++ b/clients/binsa/package.json @@ -1,7 +1,7 @@ { "name": "binsa", "title": "Eclipse Unide Sensor Simulator App", - "version": "2.0.3", + "version": "2.0.4", "description": "Eclipse Unide Sensor Simulator Application", "main": "index.html", "dependencies": { diff --git a/clients/binsa/src/i18n/de.json b/clients/binsa/src/i18n/de.json index 8d1b540..9e23d05 100644 --- a/clients/binsa/src/i18n/de.json +++ b/clients/binsa/src/i18n/de.json @@ -50,6 +50,7 @@ "config": "Konfiguration", "device": "Geräte Id", "operationalStatus": "Betriebszustand", + "initSample": "Beispielkonfiguration anlegen", "measurements": { "title": "Messwerte", "sensor": "Sensor", diff --git a/clients/binsa/src/i18n/en.json b/clients/binsa/src/i18n/en.json index 54b6259..e5e97a9 100644 --- a/clients/binsa/src/i18n/en.json +++ b/clients/binsa/src/i18n/en.json @@ -50,6 +50,7 @@ "config": "Configuration", "device": "Device Id", "operationalStatus": "Op. Status", + "initSample": "Create sample config", "measurements": { "title": "Measurements", "sensor": "Sensor", diff --git a/clients/binsa/src/i18n/es.json b/clients/binsa/src/i18n/es.json index 59890d2..7f18b24 100644 --- a/clients/binsa/src/i18n/es.json +++ b/clients/binsa/src/i18n/es.json @@ -50,6 +50,7 @@ "config": "Configuracion", "device": "Id del Equipo", "operationalStatus": "Funcionamiento", + "initSample": "Crear configuración de muestra", "measurements": { "title": "Valores de medición", "sensor": "Sensor", diff --git a/clients/binsa/src/pages/configuration/ppmp.vue b/clients/binsa/src/pages/configuration/ppmp.vue index 5022b99..979b310 100644 --- a/clients/binsa/src/pages/configuration/ppmp.vue +++ b/clients/binsa/src/pages/configuration/ppmp.vue @@ -19,7 +19,7 @@
- +

{{ errors.first('url') }}

@@ -99,7 +99,6 @@ import cloneDeep from 'lodash/cloneDeep'; import isEqual from 'lodash/isEqual'; import defaults from 'lodash/defaults'; import { Sketch } from 'vue-color'; -import url from 'components/url'; import card from 'components/collapsibleCard'; import messageForm from 'components/messageForm'; @@ -154,22 +153,11 @@ export default { l[idx] = message; return l; }, {}); - if(clone.url) { - try { - clone.url = (new URL(clone.url)).origin; - } catch(err) {} - } return clone; }, cleanValue(value) { - let url = value.url; - try { - new URL(url); - url += this.path; - } catch(err) {} return Object.assign({}, value, { - messages: Object.values(value.messages), - url + messages: Object.values(value.messages) }); } }, @@ -213,7 +201,6 @@ export default { } }, components: { - url, card, messageForm, colorPicker: Sketch diff --git a/clients/binsa/src/pages/ppmp/index.vue b/clients/binsa/src/pages/ppmp/index.vue index c3f2fab..651242a 100644 --- a/clients/binsa/src/pages/ppmp/index.vue +++ b/clients/binsa/src/pages/ppmp/index.vue @@ -15,12 +15,13 @@
- + + {{ $t('ppmp.initSample') }}

{{ $t('ppmp.connectionError') }}

@@ -116,6 +117,47 @@ export default { }, mapState('configuration', ['configuration'])), methods: { + async initSample() { + const id = (Math.max(0, Object.keys(this.configuration || {}).map(i => +i).filter(i => !isNaN(i))) + 1).toString(), + config = { + _id: id, + type: "ppmp", + name: "Eclipse Server", + url: "https://unide.eclipse.org/rest", + messages: [{ + code: "ok", + title: "OK", + description: "everything ok", + hint: "no action necessary", + type: "DEVICE", + severity: "LOW", + color: "#78BE20" + },{ + code: "nok", + title: "Not OK", + description: "Something went wrong", + hint: "take action immediately", + type: "DEVICE", + severity: "HIGH", + color: "#E20015" + },{ + code: "supempt", + title: "Supermarket empty", + description: "please refill raw material", + hint: "inform material handler", + type: "TECHNICAL_INFO", + severity: "MEDIUM", + color: "#A00266" + }] + }; + try { + let remoteConf = await this.$store.dispatch('configuration/saveConfiguration', config); + this.configId = remoteConf._id; + } catch(e) { + console.error(e); + } + }, + syncRoute() { // routing not in sync, data is master if(this.configId && this.deviceId) { From 5e8e6770e6531c9d33314522363cb51667b5c50a Mon Sep 17 00:00:00 2001 From: Fethuallah Misir Date: Wed, 31 Jan 2018 10:33:03 +0100 Subject: [PATCH 17/66] Add server and ppmp schema projects Signed-off-by: Fethuallah Misir --- ppmp/ppmp-schema/.gitignore | 1 + ppmp/ppmp-schema/pom.xml | 13 + .../iot/unide/ppmp/v2/measurement_schema.json | 172 ++++++ .../iot/unide/ppmp/v2/message_schema.json | 110 ++++ .../iot/unide/ppmp/v2/process_schema.json | 376 ++++++++++++ servers/README.md | 20 +- servers/pom.xml | 16 +- servers/rest/README.adoc | 1 + servers/rest/WebContent/META-INF/MANIFEST.MF | 3 - servers/rest/WebContent/WEB-INF/web.xml | 11 - servers/rest/WebContent/index.html | 10 - .../grafana/grafana_influxdb_dashboard.json | 554 +++++++++++++++++ .../postman/unide.postman_collection.json | 223 +++++++ .../postman/unide.postman_environment.json | 22 + servers/rest/pom.xml | 461 +++++++------- .../diagramms/ppmp_message_proccessing.puml | 31 + .../src/main/docs/asciidoc/documentation.adoc | 566 ++++++++++++++++++ .../main/java/server/DependencyProvider.java | 65 ++ .../src/main/java/server/MainVerticle.java | 79 +++ .../java/server/endpoints/RestEndpoints.java | 268 --------- .../receivers/IMachineMessageReceiver.java | 15 - .../IMeasurementMessageReceiver.java | 15 - .../receivers/IProcessMessageReceiver.java | 15 - .../receivers/ReceiverController.java | 93 --- .../main/java/server/json/ExceptionJson.java | 60 -- .../java/server/json/ExceptionMapper.java | 62 -- .../src/main/java/server/json/Validator.java | 173 ------ .../persistency/dao/MachineMessageDAO.java | 168 ------ .../persistency/dao/MeasurementDAO.java | 184 ------ .../server/persistency/dao/ProcessDAO.java | 386 ------------ .../persistency/db/ConnectionFactory.java | 210 ------- .../src/main/java/server/ppmp/PpmpEvent.java | 36 ++ .../main/java/server/ppmp/PpmpEventCodec.java | 64 ++ .../java/server/ppmp/PpmpSpecDictionary.java | 80 +++ .../src/main/java/server/ppmp/PpmpType.java | 23 + .../main/java/server/ppmp/PpmpValidator.java | 112 ++++ .../server/receiver/PpmpEventReceiver.java | 60 ++ .../main/java/server/receiver/Receiver.java | 27 + .../server/receiver/ReceiverException.java | 14 + .../java/server/receiver/ReceiverFactory.java | 39 ++ .../server/receiver/ReceiverVerticle.java | 53 ++ .../influxdb/AbstractInfluxDbConsumer.java | 51 ++ .../receiver/influxdb/InfluxDbProperties.java | 27 + .../receiver/influxdb/InfluxDbReceiver.java | 96 +++ .../influxdb/MachineMessageConsumer.java | 93 +++ .../influxdb/MeasurementConsumer.java | 63 ++ .../receiver/influxdb/ProcessConsumer.java | 69 +++ .../postgres/AbstractPostgresConsumer.java | 37 ++ .../postgres/JdbcExecutorService.java | 88 +++ .../postgres/MachineMessageConsumer.java | 65 ++ .../postgres/MeasurementConsumer.java | 60 ++ .../receiver/postgres/PostgresDbReceiver.java | 57 ++ .../receiver/postgres/ProcessConsumer.java | 62 ++ .../java/server/receiver/util/PpmpHelper.java | 93 +++ .../src/main/java/server/web/Addresses.java | 15 + .../main/java/server/web/RestVerticle.java | 166 +++++ .../src/main/resources/application_conf.json | 22 +- .../rest/src/main/resources/config.properties | 17 - .../rest/src/main/resources/log4j.properties | 32 +- .../main/resources/measurement_schema_v2.json | 99 --- .../src/main/resources/message_schema_v2.json | 79 --- .../main/resources/process_message_v2.json | 207 ------- .../receiver/postgres/db.changelog-master.xml | 80 +++ .../src/test/java/server/PpmpSimulator.java | 93 +++ .../test/java/server/RestEndpointTests.java | 165 ----- .../java/server/jdbc/JdbcMockFactory.java | 212 +++++++ .../java/server/jdbc/JdbcMockFactoryTest.java | 48 ++ .../src/test/java/server/web/FileUtils.java | 21 + .../server/web/RestEndpointInfluxTest.java | 177 ++++++ .../server/web/RestEndpointPostgresTest.java | 195 ++++++ .../web/RestEndpointValidationTest.java | 85 +++ .../rest/src/test/resources/log4j.properties | 21 + .../messages/machine_message_invalid.json} | 18 +- .../messages/machine_message_valid.json | 25 + .../messages/measurement_message_invalid.json | 97 +++ .../messages/measurement_message_valid.json | 67 +++ .../messages/process_message_invalid.json | 21 + .../messages/process_message_valid.json | 37 ++ 78 files changed, 5245 insertions(+), 2506 deletions(-) create mode 100644 ppmp/ppmp-schema/.gitignore create mode 100644 ppmp/ppmp-schema/pom.xml create mode 100644 ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/measurement_schema.json create mode 100644 ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/message_schema.json create mode 100644 ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/process_schema.json create mode 100644 servers/rest/README.adoc delete mode 100644 servers/rest/WebContent/META-INF/MANIFEST.MF delete mode 100644 servers/rest/WebContent/WEB-INF/web.xml delete mode 100644 servers/rest/WebContent/index.html create mode 100644 servers/rest/assets/grafana/grafana_influxdb_dashboard.json create mode 100644 servers/rest/assets/postman/unide.postman_collection.json create mode 100644 servers/rest/assets/postman/unide.postman_environment.json create mode 100644 servers/rest/src/main/docs/asciidoc/diagramms/ppmp_message_proccessing.puml create mode 100644 servers/rest/src/main/docs/asciidoc/documentation.adoc create mode 100644 servers/rest/src/main/java/server/DependencyProvider.java create mode 100644 servers/rest/src/main/java/server/MainVerticle.java delete mode 100644 servers/rest/src/main/java/server/endpoints/RestEndpoints.java delete mode 100644 servers/rest/src/main/java/server/endpoints/receivers/IMachineMessageReceiver.java delete mode 100644 servers/rest/src/main/java/server/endpoints/receivers/IMeasurementMessageReceiver.java delete mode 100644 servers/rest/src/main/java/server/endpoints/receivers/IProcessMessageReceiver.java delete mode 100644 servers/rest/src/main/java/server/endpoints/receivers/ReceiverController.java delete mode 100644 servers/rest/src/main/java/server/json/ExceptionJson.java delete mode 100644 servers/rest/src/main/java/server/json/ExceptionMapper.java delete mode 100644 servers/rest/src/main/java/server/json/Validator.java delete mode 100644 servers/rest/src/main/java/server/persistency/dao/MachineMessageDAO.java delete mode 100644 servers/rest/src/main/java/server/persistency/dao/MeasurementDAO.java delete mode 100644 servers/rest/src/main/java/server/persistency/dao/ProcessDAO.java delete mode 100644 servers/rest/src/main/java/server/persistency/db/ConnectionFactory.java create mode 100644 servers/rest/src/main/java/server/ppmp/PpmpEvent.java create mode 100644 servers/rest/src/main/java/server/ppmp/PpmpEventCodec.java create mode 100644 servers/rest/src/main/java/server/ppmp/PpmpSpecDictionary.java create mode 100644 servers/rest/src/main/java/server/ppmp/PpmpType.java create mode 100644 servers/rest/src/main/java/server/ppmp/PpmpValidator.java create mode 100644 servers/rest/src/main/java/server/receiver/PpmpEventReceiver.java create mode 100644 servers/rest/src/main/java/server/receiver/Receiver.java create mode 100644 servers/rest/src/main/java/server/receiver/ReceiverException.java create mode 100644 servers/rest/src/main/java/server/receiver/ReceiverFactory.java create mode 100644 servers/rest/src/main/java/server/receiver/ReceiverVerticle.java create mode 100644 servers/rest/src/main/java/server/receiver/influxdb/AbstractInfluxDbConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/influxdb/InfluxDbProperties.java create mode 100644 servers/rest/src/main/java/server/receiver/influxdb/InfluxDbReceiver.java create mode 100644 servers/rest/src/main/java/server/receiver/influxdb/MachineMessageConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/influxdb/MeasurementConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/influxdb/ProcessConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/postgres/AbstractPostgresConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/postgres/JdbcExecutorService.java create mode 100644 servers/rest/src/main/java/server/receiver/postgres/MachineMessageConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/postgres/MeasurementConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/postgres/PostgresDbReceiver.java create mode 100644 servers/rest/src/main/java/server/receiver/postgres/ProcessConsumer.java create mode 100644 servers/rest/src/main/java/server/receiver/util/PpmpHelper.java create mode 100644 servers/rest/src/main/java/server/web/Addresses.java create mode 100644 servers/rest/src/main/java/server/web/RestVerticle.java delete mode 100644 servers/rest/src/main/resources/config.properties delete mode 100644 servers/rest/src/main/resources/measurement_schema_v2.json delete mode 100644 servers/rest/src/main/resources/message_schema_v2.json delete mode 100644 servers/rest/src/main/resources/process_message_v2.json create mode 100644 servers/rest/src/main/resources/server/receiver/postgres/db.changelog-master.xml create mode 100644 servers/rest/src/test/java/server/PpmpSimulator.java delete mode 100644 servers/rest/src/test/java/server/RestEndpointTests.java create mode 100644 servers/rest/src/test/java/server/jdbc/JdbcMockFactory.java create mode 100644 servers/rest/src/test/java/server/jdbc/JdbcMockFactoryTest.java create mode 100644 servers/rest/src/test/java/server/web/FileUtils.java create mode 100644 servers/rest/src/test/java/server/web/RestEndpointInfluxTest.java create mode 100644 servers/rest/src/test/java/server/web/RestEndpointPostgresTest.java create mode 100644 servers/rest/src/test/java/server/web/RestEndpointValidationTest.java create mode 100644 servers/rest/src/test/resources/log4j.properties rename servers/rest/src/test/resources/{test_message.json => server/messages/machine_message_invalid.json} (61%) create mode 100644 servers/rest/src/test/resources/server/messages/machine_message_valid.json create mode 100644 servers/rest/src/test/resources/server/messages/measurement_message_invalid.json create mode 100644 servers/rest/src/test/resources/server/messages/measurement_message_valid.json create mode 100644 servers/rest/src/test/resources/server/messages/process_message_invalid.json create mode 100644 servers/rest/src/test/resources/server/messages/process_message_valid.json diff --git a/ppmp/ppmp-schema/.gitignore b/ppmp/ppmp-schema/.gitignore new file mode 100644 index 0000000..24d6437 --- /dev/null +++ b/ppmp/ppmp-schema/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/ppmp/ppmp-schema/pom.xml b/ppmp/ppmp-schema/pom.xml new file mode 100644 index 0000000..40b1f61 --- /dev/null +++ b/ppmp/ppmp-schema/pom.xml @@ -0,0 +1,13 @@ + + + + 4.0.0 + + org.eclipse.iot.unide.ppmp + ppmp-schema + 2.0.0-SNAPSHOT + + \ No newline at end of file diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/measurement_schema.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/measurement_schema.json new file mode 100644 index 0000000..cc9c10d --- /dev/null +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/measurement_schema.json @@ -0,0 +1,172 @@ +{ + "type": "object", + "properties": { + "content-spec": { + "type": "string", + "default": "urn:spec://bosch.com/ppm/measurement-message#v2", + "description": "Defines what the format version is" + }, + "device": { + "type": "object", + "description": "Contains information about the device", + "properties": { + "deviceID": { + "type": "string", + "description": "The unique ID of the device. As this is used to identify a device independently from time or location the ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "operationalStatus": { + "type": "string", + "description": "The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager" + } + }, + "additionalProperties": false, + "required": [ + "deviceID" + ] + }, + "part": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "partID": { + "type": "string", + "description": "Identifies a part. This ID comes from a 3rd party system and thus we have no guarantees if this is unique or not.", + "maxLength": 256 + }, + "partTypeID": { + "type": "string", + "description": "Identifies a part type", + "maxLength": 256 + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + } + }, + "additionalProperties": false, + "required": [] + }, + "measurements": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "limits": { + "type": "object", + "description": "Provides information about limits for data provided in the series element.", + "patternProperties": { + "^[^$].+": { + "type": "object", + "description": "The key shall be the name of a measurement point (element of series element). The value is a structure of different upper/lower limits.", + "properties": { + "lowerError": { + "type": "number", + "description": "Indicates an error if this limit is underrun" + }, + "lowerWarn": { + "type": "number", + "description": "Indicates a warning if this limit is underrun" + }, + "target": { + "type": "number", + "description": "Indicates the intented target value of the measurement" + }, + "upperError": { + "type": "number", + "description": "Indicates an error if this limit is exceeded" + }, + "upperWarn": { + "type": "number", + "description": "Indicates a warning if this limit is exceeded" + } + } + } + }, + "additionalProperties": false, + "required": [] + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "series": { + "type": "object", + "description": "The series data collected for the measurements. Every entry matches a Measurement Point of the Device Type. In the case of a time series, one column contains the time offsets.", + "properties": { + "$_time": { + "type": "array", + "description": "The time offset in milliseconds (positive values in ascending order starting with 0) to the 'ts' field of the measurement", + "items": { + "type": "integer" + } + } + }, + "patternProperties": { + "^[^$].+": { + "type": "array", + "items": { + "type": "number" + } + } + }, + "required": [ + "$_time" + ], + "minProperties": 2, + "additionalProperties": false + }, + "ts": { + "format": "date-time", + "type": "string", + "description": "Start time of the the data measurment in ISO 8601 format" + } + }, + "required": [ + "ts", + "series" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "content-spec", + "device", + "measurements" + ] +} diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/message_schema.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/message_schema.json new file mode 100644 index 0000000..cc00387 --- /dev/null +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/message_schema.json @@ -0,0 +1,110 @@ +{ + "type": "object", + "properties": { + "content-spec": { + "type": "string", + "default": "urn:spec://bosch.com/ppm/measurement-message#v2", + "description": "Defines what the format version is" + }, + "device": { + "type": "object", + "description": "Contains information about the device", + "properties": { + "deviceID": { + "type": "string", + "description": "The unique ID of the device. As this is used to identify a device independently from time or location the ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "operationalStatus": { + "type": "string", + "description": "The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager" + } + }, + "additionalProperties": false, + "required": [ + "deviceID" + ] + }, + "messages": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "description": "Collection of messages", + "properties": { + "code": { + "type": "string", + "description": "Code identifying the problem described in the message. The value often stems from the machine e.g. a PLC code. Is similar to code in measurement interface.", + "maxLength": 36 + }, + "description": { + "type": "string", + "description": "The description is used to describe the purpose of the message, e.g. the problem", + "maxLength": 2000 + }, + "hint": { + "type": "string", + "description": "In case a problem is reported, the hint can be used to point out a possible solution", + "maxLength": 2000 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "origin": { + "type": "string", + "description": "The origin of the message if not the device identified by deviceID in the header element. Could be used to identify a subsystem or a particular sensor/part of the device where the message actually relates to." + }, + "severity": { + "type": "string", + "description": "Severity of the message", + "enum": [ + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN" + ], + "default": "UNKNOWN" + }, + "title": { + "type": "string", + "description": "Title of the message. If title not set the code will be stored as fallback", + "maxLength": 1000 + }, + "ts": { + "format": "date-time", + "type": "string", + "description": "Start time of the the data measurment in ISO 8601 format" + }, + "type": { + "type": "string", + "description": "The type of message. Default is DEVICE but can be set to TECHNICAL_INFO indicating a problem with the integration of the actual device. Allowed values: DEVICE, TECHNICAL_INFO", + "enum": [ + "DEVICE", + "TECHNICAL_INFO" + ], + "default": "DEVICE" + } + }, + "required": [ + "ts", + "code" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "content-spec", + "device", + "messages" + ] +} diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/process_schema.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/process_schema.json new file mode 100644 index 0000000..ccbe323 --- /dev/null +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v2/process_schema.json @@ -0,0 +1,376 @@ +{ + "definitions": { + "device": { + "type": "object", + "description": "Contains information about the device", + "properties": { + "deviceID": { + "type": "string", + "description": "The unique ID of the device. As this is used to identify a device independently from time or location the ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "operationalStatus": { + "type": "string", + "description": "The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager" + } + }, + "additionalProperties": false, + "required": [ + "deviceID" + ] + }, + "limit": { + "description": "Provides information about limits for data provided in the series element. The limits is an JSON object where the key is the name of a Measurement Point (see also series element) and the value is a structure of upper/lower limits", + "type": "object", + "patternProperties": { + "^[^$].+": { + "oneOf": [{ + "type": "object", + "description": "A constant limit for all corresponding measurements", + "properties": { + "lowerError": { + "description": "Indicates an error if this limit is underrun", + "type": "number" + }, + "lowerWarn": { + "description": "Indicates a warning if this limit is underrun", + "type": "number" + }, + "target": { + "description": "Indicates the intented target value of the measurement", + "type": "number" + }, + "upperError": { + "description": "Indicates an error if this limit is exceeded", + "type": "number" + }, + "upperWarn": { + "description": "Indicates a warning if this limit is exceeded", + "type": "number" + } + }, + "additionalProperties": false + }, { + "type": "object", + "description": "An array of limit values. The items of the array correspond to the respective measurements at the same position.", + "properties": { + "lowerError": { + "description": "Indicates an error if these limits is underrun. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "lowerWarn": { + "description": "Indicates a warning if these limits is underrun. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "target": { + "description": "Indicates the intented target values. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "upperError": { + "description": "Indicates an error if these limits is exceeded. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "upperWarn": { + "description": "Indicates a warning if these limits is exceeded. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + } + }, + "additionalProperties": false + }] + } + } + } + }, + "type": "object", + "properties": { + "content-spec": { + "type": "string", + "default": "urn:spec://bosch.com/ppm/process-message#v2", + "description": "Defines what the format version is" + }, + "device": { "$ref": "#/definitions/device" }, + "part": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "partID": { + "type": "string", + "description": "Identifies a part. This ID comes from a 3rd party system and thus we have no guarantees if this is unique or not.", + "maxLength": 256 + }, + "partTypeID": { + "type": "string", + "description": "Identifies a part type", + "maxLength": 256 + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "type": { + "type": "string", + "enum": [ + "SINGLE", + "BATCH" + ], + "description": "Describes the type of the part. Type SINGLE means a single item is processed. Type BATCH means multiple items of the same type are processed.", + "default": "SINGLE" + } + }, + "required": [], + "additionalProperties": false + }, + "process": { + "type": "object", + "description": "Contains information about the process. If the process JSON object is set, then all information in measurements are process phases", + "properties": { + "externalProcessId": { + "type": "string", + "description": "The process Id identifies the process as part of long living process. The process Id can be used to connect multiple processes in a manufacturing chain. The Id has to be set and tracked by the different devices in the chain.", + "maxLength": 36 + }, + "metaData": { + "type": "object", + "properties": {}, + "additionalProperties": true, + "description": "Additional key-value pairs in a JSON structure format. Key and value must be strings" + }, + "program": { + "type": "object", + "description": "Contains information about the program that was used in the process.", + "properties": { + "id": { + "type": "string", + "description": "The ID of the program", + "maxLength": 36 + }, + "lastChangedDate": { + "type": "string", + "format": "date-time", + "description": "The date when the program was last changed" + }, + "name": { + "type": "string", + "description": "The name of the program", + "maxLength": 256 + } + }, + "additionalProperties": false, + "required": [ + "id" + ] + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "shutoffPhase": { + "type": "string", + "description": "The ID of the phase that led to stop the process. The shutOffPhase is the phase of the process in which either pre-defined parameters are met to successfully finish the process or an error that stopped the process. That is not necessarily the last phase. The shutOffPhase should be sent when the last process phase is sent." + }, + "shutoffValues": { + "type": "object", + "description": "The shutoff values contain the values of the process that stopped the process. The shutoffValues is a JSON object where the key is the name of a Measurement Point (see also series element) and the value is a structure of different upper/lower limits and the actual value as described below.", + "patternProperties": { + "^[^$].+": { + "type": "object", + "properties": { + "lowerError": { + "type": "number", + "description": "Indicates an error if this limit is underrun" + }, + "lowerWarn": { + "type": "number", + "description": "Indicates a warning if this limit is underrun" + }, + "target": { + "type": "number", + "description": "Indicates the intented target value of the measurement" + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Time of the measured value" + }, + "upperWarn": { + "type": "number", + "description": "Indicates a warning if this limit is exceeded" + }, + "upperError": { + "type": "number", + "description": "Indicates an error if this limit is exceeded" + }, + "value": { + "type": "number", + "description": "The final value of the process" + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + } + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Start time of the process" + } + }, + "additionalProperties": false, + "required": [ + "ts" + ] + }, + "measurements": { + "type": "array", + "items": { + "type": "object", + "description": "Contains the different phases of the process. Each phase represents an execution step in the process and contains information about that specific execution step. All phases should be sorted by the timestamp of the phase.", + "properties": { + "code": { + "type": "string", + "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", + "maxLength": 36 + }, + "limits": { + "$ref": "#/definitions/limit" + }, + "name": { + "type": "string", + "description": "The name of the process phase", + "maxLength": 256 + }, + "phase": { + "type": "string", + "description": "The id of the process phase", + "maxLength": 256 + }, + "result": { + "type": "string", + "enum": [ + "OK", + "NOK", + "UNKNOWN" + ], + "description": "Information if the result was ok or not. This is only required if part information should be saved.", + "default": "UNKNOWN" + }, + "specialValues": { + "type": "array", + "items": { + "type": "object", + "description": "Provides information about special or interesting values during the process phase.", + "properties": { + "$_time": { + "type": "integer", + "description": "The time offset in milliseconds to the 'ts' field of the measurement" + }, + "name": { + "type": "string", + "description": "indicates the type of the specialValue (e.g. 'endanzug', 'turningPoint' etc.)" + }, + "value": { + "type": "object", + "description": "Contains the actual (multidimensional) value of interest. Similarly to series, every entry matches a Measurement Point of the device", + "patternProperties": { + "^[^$].+": { + "type": "number" + } + }, + "minProperties": 1 + } + }, + "additionalProperties": false, + "required": [ + "value" + ] + } + }, + "series": { + "type": "object", + "description": "The series data collected for the measurements. Every entry matches a Measurement Point of the device. In the case of a time series, one column contains the time offset in milliseconds (positive values in ascending order starting with 0). In this case the value is the keyword $_time. The maximum size for the measurement value is 10 positions before the decimal point. The decimal places are truncated to 2 in the historical data.", + "properties": { + "$_time": { + "type": "array", + "description": "The time offset in milliseconds (positive values in ascending order starting with 0) to the 'ts' field of the measurement", + "items": { + "type": "integer" + } + } + }, + "patternProperties": { + "^[^$].+": { + "type": "array", + "items": { + "type": "number" + } + } + }, + "additionalProperties": false + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Start time of the the data measurment in ISO 8601 format" + } + }, + "additionalProperties": false, + "required": [ + "ts", + "series" + ] + } + } + }, + "required": [ + "content-spec", + "device", + "process", + "measurements" + ] +} diff --git a/servers/README.md b/servers/README.md index c4e7bf4..c83013f 100644 --- a/servers/README.md +++ b/servers/README.md @@ -1,17 +1,3 @@ -# Unide Server - -The server helps to implement PPMP to your system by providing endpoints for validating and storing PPMP-messages to an influxDB. Using these stored data, you can visualize measurements and process messages of your system. - -# Getting started - -## Installation - -Run `mvn clean install` - -## Configuring - -Open `src\main\application_conf.json` and set database- and http-settings - -## Running - -run `java -jar ppmp-server-0.0.1-fat.jar -conf application_conf.json` \ No newline at end of file +Parent for PPMP Protocol compatible servers. + +See server README for purpose and setup instructions. diff --git a/servers/pom.xml b/servers/pom.xml index abc456d..c4e6604 100644 --- a/servers/pom.xml +++ b/servers/pom.xml @@ -1,11 +1,11 @@ @@ -15,12 +15,12 @@ unide-servers This projects provides several server implementations for different protocols. - org.eclipse.iot.unide.ppmp - unide-parent - 0.2.0-SNAPSHOT - ../ + org.eclipse.iot.unide.ppmp + unide-parent + 0.2.0-SNAPSHOT + ../ - rest + rest - + \ No newline at end of file diff --git a/servers/rest/README.adoc b/servers/rest/README.adoc new file mode 100644 index 0000000..9450711 --- /dev/null +++ b/servers/rest/README.adoc @@ -0,0 +1 @@ +include::./src/main/docs/asciidoc/documentation.adoc[] diff --git a/servers/rest/WebContent/META-INF/MANIFEST.MF b/servers/rest/WebContent/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e..0000000 --- a/servers/rest/WebContent/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/servers/rest/WebContent/WEB-INF/web.xml b/servers/rest/WebContent/WEB-INF/web.xml deleted file mode 100644 index e27df2a..0000000 --- a/servers/rest/WebContent/WEB-INF/web.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - rest - - index.html - - - - \ No newline at end of file diff --git a/servers/rest/WebContent/index.html b/servers/rest/WebContent/index.html deleted file mode 100644 index 768d228..0000000 --- a/servers/rest/WebContent/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -Unide REST-Server - - -This is your text! - - \ No newline at end of file diff --git a/servers/rest/assets/grafana/grafana_influxdb_dashboard.json b/servers/rest/assets/grafana/grafana_influxdb_dashboard.json new file mode 100644 index 0000000..3c0cfdb --- /dev/null +++ b/servers/rest/assets/grafana/grafana_influxdb_dashboard.json @@ -0,0 +1,554 @@ +{ + "__inputs": [ + { + "name": "DS_PPMP_MEASUREMENTS", + "label": "PPMP_MEASUREMENTS", + "description": "", + "type": "datasource", + "pluginId": "influxdb", + "pluginName": "InfluxDB" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "4.6.2" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "influxdb", + "name": "InfluxDB", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": null, + "links": [], + "refresh": "5s", + "rows": [ + { + "collapse": false, + "height": 258, + "panels": [ + { + "columns": [], + "datasource": "${DS_PPMP_MEASUREMENTS}", + "fontSize": "100%", + "id": 1, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "span": 12, + "styles": [ + { + "alias": "Time", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT * FROM \"ppmp_measurements\" WHERE \"deviceId\"='33a58b-8350-4592-23121-755194497d' AND \"measurementPoint\"='temprature'", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "title": "Panel Title", + "transform": "timeseries_to_columns", + "type": "table" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 212, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PPMP_MEASUREMENTS}", + "fill": 1, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT * FROM \"ppmp_measurements\" WHERE \"deviceId\"='33a58b-8350-4592-23121-755194497d' AND \"measurementPoint\"='temprature'", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Tempreature", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 229, + "panels": [ + { + "columns": [], + "datasource": "${DS_PPMP_MEASUREMENTS}", + "fontSize": "100%", + "id": 6, + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": 0, + "desc": true + }, + "span": 12, + "styles": [ + { + "alias": "Time", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT * FROM \"ppmp_measurements\" WHERE \"deviceId\"='33a58b-8350-4592-23121-755194497d' AND \"measurementPoint\"='pressure'", + "rawQuery": true, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "title": "Panel Title", + "transform": "timeseries_to_columns", + "type": "table" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": 250, + "panels": [ + { + "aliasColors": { + "ppmp_measurements": "#c15c17", + "ppmp_measurements.pressure": "#890f02" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PPMP_MEASUREMENTS}", + "fill": 0, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "hide": false, + "measurement": "ppmp_measurements", + "orderByTime": "ASC", + "policy": "autogen", + "query": "SELECT mean(\"value\") FROM \"ppmp_measurements\" WHERE (\"measurementPoint\" = 'temperature') AND $timeFilter GROUP BY time($__interval) fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [ + "tempreature" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "measurementPoint", + "operator": "=", + "value": "temprature" + } + ] + }, + { + "dsType": "influxdb", + "groupBy": [], + "hide": false, + "measurement": "ppmp_measurements", + "orderByTime": "ASC", + "policy": "autogen", + "query": "SELECT mean(\"value\") FROM \"ppmp_measurements\" WHERE (\"measurementPoint\" = 'temperature') AND $timeFilter GROUP BY time($__interval) fill(null)", + "rawQuery": false, + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [ + "pressure" + ], + "type": "alias" + } + ] + ], + "tags": [ + { + "key": "measurementPoint", + "operator": "=", + "value": "pressure" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Tempreature & Pressure", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transparent": false, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": null, + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "PPMP_MEASURMENT_DASHBOARD", + "version": 20 +} \ No newline at end of file diff --git a/servers/rest/assets/postman/unide.postman_collection.json b/servers/rest/assets/postman/unide.postman_collection.json new file mode 100644 index 0000000..5d652a1 --- /dev/null +++ b/servers/rest/assets/postman/unide.postman_collection.json @@ -0,0 +1,223 @@ +{ + "info": { + "name": "Unide", + "_postman_id": "868488cf-584c-47e6-d3a3-93be2d8376d0", + "description": "", + "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" + }, + "item": [ + { + "name": "InfluxDB", + "description": "", + "item": [ + { + "name": "Ping", + "request": { + "method": "GET", + "header": [], + "body": {}, + "url": "{{influxurl}}/ping", + "description": "" + }, + "response": [] + }, + { + "name": "Show Databases", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/x-www-form-urlencoded" + } + ], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "q", + "value": "SHOW DATABASES", + "description": "", + "type": "text" + } + ] + }, + "url": { + "raw": "http://localhost:8086/query?q=\"SHOW DATABASES\"", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8086", + "path": [ + "query" + ], + "query": [ + { + "key": "q", + "value": "\"SHOW DATABASES\"", + "equals": true + } + ] + }, + "description": "" + }, + "response": [] + }, + { + "name": "Messages DB: Select from Messages", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/x-www-form-urlencoded" + } + ], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "q", + "value": "SELECT * FROM \"ppmp_message\"", + "description": "", + "type": "text" + }, + { + "key": "db", + "value": "Messages", + "description": "", + "type": "text" + } + ] + }, + "url": "http://localhost:8086/query", + "description": "" + }, + "response": [] + }, + { + "name": "Messages DB: Select from Measurements", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/x-www-form-urlencoded" + } + ], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "q", + "value": "SELECT * FROM \"ppmp_measurements\" WHERE \"deviceId\"='33a58b-8350-4592-23121-755194497d'", + "description": "", + "type": "text" + }, + { + "key": "db", + "value": "Measurements", + "description": "", + "type": "text" + } + ] + }, + "url": "http://localhost:8086/query", + "description": "" + }, + "response": [] + }, + { + "name": "Messages DB: Select from Processes", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/x-www-form-urlencoded" + } + ], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "q", + "value": "SELECT * FROM \"ppmp_processes\"", + "description": "", + "type": "text" + }, + { + "key": "db", + "value": "Processes", + "description": "", + "type": "text" + } + ] + }, + "url": "http://localhost:8086/query", + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Send Machine message", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\t\"content-spec\": \"urn:spec://eclipse.org/unide/machine-message#v2\",\r\n\t\"device\": \r\n\t{\r\n\t\t\"deviceID\": \"2ca5158b-8350-4592-23121-755194497d\"\r\n\t},\r\n\t\"messages\": \r\n\t[\r\n\t\t{\r\n\t\t\t\"origin\": \"sensor-id-992.2393.22\",\r\n\t\t\t\"ts\": \"2002-05-30T09:30:10.123+02:00\",\r\n\t\t\t\"type\": \"DEVICE\",\r\n\t\t\t\"severity\": \"LOW\",\r\n\t\t\t\"code\": \"190ABT\",\r\n\t\t\t\"title\": \"control board damaged\",\r\n\t\t\t\"description\": \"Electronic control board or its electrical connections are damaged\",\r\n\t\t\t\"hint\": \"Check the control board\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"origin\": \"sensor-id-992.2393.22\",\r\n\t\t\t\"ts\": \"2002-05-30T09:30:10.123+02:00\",\r\n\t\t\t\"type\": \"DEVICE\",\r\n\t\t\t\"severity\": \"HIGH\",\r\n\t\t\t\"code\": \"190ABA\",\r\n\t\t\t\"title\": \"control board damaged\",\r\n\t\t\t\"description\": \"Electronic control damage\",\r\n\t\t\t\"hint\": \"Check the control board\"\r\n\t\t}\r\n\t]\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n" + }, + "url": "{{url}}/rest/v2/", + "description": "" + }, + "response": [] + }, + { + "name": "Send Measurement message", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\t\"content-spec\": \"urn:spec://eclipse.org/unide/measurement-message#v2\",\r\n\t\"device\": \r\n\t{\r\n\t\t\"deviceID\": \"a4927dad-58d4-4580-b460-79cefd56775b\"\r\n\t},\r\n\t\"measurements\": \r\n\t[\r\n\t\t{\r\n\t\t\t\"ts\": \"2002-05-30T09:30:10.123+02:00\",\r\n\t\t\t\"result\": \"NOK\",\r\n\t\t\t\"code\": \"0000 EE01\",\r\n\t\t\t\"series\": \r\n\t\t\t{\r\n\t\t\t\t\"$_time\": \r\n\t\t\t\t[\r\n\t\t\t\t\t0,\r\n\t\t\t\t\t23,\r\n\t\t\t\t\t24\r\n\t\t\t\t],\r\n\t\t\t\t\"temperature\": \r\n\t\t\t\t[\r\n\t\t\t\t\t45.4243,\r\n\t\t\t\t\t461.42342,\r\n\t\t\t\t\t44.2432\r\n\t\t\t\t],\r\n\t\t\t\t\"pressure\": \r\n\t\t\t\t[\r\n\t\t\t\t\t25.4243,\r\n\t\t\t\t\t26.42342,\r\n\t\t\t\t\t24.2432\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t}\r\n\t]\r\n}\r\n\r\n\r\n\r\n" + }, + "url": "{{url}}/rest/v2/", + "description": "" + }, + "response": [] + }, + { + "name": "Send Process message", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"content-spec\" : \"urn:spec://eclipse.org/unide/process-message#v2\",\r\n \"device\" : {\r\n \"deviceID\" : \"a4927dad-58d4-4580-b460-79cefd56775b\",\r\n \"operationalStatus\" : \"normal\",\r\n \"metaData\" : {\r\n \"swVersion\" : \"2.0.3.13\",\r\n \"swBuildId\" : \"41535\" \r\n }\r\n },\r\n \"part\" : {\r\n \"type\" : \"SINGLE\",\r\n \"partTypeID\" : \"F00VH07328\",\r\n \"partID\" : \"420003844\",\r\n \"result\" : \"NOK\",\r\n \"code\" : \"HUH289\",\r\n \"metaData\" : {\r\n \"toolId\" : \"32324-432143\"\r\n }\r\n },\r\n \"process\" : {\r\n \"externalProcessId\" : \"b4927dad-58d4-4580-b460-79cefd56775b\",\r\n \"ts\" : \"2002-05-30T09:30:10.123+02:00\",\r\n \"result\" : \"NOK\",\r\n \"shutoffPhase\" : \"phase 1\",\r\n \"program\" : {\r\n \"id\" : \"1\",\r\n \"name\" : \"Programm 1\",\r\n \"lastChangedDate\" : \"2002-05-30T09:30:10.123+02:00\"\r\n },\r\n \"shutoffValues\" : {\r\n \"force\" : {\r\n \"ts\" : \"2002-05-30T09:30:11.123+02:00\",\r\n \"value\" : 24,\r\n \"upperError\" : 26,\r\n \"lowerError\" : 22\r\n },\r\n \"pressure\" : { \r\n \"value\" : 50,\r\n \"upperError\" : 52,\r\n \"lowerError\" : 48\r\n }\r\n },\r\n \"metaData\" : {\r\n \"name\" : \"Getriebedeckel verschrauben\"\r\n }\r\n },\r\n \"measurements\" : [\r\n {\r\n \"ts\" : \"2002-05-30T09:30:10.123+02:00\",\r\n \"phase\" : \"phasen name 2\",\r\n \"name\" : \"500 Grad links drehen\",\r\n \"result\" : \"NOK\",\r\n \"code\" : \"0000 EE01\",\r\n \"limits\" : {\r\n \"temperature\" : {\r\n \"upperError\" : 4444,\r\n \"lowerError\" : 44,\r\n \"upperWarn\" : 2222,\r\n \"lowerWarn\" : 46\r\n }\r\n },\r\n \"series\" : {\r\n \"time\" : [0, 23, 24],\r\n \"force\" : [26, 23, 24],\r\n \"pressure\" : [52.4, 46.32, 44.2432],\r\n \"temperature\" : [45.4243, 46.42342, 44.2432] \r\n }\r\n }\r\n ]\r\n}" + }, + "url": "{{url}}/rest/v2/", + "description": "" + }, + "response": [] + } + ] +} \ No newline at end of file diff --git a/servers/rest/assets/postman/unide.postman_environment.json b/servers/rest/assets/postman/unide.postman_environment.json new file mode 100644 index 0000000..445fbe6 --- /dev/null +++ b/servers/rest/assets/postman/unide.postman_environment.json @@ -0,0 +1,22 @@ +{ + "id": "e50cdb37-0599-3b44-7626-199a7461c9b1", + "name": "Unide DEV", + "values": [ + { + "enabled": true, + "key": "url", + "value": "http://localhost:8090", + "type": "text" + }, + { + "enabled": true, + "key": "influxurl", + "value": "http://localhost:8086", + "type": "text" + } + ], + "timestamp": 1513678751733, + "_postman_variable_scope": "environment", + "_postman_exported_at": "2018-01-05T13:50:26.508Z", + "_postman_exported_using": "Postman/5.5.0" +} \ No newline at end of file diff --git a/servers/rest/pom.xml b/servers/rest/pom.xml index 807401b..0d2a7db 100644 --- a/servers/rest/pom.xml +++ b/servers/rest/pom.xml @@ -1,209 +1,270 @@ - - - 4.0.0 - ppmp-server - jar + Contributors: + Bosch Software Innovations GmbH - initial API and implementation and initial documentation + --> + 4.0.0 + ppmp-server + jar - - - Eclipse Public License - Version 1.0 - http://www.eclipse.org/org/documents/epl-v10.php - - + + unide-servers + org.eclipse.iot.unide.ppmp + 0.2.0-SNAPSHOT + ../ + - unide-server + + + Eclipse Public License - Version 1.0 + http://www.eclipse.org/org/documents/epl-v10.php + + - - - repo.eclipse.org - Unide Repository - Releases - https://repo.eclipse.org/content/repositories/unide-releases/ - - - repo.eclipse.org - Unide Repository - Snapshots - https://repo.eclipse.org/content/repositories/unide-snapshots/ - - + + UTF-8 + ${project.build.directory}/classes/webroot + 3.5.0 + 23.5-jre + 2.7 + 0.1.7 + 2.8.6 + 0.2.0-SNAPSHOT + 2.0.0-SNAPSHOT + 1.2.17 + 3.5.3 + 42.1.4 + - - - org.influxdb - influxdb-java - 2.5 - - - com.networknt - json-schema-validator - 0.1.7 - - - com.fasterxml.jackson.core - jackson-core - 2.8.6 - - - com.fasterxml.jackson.core - jackson-databind - 2.8.6 - - - org.eclipse.iot.unide.ppmp - ppmp-java-binding - 0.2.0-SNAPSHOT - - - log4j - log4j - 1.2.17 - - - io.vertx - vertx-web - 3.4.1 - - - com.googlecode.json-simple - json-simple - 1.1.1 - - - io.vertx - vertx-unit - 3.4.1 - test - - - commons-io - commons-io - 2.5 - test - - - junit - junit - 4.12 - test - - + unide-server - - - - eclipse_jar_signing - - false - - enableEclipseJarSigner - - - - - eclipse-repo - Eclipse CBI Repository - - true - - - false - - https://repo.eclipse.org/content/repositories/cbi-releases/ - - - - - - org.eclipse.cbi.maven.plugins - eclipse-jarsigner-plugin - 1.1.4 - - true - - - - sign-jars - verify - - sign - - - - - - - - + + + com.google.guava + guava + ${guava.version} + + + org.influxdb + influxdb-java + ${influxdb.version} + + + com.networknt + json-schema-validator + ${jsonvaldiator.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + org.eclipse.iot.unide.ppmp + ppmp-java-binding + ${ppmpjavabinding.version} + + + org.eclipse.iot.unide.ppmp + ppmp-schema + ${ppmpschema.version} + + + log4j + log4j + ${log4j.version} + + + io.vertx + vertx-web + ${vertx.version} + + + org.liquibase + liquibase-core + ${liquibase.version} + + + org.postgresql + postgresql + ${postgres.version} + + + + io.vertx + vertx-unit + ${vertx.version} + test + + + commons-io + commons-io + 2.5 + test + + + junit + junit + 4.12 + test + + + com.github.tomakehurst + wiremock + 2.11.0 + test + + + com.jayway.restassured + rest-assured + 2.9.0 + test + + + com.mockrunner + mockrunner-jdbc + 1.1.2 + test + + + org.mockito + mockito-core + 2.13.0 + test + + - - - - src/main/resources - - **/*.json - **/*.properties - - - - src/test/resources - - **/*.json - - - - - - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - package - - shade - - - - - - io.vertx.core.Starter - server.endpoints.RestEndpoints - - - - META-INF/services/io.vertx.core.spi.VerticleFactory - - - - ${project.build.directory}/${project.artifactId}-${project.version}-fat.jar - - - - - - + + + + src/main/resources + + **/*.json + **/*.properties + **/*.xml + + + + src/test/resources + + **/*.json + + + + true + ${project.basedir}/src/main/resources + ${project.build.directory} + + application_conf.json + + + + + + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.0 + + + package + + shade + + + + + + io.vertx.core.Launcher + server.MainVerticle + + + + META-INF/services/io.vertx.core.spi.VerticleFactory + + + + ${project.build.directory}/${project.artifactId}-${project.version}-fat.jar + + + + + + + org.asciidoctor + asciidoctor-maven-plugin + 1.5.6 + + + org.asciidoctor + asciidoctorj-diagram + 1.5.4.1 + + + org.asciidoctor + asciidoctorj-pdf + 1.5.0-alpha.16 + + + + src/main/docs/asciidoc + html5 + + asciidoctor-diagram + + + + + output-html + generate-resources + + process-asciidoc + + + ${project.build.directory}/generated-docs/images + true + ${webroot} + + + + generate-pdf-doc + generate-resources + + process-asciidoc + + + pdf + ${project.build.directory}/generated-docs/images + true + ${webroot} + + + + + + - - unide-servers - org.eclipse.iot.unide.ppmp - 0.2.0-SNAPSHOT - ../ - - + + \ No newline at end of file diff --git a/servers/rest/src/main/docs/asciidoc/diagramms/ppmp_message_proccessing.puml b/servers/rest/src/main/docs/asciidoc/diagramms/ppmp_message_proccessing.puml new file mode 100644 index 0000000..280cbd3 --- /dev/null +++ b/servers/rest/src/main/docs/asciidoc/diagramms/ppmp_message_proccessing.puml @@ -0,0 +1,31 @@ +@startuml +skinparam classFontColor red +skinparam classFontSize 10 +skinparam classFontName Aapex + +participant "Client" as Client +participant "RestVerticle" as RestVerticle +participant "PpmpValidator" as PpmpValidator +participant "EventBus" as EventBus +participant "ReceiverVerticle" as ReceiverVerticle +participant "Receiver" as Receiver +participant "Database" as Database + +Client -> RestVerticle : POST: /rest/v2/ +RestVerticle -> PpmpValidator: ppmp json +note left: if vallidation error then throw Exception + +RestVerticle <- PpmpValidator : PpmpEvent +RestVerticle -> EventBus :PpmpEvent + +EventBus -> ReceiverVerticle : PpmpEvent +ReceiverVerticle -> Receiver : PpmpEvent +Receiver -> Database : write/... +Receiver <- Database : success / failed +ReceiverVerticle <- Receiver : success / failed +EventBus <- ReceiverVerticle : success / failed +RestVerticle <- EventBus : success / failed + +Client <- RestVerticle : success / failed + +@enduml \ No newline at end of file diff --git a/servers/rest/src/main/docs/asciidoc/documentation.adoc b/servers/rest/src/main/docs/asciidoc/documentation.adoc new file mode 100644 index 0000000..3563280 --- /dev/null +++ b/servers/rest/src/main/docs/asciidoc/documentation.adoc @@ -0,0 +1,566 @@ += Documentation +:description: Documentation for the Unide REST Server +:library: Asciidoctor +:cip: Unide +:api: API Specification +ifdef::asciidoctor[] +:source-highlighter: highlight.js +endif::asciidoctor[] +:idprefix: +:toc: macro +:data-uri: +:icons: font +:nofooter: +:docinfo1: + + +[[purpose]] +.Purpose +**** +The REST server is part of the Eclipse Unide project. Its main purpose is to showcase how PPMP messages can be validated against +the schemas defined in the PPMP protocol and processed. The REST server provides an example use case, where PPMP protocol messages are persisted +to an InfluxDB. Using a monitoring tool like Grafana the persisted data can be visualized afterwards. + +This document guides you through the architecture and the persistency functionality of the REST server. +**** + +== Getting started + +=== Installation + +[IMPORTANT] +==== +Two dependencies of the REST server are currently not available through a public maven repository. +Therefore, these dependencies have to be installed manually. Making these dependencies available is work in progress, +the described steps will no longer be required in future. + +The dependencies to build are: + +..... +/bindings/ppmp-java-binding +/ppmp/ppmp-schema +..... +==== + +=== Building and Running the Server + +To build the REST server run: + +[source,bash] +mvn clean install + +After configuring the server as described below you can run it using + +[source,bash] +run ./target/java -jar ppmp-server--fat.jar -conf ./target/application_conf.json + +=== Configuration + +After building the project a configuration file is created in `./target/application.json`. +Open this file and set `database-` and `http-` settings according to your needs. + +The file contains the following properties which should be overridden with the corresponding properties of +your environment. + +[source,json] +{ + "http.port": 8090, + "persistence.enable" : true, + "persistence.system" : "postgresDb", + "influxDb.url": "http://localhost:8086", + "influxDb.user": "root", + "influxDb.password": "root", + "postgresDb.url" : "jdbc:postgresql://localhost:5432/unide_ppmp", + "postgresDb.user" : "postgres", + "postgresDb.password" : "password" +} + +The following table contains detailed information about the properties. + +|=== +|Property | Required | Default | Description + +| http.port +| Yes +| - +| The HTTP port on which the server will run. + +| persistence.enable +| No +| `true` +| Enables persistence. If this property is set to `false`, only the validation endpoint can be used. + +| persistence.system +| No +| influxDb +| The name of the database in which PPMP message type messages should be persisted. + +| influxDb.url +| Yes +| - +| The connection URL of the InfluxDB instance. + +| influxDb.user +| Yes +| - +| The username for InfluxDB. + +| influxDb.password +| Yes +| - +| The password for InfluxDB. + +| postgresDb.url +| Yes +| - +| The connection URL of the PostgresDB instance. + +| postgresDb.user +| Yes +| - +| The username for PostgresDB. + +| postgresDb.password +| Yes +| - +| The password for PostgresDB. +|=== + + +== Service Overview + + +=== REST Endpoints + +The server provides the following endpoints: + +|=== +|Route | Method | Description + +| `/rest/v2` +| `POST` +| Validate and save a PPMP protocol message of any type + +| `/rest/v2/validate` +| `POST` +| Validate a PPMP protocol message of any type + +| `/rest/v2/message` +| `POST` +| Validate and save a PPMP protocol message of type message + +| `/rest/v2/measurement` +| `POST` +| Validate and save a PPMP protocol message of type measurement + +| `/rest/v2/process` +| `POST` +| Validate and save a PPMP protocol message of type process + +|=== + +=== Components + +The REST server is made up from these components: + +.Components + +|=== +|Component | Description + +|`RestVerticle` +|Provides the REST endpoints for any interaction with the REST server + +|`PpmpValidator` +|Validates JSON payloads against the PPMP protocol schema + +|Vert.x `EventBus` +|The communication system to allow message passing between verticles. + +|`ReceiverVerticle` +|Consumes events from the eventbus and delegates them to concrete receivers. + +|`InfluxDbReceiver` +|Transforms PPMP messages to InfluxDB line protocol and sends them to InfluxDB over the REST API + +|`InfluxDB` +|The database used to persist PPMP messages + +|=== + +The interactions between those components are shown in the figure below. + +.Ppmp Message processing +plantuml::./diagramms/ppmp_message_proccessing.puml["ppmp_message_proccessing",png ] + + +== InfluxDB Schema Design + +All PPMP messages are written to the InfluxDB. The schema of the database differs for each message type. +Each message type is persisted in its own database. The databases are created on application startup. +The databases are: + +- Messages +- Measurements +- Processes + +InfluxDB tables are called `Measurement`. The `Measurement` s for the message types are: + +- ppmp_messages +- ppmp_measurements +- ppmp_processes + +The schemas for each message type are described below. + +=== PPMP Message + +This type is written to the `Messages` database. The Measurement name is `ppmp_message`. + +.PPMP Message +|=== +|Attribute | Type | Name + +|`message.ts` +|time +|time + +|`device.DeviceID` +|tag +|deviceId + +|`message.messageCode` +|tag +|code + +|`message.origin` +|field +|origin + +|`message.severity` +|field +|severity + +|`message.title` +|field +|title + +|`message.description` +|field +|description + +|`message.hint` +|field +|hint + +|`message.type` +|field +|type +|=== + +=== PPMP Measurement + +This type is written to the `Measurements` database. The Measurement name is `ppmp_measurements`. + + +.PPMP Measurement Message +|=== +|Attribute | Type | Name + +|`ts + offset in series.*$_time*` +|time +|time + +|`device.DeviceID` +|tag +|deviceId + +|`series.*name_of_array*` +|tag +|measurement.point + +|`measurements.series.*name_of_array*.item` +|field +|value +|=== + +A PPMP Measurement message can contain one or more entries which will be persisted. + +The following example shows a measurement that contains four entries. + +[source,json] +{ + "content-spec": "urn:spec://eclipse.org/unide/measurement-message#v2", + "device": + { + "deviceID": "a4927dad-58d4-4580-b460-79cefd56775b" + }, + "measurements": + [ + { + "ts": "2002-05-30T09:30:10.123+02:00", + "result": "OK", + "series": + { + "$_time": + [ + 0, + 23 + ], + "temperature": + [ + 52.4, + 46.32 + ], + "pressure": + [ + 26, + 20 + ] + } + } + ] +} + + +The resulting entries of this measurement message are: + +|=== +|Time | Tags | Fields + +|2002-05-30T09:30:10.123+02:00 +|deviceId=12341231,measurementPoint=temperature +|value=52.4 + +|2002-05-30T09:30:10.146+02:00 +|deviceId=12341231,measurementPoint=temperature +|value=46.32 + +|2002-05-30T09:30:10.123+02:00 +|deviceId=12341231,measurementPoint=pressure +|value=26 + +|2002-05-30T09:30:10.1**46**+02:00 +|deviceId=12341231,measurementPoint=pressure +|value=20 + +|=== + +Basically the following schema applies: +..... +ts + $_time[i] deviceId=device.deviceId,measurementPoint='value_array_name' value='value_array_name'[i] +..... + + +=== PPMP Proccess + +This type is written to the `Processes` database. The Measurement name is `ppmp_processes`. + +.PPMP Prccess +|=== +|Attribute | Type | Name + +|`process.ts` +|time +|time + +|`device.DeviceID` +|tag +|deviceId + +|`process.programm.name` +|tag +|programmName + +|`process - payload as json` +|field +|payload +|=== + +== PostgresDB Schema Design + +Postgres provides the possibility to store time based data by using the Postgres timescale extension. + +https://www.timescale.com/[Timescale extension] + +The timescale extension is required for the rest server. +The easiest way to setup Postgres with the timescale extension is using docker. + +http://docs.timescale.com/v0.7/getting-started/installation/linux/installation-docker[Timescale - Linux Docker] + +The unide rest-server does only need the connection string to a running database instance. +All tables and timescale specific statements are created or executed on application startup of the rest-server, +when they are not exists. + +All PPMP messages are written to the PostgresDB. +Each message is persisted in its own table. +The tables are: + +- ppmp_messages +- ppmp_measurements +- ppmp_processes + +The schemas for each message type are described below. + +The raw SQL creation statements can be found in `server/receiver/postgres/db.changelog-master.xml` + +=== PPMP Message + +This type is written to the `ppmp_messages` table. + +.PPMP Message +|=== +|Attribute | Type | Name + +|`message.ts` +|timestamp +|time + +|`device.DeviceID` +|text +|deviceid + +|`message.messageCode` +|text +|code + +|`message.origin` +|text +|origin + +|`message.severity` +|text +|severity + +|`message.title` +|text +|title + +|`message.description` +|text +|description + +|`message.hint` +|text +|hint + +|`message.type` +|text +|type +|=== + +=== PPMP Measurement + +This type is written to the `ppmp_measurements` table. + + +.PPMP Measurement Message +|=== +|Attribute | Type | Name + +|`ts + offset in series.*$_time*` +|timestamp +|time + +|`device.DeviceID` +|text +|deviceId + +|`series.*name_of_array*` +|text +|measurement.point + +|`measurements.series.*name_of_array*.item` +|decimal +|value +|=== + +A PPMP Measurement message can contain one or more entries which will be persisted. + +The following example shows a measurement that contains four entries. + +[source,json] +{ + "content-spec": "urn:spec://eclipse.org/unide/measurement-message#v2", + "device": + { + "deviceID": "a4927dad-58d4-4580-b460-79cefd56775b" + }, + "measurements": + [ + { + "ts": "2002-05-30T09:30:10.123+02:00", + "result": "OK", + "series": + { + "$_time": + [ + 0, + 23 + ], + "temperature": + [ + 52.4, + 46.32 + ], + "pressure": + [ + 26, + 20 + ] + } + } + ] +} + + +The resulting entries of this measurement message are: + +|=== +|time | deviceid | measurementpoint | value + +|2002-05-30T09:30:10.123+02:00 +|deviceId=12341231 +|measurementPoint=temperature +|value=52.4 + +|2002-05-30T09:30:10.146+02:00 +|deviceId=12341231 +|measurementPoint=temperature +|value=46.32 + +|2002-05-30T09:30:10.123+02:00 +|deviceId=12341231 +|measurementPoint=pressure +|value=26 + +|2002-05-30T09:30:10.1**46**+02:00 +|deviceId=12341231 +|measurementPoint=pressure +|value=20 + +|=== + +=== PPMP Proccess + +This type is written to the `Processes` database. The Measurement name is `ppmp_processes`. + +.PPMP Prccess +|=== +|Attribute | Type | Name + +|`process.ts` +|timestamp +|time + +|`device.DeviceID` +|test +|deviceId + +|`process.programm.name` +|text +|programmName + +|`process - payload as json` +|json +|payload +|=== diff --git a/servers/rest/src/main/java/server/DependencyProvider.java b/servers/rest/src/main/java/server/DependencyProvider.java new file mode 100644 index 0000000..6ac23ba --- /dev/null +++ b/servers/rest/src/main/java/server/DependencyProvider.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2018 Bosch Software Innovations GmbH. All rights reserved. + */ + +package server; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.function.Supplier; + +import io.vertx.core.json.JsonObject; +import server.receiver.Receiver; +import server.receiver.ReceiverFactory; + +/** + * Provides methods to create needed dependencies. + */ +public class DependencyProvider { + + private JsonObject config; + + public DependencyProvider( JsonObject config ) { + this.config = config; + } + + public Receiver getReceiver() { + return createReceiver( config ); + } + + /** + * Creates a {@link Receiver} based on the property "persistence.system". + * + * If the property is postgres - a postgres receiver will returned. + * Default receiver is the influxDb receiver. + * + * @param config - the config object + * @return a receiver instance + */ + private Receiver createReceiver( JsonObject config ) { + String persistence = config.getString( "persistence.system", "influxdb" ); + if ( persistence.equals( "postgres" ) ) { + return ReceiverFactory.createPostgresReceiver( getConnection() ); + } + return ReceiverFactory.createInfluxBbReceiver( config ); + } + + /** + * Returns a connection supplier. The supplier returns new Connection by every {@link Supplier#get()} + * + * @return Supplier which creates new connection when {@link Supplier#get()} is called. + */ + public Supplier getConnection() { + String user = config.getString( "postgresDb.user" ); + String url = config.getString( "postgresDb.url" ); + String password = config.getString( "postgresDb.password" ); + return () -> { + try { + return DriverManager.getConnection( url, user, password ); + } catch ( SQLException e ) { + throw new RuntimeException( "Failed to get connection", e ); + } + }; + } +} diff --git a/servers/rest/src/main/java/server/MainVerticle.java b/servers/rest/src/main/java/server/MainVerticle.java new file mode 100644 index 0000000..76dc4b2 --- /dev/null +++ b/servers/rest/src/main/java/server/MainVerticle.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2017 Bosch Software Innovations GmbH. All rights reserved. + */ + +package server; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.AsyncResult; +import io.vertx.core.CompositeFuture; +import io.vertx.core.DeploymentOptions; +import io.vertx.core.Future; +import io.vertx.core.Handler; +import server.receiver.Receiver; +import server.receiver.ReceiverFactory; +import server.receiver.ReceiverVerticle; +import server.web.RestVerticle; + +public class MainVerticle extends AbstractVerticle { + + private static final Logger LOG = LoggerFactory.getLogger( MainVerticle.class ); + + private DependencyProvider dependencyProvider; + + public MainVerticle() { + } + + public MainVerticle( DependencyProvider dependencyProvider ) { + this.dependencyProvider = dependencyProvider; + } + + @Override + public void start( Future startFuture ) throws Exception { + if ( dependencyProvider == null ) { + dependencyProvider = new DependencyProvider( config() ); + } + + boolean enablePersistence = config().getBoolean( "enable.persistence", true ); + if ( enablePersistence ) { + CompositeFuture deployFuture = CompositeFuture.all( deployRestVerticle(), deployReceiverVerticle() ); + deployFuture.setHandler( deploymentHandler( startFuture ) ); + } else { + Future future = deployRestVerticle(); + future.setHandler( deploymentHandler( startFuture ) ); + } + } + + private Handler> deploymentHandler( Future startFuture ) { + return handler -> { + if ( handler.failed() ) { + LOG.error( "Failed to start application.", handler.cause() ); + startFuture.fail( handler.cause() ); + } + LOG.info( "Application started successful." ); + startFuture.complete(); + }; + } + + private DeploymentOptions getDeploymentOptions() { + return new DeploymentOptions().setConfig( config() ); + } + + private Future deployRestVerticle() { + Future future = Future.future(); + vertx.deployVerticle( new RestVerticle(), getDeploymentOptions(), future.completer() ); + return future; + } + + private Future deployReceiverVerticle() { + Future future = Future.future(); + Receiver receiver = dependencyProvider.getReceiver(); + vertx.deployVerticle( new ReceiverVerticle( receiver ), + getDeploymentOptions().setWorker( true ), future.completer() ); + return future; + } + +} diff --git a/servers/rest/src/main/java/server/endpoints/RestEndpoints.java b/servers/rest/src/main/java/server/endpoints/RestEndpoints.java deleted file mode 100644 index 45a628e..0000000 --- a/servers/rest/src/main/java/server/endpoints/RestEndpoints.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (c) 2017 Bosch Software Innovations GmbH. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ - -package server.endpoints; - -import java.io.IOException; -import java.util.Base64; - -import javax.xml.bind.ValidationException; - -import org.apache.log4j.Logger; - -import io.vertx.core.AbstractVerticle; -import io.vertx.ext.web.Router; -import io.vertx.ext.web.RoutingContext; -import io.vertx.ext.web.handler.BodyHandler; -import server.endpoints.receivers.ReceiverController; -import server.endpoints.receivers.IMachineMessageReceiver; -import server.endpoints.receivers.IMeasurementMessageReceiver; -import server.endpoints.receivers.IProcessMessageReceiver; -import server.json.ExceptionMapper; -import server.json.Validator; -import server.persistency.db.ConnectionFactory; - -public class RestEndpoints extends AbstractVerticle { - - private Router router; - - /** - * The logger. - */ - private static final Logger LOG = Logger.getLogger( RestEndpoints.class ); - - /** - * Method starts router for all endpoints - * @throws IOException - */ - @Override - public void start() throws IOException { - - try { - - router = Router.router(vertx); - - router.route().handler(BodyHandler.create()); - - router.post("/rest/basicauth/*").handler(this::handleAuthentication); - router.post("/rest/*").handler(this::checkValidation); - - router.post("/rest/v2/message").handler(this::handleMachineMessage); - router.post("/rest/v2/measurement").handler(this::handleMeasurementMessage); - router.post("/rest/v2/process").handler(this::handleProcessMessage); - router.post("/ppm/v2/measurement").handler(this::handleMeasurementMessage); - - router.post("/rest/basicauth/v2/message").handler(this::handleMachineMessage); - router.post("/rest/basicauth/v2/measurement").handler(this::handleMeasurementMessage); - router.post("/rest/basicauth/v2/process").handler(this::handleProcessMessage); - - router.post("/influxdb").handler(this::handleInfluxDbActivation); - - router.get("/*").handler(this::handleGet); - - LOG.debug("Initializing DB-configuration"); - ConnectionFactory.getInstance().setConfiguration(config().getJsonObject("database")); - - vertx.createHttpServer().requestHandler(router::accept).listen(config().getInteger("http.port", 80)); - } catch (IOException e) { - LOG.error(e.getMessage()); - throw e; - } - - - } - - /** - * Method for handling all GET-Requests - * @param routingContext - */ - private void handleGet(RoutingContext routingContext) { - routingContext.response().putHeader("content-type", "text/html").end("

This is the service for validating PPMP-messages

"+ -"

The following endpoints are available

"+ -"

"+ -"

-In the automotive industry, [welding spots](https://en.wikipedia.org/wiki/Spot_welding) are crucial for the quality of a car and the security of the passenger. In modern production lines, hundreds of welding spots have to be precisely set in a single shift. In order to reduce product rework, scrap, destructable tests and machine downtime, the quality should be monitored consistently. That's what special welding controller in machines do. Unfortunately, this data is often only used locally, for a short period of time and in proprietary formats. Just enough to determine the immediate process outcome. In that case, further opportunities of analysing the information are not taken. With the continous increase in complexity, price and time pressure, the demand for further processing and optimization grows. The data could be used to prevent or even predict maintenance or just store the data in long time archives in case of legal disputes. +In the automotive industry, [welding spots](https://en.wikipedia.org/wiki/Spot_welding) are crucial for the quality of a car and the security of the passenger. In modern production lines, hundreds of welding spots have to be precisely set in a single shift. In order to reduce product rework, scrap, destructible tests and machine downtime, the quality should be monitored consistently. That's what special welding controller in machines do. Unfortunately, this data is often only used locally, for a short period of time and in proprietary formats. Just enough to determine the immediate process outcome. In that case, further opportunities of analysing the information are not taken. With the continuous increase in complexity, price and time pressure, the demand for further processing and optimization grows. The data could be used to prevent or even predict maintenance or just store the data in long time archives in case of legal disputes. -One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the [PSI 6000](https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index)) whereas newer generations (like the [PRC 7000](https://www.boschrexroth.com/en/xc/company/press/index2-29696)) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (english, german etc.). +One prerequisite for such connectivity is the hardware and its connectivity. Older generations of welding controllers can only be accessed with proprietary stacks (like the [PSI 6000](https://www.boschrexroth.com/en/xc/products/product-groups/welding-technology/controllers-with-power-section/mf-system-psi6000/index)) whereas newer generations (like the [PRC 7000](https://www.boschrexroth.com/en/xc/company/press/index2-29696)) are much more flexible in terms of networking and communication. In general, there are two aspects that make up the communication: the transport protocol and the structure of the payload. This is similar to our daily life: if you want to chat with your friends, you need to use the same messenger or communication technology (phone, email) and you need speak the same language (English, German etc.). -In the following sections, lets assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to [the unide REST server](https://unide.eclipse.org) for persisting it in a dedicated timeseries database. +In the following sections, let's assume we need to transform the transport protocol as well as the payload. The data is generated by a welding controller and should be passed to [the unide REST server](https://unide.eclipse.org) for persisting it in a dedicated timeseries database. # The Approach -We want to find a way to receive the data, transform it into PPMP and store it to a database with our [REST Server](https://unide.eclipse.org). +We want to find a way to receive the data, transform it into PPMP and store it into a database in our [REST Server](https://unide.eclipse.org). First, we need to understand which interfaces the controller has, which communication protocol is used, and how the payload would be interpreted. In the case of the PSI 6000, it was configured to publish the quality data to a [mqtt](https://de.wikipedia.org/wiki/MQTT) message broker (here: [Eclipse mosquitto](https://mosquitto.org/)). We don't have an extensive documentation of the payload, but we can look at samples of it (some Curve data shortened at the end): ```json @@ -186,7 +186,7 @@ First, we need to understand which interfaces the controller has, which communic } } ``` -That's already very detailed, but it's unclear which device / welding spot the data comes from and what the timimg of the curves was. Let's get some more structure in with PPMP! +That's already very detailed, but it's unclear which device / welding spot the data comes from and what the timing of the curves was. Let's get some more structure in with PPMP! In PPMP, we have the option to differentiate between discrete manufacturing data (MES - part produced) by using the [measurement-message](/unide/specification/measurement-message) and detailed process data by using the [process-message](https://www.eclipse.org/unide/specification/process-message). In the welding payload, that's all combined in one message. So we also want to split this payload into two. @@ -253,7 +253,7 @@ The extra steps here are: 5. transform each PPMP object back to a String ### Create the PSI 6000 Java Object -Luckily, there are helper for transforming json (or xml) to plain old java objects (POJOs). We are using [jsonschema2pojo](http://www.jsonschema2pojo.org/) to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class ``PSI6000DataType`` and organize it in the package ``org.eclipse.iot.unide.integrators``. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all ``Integer`` and ``Object`` types to ``Number`` in the WeldLog.java file. Also in the same file, we would change the type of the ``dateTime`` field from String to ``LocalDateTime`` to be more accurate: +Luckily, there are helpers for transforming json (or xml) to plain old java objects (POJOs). We are using [jsonschema2pojo](http://www.jsonschema2pojo.org/) to convert the above json sample to POJOs with Jackson 2.x annotation. I name the resulting data type class ``PSI6000DataType`` and organize it in the package ``org.eclipse.iot.unide.integrators``. Based on the given testdata, jsonschema2pojo cannot fully deduct all attribute types correctly. In order to allow floating point values, we would rename all ``Integer`` and ``Object`` types to ``Number`` in the WeldLog.java file. Also in the same file, we would change the type of the ``dateTime`` field from String to ``LocalDateTime`` to be more accurate: ```java ... @JsonProperty("dateTime") @@ -262,7 +262,7 @@ Luckily, there are helper for transforming json (or xml) to plain old java objec private LocalDateTime dateTime; ... ``` -For that, we also need to include the respective imports +For that, we also need to include the respective imports: ```java ... import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -309,7 +309,7 @@ For eventually transforming the PPMP objects back to String ("*marshal*"), we ca ``` ### Create the Workflow -In order to better structure dataflow, we use multiple ````-s: one for retrieving the data and two more after the split of the payload. They are connected via the virtual camel protocol "*direct*". In the following Spring XML, you can also find some ```` points and additional steps to set http header (````) for posting to the unide server: +In order to better structure data flow, we use multiple ````-s: one for retrieving the data and two more after the split of the payload. They are connected via the virtual camel protocol "*direct*". In the following Spring XML, you can also find some ```` points and additional steps to set http header (````) for posting to the unide server: ```xml Date: Thu, 15 Feb 2018 12:13:59 +0100 Subject: [PATCH 42/66] fix(blog): minor change Signed-off-by: Axel Meinhardt --- website/blog/grinding-machine-scenario.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/grinding-machine-scenario.md b/website/blog/grinding-machine-scenario.md index ba255c4..da1aa68 100644 --- a/website/blog/grinding-machine-scenario.md +++ b/website/blog/grinding-machine-scenario.md @@ -18,11 +18,11 @@ learn about its components and the communication with each other. In the context of the [Eclipse Production Performance Management Testbed][1], a real world condition monitoring scenario has been recreated, in which a grinding machine is being continuously monitored allowing to have real time -health checks and prevent unexpected failures. Further details +health checks and prevent unexpected failures. This scenario consists of the following building blocks: device, gateway, -backend. The communication between them happens seamlessly thanks to the PPMP -protocol. +backend. The communication between them happens seamlessly thanks to the +Production Performance management Protocol (PPMP). - The device, i.e. the grinding machine, has been retrofitted with an acceleration sensor attached to one of its critical components. The data @@ -35,7 +35,7 @@ protocol. the statistical values and the condition are routed to the backend, again in the form of a PPMP Measurement Message. -- The backend, usually in the cloud, is any component that "speaks unide" and +- The backend, usually in the cloud, is any component that "speaks PPMP" and performs meaningful operations on the incoming messages. Most frequently it is responsible for storing the arriving data and making it available to apps that want to consume it. Common responsibilities of these apps are the From be901263d95bb82a75f0f4fa73de1d123f78d907 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Thu, 1 Mar 2018 09:45:26 +0100 Subject: [PATCH 43/66] fix(diagram): process diagram special values Signed-off-by: Axel Meinhardt --- website/.gitignore | 3 +++ website/static/images/processPayload.svg | 4 ++-- website/static/images/processPayload.uml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/website/.gitignore b/website/.gitignore index 0d90cec..4d40280 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -11,3 +11,6 @@ npm-debug.log dist plantuml.jar + +# https://git.eclipse.org/r/www.eclipse.org/unide +unide diff --git a/website/static/images/processPayload.svg b/website/static/images/processPayload.svg index 20bd0f2..014ef38 100644 --- a/website/static/images/processPayload.svg +++ b/website/static/images/processPayload.svg @@ -1,4 +1,4 @@ -ProcessPayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : Map<String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : Resulttype[0..1] : PartTypeProcessexternalProcessId[0..1] : StringmetaData[0..1] : Map<String, String>result[0..1] : ResultshutoffPhase[0..1] : StringshutoffValue[0..*] : Map<String, ShutoffValue>ts[1] : DateMeasurementcode[0..1] : Stringlimits[0..1] : Map<String, Limits>name[0..1] : Stringphase[0..1] ; Stringresult[0..1] : Resultts[1] : DateProgramid[1] : StringlastChangeDate[0..1] : Stringname[0..1] : StringShutoffValuelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : Floatts[0..1] : DateupperError[0..1] : FloatupperWarn[0..1] : Floatvalue[1] : FloatSeries$_time[0..1] : List<Integer><values>[0..*] : List<Float>LimitsLimitsSinglelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : FloatupperWarn[0..1] : FloatLimitsListlowerError[0..1] : List<Float>lowerWarn[0..1] : List<Float>target[0..1] : List<Float>upperError[0..1] : List<Float>upperWarn[0..1] : List<Float>SpecialValue$_time[0..1] : Integername[0..1] : Stringvalue[1] : FloatPartTypeSINGLEBATCHResultOKNOKUNKNOWNdevice11part10..1process11measurements11..*program10..110..*series1110..1specialValues10..1ProcessPayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : Map<String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : Resulttype[0..1] : PartTypeProcessexternalProcessId[0..1] : StringmetaData[0..1] : Map<String, String>result[0..1] : ResultshutoffPhase[0..1] : StringshutoffValue[0..*] : Map<String, ShutoffValue>ts[1] : DateMeasurementcode[0..1] : Stringlimits[0..1] : Map<String, Limits>name[0..1] : Stringphase[0..1] ; Stringresult[0..1] : Resultts[1] : DateProgramid[1] : StringlastChangeDate[0..1] : Stringname[0..1] : StringShutoffValuelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : Floatts[0..1] : DateupperError[0..1] : FloatupperWarn[0..1] : Floatvalue[1] : FloatSeries$_time[0..1] : List<Integer><values>[0..*] : List<Float>LimitsLimitsSinglelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : FloatupperWarn[0..1] : FloatLimitsListlowerError[0..1] : List<Float>lowerWarn[0..1] : List<Float>target[0..1] : List<Float>upperError[0..1] : List<Float>upperWarn[0..1] : List<Float>SpecialValue$_time[0..1] : Integername[0..1] : Stringvalue[1] : Map<String, Float>PartTypeSINGLEBATCHResultOKNOKUNKNOWNdevice11part10..1process11measurements11..*program10..110..*series1110..1specialValues10..1 org.eclipse.iot.unide.ppmp ppmp-schema - 2.0.0-SNAPSHOT + 2.0.0 diff --git a/servers/pom.xml b/servers/pom.xml index c4e6604..60e6ab3 100644 --- a/servers/pom.xml +++ b/servers/pom.xml @@ -1,6 +1,6 @@ diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/MainVerticle.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/MainVerticle.java index 0ce962d..6e5be57 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/MainVerticle.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/MainVerticle.java @@ -5,7 +5,6 @@ package org.eclipse.iot.unide.server; import org.eclipse.iot.unide.server.receiver.Receiver; -import org.eclipse.iot.unide.server.receiver.ReceiverFactory; import org.eclipse.iot.unide.server.receiver.ReceiverVerticle; import org.eclipse.iot.unide.server.web.RestVerticle; import org.slf4j.Logger; diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/ppmp/PpmpSpecDictionary.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/ppmp/PpmpSpecDictionary.java index 1dd874b..012603f 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/ppmp/PpmpSpecDictionary.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/ppmp/PpmpSpecDictionary.java @@ -4,7 +4,6 @@ package org.eclipse.iot.unide.server.ppmp; -import java.util.Collection; import java.util.HashMap; import java.util.Map; diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/ReceiverFactory.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/ReceiverFactory.java index b552dae..6da0e9c 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/ReceiverFactory.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/ReceiverFactory.java @@ -4,8 +4,6 @@ package org.eclipse.iot.unide.server.receiver; -import java.util.function.Supplier; - import javax.sql.DataSource; import org.eclipse.iot.unide.server.receiver.influxdb.InfluxDbReceiver; diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/AbstractInfluxDbConsumer.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/AbstractInfluxDbConsumer.java index 0bfeaa2..1e88f9d 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/AbstractInfluxDbConsumer.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/AbstractInfluxDbConsumer.java @@ -6,7 +6,6 @@ import java.util.function.Consumer; -import org.eclipse.iot.unide.ppmp.messages.MessagesWrapper; import org.influxdb.InfluxDB; /** diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/MeasurementConsumer.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/MeasurementConsumer.java index 49d68c4..23f0985 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/MeasurementConsumer.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/MeasurementConsumer.java @@ -5,18 +5,11 @@ package org.eclipse.iot.unide.server.receiver.influxdb; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; import org.eclipse.iot.unide.ppmp.commons.Device; import org.eclipse.iot.unide.ppmp.measurements.Measurements; import org.eclipse.iot.unide.ppmp.measurements.MeasurementsWrapper; -import org.eclipse.iot.unide.ppmp.process.Process; -import org.eclipse.iot.unide.ppmp.process.ProcessWrapper; import org.eclipse.iot.unide.server.receiver.util.PpmpHelper; import org.influxdb.InfluxDB; import org.influxdb.dto.BatchPoints; diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/ProcessConsumer.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/ProcessConsumer.java index 525c06a..29bfc2f 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/ProcessConsumer.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/influxdb/ProcessConsumer.java @@ -6,9 +6,7 @@ import java.util.concurrent.TimeUnit; -import org.eclipse.iot.unide.ppmp.PPMPPackager; import org.eclipse.iot.unide.ppmp.commons.Device; -import org.eclipse.iot.unide.ppmp.messages.Message; import org.eclipse.iot.unide.ppmp.process.Process; import org.eclipse.iot.unide.ppmp.process.ProcessWrapper; import org.eclipse.iot.unide.server.receiver.util.PpmpHelper; diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/JdbcExecutorService.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/JdbcExecutorService.java index 809478d..118e8eb 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/JdbcExecutorService.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/JdbcExecutorService.java @@ -9,7 +9,6 @@ import javax.sql.DataSource; -import org.apache.commons.dbcp2.BasicDataSource; import org.flywaydb.core.Flyway; /** diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/MachineMessageConsumer.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/MachineMessageConsumer.java index e97c8e1..3c61741 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/MachineMessageConsumer.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/MachineMessageConsumer.java @@ -10,7 +10,6 @@ import org.eclipse.iot.unide.ppmp.commons.Device; import org.eclipse.iot.unide.ppmp.messages.Message; import org.eclipse.iot.unide.ppmp.messages.MessagesWrapper; -import org.influxdb.dto.Point.Builder; /** * Consumer class for Message diff --git a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/SqlDbReceiver.java b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/SqlDbReceiver.java index 52d01c1..841007a 100644 --- a/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/SqlDbReceiver.java +++ b/servers/rest/src/main/java/org/eclipse/iot/unide/server/receiver/sql/SqlDbReceiver.java @@ -5,7 +5,6 @@ package org.eclipse.iot.unide.server.receiver.sql; import java.util.function.Consumer; -import java.util.function.Supplier; import javax.sql.DataSource; From 33f3db91ff633a4155deb53506e93368497e89b0 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 4 Apr 2018 18:03:22 +0200 Subject: [PATCH 54/66] feat(blog): camel-integrator-2 post draft Signed-off-by: Axel Meinhardt --- website/blog/Transform-PPMP-with-camel-2.md | 104 ++++++++++++++++++ .../Transform-PPMP-with-camel-2-eclipse.png | Bin 0 -> 126744 bytes .../Transform-PPMP-with-camel-2-logfile.png | Bin 0 -> 36269 bytes 3 files changed, 104 insertions(+) create mode 100644 website/blog/Transform-PPMP-with-camel-2.md create mode 100644 website/static/images/blog/Transform-PPMP-with-camel-2-eclipse.png create mode 100644 website/static/images/blog/Transform-PPMP-with-camel-2-logfile.png diff --git a/website/blog/Transform-PPMP-with-camel-2.md b/website/blog/Transform-PPMP-with-camel-2.md new file mode 100644 index 0000000..5681d5a --- /dev/null +++ b/website/blog/Transform-PPMP-with-camel-2.md @@ -0,0 +1,104 @@ +--- +title: "PPMP Use Cases: Further Transformation with Apache Camel" +date: 2018-29-03 00:00:00 +tags: "use cases" +--- + +# Quick start +In a previous blog post, I have already introduced Apache Camel as a tool to transform to PPMP. In this post, I want to dive a little deeper to get you started with your own transformation. +You can find corresponding sourcecode with some transformation examples [in the repository of the Eclipse PPM Testbed](https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/tree/master/camel-integrator). After download or checkout of the project, you can easily package everything necessary for an installation via [Apache Maven](https://maven.apache.org/) and java 8+: +```bash +mvn package +``` +After successful build, you should get a zip file at `target/camel-integrator-*-assembly.zip` with the following content +* `bin` +The IntegratorStarter\* files for Windows and Linux can be used to start the integrator manually. WinServiceInstaller.bat und WinServiceUninstaller.bat can be executed with Admin permissions in Windows to register/unregister this java application as Windows Service called "Integrator Service". +* `conf` +This is where the main configuration file `application-context.xml`, further included spring xml configurations, as well as the configuration for logging `log4j.properties` and a key-value-file for quick configuration `application.properties` can be found. After modification of any of them, the integrator should be restarted. +* `lib` +Contains all java dependencies and their dependencies as individual jar files +* `log` +After the first start, you'll find an additional directory that contains the logs of every execution, as defined in the `conf/log4j.properties` file + +# How can I modify this? + +In the `conf` folder of the output or `src/main/resources` src folder, you'll find multiple examples on how to use Apache Camel with Production Performance Management Protocol. Most of the examples are based on [spring xml](https://github.com/apache/camel/blob/master/components/camel-spring/src/main/docs/spring.adoc). Among others, you'll find: +
+
+
+ html log file +
+
+
+ html logfile before transformation to PPMP +
+
+ +* `application-context.xml` + Main entry file to start camel routes. It contains a general PPMP validation REST endpoint that reuses the route from `ppmp-validate-context.xml` +* `mqtt-context.xml` + A simple example of converting transport protocol (mqtt to REST), without looking at the payload +* `ppmp-splitAndRewrite-context.xml` + Shows how to receive (PPMP-) payload via different REST paths (/rest or /ppm), and each forwarding to two seperate endpoints (/rest and /ppm) + * `ppmpRewrite.xml` and `ppmRewrite.xml` + mapping examples to rewrite the urls +* `ppmp-validate-context.xml` + A simple validation route for PPMP messages that can be reused in many other routes. +* `psi6000-transform-context.xml` + A more advanced example of converting a psi6000 JSON format, converting it to plain old java object (POJO), transforming that to PPMP POJOs (using [unide.java](https://github.com/eclipse/unide.java)) and forwarding these to actual REST endpoints +* `kistler.xml` + This example takes html files with a structure similar to the test file in [`src/test/data/00000855.html`](https://github.com/eclipselabs/eclipseiot-testbed-productionperformancemanagement/blob/master/camel-integrator/src/test/data/00000855.html), cleans the html structure, retrieves the relevant parts via [XPath](https://en.wikipedia.org/wiki/XPath) and creates a PPMP process message out of that +* `application.properties` + Contains key/value pairs that can be used in the camel context configurations. +* `log4j.properties` + The configuration for logging. For testing purposes, the log4j.properties in /src/test/resources is used. + +In order to get familiar with these transformations, I suggest you: +* open the `application-context.xml` in your favorite editor +* remove the `` statements +* add your own `...`, maybe as simple as + ```xml + + + + hello world! + + + ``` +* start a testrun with + ```bash + mvn exec:java + ``` +* and review the result. In the example above, just open your browser at http://localhost:9090 + +If you prefer a visual model of these camel xml definitions, you could also make use of [JBoss Fuse Tooling](https://tools.jboss.org/features/fusetools.html) which is available for [Eclipse Workbench 4.3+](https://projects.eclipse.org/releases/oxygen) through [the Marketplace](https://marketplace.eclipse.org/content/jboss-tools). Be aware that this might cause additional overhead. +
+
+
+ JBoss Tools +
+
+
+ JBoss Tools for Eclipse Workbench +
+
+ +If you want to make use of any other of the (as of camel 2.21.0) [281+ components](https://github.com/apache/camel/tree/camel-2.21.0/components), your should add the respective maven dependency to the `pom.xml`. For example: +```xml + + ... + + + org.apache.camel + camel-amqp + ${camel.version} + + ... + + ... + +``` + +# Summary +The provided camel project template facilitates the creation of simple connectors. You can download it, modify or extend it, package the integrator to a zip file and deploy it on a target server. The included scripts help registering the integrator as an operating system service to run 24/7. \ No newline at end of file diff --git a/website/static/images/blog/Transform-PPMP-with-camel-2-eclipse.png b/website/static/images/blog/Transform-PPMP-with-camel-2-eclipse.png new file mode 100644 index 0000000000000000000000000000000000000000..9866eddc1798270637714dc2d601fcc7379870aa GIT binary patch literal 126744 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

Wp@$uiQ(vSjgN_yf?G)I%TyNg9saI5a?wuu^`=l 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

(2T`lPov7WoH9Xwoa^3UL|3&!%;+JBa>Ms) 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�U zO44N}_V#OVDMV-RF=zym$o*>P3rf3Ff72nAg7`*b#?pSr?Fa{FSLxWZ{Ert6HX`VV zl(BxV*USz$BxI2q;IdC>>8f3@n#R}uB zyPjvhc)z^V_r9uVtm3g*cm!~h#aX3^KT=5jrYCH_x+IQ&;g$rs9vnYWY46|tc`5Cn zwfVOmpfCw!rAX+$TCe4p<0oE7yL0D`GTNlV4tHDF0Hkz-g;p-NE{zt7y<_5MhVQKt zgfP9tjOrL~p0-Ys=BrrMa(RuI-^^RL^XL%UFiKGRz50!eTDgvmUr~itV;_mL;t60n z&;6IeQa@@BZ<#^uaN_^@G8> z(kkrCP8AV+-DHeX;#QC3RQMWw+FW*=BxBxwp|YnX5=3a_WA5WO;R@=U?oJ9lRdCX+}TVv%jxo~5-X}bb!;IS zi(Tn00773F6kIp(Tok`#vC0gpco=N9@SVBZC0FUEHij++0~vS#}B&bt1$O61q5o@R0A?JX-uX$^ZzMH33uDaf-c zQ#;gDftiqJLkn~QFsk%4m}$Mz@`#Hyox-ed?XM{;xyCyrD9$!@DV>9bBh>Xo5M5cJ^7R7Ni?bAB9( zXFRaSp`mXX#(Go!HLZ=+d5wJcG>>hN+cHiHip-RtEp^Y+qCK^-l$J5K&g+Wt1hsV? zz$Up|#NFI)2u>lhIn65YzT$!U-2|}3jB=ygcCLDV+gAFkRI>j$gzfedr4QI4d);py zWAq@W{CyVp+xm?TJqo(s^qz*5MC6I}=!;v4>Ff{~F}uU#M}u7!2tK+k_2%YEvc-67 zKV^r2Mq!<;OyG!4dzcba-)@hkga}ViTXF#Z7diT465bg5e~Ej~t>g9!3`;R?L0*LE zodky>P-H(yA`;?a{z?{$oqKCORob!Fa;Fv+W8ubShoJZZQa6xu?+M=)tQYP4ghJ%q;~A*Y(d+f~@t&UuF9AZqffbLS~}f7w{v(DLCEr2`iY zW`~Q-!V=Z~qJz3Nq$}$1683lORvA7*8VjEtH!dA9G6nXDDD_nCKB5(LLI`d8b=Qr9 zvCd5~!TNEn{T5Q9991b(ikgoFRfmimd@tuIW9$2rq(P?OdDfqt8{))ybMOrEy6oR* z8F>19Fn!S-hnr4CDvBe~&@M(;cIdnsL0`|g54loqR}}j#eg4W?%z5^V_aUi(Kmm%G zJq%hkfdn0@x@{8nkV>{B^!Yt^!Urjo@p&UN-9`S?#4Y_c8tUqIwF|6aY{}hq?Bs+o$&6+MmLp zUAk*inPV+LPF@qa5kL$`xk)Neq^M{}Ab_}(4#l$B=78_ifr#AjMMRKvi7*j#}3!kT}A1<<-|wW4-OIY z3i~o5y)U%(9BR}4L~i@Vn@{{%j`wxJvhbSXDVz`fr^fwl(@O>QS9oJ6IrQ)JURpC& zM`fhfAZTj}-pnrfe2bq^raVZ%a^sYVu-X>nSCxa4o|p08bpUn@NbVd+8g%KRM^^+& zUd%l4pO4b~hOSvjJq;?^4xnHu8ru4@SRSL*}@3OexfALG6cig-QJZG%VpDMMy@!%iW{#0N9 literal 0 HcmV?d00001 From 6a7d8ec7d3f63988b4af20b7eea99897878fc497 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Fri, 6 Apr 2018 11:49:56 +0200 Subject: [PATCH 55/66] fix(uml): fixed multiplicities, highlighted object/array difference Signed-off-by: Axel Meinhardt --- website/static/images/measurementPayload.svg | 36 +++++----- website/static/images/measurementPayload.uml | 34 +++++---- website/static/images/messagePayload.svg | 24 ++++--- website/static/images/messagePayload.uml | 22 +++--- website/static/images/processPayload.svg | 73 +++++++++++--------- website/static/images/processPayload.uml | 72 ++++++++++--------- 6 files changed, 143 insertions(+), 118 deletions(-) diff --git a/website/static/images/measurementPayload.svg b/website/static/images/measurementPayload.svg index 5e41f4d..fe574e4 100644 --- a/website/static/images/measurementPayload.svg +++ b/website/static/images/measurementPayload.svg @@ -1,4 +1,4 @@ -MeasurementPayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : Map<String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : ResultMeasurementcode[0..1] : Stringlimits[0..1] : Map<String, Limits>result[0..1] : Resultts[1] : DateLimitslowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : Float,upperWarn[0..1] : FloatSeries$_time[1] : List<Integer><values>[1..*] : List<Float>ResultOKNOKUNKNOWNdevice11part10..1measurements11..*series1110..1MeasurementPayloadcontent-spec : Stringdevice : Devicemeasurements : Measurementspart[0..1] : PartDevicedeviceID : StringmetaData[0..1] : <String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : <String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : ResultMeasurementcode[0..1] : Stringlimits[0..1] : LimitsListresult[0..1] : Resultseries : Seriests : DateLimitslowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : Float,upperWarn[0..1] : FloatSeries$_time : [Integer]<values>[1..*] : [Float]ResultOKNOKUNKNOWNMeasurements11..*LimitsList10..1MessagePayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringMessagecode[1] : Stringdescriptionp[0..1] : Stringhint[0..1] : StringmetaData[0..1] : Map<String, String>origin[0..1] : Stringseverity[0..1] : Severitytitle[0..1] : Stringts[1] : Datetype[0..1] : TypeTypeDEVICETECHNICAL_INFOSeverityHIGHMEDIUMLOWUNKNOWNdevice11messages10..*MessagePayloadcontent-spec : Stringdevice : Devicemessages : MessagesDevicedeviceID : StringmetaData[0..1] : <String, String>operationalStatus[0..1] : StringMessagecode : Stringdescription[0..1] : Stringhint[0..1] : StringmetaData[0..1] : <String, String>origin[0..1] : Stringseverity[0..1] : Severitytitle[0..1] : Stringts : Datetype[0..1] : TypeTypeDEVICETECHNICAL_INFOSeverityHIGHMEDIUMLOWUNKNOWNMessages11..*ProcessPayloadcontent-spec[1] : StringDevicedeviceID[1] : StringmetaData[0..1] : Map<String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : Map<String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : Resulttype[0..1] : PartTypeProcessexternalProcessId[0..1] : StringmetaData[0..1] : Map<String, String>result[0..1] : ResultshutoffPhase[0..1] : StringshutoffValue[0..*] : Map<String, ShutoffValue>ts[1] : DateMeasurementcode[0..1] : Stringlimits[0..1] : Map<String, Limits>name[0..1] : Stringphase[0..1] ; Stringresult[0..1] : Resultts[1] : DateProgramid[1] : StringlastChangeDate[0..1] : Stringname[0..1] : StringShutoffValuelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : Floatts[0..1] : DateupperError[0..1] : FloatupperWarn[0..1] : Floatvalue[1] : FloatSeries$_time[0..1] : List<Integer><values>[0..*] : List<Float>LimitsLimitsSinglelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : FloatupperWarn[0..1] : FloatLimitsListlowerError[0..1] : List<Float>lowerWarn[0..1] : List<Float>target[0..1] : List<Float>upperError[0..1] : List<Float>upperWarn[0..1] : List<Float>SpecialValue$_time[0..1] : Integername[0..1] : Stringvalue[1] : Map<String, Float>PartTypeSINGLEBATCHResultOKNOKUNKNOWNdevice11part10..1process11measurements11..*program10..110..*series1110..1specialValues10..1ProcessPayloadcontent-spec : Stringdevice : Devicemeasurements : Measurementspart[0..1] : Partprocess : ProcessDevicedeviceID : StringmetaData[0..1] : <String, String>operationalStatus[0..1] : StringPartcode[0..1] : StringmetaData[0..1] : <String, String>partID[0..1] : StringpartTypeID[0..1] : Stringresult[0..1] : Resulttype[0..1] : PartTypeProcessexternalProcessId[0..1] : StringmetaData[0..1] : <String, String>program[0..1] : Programresult[0..1] : ResultshutoffPhase[0..1] : StringshutoffValues[0..1] : ShutoffValuests : DateMeasurementcode[0..1] : Stringlimits[0..1] : LimitsListname[0..1] : Stringphase[0..1] ; Stringresult[0..1] : Resultseries : SeriesspecialValues[0..1] : SpecialValuests : DateProgramid : StringlastChangeDate[0..1] : Datename[0..1] : StringShutoffValuelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : Floatts[0..1] : DateupperError[0..1] : FloatupperWarn[0..1] : Floatvalue : FloatSeries$_time[0..1] : [Integer]<value>[0..*] : [Float]LimitsLimitsSinglelowerError[0..1] : FloatlowerWarn[0..1] : Floattarget[0..1] : FloatupperError[0..1] : FloatupperWarn[0..1] : FloatLimitsListlowerError[0..1] : [Float]lowerWarn[0..1] : [Float]target[0..1] : [Float]upperError[0..1] : [Float]upperWarn[0..1] : [Float]SpecialValue$_time[0..1] : Integername[0..1] : Stringvalue : <String, Float>PartTypeSINGLEBATCHResultOKNOKUNKNOWNMeasurements10..*ShutoffValues10..*LimitsList10..*SpecialValues10..*PPMP Producer / MachinePPMP ConsumerInformation / AlarmsSensor valuesEnd-to-end process dataMachine MessagesMeasurementsProcesss/process/message/measurement \ No newline at end of file diff --git a/website/static/images/componentOverview.uml b/website/static/images/componentOverview.uml deleted file mode 100644 index 1c21adb..0000000 --- a/website/static/images/componentOverview.uml +++ /dev/null @@ -1,40 +0,0 @@ -@startuml -skinparam interface { - BackgroundColor #78be20 - FontColor #50237f - BorderColor black -} - -skinparam node { - FontColor #50237f -} - -skinparam component { - BorderColor black - FontColor #50237f - BackgroundColor #f5f5f5 - ArrowColor black -} - -() "/process" as p -() "/message" as m -() "/measurement" as s - -node "PPMP Producer / Machine" { - [Information / Alarms] - [Sensor values] - [End-to-end process data] -} -node "PPMP Consumer" { - [Machine Messages] - [Measurements] - [Processs] -} - -[Information / Alarms] --> m -m --> [Machine Messages] -[Sensor values] --> s -s --> [Measurements] -[End-to-end process data] --> p -p --> [Processs] -@enduml diff --git a/website/static/images/measurementPayload.uml b/website/static/images/measurementPayload.uml deleted file mode 100644 index dc6b65c..0000000 --- a/website/static/images/measurementPayload.uml +++ /dev/null @@ -1,70 +0,0 @@ -@startuml - -skinparam class { - BorderColor black - FontColor #50237f - BackgroundColor #f5f5f5 - ArrowColor black -} - -skinparam stereotype { - CBackgroundColor white - EBackgroundColor white -} - -class MeasurementPayload { - content-spec : String - device : Device - measurements : Measurements - part[0..1] : Part -} - -class Device { - deviceID : String - metaData[0..1] : - operationalStatus[0..1] : String -} - -class Part { - code[0..1] : String - metaData[0..1] : - partID[0..1] : String - partTypeID[0..1] : String - result[0..1] : Result -} - -class Measurement { - code[0..1] : String - limits[0..1] : LimitsList - result[0..1] : Result - series : Series - ts : Date -} - -class Limits { - lowerError[0..1] : Float - lowerWarn[0..1] : Float - target[0..1] : Float - upperError[0..1] : Float, - upperWarn[0..1] : Float -} - -class Series { - $_time : [Integer] - [1..*] : [Float] -} - -enum Result { - OK - NOK - UNKNOWN -} - -MeasurementPayload -- Device -MeasurementPayload -- Part -MeasurementPayload "1" o-- "1..*" Measurement : Measurements - -Measurement -- Series -Measurement "1" *-- "0..1" Limits : LimitsList - -@enduml \ No newline at end of file diff --git a/website/static/images/processPayload.uml b/website/static/images/processPayload.uml deleted file mode 100644 index e3e5084..0000000 --- a/website/static/images/processPayload.uml +++ /dev/null @@ -1,131 +0,0 @@ -@startuml - -skinparam class { - BorderColor black - FontColor #50237f - BackgroundColor #f5f5f5 - ArrowColor black -} -skinparam stereotype { - CBackgroundColor white - EBackgroundColor white -} - -class ProcessPayload { - content-spec : String - device : Device - measurements : Measurements - part[0..1] : Part - process : Process -} - -class Device { - deviceID : String - metaData[0..1] : - operationalStatus[0..1] : String -} - -class Part { - code[0..1] : String - metaData[0..1] : - partID[0..1] : String - partTypeID[0..1] : String - result[0..1] : Result - type[0..1] : PartType -} - -class Process { - externalProcessId[0..1] : String - metaData[0..1] : - program[0..1] : Program - result[0..1] : Result - shutoffPhase[0..1] : String - shutoffValues[0..1] : ShutoffValues - ts : Date -} - -class Measurement { - code[0..1] : String - limits[0..1] : LimitsList - name[0..1] : String - phase[0..1] ; String - result[0..1] : Result - series : Series - specialValues[0..1] : SpecialValues - ts : Date -} - -class Program { - id : String - lastChangeDate[0..1] : Date - name[0..1] : String -} - -class ShutoffValue { - lowerError[0..1] : Float - lowerWarn[0..1] : Float - target[0..1] : Float - ts[0..1] : Date - upperError[0..1] : Float - upperWarn[0..1] : Float - value : Float -} - -class Series { - $_time[0..1] : [Integer] - [0..*] : [Float] -} - -abstract class Limits { -} - -class LimitsSingle { - lowerError[0..1] : Float - lowerWarn[0..1] : Float - target[0..1] : Float - upperError[0..1] : Float - upperWarn[0..1] : Float -} - -class LimitsList { - lowerError[0..1] : [Float] - lowerWarn[0..1] : [Float] - target[0..1] : [Float] - upperError[0..1] : [Float] - upperWarn[0..1] : [Float] -} - - -class SpecialValue { - $_time[0..1] : Integer - name[0..1] : String - value : -} - -enum PartType { - SINGLE - BATCH -} - -enum Result { - OK - NOK - UNKNOWN -} - -ProcessPayload -- Device -ProcessPayload -- Part -ProcessPayload -- Process -ProcessPayload "1" o-- "0..*" Measurement : Measurements - -Process -- Program -Process "1" *-- "0..*" ShutoffValue : ShutoffValues - -Measurement -- Series -Measurement "1" *-- "0..*" Limits : LimitsList -Measurement "1" o-- "0..*" SpecialValue : SpecialValues - -Limits <|-- LimitsSingle -Limits <|-- LimitsList - -@enduml \ No newline at end of file diff --git a/website/static/images/measurementPayload.svg b/website/static/images/specification/v2/measurementPayload.svg similarity index 100% rename from website/static/images/measurementPayload.svg rename to website/static/images/specification/v2/measurementPayload.svg diff --git a/website/static/images/messagePayload.svg b/website/static/images/specification/v2/messagePayload.svg similarity index 100% rename from website/static/images/messagePayload.svg rename to website/static/images/specification/v2/messagePayload.svg diff --git a/website/static/images/processPayload.svg b/website/static/images/specification/v2/processPayload.svg similarity index 100% rename from website/static/images/processPayload.svg rename to website/static/images/specification/v2/processPayload.svg diff --git a/website/static/images/specification/v3/definitions.iuml b/website/static/images/specification/v3/definitions.iuml new file mode 100644 index 0000000..3ba8bf7 --- /dev/null +++ b/website/static/images/specification/v3/definitions.iuml @@ -0,0 +1,79 @@ +@startuml + +skinparam class { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} +skinparam stereotype{ + CBackgroundColor white + EBackgroundColor white +} + +class Device { + id: String + mode[0..1]: String + state[0..1]: DeviceState +} + +class Measurement { + code[0..1]: String + context[0..1]: ContextList + result[0..1]: Result + series: Series + ts: Date +} + +class Context { + accuracy[0..1]: Float | [Float] + limits[0..1]: Limits + offset[0..1]: Float | [Float] + type[0..1]: String + unit[0..1]: String +} + +class Limits { + lowerError[0..1]: Float | [Float] + lowerWarn[0..1]: Float | [Float] + target[0..1]: Float | [Float] + upperError[0..1]: Float | [Float] + upperWarn[0..1]: Float | [Float] +} + +class Series { + time: [Integer] + [1..*]: [Float] +} + +class Part { + code[0..1]: String + id[0..1]: String + type[0..1]: PartType + typeId[0..1]: String + result[0..1]: Result +} + +enum DeviceState { + OK + INFO + WARN + ERROR + UNKNOWN +} + +enum Result { + OK + NOK + UNKNOWN +} + +enum PartType { + SINGLE + BATCH +} + +Measurement "1" *-- "0..1" Context : ContextList +Context "1" *-- "0..*" Limits + +@enduml \ No newline at end of file diff --git a/website/static/images/specification/v3/measurementPayload.svg b/website/static/images/specification/v3/measurementPayload.svg new file mode 100644 index 0000000..bcece42 --- /dev/null +++ b/website/static/images/specification/v3/measurementPayload.svg @@ -0,0 +1,120 @@ +Deviceid: Stringmode[0..1]: Stringstate[0..1]: DeviceStateMeasurementcode[0..1]: Stringcontext[0..1]: ContextListresult[0..1]: Resultseries: Seriests: DateContextaccuracy[0..1]: Float | [Float]limits[0..1]: Limitsoffset[0..1]: Float | [Float]type[0..1]: Stringunit[0..1]: StringLimitslowerError[0..1]: Float | [Float]lowerWarn[0..1]: Float | [Float]target[0..1]: Float | [Float]upperError[0..1]: Float | [Float]upperWarn[0..1]: Float | [Float]Partcode[0..1]: Stringid[0..1]: Stringtype[0..1]: PartTypetypeId[0..1]: Stringresult[0..1]: ResultDeviceStateOKINFOWARNERRORUNKNOWNResultOKNOKUNKNOWNPartTypeSINGLEBATCHMeasurementPayloadcontent-spec : Stringdevice : Devicemeasurements : Measurementspart[0..1] : PartContextList10..110..*Measurements11..* \ No newline at end of file diff --git a/website/static/images/specification/v3/measurementPayload.uml b/website/static/images/specification/v3/measurementPayload.uml new file mode 100644 index 0000000..07982f7 --- /dev/null +++ b/website/static/images/specification/v3/measurementPayload.uml @@ -0,0 +1,31 @@ +@startuml +!include definitions.iuml + +skinparam class { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} + +skinparam stereotype { + CBackgroundColor white + EBackgroundColor white +} + +class MeasurementPayload { + content-spec : String + device : Device + measurements : Measurements + part[0..1] : Part +} + +MeasurementPayload -- Device +MeasurementPayload -- Part +MeasurementPayload "1" o-- "1..*" Measurement : Measurements + +Measurement -- Series + +hide Series + +@enduml \ No newline at end of file diff --git a/website/static/images/specification/v3/messagePayload.svg b/website/static/images/specification/v3/messagePayload.svg new file mode 100644 index 0000000..89dc2aa --- /dev/null +++ b/website/static/images/specification/v3/messagePayload.svg @@ -0,0 +1,145 @@ +Deviceid: Stringmode[0..1]: Stringstate[0..1]: DeviceStateDeviceStateOKINFOWARNERRORUNKNOWNMessagePayloadcontent-spec : Stringdevice : Devicemessages : MessagesMessagecode : Stringdescription[0..1] : Stringhint[0..1] : StringmetaData[0..1] : <String, String>origin[0..1] : Stringseverity[0..1] : Severitytitle[0..1] : Stringts : Datetype[0..1] : TypeTypeDEVICETECHNICAL_INFOSeverityHIGHMEDIUMLOWUNKNOWNMessages11..* \ No newline at end of file diff --git a/website/static/images/messagePayload.uml b/website/static/images/specification/v3/messagePayload.uml similarity index 85% rename from website/static/images/messagePayload.uml rename to website/static/images/specification/v3/messagePayload.uml index d58bd78..591494f 100644 --- a/website/static/images/messagePayload.uml +++ b/website/static/images/specification/v3/messagePayload.uml @@ -1,4 +1,5 @@ @startuml +!include definitions.iuml skinparam class { BorderColor black @@ -17,12 +18,6 @@ class MessagePayload { messages : Messages } -class Device { - deviceID : String - metaData[0..1] : - operationalStatus[0..1] : String -} - class Message { code : String description[0..1] : String @@ -50,4 +45,12 @@ enum Severity { MessagePayload -- Device MessagePayload "1" o-- "1..*" Message : Messages +hide Context +hide Limits +hide Measurement +hide Part +hide PartType +hide Result +hide Series + @enduml \ No newline at end of file diff --git a/website/static/images/specification/v3/processPayload.svg b/website/static/images/specification/v3/processPayload.svg new file mode 100644 index 0000000..b8e6115 --- /dev/null +++ b/website/static/images/specification/v3/processPayload.svg @@ -0,0 +1,150 @@ +Deviceid: Stringmode[0..1]: Stringstate[0..1]: DeviceStateMeasurementcode[0..1]: Stringcontext[0..1]: ContextListresult[0..1]: Resultseries: Seriests: DateContextaccuracy[0..1]: Float | [Float]limits[0..1]: Limitsoffset[0..1]: Float | [Float]type[0..1]: Stringunit[0..1]: StringLimitslowerError[0..1]: Float | [Float]lowerWarn[0..1]: Float | [Float]target[0..1]: Float | [Float]upperError[0..1]: Float | [Float]upperWarn[0..1]: Float | [Float]Seriestime: [Integer]<values>[1..*]: [Float]Partcode[0..1]: Stringid[0..1]: Stringtype[0..1]: PartTypetypeId[0..1]: Stringresult[0..1]: ResultDeviceStateOKINFOWARNERRORUNKNOWNResultOKNOKUNKNOWNPartTypeSINGLEBATCHProcessPayloadcontent-spec: Stringdevice: Devicemeasurements: Measurementspart[0..1]: Partprocess: ProcessProcessexternalId[0..1]: Stringprogram[0..1]: Programresult[0..1]: ResultshutoffPhase[0..1]: Stringts: DateProcessMeasurementname[0..1]: Stringphase[0..1] ; StringspecialValues[0..1]: SpecialValuesProgramid: StringlastChangeDate[0..1]: Datename[0..1]: StringSpecialValuetime[0..1]: Integername[0..1]: Stringvalue: <String, Float>ContextList10..110..*Measurements10..*SpecialValues10..* \ No newline at end of file diff --git a/website/static/images/specification/v3/processPayload.uml b/website/static/images/specification/v3/processPayload.uml new file mode 100644 index 0000000..0f12596 --- /dev/null +++ b/website/static/images/specification/v3/processPayload.uml @@ -0,0 +1,61 @@ +@startuml +!include definitions.iuml + +skinparam class { + BorderColor black + FontColor #50237f + BackgroundColor #f5f5f5 + ArrowColor black +} +skinparam stereotype { + CBackgroundColor white + EBackgroundColor white +} + +class ProcessPayload { + content-spec: String + device: Device + measurements: Measurements + part[0..1]: Part + process: Process +} + +class Process { + externalId[0..1]: String + program[0..1]: Program + result[0..1]: Result + shutoffPhase[0..1]: String + ts: Date +} + +class ProcessMeasurement { + name[0..1]: String + phase[0..1] ; String + specialValues[0..1]: SpecialValues +} + +class Program { + id: String + lastChangeDate[0..1]: Date + name[0..1]: String +} + +class SpecialValue { + time[0..1]: Integer + name[0..1]: String + value: +} + +ProcessPayload -- Device +ProcessPayload -- Part +ProcessPayload -- Process +ProcessPayload "1" o-- "0..*" Measurement: Measurements + +Process -- Program + +Measurement -- Series +Measurement "1" o-- "0..*" SpecialValue: SpecialValues + +Measurement <|-- ProcessMeasurement + +@enduml \ No newline at end of file From 977a278b05e7004e0aed0c34533be9b0f8c17df2 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Fri, 27 Apr 2018 11:13:31 +0200 Subject: [PATCH 59/66] fix(ppmp): synched with website schema Signed-off-by: Axel Meinhardt --- .../iot/unide/ppmp/v3/definitions.json | 244 +++++++++--------- .../iot/unide/ppmp/v3/measurement_schema.json | 3 + .../iot/unide/ppmp/v3/process_schema.json | 51 +++- 3 files changed, 168 insertions(+), 130 deletions(-) diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json index 430fec9..7070a9b 100644 --- a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json @@ -1,5 +1,5 @@ { - "definitions": { + "definitions": { "code": { "type": "string", "description": "The code is an addendum to the result which allows to pass information in the case the result was NOK. The value often stems from the integrated system e.g. a PLC code", @@ -14,6 +14,10 @@ "description": "The unique identification of the device. As this is used to identify a device independently from time or location the id itself must be stable and unique. Recommended is to use a universally unique identifier (UUID).", "maxLength": 36 }, + "mode": { + "type": "string", + "description": "The operational mode indicates the functional state of the device. This is not restrictected to enum, since it is dependent on the machine, process or use case. Examples are 'auto', 'manual', 'test', 'wait', 'maintenance', 'run', 'stop', 'other' or 'unknown'" + }, "state": { "type": "string", "enum": [ @@ -25,10 +29,6 @@ ], "default": "UNKNOWN", "description": "The state describes the technical condition of a device." - }, - "mode": { - "type": "string", - "description": "The operational mode indicates the functional state of the device. This is not restrictected to enum, since it is dependent on the machine, process or use case. Examples are 'auto', 'manual', 'test', 'wait', 'maintenance', 'run', 'stop', 'other' or 'unknown'" } }, "required": [ @@ -52,84 +52,122 @@ "type": "object", "description": "The key shall be the name of a measurement point (element of series element). The value is a structure of additional context information.", "properties": { - "limit": { - "description": "Provides information about limits for data provided in the series element. The limits is an JSON object where the key is the name of a Measurement Point (see also series element) and the value is a structure of upper/lower limits", + "accuracy": { + "oneOf": [ + { + "type": "number", + "description": "A constant that describes the accuracy of the corresponding measurement as absolute value" + }, + { + "type": "array", + "description": "An array of accuracy values. The items of the array correspond to the respective measurements at the same position.", + "items": { + "type": "number" + } + } + ] + }, + "limits": { + "description": "Provides information about the limit for data provided in the series element. The limit corresponds to the measurement point (see also series element) with the same key. The value is a structure of upper/lower limits and applies to numeric values only.", "type": "object", - "patternProperties": { - "^[^$]+": { - "oneOf": [ - { - "type": "object", - "description": "A constant limit for all corresponding measurements", - "properties": { - "lowerError": { - "description": "Indicates an error if this limit is underrun", - "type": "number" - }, - "lowerWarn": { - "description": "Indicates a warning if this limit is underrun", - "type": "number" - }, - "target": { - "description": "Indicates the intented target value of the measurement", - "type": "number" - }, - "upperError": { - "description": "Indicates an error if this limit is exceeded", - "type": "number" - }, - "upperWarn": { - "description": "Indicates a warning if this limit is exceeded", - "type": "number" - } + "oneOf": [ + { + "type": "object", + "description": "A constant limit for all corresponding measurements", + "properties": { + "lowerError": { + "description": "Indicates an error if this limit is underrun", + "type": "number" + }, + "lowerWarn": { + "description": "Indicates a warning if this limit is underrun", + "type": "number" + }, + "target": { + "description": "Indicates the intented target value of the measurement", + "type": "number" + }, + "upperError": { + "description": "Indicates an error if this limit is exceeded", + "type": "number" + }, + "upperWarn": { + "description": "Indicates a warning if this limit is exceeded", + "type": "number" + } + } + }, + { + "type": "object", + "description": "An array of limit values. The items of the array correspond to the respective measurements at the same position.", + "properties": { + "lowerError": { + "description": "Indicates an error if these limits is underrun. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "lowerWarn": { + "description": "Indicates a warning if these limits is underrun. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" } }, - { - "type": "object", - "description": "An array of limit values. The items of the array correspond to the respective measurements at the same position.", - "properties": { - "lowerError": { - "description": "Indicates an error if these limits is underrun. The values correspond to the respective measurements in the given order.", - "type": "array", - "items": { - "type": "number" - } - }, - "lowerWarn": { - "description": "Indicates a warning if these limits is underrun. The values correspond to the respective measurements in the given order.", - "type": "array", - "items": { - "type": "number" - } - }, - "target": { - "description": "Indicates the intented target values. The values correspond to the respective measurements in the given order.", - "type": "array", - "items": { - "type": "number" - } - }, - "upperError": { - "description": "Indicates an error if these limits is exceeded. The values correspond to the respective measurements in the given order.", - "type": "array", - "items": { - "type": "number" - } - }, - "upperWarn": { - "description": "Indicates a warning if these limits is exceeded. The values correspond to the respective measurements in the given order.", - "type": "array", - "items": { - "type": "number" - } - } + "target": { + "description": "Indicates the intented target values. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "upperError": { + "description": "Indicates an error if these limits is exceeded. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" + } + }, + "upperWarn": { + "description": "Indicates a warning if these limits is exceeded. The values correspond to the respective measurements in the given order.", + "type": "array", + "items": { + "type": "number" } } - ] + } + } + ] + }, + "offset": { + "description": "The offset applies to numeric data type only.", + "oneOf": [ + { + "type": "number", + "description": "Describes the offset of the corresponding measurement as absolute value" + }, + { + "type": "array", + "description": "An array of offset values. The items of the array correspond to the respective measurements at the same position.", + "items": { + "type": "number" + } } - } + ] + }, + "type": { + "type": "string", + "description": "The data type of the corresponding measurement value.", + "enum": ["BASE64", "BOOLEAN", "NUMBER", "OTHER", "REF", "STRING"], + "default": "NUMBER" + }, + "unit": { + "type": "string", + "description": "Describes the unit of the corresponding measurement. It is recommended to use symbols as defined in https://tools.ietf.org/html/draft-ietf-core-senml-14#section-12.1" } - } + }, + "minProperties": 1 } }, "required": [] @@ -141,7 +179,7 @@ "type": "object", "description": "The series data collected for the measurements. Every entry matches a Measurement Point of the Device Type. In the case of a time series, one column contains the time offsets.", "properties": { - "$_time": { + "time": { "type": "array", "description": "The time offset in milliseconds (positive values in ascending order starting with 0) to the 'ts' field of the measurement", "items": { @@ -158,7 +196,7 @@ } }, "required": [ - "$_time" + "time" ], "minProperties": 2 }, @@ -207,56 +245,6 @@ "id" ] }, - "process": { - "type": "object", - "description": "Contains information about the process. If the process JSON object is set, then all information in measurements are process phases", - "properties": { - "externalId": { - "type": "string", - "description": "The process id identifies the process as part of long living process. The process id can be used to connect multiple processes in a manufacturing chain. The id has to be set and tracked by the different devices in the chain.", - "maxLength": 36 - }, - "program": { - "type": "object", - "description": "Contains information about the program that was used in the process.", - "properties": { - "id": { - "type": "string", - "description": "The program identifier", - "maxLength": 36 - }, - "lastChangedDate": { - "type": "string", - "format": "date-time", - "description": "The date when the program was last changed" - }, - "name": { - "type": "string", - "description": "The name of the program", - "maxLength": 256 - } - }, - "required": [ - "id" - ] - }, - "result": { - "$ref": "#/definitions/result" - }, - "shutoffPhase": { - "type": "string", - "description": "The id of the phase that led to stop the process. The shutOffPhase is the phase of the process in which either pre-defined parameters are met to successfully finish the process or an error that stopped the process. That is not necessarily the last phase. The shutOffPhase should be sent when the last process phase is sent." - }, - "ts": { - "type": "string", - "format": "date-time", - "description": "Start time of the process" - } - }, - "required": [ - "ts" - ] - }, "result": { "type": "string", "enum": [ diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/measurement_schema.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/measurement_schema.json index 6091a90..d529616 100644 --- a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/measurement_schema.json +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/measurement_schema.json @@ -9,6 +9,9 @@ "device": { "$ref": "definitions.json#/definitions/device" }, + "part": { + "$ref": "definitions.json#/definitions/part" + }, "measurements": { "$ref": "definitions.json#/definitions/measurements" } diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json index 3599ff4..8989aaa 100644 --- a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json @@ -10,7 +10,54 @@ "$ref": "definitions.json#/definitions/device" }, "process": { - "$ref": "definitions.json#/definitions/process" + "type": "object", + "description": "Contains information about the process. If the process JSON object is set, then all information in measurements are process phases", + "properties": { + "externalId": { + "type": "string", + "description": "The process id identifies the process as part of long living process. The process id can be used to connect multiple processes in a manufacturing chain. The id has to be set and tracked by the different devices in the chain.", + "maxLength": 36 + }, + "program": { + "type": "object", + "description": "Contains information about the program that was used in the process.", + "properties": { + "id": { + "type": "string", + "description": "The program identifier", + "maxLength": 36 + }, + "lastChangedDate": { + "type": "string", + "format": "date-time", + "description": "The date when the program was last changed" + }, + "name": { + "type": "string", + "description": "The name of the program", + "maxLength": 256 + } + }, + "required": [ + "id" + ] + }, + "result": { + "$ref": "definitions.json#/definitions/result" + }, + "shutoffPhase": { + "type": "string", + "description": "The id of the phase that led to stop the process. The shutOffPhase is the phase of the process in which either pre-defined parameters are met to successfully finish the process or an error that stopped the process. That is not necessarily the last phase. The shutOffPhase should be sent when the last process phase is sent." + }, + "ts": { + "type": "string", + "format": "date-time", + "description": "Start time of the process" + } + }, + "required": [ + "ts" + ] }, "measurements": { "allOf": [ @@ -38,7 +85,7 @@ "type": "object", "description": "Provides information about special or interesting values during the process phase.", "properties": { - "$_time": { + "time": { "type": "integer", "description": "The time offset in milliseconds to the 'ts' field of the measurement" }, From 116261ce41db4f4be0c10174298de8aa73af01a3 Mon Sep 17 00:00:00 2001 From: Axel Meinhardt Date: Wed, 2 May 2018 14:32:19 +0200 Subject: [PATCH 60/66] fix(website, ppmp v3): example & schema sync Signed-off-by: Axel Meinhardt --- .../iot/unide/ppmp/v3/definitions.json | 3 +- .../iot/unide/ppmp/v3/process_schema.json | 3 + website/assets/schemas/v3/definitions.json | 3 +- website/assets/schemas/v3/process_schema.json | 3 + website/components/schemaDetail.vue | 2 + .../specification/v3/machine-message.vue | 107 +++--- .../specification/v3/measurement-message.vue | 173 ++++++---- .../specification/v3/process-message.vue | 318 ++++++++++-------- .../specification/v3/messagePayload.svg | 3 +- .../specification/v3/messagePayload.uml | 1 - 10 files changed, 350 insertions(+), 266 deletions(-) diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json index 7070a9b..5ad9a9c 100644 --- a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/definitions.json @@ -191,7 +191,8 @@ "^[^$]+": { "type": "array", "items": { - "type": "number" + "type": ["boolean", "number", "string"], + "description": "The type of this measurement series is dependendant on the context.type. It defaults to number" } } }, diff --git a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json index 8989aaa..4e5945f 100644 --- a/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json +++ b/ppmp/ppmp-schema/src/main/resources/org/eclipse/iot/unide/ppmp/v3/process_schema.json @@ -9,6 +9,9 @@ "device": { "$ref": "definitions.json#/definitions/device" }, + "part": { + "$ref": "definitions.json#/definitions/part" + }, "process": { "type": "object", "description": "Contains information about the process. If the process JSON object is set, then all information in measurements are process phases", diff --git a/website/assets/schemas/v3/definitions.json b/website/assets/schemas/v3/definitions.json index 7070a9b..5ad9a9c 100644 --- a/website/assets/schemas/v3/definitions.json +++ b/website/assets/schemas/v3/definitions.json @@ -191,7 +191,8 @@ "^[^$]+": { "type": "array", "items": { - "type": "number" + "type": ["boolean", "number", "string"], + "description": "The type of this measurement series is dependendant on the context.type. It defaults to number" } } }, diff --git a/website/assets/schemas/v3/process_schema.json b/website/assets/schemas/v3/process_schema.json index 8989aaa..4e5945f 100644 --- a/website/assets/schemas/v3/process_schema.json +++ b/website/assets/schemas/v3/process_schema.json @@ -9,6 +9,9 @@ "device": { "$ref": "definitions.json#/definitions/device" }, + "part": { + "$ref": "definitions.json#/definitions/part" + }, "process": { "type": "object", "description": "Contains information about the process. If the process JSON object is set, then all information in measurements are process phases", diff --git a/website/components/schemaDetail.vue b/website/components/schemaDetail.vue index ddce1c6..726bb89 100644 --- a/website/components/schemaDetail.vue +++ b/website/components/schemaDetail.vue @@ -234,6 +234,8 @@ export default { Object.entries(this.examples).forEach(([path, example]) => { if(get(this.masterSchema, path)) { set(this.masterSchema, `${path}.examples`, example); + } else { + console.error(`schema path not found in ${this.type}: ${path}`); } }); console.timeEnd("parsing Schema"); diff --git a/website/pages/specification/v3/machine-message.vue b/website/pages/specification/v3/machine-message.vue index 0d0ff90..9680f99 100644 --- a/website/pages/specification/v3/machine-message.vue +++ b/website/pages/specification/v3/machine-message.vue @@ -27,10 +27,10 @@ diff --git a/website/pages/specification/v3/measurement-message.vue b/website/pages/specification/v3/measurement-message.vue index c563d77..0329977 100644 --- a/website/pages/specification/v3/measurement-message.vue +++ b/website/pages/specification/v3/measurement-message.vue @@ -25,10 +25,10 @@ diff --git a/website/pages/specification/v3/process-message.vue b/website/pages/specification/v3/process-message.vue index 332747a..c505d94 100644 --- a/website/pages/specification/v3/process-message.vue +++ b/website/pages/specification/v3/process-message.vue @@ -42,180 +42,213 @@ export default { deviceId = "a4927dad-58d4-4580-b460-79cefd56775b"; this.$static = { message: { - 'content-spec': 'urn:spec://eclipse.org/unide/process-message#v2', - device: { - deviceID: deviceId + "content-spec": "urn:spec://eclipse.org/unide/process-message#v2", + device: { + id: deviceId }, process: { ts: now.toISOString() }, measurements: [ { - ts: (new Date(now.valueOf() + 100)).toISOString(), + ts: new Date(now.valueOf() + 100).toISOString(), series: { - force: [26, 23, 24], + time: [0, 23, 24], + force: [26, 23, 24], pressure: [52.4, 46.32, 44.2432] } } ] }, complexMessage: { - 'content-spec': 'urn:spec://eclipse.org/unide/process-message#v2', - device: { - deviceID: deviceId, - operationalStatus: 'normal', - metaData: { - swVersion: '2.0.3.13', - swBuildId: '41535' - } + "content-spec": "urn:spec://eclipse.org/unide/process-message#v2", + device: { + id: deviceId, + mode: "auto", + state: "OK", + swVersion: "2.0.3.13", + swBuildId: "41535" }, part: { - type: 'SINGLE', - partTypeID: 'F00VH07328', - partID: '420003844', - result: 'NOK', - code: 'HUH289', - metaData: { - toolId: '32324-432143' - } + code: "HUH289", + id: "420003844", + result: "NOK", + toolId: "32324-432143", + type: "SINGLE", + typeId: "F00VH07328" }, process: { - externalProcessId: 'b4927dad-58d4-4580-b460-79cefd56775b', - ts: now.toISOString(), - result: 'NOK', - shutoffPhase: 'phase 2', - program: { - id: '1', - name: 'Programm 1', - lastChangedDate: '2002-05-30T09:30:10.123+02:00' - }, - shutoffValues: { - force: { - ts: (new Date(now.valueOf() + 10000)).toISOString(), - value: 24, - upperError: 26, - lowerError: 22, - upperWarn: 25, - lowerWarn: 23, - target: 24 - }, - pressure: { - value: 50, - upperError: 52, - lowerError: 48 - } + externalId: "b4927dad-58d4-4580-b460-79cefd56775b", + program: { + id: "1", + lastChangedDate: "2002-05-30T09:30:10.123+02:00", + name: "Programm 1" }, - metaData: { - maxDuration: '30min', - escalation: 'shift leader' - } + result: "NOK", + shutoffPhase: "phase 2", + ts: now.toISOString(), + escalation: "shift leader", + maxDuration: "30min" }, - measurements: [{ - ts: (new Date(now.valueOf() + 100)).toISOString(), - phase: 'phase 1', - name: 'heating up', - result: 'OK', - code: '0000 EE01', - context: { - limits: { + measurements: [ + { + code: "0000 EE01", + name: "heating up", + phase: "phase 1", + result: "OK", + ts: new Date(now.valueOf() + 100).toISOString(), + context: { pressure: { - upperError: 4444, - lowerError: 44, - upperWarn: 2222, - lowerWarn: 46, - target: 35 + limits: { + upperError: 4444, + lowerError: 44, + upperWarn: 2222, + lowerWarn: 46, + target: 35 + } }, force: { - upperError: [27, 24, 25], - lowerError: [25, 22, 23] + limits: { + upperError: [29, 27, 26], + lowerError: [23, 21, 20], + upperWarn: [28.5, 26.5, 25.5], + lowerWarn: [23.5, 21.5, 20.5], + target: [26, 24, 23] + } + } + }, + specialValues: [ + { + // eslint-disable-next-line camelcase + time: 12, + name: "turning point", + value: { + pressure: 24, + force: 50 + } + }, + { + time: 50, + name: "shutoffForce", + value: { + force: 24, + upperError: 26, + lowerError: 22, + upperWarn: 25, + lowerWarn: 23, + target: 24 + } + }, + { + time: 50, + name: "shutoffPressure", + value: { + pressure: 50, + upperError: 52, + lowerError: 48 + } } + ], + series: { + time: [30, 36, 42], + force: [26, 23, 24], + pressure: [52.4, 46.32, 44.2432], + temperature: [45.4243, 46.42342, 44.2432] } }, - specialValues: [{ - // eslint-disable-next-line camelcase - time: 12, - name: 'turning point', - value: { - pressure: 24, - force: 50 + { + ts: new Date(now.valueOf() + 430).toISOString(), + phase: "phase 2", + name: "processing", + result: "OK", + series: { + // eslint-disable-next-line camelcase + time: [0, 23, 24], + temperature: [49.2, 48.8, 50] } - }], - series: { - time: [30, 36, 42], - force: [26, 23, 24], - pressure: [52.4, 46.32, 44.2432], - temperature: [45.4243, 46.42342, 44.2432] } - }, { - ts: (new Date(now.valueOf() + 430)).toISOString(), - phase: 'phase 2', - name: 'processing', - result: 'OK', - series: { - // eslint-disable-next-line camelcase - time: [0, 23, 24], - temperature: [49.2, 48.8, 50] - } - }] + ] } }; this.$static.examples = Object.entries({ ...[ - 'content-spec', - 'device', - 'device.deviceID', - 'device.metaData', - 'device.operationalStatus', - 'measurements', - 'measurements[0].code', - 'measurements[0].limits', - 'measurements[0].name', - 'measurements[0].phase', - 'measurements[0].result', - 'measurements[0].series', - 'measurements[0].series.time', - 'measurements[0].specialValues', - 'measurements[0].specialValues[0].time', - 'measurements[0].specialValues[0].name', - 'measurements[0].specialValues[0].value', - 'measurements[0].ts', - 'part', - 'part.code', - 'part.metaData', - 'part.partID', - 'part.partTypeID', - 'part.result', - 'part.type', - 'process', - 'process.externalProcessId', - 'process.metaData', - 'process.program', - 'process.program.id', - 'process.program.lastChangedDate', - 'process.program.name', - 'process.result', - 'process.shutoffPhase', - 'process.shutoffValues', - 'process.ts'] - .reduce((l, v) => { - l[v.replace(/(^|\.)/g, '$1properties.').replace(/\[[^]]*]/g, '.items')] = v; + "content-spec", + "device", + "device.id", + "device.mode", + "measurements", + "part", + "part.code", + "part.id", + "part.result", + "part.type", + "part.typeId", + "process", + "process.externalId", + "process.program", + "process.program.id", + "process.program.lastChangedDate", + "process.program.name", + "process.result", + "process.shutoffPhase", + "process.ts" + ].reduce( + (l, v) => { + l[this.schemafy(v)] = v; + return l; + }, + { + 'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0]': + "measurements[0].context.pressure.limits", + 'properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[1]': + "measurements[0].context.force.limits", + 'properties.measurements.allOf[0].items.properties.series.patternProperties["^[^$]+"]': + "measurements[0].series.force" + } + ), + ...["code", "result", "series", "series.time", "ts"].reduce((l, key) => { + l[ + `properties.measurements.allOf[0].items.${this.schemafy(key)}` + ] = `measurements[0].${key}`; return l; - }, { - 'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0]': 'measurements[0].limits.pressure', - 'properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1]': 'measurements[0].limits.force', - 'properties.measurements.items.properties.series.patternProperties["^[^$]+"]': 'measurements[0].series.force', - 'properties.process.properties.shutoffValues.patternProperties["^[^$]+"]': 'process.shutoffValues.force' - }), - ...['lowerError', 'lowerWarn', 'target', 'upperError', 'upperWarn'].reduce((l, key) => { - l[`properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[0].properties.${key}`] = `measurements[0].limits.pressure.${key}`; - l[`properties.measurements.items.properties.limits.patternProperties["^[^$]+"].oneOf[1].properties.${key}`] = `measurements[0].limits.force.${key}`; - l[`properties.process.properties.shutoffValues.patternProperties["^[^$]+"].properties.${key}`] = `process.shutoffValues.force.${key}` + }, {}), + ...[ + "name", + "phase", + "specialValues", + "specialValues[1].time", + "specialValues[1].name", + "specialValues[1].value" + ].reduce((l, key) => { + l[ + `properties.measurements.allOf[1].items.${this.schemafy(key)}` + ] = `measurements[0].${key}`; + return l; + }, {}), + ...[ + "lowerError", + "lowerWarn", + "target", + "upperError", + "upperWarn" + ].reduce((l, key) => { + l[ + `properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[0].properties.${key}` + ] = `measurements[0].context.pressure.limits.${key}`; + l[ + `properties.measurements.allOf[0].items.properties.context.patternProperties["^[^$]+"].properties.limits.oneOf[1].properties.${key}` + ] = `measurements[0].context.force.limits.${key}`; return l; }, {}) - }).reduce((l, [key, path]) => { - const example = get(this.$static.message, path) || get(this.$static.complexMessage, path); - if(example) { + }).reduce((l, [key, path]) => { + const example = + get(this.$static.message, path) || + get(this.$static.complexMessage, path); + if (example) { l[key] = [example]; + } else { + console.error(`no example provided in process-message for: +"${key}": "${path}"`); } return l; }, {}); @@ -225,6 +258,13 @@ export default { return JSON.stringify(v, " ", 2); } }, + methods: { + schemafy(v) { + return v + .replace(/(^|\.)/g, "$1properties.") + .replace(/\[[^]]*]/g, ".items"); + } + }, components: { card, prism, diff --git a/website/static/images/specification/v3/messagePayload.svg b/website/static/images/specification/v3/messagePayload.svg index 89dc2aa..eec6612 100644 --- a/website/static/images/specification/v3/messagePayload.svg +++ b/website/static/images/specification/v3/messagePayload.svg @@ -1,4 +1,4 @@ -Deviceid: Stringmode[0..1]: Stringstate[0..1]: DeviceStateDeviceStateOKINFOWARNERRORUNKNOWNMessagePayloadcontent-spec : Stringdevice : Devicemessages : MessagesMessagecode : Stringdescription[0..1] : Stringhint[0..1] : StringmetaData[0..1] : <String, String>origin[0..1] : Stringseverity[0..1] : Severitytitle[0..1] : Stringts : Datetype[0..1] : TypeTypeDEVICETECHNICAL_INFOSeverityHIGHMEDIUMLOWUNKNOWNMessages11..*Deviceid: Stringmode[0..1]: Stringstate[0..1]: DeviceStateDeviceStateOKINFOWARNERRORUNKNOWNMessagePayloadcontent-spec : Stringdevice : Devicemessages : MessagesMessagecode : Stringdescription[0..1] : Stringhint[0..1] : Stringorigin[0..1] : Stringseverity[0..1] : Severitytitle[0..1] : Stringts : Datetype[0..1] : TypeTypeDEVICETECHNICAL_INFOSeverityHIGHMEDIUMLOWUNKNOWNMessages11..*