From e2cbc4d0304646febf7e2cbe0dccdf9840189222 Mon Sep 17 00:00:00 2001 From: "Lott, Christopher (cl778h)" Date: Wed, 3 Apr 2019 15:37:08 -0400 Subject: [PATCH] Initial commit of RIC Dashboard webapp Change-Id: Icdb43ba5f077c975632bea965bf1f275dcdace12 Signed-off-by: Lott, Christopher (cl778h) --- .gitattributes | 21 + .gitignore | 39 + .gitreview | 4 + .mvn/wrapper/maven-wrapper.properties | 1 + LICENSES.txt | 30 + README.md | 42 + mvnw | 286 + pom.xml | 72 + webapp-backend/.gitignore | 32 + webapp-backend/pom.xml | 183 + .../ric/portal/dash/DashboardApplication.java | 52 + .../ric/portal/dash/DashboardConstants.java | 29 + .../ric/portal/dash/SwaggerConfiguration.java | 67 + .../ric/portal/dash/XappManagerConfiguration.java | 59 + .../dash/controller/A1MediationController.java | 229 + .../portal/dash/controller/CatalogController.java | 66 + .../dash/controller/XappManagerController.java | 56 + .../ric/portal/dash/model/DelayTransport.java | 55 + .../ric/portal/dash/model/ErrorTransport.java | 98 + .../ric/portal/dash/model/IDashboardResponse.java | 27 + .../ric/portal/dash/model/LoadTransport.java | 45 + .../ric/portal/dash/model/MetricsTransport.java | 65 + .../ric/portal/dash/model/PathTransport.java | 55 + .../ric/portal/dash/model/SuccessTransport.java | 63 + .../ric/portal/dash/model/UrlTransport.java | 55 + .../src/main/resources/application.properties | 28 + webapp-backend/src/main/resources/logback.xml | 68 + .../dash/test/DashboardApplicationTests.java | 35 + webapp-frontend/.gitignore | 39 + webapp-frontend/README.md | 42 + webapp-frontend/angular.json | 149 + webapp-frontend/e2e/protractor.conf.js | 47 + webapp-frontend/e2e/src/app.e2e-spec.ts | 42 + webapp-frontend/e2e/src/app.po.ts | 30 + webapp-frontend/e2e/tsconfig.e2e.json | 13 + webapp-frontend/ng | 27 + webapp-frontend/npm | 27 + webapp-frontend/package-lock.json | 10859 +++++++++++++++++++ webapp-frontend/package.json | 61 + webapp-frontend/pom.xml | 135 + webapp-frontend/proxy.conf.json | 6 + webapp-frontend/src/app/admin/admin.component.css | 40 + webapp-frontend/src/app/admin/admin.component.html | 24 + .../src/app/admin/admin.component.spec.ts | 44 + webapp-frontend/src/app/admin/admin.component.ts | 68 + webapp-frontend/src/app/app-routing.module.ts | 49 + webapp-frontend/src/app/app.component.css | 347 + webapp-frontend/src/app/app.component.html | 106 + webapp-frontend/src/app/app.component.spec.ts | 54 + webapp-frontend/src/app/app.component.ts | 50 + webapp-frontend/src/app/app.module.ts | 107 + .../src/app/catalog/catalog.component.css | 51 + .../src/app/catalog/catalog.component.html | 25 + .../src/app/catalog/catalog.component.spec.ts | 44 + .../src/app/catalog/catalog.component.ts | 74 + .../src/app/control/control.component.css | 40 + .../src/app/control/control.component.html | 25 + .../src/app/control/control.component.spec.ts | 44 + .../src/app/control/control.component.ts | 93 + webapp-frontend/src/app/login/login.component.css | 27 + webapp-frontend/src/app/login/login.component.html | 24 + .../src/app/login/login.component.spec.ts | 44 + webapp-frontend/src/app/login/login.component.ts | 34 + .../sidenav-list/sidenav-list.component.css | 32 + .../sidenav-list/sidenav-list.component.html | 36 + .../sidenav-list/sidenav-list.component.ts | 39 + .../src/app/services/admin/admin.service.spec.ts | 31 + .../src/app/services/admin/admin.service.ts | 55 + .../app/services/catalog/catalog.service.spec.ts | 31 + .../src/app/services/catalog/catalog.service.ts | 34 + .../app/services/control/control.service.spec.ts | 31 + .../src/app/services/control/control.service.ts | 91 + .../src/app/services/stats/stats.service.spec.ts | 31 + .../src/app/services/stats/stats.service.ts | 146 + .../src/app/services/ui/ui.service.spec.ts | 34 + webapp-frontend/src/app/services/ui/ui.service.ts | 32 + webapp-frontend/src/app/stats/stats.component.html | 117 + webapp-frontend/src/app/stats/stats.component.scss | 28 + .../src/app/stats/stats.component.spec.ts | 44 + webapp-frontend/src/app/stats/stats.component.ts | 397 + .../app/ui/catalog-card/catalog-card.component.css | 66 + .../ui/catalog-card/catalog-card.component.html | 36 + .../ui/catalog-card/catalog-card.component.spec.ts | 44 + .../app/ui/catalog-card/catalog-card.component.ts | 49 + .../ui/config-event/config-event.component.html | 89 + .../ui/config-event/config-event.component.scss | 0 .../ui/config-event/config-event.component.spec.ts | 44 + .../app/ui/config-event/config-event.component.ts | 76 + .../app/ui/control-card/control-card.component.css | 66 + .../ui/control-card/control-card.component.html | 37 + .../ui/control-card/control-card.component.spec.ts | 44 + .../app/ui/control-card/control-card.component.ts | 49 + .../app/ui/modal-event/modal-event.component.html | 70 + .../app/ui/modal-event/modal-event.component.scss | 0 .../ui/modal-event/modal-event.component.spec.ts | 44 + .../app/ui/modal-event/modal-event.component.ts | 56 + .../src/app/ui/stat-card/stat-card.component.css | 66 + .../src/app/ui/stat-card/stat-card.component.html | 34 + .../app/ui/stat-card/stat-card.component.spec.ts | 44 + .../src/app/ui/stat-card/stat-card.component.ts | 49 + webapp-frontend/src/app/xapp/xapp.component.html | 77 + webapp-frontend/src/app/xapp/xapp.component.scss | 0 .../src/app/xapp/xapp.component.spec.ts | 44 + webapp-frontend/src/app/xapp/xapp.component.ts | 59 + webapp-frontend/src/assets/ORANlogo.png | Bin 0 -> 61444 bytes webapp-frontend/src/assets/at_t.png | Bin 0 -> 5778 bytes webapp-frontend/src/assets/intelligence.png | Bin 0 -> 278486 bytes webapp-frontend/src/assets/latency.png | Bin 0 -> 13966 bytes webapp-frontend/src/assets/mockdata/db.json | 36 + webapp-frontend/src/assets/mockdata/routes.json | 4 + webapp-frontend/src/assets/oran-logo.png | Bin 0 -> 43935 bytes webapp-frontend/src/assets/profile_default.png | Bin 0 -> 6214 bytes webapp-frontend/src/assets/xAppControl.png | Bin 0 -> 46015 bytes webapp-frontend/src/browserslist | 11 + .../src/environments/environment.prod.ts | 22 + webapp-frontend/src/environments/environment.ts | 35 + webapp-frontend/src/favicon.ico | Bin 0 -> 15086 bytes webapp-frontend/src/index.html | 33 + webapp-frontend/src/karma.conf.js | 50 + webapp-frontend/src/main.ts | 31 + webapp-frontend/src/polyfills.ts | 104 + webapp-frontend/src/styles.scss | 11 + webapp-frontend/src/test.ts | 39 + webapp-frontend/src/tsconfig.app.json | 11 + webapp-frontend/src/tsconfig.spec.json | 18 + webapp-frontend/src/tslint.json | 17 + webapp-frontend/tsconfig.json | 22 + webapp-frontend/tslint.json | 131 + xapp-mgr-client/.gitignore | 4 + xapp-mgr-client/README.md | 19 + xapp-mgr-client/XappManagerClientDemo.java | 51 + xapp-mgr-client/pom.xml | 171 + xapp-mgr-client/xapp_manager_rest_api_v0_0_10.json | 541 + 133 files changed, 18466 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .gitreview create mode 100644 .mvn/wrapper/maven-wrapper.properties create mode 100644 LICENSES.txt create mode 100644 README.md create mode 100755 mvnw create mode 100644 pom.xml create mode 100644 webapp-backend/.gitignore create mode 100644 webapp-backend/pom.xml create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardApplication.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardConstants.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/SwaggerConfiguration.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/XappManagerConfiguration.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/A1MediationController.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/CatalogController.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/XappManagerController.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/DelayTransport.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/ErrorTransport.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/IDashboardResponse.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/LoadTransport.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/MetricsTransport.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/PathTransport.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/SuccessTransport.java create mode 100644 webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/UrlTransport.java create mode 100644 webapp-backend/src/main/resources/application.properties create mode 100644 webapp-backend/src/main/resources/logback.xml create mode 100644 webapp-backend/src/test/java/org/oranosc/ric/portal/dash/test/DashboardApplicationTests.java create mode 100644 webapp-frontend/.gitignore create mode 100644 webapp-frontend/README.md create mode 100644 webapp-frontend/angular.json create mode 100644 webapp-frontend/e2e/protractor.conf.js create mode 100644 webapp-frontend/e2e/src/app.e2e-spec.ts create mode 100644 webapp-frontend/e2e/src/app.po.ts create mode 100644 webapp-frontend/e2e/tsconfig.e2e.json create mode 100755 webapp-frontend/ng create mode 100755 webapp-frontend/npm create mode 100644 webapp-frontend/package-lock.json create mode 100644 webapp-frontend/package.json create mode 100644 webapp-frontend/pom.xml create mode 100644 webapp-frontend/proxy.conf.json create mode 100644 webapp-frontend/src/app/admin/admin.component.css create mode 100644 webapp-frontend/src/app/admin/admin.component.html create mode 100644 webapp-frontend/src/app/admin/admin.component.spec.ts create mode 100644 webapp-frontend/src/app/admin/admin.component.ts create mode 100644 webapp-frontend/src/app/app-routing.module.ts create mode 100644 webapp-frontend/src/app/app.component.css create mode 100644 webapp-frontend/src/app/app.component.html create mode 100644 webapp-frontend/src/app/app.component.spec.ts create mode 100644 webapp-frontend/src/app/app.component.ts create mode 100644 webapp-frontend/src/app/app.module.ts create mode 100644 webapp-frontend/src/app/catalog/catalog.component.css create mode 100644 webapp-frontend/src/app/catalog/catalog.component.html create mode 100644 webapp-frontend/src/app/catalog/catalog.component.spec.ts create mode 100644 webapp-frontend/src/app/catalog/catalog.component.ts create mode 100644 webapp-frontend/src/app/control/control.component.css create mode 100644 webapp-frontend/src/app/control/control.component.html create mode 100644 webapp-frontend/src/app/control/control.component.spec.ts create mode 100644 webapp-frontend/src/app/control/control.component.ts create mode 100644 webapp-frontend/src/app/login/login.component.css create mode 100644 webapp-frontend/src/app/login/login.component.html create mode 100644 webapp-frontend/src/app/login/login.component.spec.ts create mode 100644 webapp-frontend/src/app/login/login.component.ts create mode 100644 webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.css create mode 100644 webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html create mode 100644 webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.ts create mode 100644 webapp-frontend/src/app/services/admin/admin.service.spec.ts create mode 100644 webapp-frontend/src/app/services/admin/admin.service.ts create mode 100644 webapp-frontend/src/app/services/catalog/catalog.service.spec.ts create mode 100644 webapp-frontend/src/app/services/catalog/catalog.service.ts create mode 100644 webapp-frontend/src/app/services/control/control.service.spec.ts create mode 100644 webapp-frontend/src/app/services/control/control.service.ts create mode 100644 webapp-frontend/src/app/services/stats/stats.service.spec.ts create mode 100644 webapp-frontend/src/app/services/stats/stats.service.ts create mode 100644 webapp-frontend/src/app/services/ui/ui.service.spec.ts create mode 100644 webapp-frontend/src/app/services/ui/ui.service.ts create mode 100644 webapp-frontend/src/app/stats/stats.component.html create mode 100644 webapp-frontend/src/app/stats/stats.component.scss create mode 100644 webapp-frontend/src/app/stats/stats.component.spec.ts create mode 100644 webapp-frontend/src/app/stats/stats.component.ts create mode 100644 webapp-frontend/src/app/ui/catalog-card/catalog-card.component.css create mode 100644 webapp-frontend/src/app/ui/catalog-card/catalog-card.component.html create mode 100644 webapp-frontend/src/app/ui/catalog-card/catalog-card.component.spec.ts create mode 100644 webapp-frontend/src/app/ui/catalog-card/catalog-card.component.ts create mode 100644 webapp-frontend/src/app/ui/config-event/config-event.component.html create mode 100644 webapp-frontend/src/app/ui/config-event/config-event.component.scss create mode 100644 webapp-frontend/src/app/ui/config-event/config-event.component.spec.ts create mode 100644 webapp-frontend/src/app/ui/config-event/config-event.component.ts create mode 100644 webapp-frontend/src/app/ui/control-card/control-card.component.css create mode 100644 webapp-frontend/src/app/ui/control-card/control-card.component.html create mode 100644 webapp-frontend/src/app/ui/control-card/control-card.component.spec.ts create mode 100644 webapp-frontend/src/app/ui/control-card/control-card.component.ts create mode 100644 webapp-frontend/src/app/ui/modal-event/modal-event.component.html create mode 100644 webapp-frontend/src/app/ui/modal-event/modal-event.component.scss create mode 100644 webapp-frontend/src/app/ui/modal-event/modal-event.component.spec.ts create mode 100644 webapp-frontend/src/app/ui/modal-event/modal-event.component.ts create mode 100644 webapp-frontend/src/app/ui/stat-card/stat-card.component.css create mode 100644 webapp-frontend/src/app/ui/stat-card/stat-card.component.html create mode 100644 webapp-frontend/src/app/ui/stat-card/stat-card.component.spec.ts create mode 100644 webapp-frontend/src/app/ui/stat-card/stat-card.component.ts create mode 100644 webapp-frontend/src/app/xapp/xapp.component.html create mode 100644 webapp-frontend/src/app/xapp/xapp.component.scss create mode 100644 webapp-frontend/src/app/xapp/xapp.component.spec.ts create mode 100644 webapp-frontend/src/app/xapp/xapp.component.ts create mode 100644 webapp-frontend/src/assets/ORANlogo.png create mode 100644 webapp-frontend/src/assets/at_t.png create mode 100644 webapp-frontend/src/assets/intelligence.png create mode 100644 webapp-frontend/src/assets/latency.png create mode 100644 webapp-frontend/src/assets/mockdata/db.json create mode 100644 webapp-frontend/src/assets/mockdata/routes.json create mode 100644 webapp-frontend/src/assets/oran-logo.png create mode 100644 webapp-frontend/src/assets/profile_default.png create mode 100644 webapp-frontend/src/assets/xAppControl.png create mode 100644 webapp-frontend/src/browserslist create mode 100644 webapp-frontend/src/environments/environment.prod.ts create mode 100644 webapp-frontend/src/environments/environment.ts create mode 100644 webapp-frontend/src/favicon.ico create mode 100644 webapp-frontend/src/index.html create mode 100644 webapp-frontend/src/karma.conf.js create mode 100644 webapp-frontend/src/main.ts create mode 100644 webapp-frontend/src/polyfills.ts create mode 100644 webapp-frontend/src/styles.scss create mode 100644 webapp-frontend/src/test.ts create mode 100644 webapp-frontend/src/tsconfig.app.json create mode 100644 webapp-frontend/src/tsconfig.spec.json create mode 100644 webapp-frontend/src/tslint.json create mode 100644 webapp-frontend/tsconfig.json create mode 100644 webapp-frontend/tslint.json create mode 100644 xapp-mgr-client/.gitignore create mode 100644 xapp-mgr-client/README.md create mode 100644 xapp-mgr-client/XappManagerClientDemo.java create mode 100644 xapp-mgr-client/pom.xml create mode 100644 xapp-mgr-client/xapp_manager_rest_api_v0_0_10.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..38b6a858 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,21 @@ +# https://help.github.com/articles/dealing-with-line-endings/ + +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized +# and converted to native line endings on checkout. +*.css text +*.htm text diff=html +*.html text diff=html +*.java text diff=java +*.js text +*.jsp text +*.less text +*.properties text +*.sql text +*.xml text + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9eacc902 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node +/node_modules + +/.classpath +/.project +/.settings +/target/ +/.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/.gitreview b/.gitreview new file mode 100644 index 00000000..9b79e644 --- /dev/null +++ b/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=gerrit.oran-osc.org +port=29418 +project=portal/ric-dashboard.git diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..cd0d451c --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip diff --git a/LICENSES.txt b/LICENSES.txt new file mode 100644 index 00000000..4ec63577 --- /dev/null +++ b/LICENSES.txt @@ -0,0 +1,30 @@ +LICENSES.txt + +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the "Software License"); +you may not use this software except in compliance with the Software +License. You may obtain a copy of the Software License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the Software License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the Software License for the specific language governing permissions +and limitations under the Software License. + + + +Unless otherwise specified, all documentation contained herein is licensed +under the Creative Commons License, Attribution 4.0 Intl. (the +"Documentation License"); you may not use this documentation except in +compliance with the Documentation License. You may obtain a copy of the +Documentation License at + +https://creativecommons.org/licenses/by/4.0/ + +Unless required by applicable law or agreed to in writing, documentation +distributed under the Documentation License is distributed on an "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the Documentation License for the specific language governing +permissions and limitations under the Documentation License. diff --git a/README.md b/README.md new file mode 100644 index 00000000..5553352c --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# ORAN-OSC RIC Dashboard Web Application + +This webapp is built with Angular 7 and Spring-Boot 2. + +## Getting started + +To install prerequisites on Mac OSX, first install nvm then continue with node: + + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash + +Then: + + nvm install stable + nvm install node + +To run the web app: + + cd ric-dashboard/ang7-sb2 + mvn clean install + + cd ric-dashboard/ang7-sb2/backend/ + mvn spring-boot:run + +To debug the frontend and backend for Angular developers: + + cd ric-dashboard/ang7-sb2/frontend/src/main/web/src/app + ./ng serve --proxy-config proxy.conf.json + +## License + +Copyright (C) 2019 AT&T Intellectual Property & Nokia. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/mvnw b/mvnw new file mode 100755 index 00000000..5551fde8 --- /dev/null +++ b/mvnw @@ -0,0 +1,286 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + wget "$jarUrl" -O "$wrapperJarPath" + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + curl -o "$wrapperJarPath" "$jarUrl" + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..a6d0af73 --- /dev/null +++ b/pom.xml @@ -0,0 +1,72 @@ + + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + + org.oranosc.ric.portal.dashboard + ric-dash-parent + RIC Dashboard project + pom + 1.0.0-SNAPSHOT + + + AT&T Intellectual Property and Nokia + ORAN-OSC + 2019 + apache_v2 + ========================LICENSE_START================================= + ========================LICENSE_END=================================== + + + webapp-frontend + webapp-backend + xapp-mgr-client + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + true + + + + + + + org.codehaus.mojo + license-maven-plugin + 1.19 + + + + + diff --git a/webapp-backend/.gitignore b/webapp-backend/.gitignore new file mode 100644 index 00000000..0367d238 --- /dev/null +++ b/webapp-backend/.gitignore @@ -0,0 +1,32 @@ +/.classpath +/.project +/.settings +/target/ +/logs/ +/.mvn/wrapper/maven-wrapper.jar +/logs/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ + +/application-tlab2.properties diff --git a/webapp-backend/pom.xml b/webapp-backend/pom.xml new file mode 100644 index 00000000..b8657ca7 --- /dev/null +++ b/webapp-backend/pom.xml @@ -0,0 +1,183 @@ + + + + 4.0.0 + + org.oranosc.ric.portal.dashboard + ric-dash-parent + 1.0.0-SNAPSHOT + + ric-dash-be + RIC Dashboard Webapp backend + + 1.8 + 2.9.2 + ${env.NEXUS3_PUSH_REGISTRY} + + + + ${project.groupId} + xapp-mgr-client + 0.0.10-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + org.slf4j + slf4j-api + + + + ch.qos.logback + logback-classic + + + + ch.qos.logback + logback-core + + + + io.springfox + springfox-swagger2 + ${springfox.version} + + + io.springfox + springfox-swagger-ui + ${springfox.version} + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + true + + + + org.codehaus.mojo + license-maven-plugin + + + + update-file-header + + process-sources + + ${lmp.organization.name} + ${lmp.inception.year} + ${lmp.project.name} + ${lmp.license.name} + ${lmp.process.start.tag} + ${lmp.process.end.tag} + false + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + maven-resources-plugin + + + + copy-resources + validate + + copy-resources + + + ${project.build.directory}/classes/resources/ + + + ${project.parent.basedir}/webapp-frontend/dist/dashApp/ + + + + + + + + + io.fabric8 + docker-maven-plugin + 0.28.0 + + true + + nexus3.oran-osc.org:10001 + ${docker.push.registry} + + + + ${project.artifactId}:${project.version} + + openjdk:8-jre-slim + + + ${project.version} + + + artifact + + + + mkdir /maven/logs + chmod -R 777 /maven + + + + + + + + + + + + + + build + push + + + + + + + diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardApplication.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardApplication.java new file mode 100644 index 00000000..6f413922 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardApplication.java @@ -0,0 +1,52 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash; + +import java.lang.invoke.MethodHandles; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DashboardApplication { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static void main(String[] args) { + SpringApplication.run(DashboardApplication.class, args); + // Force this onto the console by using level WARN + logger.warn("main: version '{}' successful start", getVersion()); + } + + /** + * Gets version details. + * + * @return the value of the MANIFEST.MF property Implementation-Version as + * written by maven when packaged in a jar; 'unknown' otherwise. + */ + private static String getVersion() { + Class clazz = MethodHandles.lookup().lookupClass(); + String classPath = clazz.getResource(clazz.getSimpleName() + ".class").toString(); + return classPath.startsWith("jar") ? clazz.getPackage().getImplementationVersion() : "unknown"; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardConstants.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardConstants.java new file mode 100644 index 00000000..b63f0887 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/DashboardConstants.java @@ -0,0 +1,29 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash; + +public abstract class DashboardConstants { + + private DashboardConstants() { + // Sonar insists on hiding the constructor + } + + public static final String ENDPOINT_PREFIX = "/api/"; +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/SwaggerConfiguration.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/SwaggerConfiguration.java new file mode 100644 index 00000000..76032328 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/SwaggerConfiguration.java @@ -0,0 +1,67 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api + */ +@Configuration +@EnableSwagger2 +public class SwaggerConfiguration { + + /** + * @return new Docket + */ + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2).select() // + .apis(RequestHandlerSelectors.basePackage(DashboardApplication.class.getPackage().getName())) // + .paths(PathSelectors.any()) // + .build() // + .apiInfo(apiInfo()); + } + + private ApiInfo apiInfo() { + final String version = DashboardApplication.class.getPackage().getImplementationVersion(); + return new ApiInfoBuilder() // + .title("RIC Dashboard backend") // + .description("Provides demonstration services.")// + .termsOfServiceUrl("Terms of service") // + .contact(new Contact("RIC Dashboard Dev Team", // + "http://no-docs-yet.org/", // + "noreply@oran-osc.org")) // + .license("Apache 2.0 License").licenseUrl("http://www.apache.org/licenses/LICENSE-2.0") // + .version(version == null ? "version not available" : version) // + .build(); + } +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/XappManagerConfiguration.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/XappManagerConfiguration.java new file mode 100644 index 00000000..b0f04a77 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/XappManagerConfiguration.java @@ -0,0 +1,59 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash; + +import org.oranosc.ric.portal.dashboard.xmc.api.DefaultApi; +import org.oranosc.ric.portal.dashboard.xmc.invoker.ApiClient; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +@ComponentScan("org.oranosc.ric.portal") +public class XappManagerConfiguration { + + @Value("${xapp.manager.base.url}") + private String xappManagerBaseUrl; + + /** + * Required by autowired constructor {@link DefaultApi#DefaultApi(ApiClient)} + * + * @return Instance of ApiClient configured from properties + */ + @Bean + public ApiClient apiClient() { + ApiClient apiClient = new ApiClient(); + apiClient.setBasePath(xappManagerBaseUrl); + return apiClient; + } + + /** + * Required by autowired constructor {@link ApiClient#ApiClient(RestTemplate)} + * + * @return Instance of RestTemplate + */ + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/A1MediationController.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/A1MediationController.java new file mode 100644 index 00000000..f4987291 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/A1MediationController.java @@ -0,0 +1,229 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash.controller; + +import java.lang.invoke.MethodHandles; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; + +import javax.servlet.http.HttpServletResponse; + +import org.oranosc.ric.portal.dash.DashboardConstants; +import org.oranosc.ric.portal.dash.model.DelayTransport; +import org.oranosc.ric.portal.dash.model.ErrorTransport; +import org.oranosc.ric.portal.dash.model.IDashboardResponse; +import org.oranosc.ric.portal.dash.model.LoadTransport; +import org.oranosc.ric.portal.dash.model.MetricsTransport; +import org.oranosc.ric.portal.dash.model.PathTransport; +import org.oranosc.ric.portal.dash.model.SuccessTransport; +import org.oranosc.ric.portal.dash.model.UrlTransport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import io.swagger.annotations.ApiOperation; + +/** + * Provides endpoints to get/set paths, AND to access the REST resources at + * those paths. This allows very late binding of deployment details. + */ +@Configuration +@RestController +@RequestMapping(value = DashboardConstants.ENDPOINT_PREFIX + "/a1med", produces = MediaType.APPLICATION_JSON_VALUE) +public class A1MediationController { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + private static final String A1_MEDIATION_URL = "url"; + private static final String A1_MEDIATION_DELAY = "delay"; + private static final String A1_MEDIATION_DELAY_PATH = A1_MEDIATION_DELAY + "path"; + private static final String A1_MEDIATION_LOAD = "load"; + private static final String A1_MEDIATION_LOAD_PATH = A1_MEDIATION_LOAD + "path"; + private static final String A1_MEDIATION_METRICS = "metrics"; + private static final String A1_MEDIATION_METRICS_PATH = A1_MEDIATION_METRICS + "path"; + + @Value("${a1.mediation.url}") + private String a1MediationUrl; + @Value("${a1.mediation.delay.path}") + private String a1MediationDelayPath; + @Value("${a1.mediation.load.path}") + private String a1MediationLoadPath; + @Value("${a1.mediation.metrics.path}") + private String a1MediationMetricsPath; + + // For demo purposes + private final boolean mockData = true; + private final DelayTransport mockDelay = new DelayTransport(10); + private final LoadTransport mockLoad = new LoadTransport(1); + private final MetricsTransport mockMetrics = new MetricsTransport(11, 100, 123); + + private final RestTemplate restTemplate = new RestTemplate(); + + private URI buildUri(final String baseUrl, final String[] paths) { + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl); + for (int p = 0; p < paths.length; ++p) { + if (paths[p] == null) + throw new IllegalArgumentException("Unexpected null at index " + Integer.toString(p)); + // this allows slashes + builder.path(paths[p]); + } + return builder.build().encode().toUri(); + } + + @ApiOperation(value = "Gets the A1 Mediation URL.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_URL, method = RequestMethod.GET) + public IDashboardResponse getA1MediationUrl() { + return new UrlTransport(a1MediationUrl); + } + + @ApiOperation(value = "Sets the A1 Mediation URL.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_URL, method = RequestMethod.PUT) + public IDashboardResponse setA1MediationUrl(@RequestBody UrlTransport st, HttpServletResponse response) { + try { + this.a1MediationUrl = new URL(st.getUrl()).toString(); + return new SuccessTransport(HttpServletResponse.SC_OK, null); + } catch (MalformedURLException ex) { + logger.error("Failed to parse url " + st.getUrl(), ex); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + return new ErrorTransport(400, "Bad URL", ex); + } + } + + @ApiOperation(value = "Gets the A1 Mediation delay path.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_DELAY_PATH, method = RequestMethod.GET) + public IDashboardResponse getA1MediationDelayPath() { + return new PathTransport(a1MediationDelayPath); + } + + @ApiOperation(value = "Sets the A1 Mediation delay path.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_DELAY_PATH, method = RequestMethod.PUT) + public IDashboardResponse setA1MediationDelayPath(@RequestBody PathTransport st) { + this.a1MediationDelayPath = st.getPath(); + return new SuccessTransport(HttpServletResponse.SC_OK, null); + } + + @ApiOperation(value = "Gets the A1 Mediation load path.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_LOAD_PATH, method = RequestMethod.GET) + public IDashboardResponse getA1MediationLoadPath() { + return new PathTransport(a1MediationLoadPath); + } + + @ApiOperation(value = "Sets the A1 Mediation load path.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_LOAD_PATH, method = RequestMethod.PUT) + public IDashboardResponse setA1MediationLoadPath(@RequestBody PathTransport st) { + this.a1MediationLoadPath = st.getPath(); + return new SuccessTransport(HttpServletResponse.SC_OK, null); + } + + @ApiOperation(value = "Gets the A1 Mediation metrics path.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_METRICS_PATH, method = RequestMethod.GET) + public IDashboardResponse getA1MediationMetricsPath() { + return new PathTransport(a1MediationMetricsPath); + } + + @ApiOperation(value = "Sets the A1 Mediation metrics path.", response = IDashboardResponse.class) + @RequestMapping(value = A1_MEDIATION_METRICS_PATH, method = RequestMethod.PUT) + public IDashboardResponse setA1MediationMetricsPath(@RequestBody PathTransport st) { + this.a1MediationMetricsPath = st.getPath(); + return new SuccessTransport(HttpServletResponse.SC_OK, null); + } + + @ApiOperation(value = "Gets the A1 Mediation delay value.", response = DelayTransport.class) + @RequestMapping(value = A1_MEDIATION_DELAY, method = RequestMethod.GET) + public DelayTransport getA1MediationDelay() { + if (mockData) { + return mockDelay; + } else { + URI uri = buildUri(a1MediationUrl, new String[] { a1MediationDelayPath }); + logger.debug("getA1MediationDelay: uri {}", uri); + ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, null, + new ParameterizedTypeReference() { + }); + return response.getBody(); + } + } + + @ApiOperation(value = "Sets the A1 Mediation delay value.") + @RequestMapping(value = A1_MEDIATION_DELAY, method = RequestMethod.PUT) + public void putA1MediationDelay(DelayTransport value) { + if (mockData) { + mockDelay.setDelay(value.getDelay()); + } else { + URI uri = buildUri(a1MediationUrl, new String[] { a1MediationDelayPath }); + logger.debug("putA1MediationDelay: uri {}", uri); + restTemplate.put(uri, value); + } + } + + @ApiOperation(value = "Gets the A1 Mediation load value.", response = LoadTransport.class) + @RequestMapping(value = A1_MEDIATION_LOAD, method = RequestMethod.GET) + public LoadTransport getA1MediationLoad() { + if (mockData) { + return mockLoad; + } else { + URI uri = buildUri(a1MediationUrl, new String[] { a1MediationLoadPath }); + logger.debug("getA1MediationLoad: uri {}", uri); + ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, null, + new ParameterizedTypeReference() { + }); + return response.getBody(); + } + } + + @ApiOperation(value = "Sets the A1 Mediation delay value.") + @RequestMapping(value = A1_MEDIATION_LOAD, method = RequestMethod.PUT) + public void putA1MediationLoad(LoadTransport value) { + if (mockData) { + mockLoad.setLoad(value.getLoad()); + } else { + URI uri = buildUri(a1MediationUrl, new String[] { a1MediationDelayPath }); + logger.debug("putA1MediationLoad: uri {}", uri); + restTemplate.put(uri, value); + } + } + + @ApiOperation(value = "Gets the A1 Mediation metrics object.", response = MetricsTransport.class) + @RequestMapping(value = A1_MEDIATION_METRICS, method = RequestMethod.GET) + public MetricsTransport getA1MediationMetrics() { + if (mockData) { + return mockMetrics; + } else { + URI uri = buildUri(a1MediationUrl, new String[] { a1MediationLoadPath }); + logger.debug("getA1MediationMetrics: uri {}", uri); + ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, null, + new ParameterizedTypeReference() { + }); + return response.getBody(); + } + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/CatalogController.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/CatalogController.java new file mode 100644 index 00000000..3b8d998b --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/CatalogController.java @@ -0,0 +1,66 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash.controller; + +import java.lang.invoke.MethodHandles; + +import org.oranosc.ric.portal.dash.DashboardConstants; +import org.oranosc.ric.portal.dashboard.xmc.model.AllXapps; +import org.oranosc.ric.portal.dashboard.xmc.model.Xapp; +import org.oranosc.ric.portal.dashboard.xmc.model.Xapp.StatusEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = DashboardConstants.ENDPOINT_PREFIX + "/catalog", produces = MediaType.APPLICATION_JSON_VALUE) +public class CatalogController { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @RequestMapping(method = RequestMethod.GET) + public AllXapps getXapps() { + logger.debug("getXapps: enter"); + return populateCatalog(); + } + + // @TODO This method to be removed when endpoint for data fetch from RIC team + // available + private AllXapps populateCatalog() { + AllXapps cList = new AllXapps(); + cList.add(buildXapp("Pendulum Control", "v1", StatusEnum.DEPLOYED)); + cList.add(buildXapp("Dual Connectivity", "v2", StatusEnum.DELETED)); + cList.add(buildXapp("Admission Control", "v1", StatusEnum.FAILED)); + cList.add(buildXapp("ANR Control", "v0", StatusEnum.SUPERSEDED)); + return cList; + } + + private Xapp buildXapp(String name, String version, StatusEnum status) { + Xapp xapp = new Xapp(); + xapp.setName(name); + xapp.setVersion(version); + xapp.setStatus(status); + return xapp; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/XappManagerController.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/XappManagerController.java new file mode 100644 index 00000000..1e4e5224 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/controller/XappManagerController.java @@ -0,0 +1,56 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash.controller; + +import java.lang.invoke.MethodHandles; + +import org.oranosc.ric.portal.dash.DashboardConstants; +import org.oranosc.ric.portal.dashboard.xmc.api.DefaultApi; +import org.oranosc.ric.portal.dashboard.xmc.model.AllXapps; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.annotations.ApiOperation; + +@Configuration +@RestController +@RequestMapping(value = DashboardConstants.ENDPOINT_PREFIX + "/xappmgr", produces = MediaType.APPLICATION_JSON_VALUE) +public class XappManagerController { + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Autowired + private DefaultApi xappManagerClient; + + @ApiOperation(value = "Gets the list of xApps from the xApp manager.", response = AllXapps.class) + @RequestMapping(value = "/xapps", method = RequestMethod.GET) + public AllXapps getAllXapps() { + logger.debug("getAllXapps via " + xappManagerClient.getApiClient().getBasePath()); + AllXapps all = xappManagerClient.getAllXapps(); + return all; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/DelayTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/DelayTransport.java new file mode 100644 index 00000000..fe924d96 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/DelayTransport.java @@ -0,0 +1,55 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash.model; + +/** + * Trivial model to transport a number, to be serialized as JSON. + */ +public class DelayTransport implements IDashboardResponse { + + private Integer delay; + + /** + * Builds an empty object. + */ + public DelayTransport() { + // no-arg constructor + } + + /** + * Builds an object with the specified value. + * + * @param i + * value to transport. + */ + public DelayTransport(Integer i) { + this.delay = i; + } + + public Integer getDelay() { + return delay; + } + + public void setDelay(Integer i) { + this.delay = i; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/ErrorTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/ErrorTransport.java new file mode 100644 index 00000000..4bf90337 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/ErrorTransport.java @@ -0,0 +1,98 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash.model; + +/** + * Model for message returned on failure, to be serialized as JSON. + */ +public class ErrorTransport implements IDashboardResponse { + + private Integer status; + private String error; + private String exception; + + /** + * Builds an empty object. + */ + public ErrorTransport() { + // no-arg constructor + } + + /** + * Builds an object with the specified values. + * + * @param statusCode + * Integer value like 400 + * @param errMsg + * Explanation + */ + public ErrorTransport(int statusCode, String errMsg) { + this(statusCode, errMsg, null); + } + + /** + * Builds an object with the specified status code, message and a String version + * of the exception. + * + * @param statusCode + * Integer value like 500 + * @param errMsg + * Explanation + * @param exception + * Exception that should be reported; optional and ignored + * if null. + */ + public ErrorTransport(int statusCode, String errMsg, Exception exception) { + this.status = statusCode; + this.error = errMsg; + if (exception != null) { + final int enough = 512; + String exString = exception.toString(); + String exceptionMsg = exString.length() > enough ? exString.substring(0, enough) : exString; + this.exception = exceptionMsg; + } + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getError() { + return error; + } + + public void setError(String error) { + this.error = error; + } + + public String getException() { + return exception; + } + + public void setException(String exception) { + this.exception = exception; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/IDashboardResponse.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/IDashboardResponse.java new file mode 100644 index 00000000..1cb0ca15 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/IDashboardResponse.java @@ -0,0 +1,27 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash.model; + +/** + * Marker interface used by all transport models. + */ +public interface IDashboardResponse { + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/LoadTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/LoadTransport.java new file mode 100644 index 00000000..7d142bd3 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/LoadTransport.java @@ -0,0 +1,45 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash.model; + +/** + * Trivial model to transport a number, to be serialized as JSON. + */ +public class LoadTransport implements IDashboardResponse { + + public LoadTransport() { + } + + public LoadTransport(Integer load) { + this.load = load; + } + + private Integer load; + + public Integer getLoad() { + return load; + } + + public void setLoad(Integer i) { + this.load = i; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/MetricsTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/MetricsTransport.java new file mode 100644 index 00000000..38f3fc79 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/MetricsTransport.java @@ -0,0 +1,65 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash.model; + +/** + * Trivial model to transport a batch of numbers, to be serialized as JSON. + */ +public class MetricsTransport implements IDashboardResponse { + + private Integer latency; + private Integer load; + private Integer time; + + public MetricsTransport() { + } + + public MetricsTransport(Integer latency, Integer load, Integer time) { + this.latency = latency; + this.load = load; + this.time = time; + } + + public Integer getLatency() { + return latency; + } + + public void setLatency(Integer latency) { + this.latency = latency; + } + + public Integer getLoad() { + return load; + } + + public void setLoad(Integer load) { + this.load = load; + } + + public Integer getTime() { + return time; + } + + public void setTime(Integer time) { + this.time = time; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/PathTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/PathTransport.java new file mode 100644 index 00000000..5a155087 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/PathTransport.java @@ -0,0 +1,55 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash.model; + +/** + * Trivial model to transport a path, to be serialized as JSON. + */ +public class PathTransport implements IDashboardResponse { + + private String path; + + /** + * Builds an empty object. + */ + public PathTransport() { + // no-arg constructor + } + + /** + * Builds an object with the specified value. + * + * @param s + * value to transport. + */ + public PathTransport(String s) { + this.path = s; + } + + public String getPath() { + return path; + } + + public void setPath(String s) { + this.path = s; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/SuccessTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/SuccessTransport.java new file mode 100644 index 00000000..ceba0ae5 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/SuccessTransport.java @@ -0,0 +1,63 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash.model; + +public class SuccessTransport implements IDashboardResponse { + + private int status; + private Object data; + + /** + * Builds an empty object + */ + public SuccessTransport() { + // no-arg constructor + } + + /** + * Builds an object with the specified values. + * + * @param status + * Status code + * @param data + * Data to transport + */ + public SuccessTransport(int status, Object data) { + this.status = status; + this.data = data; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + +} diff --git a/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/UrlTransport.java b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/UrlTransport.java new file mode 100644 index 00000000..cf7f7408 --- /dev/null +++ b/webapp-backend/src/main/java/org/oranosc/ric/portal/dash/model/UrlTransport.java @@ -0,0 +1,55 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +package org.oranosc.ric.portal.dash.model; + +/** + * Trivial model to transport a URL, to be serialized as JSON. + */ +public class UrlTransport implements IDashboardResponse { + + private String url; + + /** + * Builds an empty object. + */ + public UrlTransport() { + // no-arg constructor + } + + /** + * Builds an object with the specified value. + * + * @param s + * value to transport. + */ + public UrlTransport(String s) { + this.url = s; + } + + public String getUrl() { + return url; + } + + public void setUrl(String s) { + this.url = s; + } + +} diff --git a/webapp-backend/src/main/resources/application.properties b/webapp-backend/src/main/resources/application.properties new file mode 100644 index 00000000..1c2f09b2 --- /dev/null +++ b/webapp-backend/src/main/resources/application.properties @@ -0,0 +1,28 @@ +### +# ========================LICENSE_START================================= +# ORAN-OSC +# %% +# Copyright (C) 2019 AT&T Intellectual Property and Nokia +# %% +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ========================LICENSE_END=================================== +### +# Default properties for the RIC Dashboard backend REST server + +# A1 mediation URL is editable +a1.mediation.url = http://localhost:12345 +a1.mediation.delay.path = /a1ric/delay +a1.mediation.load.path = /a1ric/load +a1.mediation.metrics.path = /a1ric/metrics + +xapp.manager.base.url = http://localhost:30099 \ No newline at end of file diff --git a/webapp-backend/src/main/resources/logback.xml b/webapp-backend/src/main/resources/logback.xml new file mode 100644 index 00000000..8291117e --- /dev/null +++ b/webapp-backend/src/main/resources/logback.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + ${pattern} + + + + + ${logDirectory}/${componentName}.log + true + + ${logDirectory}/${componentName}.%i.log.zip + 1 + 5 + + + 1MB + + + + ${pattern} + + + + + + + + + + > + + + diff --git a/webapp-backend/src/test/java/org/oranosc/ric/portal/dash/test/DashboardApplicationTests.java b/webapp-backend/src/test/java/org/oranosc/ric/portal/dash/test/DashboardApplicationTests.java new file mode 100644 index 00000000..da74ba5e --- /dev/null +++ b/webapp-backend/src/test/java/org/oranosc/ric/portal/dash/test/DashboardApplicationTests.java @@ -0,0 +1,35 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dash.test; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class DashboardApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/webapp-frontend/.gitignore b/webapp-frontend/.gitignore new file mode 100644 index 00000000..9eacc902 --- /dev/null +++ b/webapp-frontend/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node +/node_modules + +/.classpath +/.project +/.settings +/target/ +/.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/webapp-frontend/README.md b/webapp-frontend/README.md new file mode 100644 index 00000000..2e15b6f0 --- /dev/null +++ b/webapp-frontend/README.md @@ -0,0 +1,42 @@ +# RIC Dashboard Web Application Frontend + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). + +## License + +Copyright (C) 2019 AT&T Intellectual Property & Nokia. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/webapp-frontend/angular.json b/webapp-frontend/angular.json new file mode 100644 index 00000000..76246fba --- /dev/null +++ b/webapp-frontend/angular.json @@ -0,0 +1,149 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "dashApp": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": { + "@schematics/angular:component": { + "styleext": "scss" + } + }, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/dashApp", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss", + "node_modules/@fortawesome/fontawesome-free/scss/solid.scss", + "node_modules/@fortawesome/fontawesome-free/scss/regular.scss", + "node_modules/@fortawesome/fontawesome-free/scss/brands.scss", + "node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss", + "node_modules/angular-bootstrap-md/scss/mdb-free.scss", + "node_modules/material-design-icons/iconfont/material-icons.css", + "src/styles.scss" + ], + "scripts": [ + "node_modules/chart.js/dist/Chart.js", + "node_modules/hammerjs/hammer.min.js" + ] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "dashApp:build" + }, + "configurations": { + "production": { + "browserTarget": "dashApp:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "dashApp:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "dashApp-e2e": { + "root": "e2e/", + "projectType": "application", + "prefix": "", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "dashApp:serve" + }, + "configurations": { + "production": { + "devServerTarget": "dashApp:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "dashApp" +} diff --git a/webapp-frontend/e2e/protractor.conf.js b/webapp-frontend/e2e/protractor.conf.js new file mode 100644 index 00000000..2ee50af1 --- /dev/null +++ b/webapp-frontend/e2e/protractor.conf.js @@ -0,0 +1,47 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/webapp-frontend/e2e/src/app.e2e-spec.ts b/webapp-frontend/e2e/src/app.e2e-spec.ts new file mode 100644 index 00000000..b3fba351 --- /dev/null +++ b/webapp-frontend/e2e/src/app.e2e-spec.ts @@ -0,0 +1,42 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to dashApp!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + })); + }); +}); diff --git a/webapp-frontend/e2e/src/app.po.ts b/webapp-frontend/e2e/src/app.po.ts new file mode 100644 index 00000000..ffb08618 --- /dev/null +++ b/webapp-frontend/e2e/src/app.po.ts @@ -0,0 +1,30 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/') as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/webapp-frontend/e2e/tsconfig.e2e.json b/webapp-frontend/e2e/tsconfig.e2e.json new file mode 100644 index 00000000..a6dd6220 --- /dev/null +++ b/webapp-frontend/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/webapp-frontend/ng b/webapp-frontend/ng new file mode 100755 index 00000000..a70d1b1a --- /dev/null +++ b/webapp-frontend/ng @@ -0,0 +1,27 @@ +#!/bin/sh +# +# The MIT License +# +# Copyright (c) 2010-2019 Google LLC. http://angular.io/license +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +cd $(dirname $0) +PATH="$PWD/node/":"$PWD":$PATH +node_modules/@angular/cli/bin/ng "$@" diff --git a/webapp-frontend/npm b/webapp-frontend/npm new file mode 100755 index 00000000..7b88bcea --- /dev/null +++ b/webapp-frontend/npm @@ -0,0 +1,27 @@ +#!/bin/sh +# +# The MIT License +# +# Copyright (c) 2010-2019 Google LLC. http://angular.io/license +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +cd $(dirname $0) +PATH="$PWD/node/":$PATH +node "node/node_modules/npm/bin/npm-cli.js" "$@" diff --git a/webapp-frontend/package-lock.json b/webapp-frontend/package-lock.json new file mode 100644 index 00000000..82dfbedb --- /dev/null +++ b/webapp-frontend/package-lock.json @@ -0,0 +1,10859 @@ +{ + "name": "dash-app", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.12.3.tgz", + "integrity": "sha512-nRZkuQkUMW0HS/YbVjsEA5zPMgsL4Icd0nFV2gM9vAK5X+Vzn9gZyCL1ogkOsJNlEP6Rc/Pc6Q1PPO2p5NxPsQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.2.3", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/build-angular": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.12.3.tgz", + "integrity": "sha512-YS/xwpJ23F4Cw/gWxJvVzQ3ghYqs8nOAYyV/+frZ/ZbOE3iYWnRjwoeWmKhmgBjvTjEnoDne9PYYkQRCxmVBaA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.12.3", + "@angular-devkit/build-optimizer": "0.12.3", + "@angular-devkit/build-webpack": "0.12.3", + "@angular-devkit/core": "7.2.3", + "@ngtools/webpack": "7.2.3", + "ajv": "6.6.2", + "autoprefixer": "9.4.3", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.2.1", + "copy-webpack-plugin": "4.6.0", + "file-loader": "2.0.0", + "glob": "7.1.3", + "istanbul": "0.4.5", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.3.0", + "less": "3.9.0", + "less-loader": "4.1.0", + "license-webpack-plugin": "2.0.4", + "loader-utils": "1.1.0", + "mini-css-extract-plugin": "0.4.4", + "minimatch": "3.0.4", + "node-sass": "4.10.0", + "opn": "5.4.0", + "parse5": "4.0.0", + "portfinder": "1.0.17", + "postcss": "7.0.13", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "0.5.1", + "rxjs": "6.3.3", + "sass-loader": "7.1.0", + "semver": "5.5.1", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.9", + "speed-measure-webpack-plugin": "1.2.5", + "stats-webpack-plugin": "0.7.0", + "style-loader": "0.23.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser-webpack-plugin": "1.2.1", + "tree-kill": "1.2.0", + "webpack": "4.28.4", + "webpack-dev-middleware": "3.4.0", + "webpack-dev-server": "3.1.14", + "webpack-merge": "4.1.4", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.1.0-rc.6" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.12.3.tgz", + "integrity": "sha512-wwukO6SDP/vPxXwiW7U58EeU1xwylrrEiNWS8JTwkBE/AGQNt0+c7ExNw2ViKL3oBgSpz/6YY2eGrv0aatzfIA==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.6", + "typescript": "3.2.4", + "webpack-sources": "1.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "webpack-sources": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", + "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.12.3.tgz", + "integrity": "sha512-yzsluzemzmhVxiSdgP03D770lSpAvlJF+k/E5rSb0tS9yENWTgodxMJSP8gRcveZzVW0lVvRUGKucDWyt3vnPQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.12.3", + "@angular-devkit/core": "7.2.3", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.2.3.tgz", + "integrity": "sha512-NnN8O+97nJAxqD2zVTDlU8dSzrGCZmqYMDqDoRJJChYxAgmGwP4lhb+Jyi5D34tPxgKRTnjTOwC+G7D+WrXSDQ==", + "dev": true, + "requires": { + "ajv": "6.6.2", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.2.3.tgz", + "integrity": "sha512-zhnI1zxEcjx4OZ0yIzAAOujS8fzXE6nxjyC1viqliQbbjbikA6WIL7UT0jQXZKDsRBl8VXOyutBOaeOXuqktTQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.2.3", + "rxjs": "6.3.3" + } + }, + "@angular/animations": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.2.tgz", + "integrity": "sha512-St03YR3N4Rv0vLr0+3V0kmf/QNi9q0tOenAlHP+jG/YySPkkv8P3xRcGVU38ID4JQzRiShUD+k2r+oZGCQMNjw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cdk": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.3.3.tgz", + "integrity": "sha512-0M3nwq+c9+d+p0XeU12I9djutlsajRrxcu7AvHQXUs/5grYFsXsX0f468qXDiKmcgqGUBNtN2fBOUhGNlispuQ==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^1.7.1" + }, + "dependencies": { + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "optional": true + } + } + }, + "@angular/cli": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.2.3.tgz", + "integrity": "sha512-qhzVL600CdSr4gJY8jGd3TpbMAqse+wo7Tf3n6B89Jk0ssVdlxvMJfpHoUekZ80CxqRpFPX6l6XjrYHkpNN/6g==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.12.3", + "@angular-devkit/core": "7.2.3", + "@angular-devkit/schematics": "7.2.3", + "@schematics/angular": "7.2.3", + "@schematics/update": "0.12.3", + "inquirer": "6.2.1", + "opn": "5.3.0", + "semver": "5.5.1", + "symbol-observable": "1.2.0" + }, + "dependencies": { + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + } + } + }, + "@angular/common": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.2.tgz", + "integrity": "sha512-43EcR3mbM+dKH4VE1EYS1HxSuEToxxv5XPktKqdzY95g8PBOxe11ifcXoYHgImd7YOWzcKoy0k6yQbX3o0cZ8g==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.2.tgz", + "integrity": "sha512-vjPreOVPca6HSuDmj7N1w5u8hwXdm98gEPo2wqQMVuJd6qvGEyLYE9FsHc0XCchyQEKSybAYl1dwsjZq2nNSvQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.2.7.tgz", + "integrity": "sha512-UPWROJzBLejgNf+aqgEUXYts8UiFOl2IavDhS/olA9irszv2lNFj9Yqr8OKdy0jK/lKaipZog3VZEx8g5dNeBA==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "9.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chokidar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "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 + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.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.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@angular/core": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.2.tgz", + "integrity": "sha512-kQ0HxUYAPvly8b3aibTGbiodFnBBgo3asXAQuPgFjYYEqcKR1zZII7PQdaEF9kb9sfm/IKLKj4nd9fZ0gcgqZg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.2.tgz", + "integrity": "sha512-IsvVuUnzIA2ryRmh7l42AANPZFSyNcwqZNtxbmRq2wm3Lfed64U0rsRWWNqipjz7QTxZ2SRdAlP+XDgzg8hvMQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.2.2.tgz", + "integrity": "sha512-qkyY5nUT3J/vBvTTZCTFy3isijQseBFGd6gM08o4ycwbTuOOnnC0XUFuv7o8eeu0jd32MGbaK0gikF+OQOCGNQ==", + "dev": true + }, + "@angular/material": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.2.2.tgz", + "integrity": "sha512-HTtDhK5XkDvP6GPg4WTTa0HbeeagTfVRooTfw0TA+IuTAMBhXt5h1yzuGpFyMap8/PUVZN1D04g2CLhBSzoDxg==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@angular/platform-browser": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.2.tgz", + "integrity": "sha512-eiaqHq26PVASx1kTngBDkFkXhaJzEjoGtc5I+wQUef8CUjq6ZViWz8tUgiiDPOWdqUKUacRZG4q6VR/6uwQj0A==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.2.tgz", + "integrity": "sha512-bw5PuzMzjKMecB4slG/btmvxgn4qFWhNmJVpf2pbtZW7NtZz3HlrqipYzMk9XrCUDGjtwy7O2Z71C3ujI748iw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.2.tgz", + "integrity": "sha512-+cBC+JxbPdjk+Nyqq27PKkjfIdnc+H+xjMGrkO6dlAKhVMGxyNaYt5NUNugb8XJPsQ1XNXyzwTfZK6jcAGLw6w==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.0.tgz", + "integrity": "sha512-dZTwMvTgWfhmibq4V9X+LMf6Bgl7zAodRn9PvcPdhlzFMbvUutx74dbEv7Atz3ToeEpevYEJtAwfxq/bDCzHWg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "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-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/parser": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz", + "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==", + "dev": true + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.0.tgz", + "integrity": "sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "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 + } + } + }, + "@fortawesome/fontawesome-free": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.7.2.tgz", + "integrity": "sha512-Ha4HshKdCVKgu4TVCtG8XyPPYdzTzNW4/fvPnn+LT7AosRABryhlRv4cc4+o84dgpvVJN9reN7jo/c+nYujFug==" + }, + "@ngtools/webpack": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.2.3.tgz", + "integrity": "sha512-TbaCeE1mkruWzFGfAP1kSnwk4v5k0MQUxzy2reUvCfq80H8jYrqUuMZJa0VLPoEky5cYIy98Fe2Wz9xlEdx7sA==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.2.3", + "enhanced-resolve": "4.1.0", + "rxjs": "6.3.3", + "tree-kill": "1.2.0", + "webpack-sources": "1.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", + "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "@schematics/angular": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.2.3.tgz", + "integrity": "sha512-hKp+qaM8YU55+JukteXOVY2N5IQBDIIIXkyPcikbC2GBXUeNOMiPqw9au9sjHrgtFp+SVGoaFzzz9+MOCc1gig==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.2.3", + "@angular-devkit/schematics": "7.2.3", + "typescript": "3.2.2" + }, + "dependencies": { + "typescript": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", + "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==", + "dev": true + } + } + }, + "@schematics/update": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.12.3.tgz", + "integrity": "sha512-larMMlYtHyc/ha2N63DtAsnCVVkCePbw9hoAJxVDglBZY7ahShBAQ4RERKYXuHXvmEudG79I+s8P89HjdWsV1w==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.2.3", + "@angular-devkit/schematics": "7.2.3", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.1.1", + "rxjs": "6.3.3", + "semver": "5.5.1", + "semver-intersect": "1.4.0" + } + }, + "@types/chart.js": { + "version": "2.7.46", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.46.tgz", + "integrity": "sha512-07IcaKJdkccO2PzlfXS2DBJCQp4YxU0SxBYcWxIVylzozNlwYGaue5eKg5+T5HSpkvz0YPLQCamg8CmNBCxRXg==" + }, + "@types/jasmine": { + "version": "2.8.15", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.15.tgz", + "integrity": "sha512-HH1x/3zn6V0+tTu05OuDhka5Impvh1AAj636X+xhinINKl+7iSHM9ET4wrxMhdoKYmv8zMhlsrsEAs9W/cA3Yw==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.6.tgz", + "integrity": "sha512-2ZOKrxb8bKRmP/po5ObYnRDgFE4i+lQiEB27bAMmtMWLgJSqlIDqlLx6S0IRorpOmOPRQ6O80NujTmQAtBkeNw==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.14.tgz", + "integrity": "sha512-4GbNCDs98uHCT/OMv40qQC/OpoPbYn9XdXeTiFwHBBFO6eJhYEPUu2zDKirXSbHlvDV8oZ9l8EQ+HrEx/YS9DQ==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular-bootstrap-md": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/angular-bootstrap-md/-/angular-bootstrap-md-7.4.2.tgz", + "integrity": "sha512-UGmcypqLkzAjluU6PEjlkd3ENpOcqwuJZzZ0R4CXQi8wttuHpnGo0Cl3cA4PWAVZFMcakdmJayNxiVFCw8xYfQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "app-root-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-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, + "optional": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "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=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "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, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "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=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": 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": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.3.tgz", + "integrity": "sha512-/XSnzDepRkAU//xLcXA/lUWxpsBuw0WiriAHOqnxkuCtzLhaz+fL4it4gp20BQ8n5SyLzK/FOc7A0+u/rti2FQ==", + "dev": true, + "requires": { + "browserslist": "^4.3.6", + "caniuse-lite": "^1.0.30000921", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.6", + "postcss-value-parser": "^3.3.1" + } + }, + "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.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.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=", + "dev": true + } + } + }, + "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.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "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.8", + "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 + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "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 + } + } + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "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.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "bootstrap": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", + "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000929", + "electron-to-chromium": "^1.3.103", + "node-releases": "^1.1.3" + } + }, + "browserstack": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.2.tgz", + "integrity": "sha512-+6AFt9HzhKykcPF79W6yjEUJcdvZOV0lIXdkORXMJftGrDl0OKWqRF4GHqpDNkxiceDT/uB7Fb/aDwktvXX7dg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "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.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "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": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000930", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000930.tgz", + "integrity": "sha512-KD+pw9DderBLB8CGqBzYyFWpnrPVOEjsjargU/CvkNyg60od3cxSPTcTeMPhxJhDbkQPWvOz5BAyBzNl/St9vg==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chart.js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.5.0.tgz", + "integrity": "sha1-/m51Gok3afVucr7lrZEgfhxZKVc=", + "requires": { + "chartjs-color": "^2.0.0", + "moment": "^2.10.6" + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "^0.5.0", + "color-convert": "^0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "^1.0.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "circular-json": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", + "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-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": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.5.0.tgz", + "integrity": "sha512-oO6vCkjqsVrEsmh58oNlnJkRXuA30hF8cdNAQV9DytEalDwyOFRvHMnlKFzmOStNerOmPGZU9GAHnBo4tGvtiQ==", + "dev": true, + "requires": { + "app-root-path": "^2.1.0", + "css-selector-tokenizer": "^0.7.0", + "cssauron": "^1.4.0", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.1" + }, + "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 + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "^4.5.0" + } + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "dev": true, + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "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=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "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" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.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.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "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.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.3.tgz", + "integrity": "sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "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-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "optional": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "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-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", + "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "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" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "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-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 + }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "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.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "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.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^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 + } + } + } + } + }, + "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, + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "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.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "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.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.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.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.106", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.106.tgz", + "integrity": "sha512-eXX45p4q9CRxG0G8D3ZBZYSdN3DnrcZfrFvt6VUr1u7aKITEtRY/xwWzJ/UZcWXa7DMqPu/pYwuZ6Nm+bl0GmA==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "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.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "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" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" + }, + "dependencies": { + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "^0.1.0" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "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.0" + } + } + } + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "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.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "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.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "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.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "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.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", + "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "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.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", + "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "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.1" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "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.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "requires": { + "minipass": "^2.2.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=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "optional": true, + "requires": { + "globule": "^1.0.0" + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "optional": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^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=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "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.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "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 + } + } + }, + "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.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "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.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "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.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "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.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "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, + "optional": 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, + "optional": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + } + } + } + } + }, + "internal-ip": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "dev": true, + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "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.0" + } + }, + "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" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "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.1" + } + }, + "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" + } + }, + "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-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true, + "optional": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "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" + } + } + } + }, + "istanbul-api": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.0.6.tgz", + "integrity": "sha512-8W5oeAGWXhtTJjAyVfvavOLVyZCTNCKsyF6GON/INKlBdO7uJ/bv3qnPj5M6ERKzmMCJS1kntnjjGuJ86fn3rQ==", + "dev": true, + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-hook": "^2.0.1", + "istanbul-lib-instrument": "^3.0.0", + "istanbul-lib-report": "^2.0.2", + "istanbul-lib-source-maps": "^2.0.1", + "istanbul-reports": "^2.0.1", + "js-yaml": "^3.12.0", + "make-dir": "^1.3.0", + "once": "^1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz", + "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.1", + "semver": "^5.5.0" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "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.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.1.tgz", + "integrity": "sha512-ufiZoiJ8CxY577JJWEeFuxXZoMqiKpq/RqZtOAYuQLvlkbJWscq9n3gc4xrCGH9n4pW0qnTxOz1oyMmVtk8E1w==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.2.tgz", + "integrity": "sha512-rJ8uR3peeIrwAxoDEbK4dJ7cqqtxBisZKCuwkMtMv0xYzaAnsAi3AHrHPAAtNXzG/bcCgZZ3OJVqm1DTi9ap2Q==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "supports-color": "^5.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-2.0.1.tgz", + "integrity": "sha512-30l40ySg+gvBLcxTrLzR4Z2XTRj3HgRCA/p2rnbs/3OiTaoj054gAbuP5DcLOtwqmy4XW8qXBHzrmP2/bQ9i3A==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "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 + } + } + }, + "istanbul-reports": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.0.1.tgz", + "integrity": "sha512-CT0QgMBJqs6NJLF678ZHcquUAZIoBIUNzdJrRJfpkI9OnzG6MkUfHxbJC3ln981dMswC7/B1mfX3LNkhgJxsuw==", + "dev": true, + "requires": { + "handlebars": "^4.0.11" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "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=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "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" + } + }, + "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.0", + "pako": "~1.0.2", + "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 + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.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.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "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 + } + } + }, + "karma": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.4.tgz", + "integrity": "sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.5", + "log4js": "^3.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "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 + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.4.tgz", + "integrity": "sha512-xJS7QSQIVU6VK9HuJ/ieE5yynxKhjCCkd96NLY/BX/HXsx0CskU9JJiMQbd4cHALiddMwI4OWh1IIzeWrsavJw==", + "dev": true, + "requires": { + "istanbul-api": "^2.0.5", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.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" + } + }, + "license-webpack-plugin": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.0.4.tgz", + "integrity": "sha512-FQgOqrrIcD4C/VQo6ecWgXZULK5rs0kIDJtHcSVO6SBUrD63kEHZwmKOvBTquFQSgMQn/yeH68qooKDfqiBF2Q==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "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, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "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, + "optional": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true, + "optional": 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 + }, + "log4js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz", + "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==", + "dev": true, + "requires": { + "circular-json": "^0.5.5", + "date-format": "^1.2.0", + "debug": "^3.1.0", + "rfdc": "^1.1.2", + "streamroller": "0.7.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "optional": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz", + "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "optional": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "material-design-icons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", + "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "optional": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": 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 + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "~1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz", + "integrity": "sha512-o+Jm+ocb0asEngdM6FsZWtZsRzA8koFUudIDwYUfl94M3PejPHG7Vopw5hN9V8WsMkSFpm3tZP3Fesz89EyrfQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "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.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "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.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "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 + }, + "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.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "ng2-charts": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-1.6.0.tgz", + "integrity": "sha512-9w0WH69x5/nuqC1og2WaY39NbaBqTGIP1+5gZaH7/KPN6UEPonNg/pYnsIVklLj1DWPWXKa8+XXIJZ1jy5nLxg==", + "requires": { + "chart.js": "^2.6.0" + }, + "dependencies": { + "chart.js": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.3.tgz", + "integrity": "sha512-3+7k/DbR92m6BsMUYP6M0dMsMVZpMnwkUyNSAbqolHKsbIzH2Q4LWVEHHYq7v0fmEV8whXE0DrjANulw9j2K5g==", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + } + } + }, + "ng2-completer": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/ng2-completer/-/ng2-completer-2.0.8.tgz", + "integrity": "sha512-WzxJ4u3vAHsfBUaFCloEBoirPZrnDabtWEKyDok7dtjhS1ZvcbwQ4asdXuDO0hZ0T1QC66U/PwLhKfkG501hVg==" + }, + "ng2-smart-table": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ng2-smart-table/-/ng2-smart-table-1.3.5.tgz", + "integrity": "sha512-ZKrldgq9HxhXk1CATEDtcgpwXgrWkX0l3Quc+rFba+esQniiS3daIHZV5yTc77LNBrw7N1MzIPudqTrTWslAPw==", + "requires": { + "lodash": "^4.17.10" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + } + } + }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz", + "integrity": "sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.10.0.tgz", + "integrity": "sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q==", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "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, + "optional": 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" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-bundled": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", + "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-registry-fetch": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz", + "integrity": "sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "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, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "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.0.0" + } + }, + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "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.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "optional": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.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 + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pacote": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.1.1.tgz", + "integrity": "sha512-f28Rq5ozzKAA9YwIKw61/ipwAatUZseYmVssDbHHaexF0wRIVotapVEZPAjOT7Eu3LYVqEp0NVpNizoAnYBUaA==", + "dev": true, + "requires": { + "bluebird": "^3.5.2", + "cacache": "^11.2.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.1.0", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.6", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", + "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", + "dev": true + }, + "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.1.5" + } + }, + "parse-asn1": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", + "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-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=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-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": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "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=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.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" + } + }, + "portfinder": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", + "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz", + "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "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-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.2.tgz", + "integrity": "sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "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.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "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.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "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.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.1.tgz", + "integrity": "sha512-L9TEQmZs6JbMMRQI1w60mfps265/NCr0toYJl7p/R2OAk6oXAfwI6jqYP7EWae+d7Ad2S2Aj4+rzxoSjqk3ZuA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "dev": true + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "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 + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "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=", + "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, + "optional": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "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, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "optional": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "optional": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^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, + "optional": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^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, + "optional": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "optional": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "rfdc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", + "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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.1.1" + } + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "rxjs-compat": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.4.0.tgz", + "integrity": "sha512-eo/O8RS83hJdJukCtA+IF6qnqa8FPOuVo+OPCzgVi+dbTle9KCdNv97IcQO0WwNVik7DJLKmf0F8uwzc0q40vw==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.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, + "optional": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "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, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "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.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.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==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz", + "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "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.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 + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "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" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "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" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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.5.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "socks": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.3.tgz", + "integrity": "sha512-+2r83WaRT3PXYoO/1z+RDEBE7Z2f9YcdQnJ0K/ncXXbV5gJ6wYfNAebYFYiiUjM6E4JyXnPY8cimwyvFYHVUUA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "4.0.2" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", + "dev": true, + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + } + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "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.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-S/guYjC4Izn5wY2d0+M4zowED/F77Lxh9yjkTZ+XAr244pr9c1MYNcXcRe9lx2hmAj0GPbOrBXgOF2YIp/CZ8A==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", + "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz", + "integrity": "sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "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 + }, + "streamroller": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", + "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "dev": true, + "requires": { + "date-format": "^1.2.0", + "debug": "^3.1.0", + "mkdirp": "^0.5.1", + "readable-stream": "^2.3.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.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, + "optional": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "optional": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "terser": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", + "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", + "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.8.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "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 + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "optional": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.2" + } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "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.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", + "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "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.7", + "source-map": "~0.4.1" + }, + "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 + }, + "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": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "semver": "^5.6.0", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "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 + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "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 + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "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": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", + "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "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.0", + "websocket-extensions": ">=0.1.1" + } + }, + "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 + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "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, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true, + "optional": true + } + } + }, + "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, + "optional": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.8.29", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz", + "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" + } + } +} diff --git a/webapp-frontend/package.json b/webapp-frontend/package.json new file mode 100644 index 00000000..588faf95 --- /dev/null +++ b/webapp-frontend/package.json @@ -0,0 +1,61 @@ +{ + "name": "dash-app", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "~7.2.0", + "@angular/cdk": "^7.2.0", + "@angular/common": "~7.2.0", + "@angular/compiler": "~7.2.0", + "@angular/core": "~7.2.0", + "@angular/forms": "~7.2.0", + "@angular/material": "~7.2.0", + "@angular/platform-browser": "~7.2.0", + "@angular/platform-browser-dynamic": "~7.2.0", + "@angular/router": "~7.2.0", + "@fortawesome/fontawesome-free": "^5.7.2", + "@types/chart.js": "^2.7.46", + "angular-bootstrap-md": "^7.4.2", + "bootstrap": "^4.3.1", + "chart.js": "^2.5.0", + "core-js": "^2.5.4", + "hammerjs": "^2.0.8", + "material-design-icons": "^3.0.1", + "ng2-charts": "^1.6.0", + "ng2-completer": "^2.0.8", + "ng2-smart-table": "1.3.5", + "rxjs": "~6.3.3", + "rxjs-compat": "^6.4.0", + "tslib": "^1.9.0", + "zone.js": "~0.8.26" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.12.0", + "@angular/cli": "^7.2.3", + "@angular/compiler-cli": "^7.2.7", + "@angular/language-service": "~7.2.0", + "@types/jasmine": "~2.8.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~4.5.0", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~3.1.1", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~1.1.2", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.11.0", + "typescript": "~3.2.2" + } +} diff --git a/webapp-frontend/pom.xml b/webapp-frontend/pom.xml new file mode 100644 index 00000000..d386e5b9 --- /dev/null +++ b/webapp-frontend/pom.xml @@ -0,0 +1,135 @@ + + + + 4.0.0 + + org.oranosc.ric.portal.dashboard + ric-dash-parent + 1.0.0-SNAPSHOT + + ric-dash-fe + RIC Dashboard Webapp frontend + + + + + org.apache.maven.plugins + maven-deploy-plugin + + + true + + + + org.codehaus.mojo + license-maven-plugin + + + + update-file-header + + process-sources + + ${lmp.organization.name} + ${lmp.inception.year} + ${lmp.project.name} + ${lmp.license.name} + ${lmp.process.start.tag} + ${lmp.process.end.tag} + + e2e + src + + + **/*.json + + + + + + + com.github.eirslett + frontend-maven-plugin + 1.3 + + v10.15.3 + 6.7.0 + . + + + + install node and npm + + install-node-and-npm + + + + npm install + + npm + + + + npm run build + + npm + + + run build + + + + prod + + npm + + + run-script build + + generate-resources + + + + + org.apache.maven.plugins + maven-clean-plugin + + + + ${project.basedir} + + **/node_modules/** + dist/** + node/** + + false + + + node + + + + + + + diff --git a/webapp-frontend/proxy.conf.json b/webapp-frontend/proxy.conf.json new file mode 100644 index 00000000..d3d6eeef --- /dev/null +++ b/webapp-frontend/proxy.conf.json @@ -0,0 +1,6 @@ +{ + "/api": { + "target": "http://localhost:8080", + "secure": false + } +} diff --git a/webapp-frontend/src/app/admin/admin.component.css b/webapp-frontend/src/app/admin/admin.component.css new file mode 100644 index 00000000..16843b36 --- /dev/null +++ b/webapp-frontend/src/app/admin/admin.component.css @@ -0,0 +1,40 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.admin__section { + position: relative; + top: -50px; +} + +.admin__header { + text-align: center; + color: #432c85; + font-size: 50px; + font-weight: 200; + letter-spacing: .1em; + transform: translate(149 56); +} + +:host /deep/ ng2-smart-table tbody > tr > td{ + text-align: center; +} + +:host /deep/ ng2-smart-table thead th{ + text-align: center; +} diff --git a/webapp-frontend/src/app/admin/admin.component.html b/webapp-frontend/src/app/admin/admin.component.html new file mode 100644 index 00000000..8a6fe908 --- /dev/null +++ b/webapp-frontend/src/app/admin/admin.component.html @@ -0,0 +1,24 @@ + +
+

Users

+ + +
diff --git a/webapp-frontend/src/app/admin/admin.component.spec.ts b/webapp-frontend/src/app/admin/admin.component.spec.ts new file mode 100644 index 00000000..6cd94056 --- /dev/null +++ b/webapp-frontend/src/app/admin/admin.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminComponent } from './admin.component'; + +describe('AdminComponent', () => { + let component: AdminComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AdminComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/admin/admin.component.ts b/webapp-frontend/src/app/admin/admin.component.ts new file mode 100644 index 00000000..14cd9481 --- /dev/null +++ b/webapp-frontend/src/app/admin/admin.component.ts @@ -0,0 +1,68 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, OnInit } from '@angular/core'; +import { LocalDataSource } from 'ng2-smart-table'; +import { AdminService } from '../services/admin/admin.service'; + +@Component({ + selector: 'app-admin', + templateUrl: './admin.component.html', + styleUrls: ['./admin.component.css'] +}) +export class AdminComponent { + + + usersettings = { + columns: { + id: { + title: 'ID', + type: 'number', + }, + firstName: { + title: 'First Name', + type: 'string', + }, + lastName: { + title: 'Last Name', + type: 'string', + }, + status: { + title: 'Status', + type: 'string', + }, + }, + }; + + usersource: LocalDataSource = new LocalDataSource(); + + constructor(private service: AdminService) { + const data = this.service.getData(); + this.usersource.load(data); + } + + onDeleteUserConfirm(event): void { + if (window.confirm('Are you sure you want to delete?')) { + event.confirm.resolve(); + } else { + event.confirm.reject(); + } + } + +} diff --git a/webapp-frontend/src/app/app-routing.module.ts b/webapp-frontend/src/app/app-routing.module.ts new file mode 100644 index 00000000..3b89f141 --- /dev/null +++ b/webapp-frontend/src/app/app-routing.module.ts @@ -0,0 +1,49 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Routes, RouterModule } from '@angular/router'; +import { LoginComponent } from './login/login.component'; +import { CatalogComponent } from './catalog/catalog.component'; +import { ControlComponent } from './control/control.component'; +import { StatsComponent } from './stats/stats.component'; +import { AdminComponent } from './admin/admin.component'; +import { XappComponent } from './xapp/xapp.component'; + +const routes: Routes = [ + {path: '', component: LoginComponent}, + {path: 'login', component: LoginComponent}, + {path: 'catalog', component: CatalogComponent}, + {path: 'control', component: ControlComponent}, + {path: 'stats', component: StatsComponent}, + {path: 'admin', component: AdminComponent}, + {path: 'xapp', component: XappComponent}, +]; + +@NgModule({ + imports: [ + CommonModule, + RouterModule.forRoot(routes)], + exports: [ + RouterModule + ], + declarations: [] +}) +export class AppRoutingModule { } diff --git a/webapp-frontend/src/app/app.component.css b/webapp-frontend/src/app/app.component.css new file mode 100644 index 00000000..7ae2691b --- /dev/null +++ b/webapp-frontend/src/app/app.component.css @@ -0,0 +1,347 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.root__container { + width: 100vw; + height: 100vh; + display: grid; + grid-template-columns: auto; + grid-template-rows: 0.5fr auto; + position: relative; +} + +/* +================ + Header +================ +*/ +mat-sidenav-container, mat-sidenav-content, mat-sidenav { + height: 100%; +} + +mat-sidenav { + width: 250px; +} + +main { + padding: 10px; +} + +/* + Slide Menu += = = = = = = = = +*/ + +.side-menu__container { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + pointer-events: none; + z-index: 25; +} + +.side-menu__container-active { + pointer-events: auto; +} + +.side-menu__container::before { + content: ''; + cursor: pointer; + position: absolute; + display: block; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: #0c1066; + opacity: 0; + transition: opacity 300ms linear; + will-change: opacity; +} + +.side-menu__container-active::before { + opacity: 0.3; +} + +.slide-menu { + box-sizing: border-box; + transform: translateX(-103%); + position: relative; + top: 0; + left: 0; + z-index: 10; + height: 100%; + width: 90%; + max-width: 26rem; + background-color: white; + box-shadow: 0 0 2rem rgba(0, 0, 255, 0.1); + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 2fr 4fr 1fr; + grid-gap: 1rem; + transition: transform 300ms linear; + will-change: transform; +} + +.slide-menu-active { + transform: none; +} + +.menu-header { + background: linear-gradient(to right, #00FF9B, #5f84fb); + display: grid; + grid-template-rows: 1fr 4fr; + grid-template-columns: 1fr 4fr; + grid-template-areas: "greeting greeting" "image details"; + box-sizing: border-box; + width: 100%; + align-content: center; + color: white; + box-shadow: 0 0.5rem 2rem rgba(0, 0, 255, 0.2); +} + +.greeting__text { + grid-area: greeting; + font-size: 1.25rem; + letter-spacing: 0.15rem; + text-transform: uppercase; + margin-top: 1rem; + justify-self: center; + align-self: center; +} + +.account-details { + grid-area: details; + display: flex; + flex-flow: column; + margin-left: 1rem; + align-self: center; +} + +.name__text { + font-size: 1.15rem; + margin-bottom: 0.5rem; +} + +.email__text { + font-size: 0.9rem; + letter-spacing: 0.1rem; +} + +.menu-body { + display: grid; + width: 100%; +} + +.profile-image__container { + grid-area: image; + margin-right: 0.5rem; + border-radius: 50%; + height: 4rem; + width: 4rem; + overflow: hidden; + display: flex; + justify-content: center; + align-items: center; + background-color: white; + align-self: center; + margin-left: 2rem; +} + +.profile__image { + max-width: 4rem; +} + +.home_bg_image{ + height:40em; + background-size:cover; + width:auto; + background-image:url('../assets/intelligence.png'); + background-position:50% 50%; +} + +/*Header*/ +.main__header { + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr 0.25fr; + grid-template-rows: 1fr; + box-shadow: 0 0 2rem rgba(0, 0, 255, 0.1); + height: 4rem; + margin: 0; + align-items: center; + transition: background-color 500ms linear; + animation: fadein 1s ease-in-out 0ms 1; +} + +.main__header-dark { + background-color: #2B244D; + color: white; +} + +.toggle-button__container { + cursor: pointer; + position: relative; + margin: 0 0.5rem; +} + +.mode-toggle__input { + -webkit-appearance: none; + -moz-appearance: none; +} + +.mode-toggle__bg { + height: 1rem; + width: 2rem; + border-radius: 0.5rem; + background-color: rgba(0, 0, 0, 0.5); + display: inline-block; + transition: background-color 300ms linear; +} + +.mode-toggle__circle { + height: 1.30rem; + width: 1.30rem; + background-color: #2B244D; + position: absolute; + top: -0.2rem; + border-radius: 50%; + box-shadow: 0 0 0 rgba(0, 0, 255, 0.5); + transition: left 300ms linear; + left: 0.1rem; +} + +.mode-toggle__circle-checked { + background-color: white; + left: 1.75rem; +} + +.mode-toggle__bg-checked { + background-color: #FF0070; +} + +.mode-toggle__text { + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.1rem; +} + +/*Content*/ +.left__section { + display: grid; + grid-template-rows: 1fr; + grid-template-columns: 1fr 1fr; + max-width: 5rem; +} + +.left__section3Col { + display: grid; + grid-template-rows: 1fr; + grid-template-columns: 1fr 1fr 1fr; + max-width: 6rem; +} + +.date__text { + text-transform: uppercase; + letter-spacing: 0.1rem; + display: inline; + margin: 0.5rem 0; +} + +/*SVGs*/ +.hamburger__icon { + position: relative; + z-index: 35; + height: 2rem; + padding: 0.5rem 1.5rem; + margin-right: 1rem; + cursor: pointer; +} + +.logo__icon { + height: 2rem; + margin-left: 1rem; +} + +.logo__text { + fill: #2B244D; +} + +.logo__text-dark { + fill: #ffffff; +} + +.hamburger__icon__fill { + fill: #2B244D; +} + +.hamburger__icon__fill-dark { + fill: #ffffff; +} + +/* +================ + Body +================ +*/ + +.main-container__bg { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + z-index: -2; + opacity: 0; + background: white; + transition: opacity 300ms linear; +} + +.main-container__bg-dark { + opacity: 1; + background: linear-gradient(to bottom, #B290FF, #2E1D65); + transition: opacity 300ms linear; +} + +/* +================- + Footer +================ +*/ +.main__footer { + background: transparent; + position: absolute; + bottom: 1rem; + left: 1.5rem; + z-index: 100; +} + +.copyright__text { + letter-spacing: 0.1rem; + color: gray; +} + +@media only screen and (max-width: 300px) { + .slide-menu { + width: 100%; + } +} diff --git a/webapp-frontend/src/app/app.component.html b/webapp-frontend/src/app/app.component.html new file mode 100644 index 00000000..cd5c10c2 --- /dev/null +++ b/webapp-frontend/src/app/app.component.html @@ -0,0 +1,106 @@ + + + + +
+
+ +
+ + + + + + + + + + + RIC Dashboard + + + +
+ +

+ + +
+ Light + + + + + Dark +
+ +
+ + + + +
+
+ +
+ + + + +
diff --git a/webapp-frontend/src/app/app.component.spec.ts b/webapp-frontend/src/app/app.component.spec.ts new file mode 100644 index 00000000..c84231e7 --- /dev/null +++ b/webapp-frontend/src/app/app.component.spec.ts @@ -0,0 +1,54 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'dashApp'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('dashApp'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to dashApp!'); + }); +}); diff --git a/webapp-frontend/src/app/app.component.ts b/webapp-frontend/src/app/app.component.ts new file mode 100644 index 00000000..9a0ccca2 --- /dev/null +++ b/webapp-frontend/src/app/app.component.ts @@ -0,0 +1,50 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {Component, OnInit} from '@angular/core'; +import {UiService} from './services/ui/ui.service'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent implements OnInit { + showMenu = false; + darkModeActive: boolean; + + constructor(public ui: UiService) { + + } + + ngOnInit() { + this.ui.darkModeState.subscribe((value) => { + this.darkModeActive = value; + }); + } + + toggleMenu() { + this.showMenu = !this.showMenu; + } + + modeToggleSwitch() { + this.ui.darkModeState.next(!this.darkModeActive); + } + +} diff --git a/webapp-frontend/src/app/app.module.ts b/webapp-frontend/src/app/app.module.ts new file mode 100644 index 00000000..45361d7c --- /dev/null +++ b/webapp-frontend/src/app/app.module.ts @@ -0,0 +1,107 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { BrowserModule } from '@angular/platform-browser'; +// tslint:disable-next-line:max-line-length +import { MatIconModule, MatCardModule, MatListModule, MatSidenavModule, + MatButtonToggleModule, MatSliderModule, MatGridListModule, MatSlideToggleModule, + MatExpansionModule, MatTabsModule } from '@angular/material'; +import { BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import { NgModule } from '@angular/core'; +import { Ng2SmartTableModule } from 'ng2-smart-table'; +import { ChartsModule } from 'ng2-charts'; +import { MDBBootstrapModule } from 'angular-bootstrap-md'; +import {FormsModule, ReactiveFormsModule} from '@angular/forms'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { LoginComponent } from './login/login.component'; +import { CatalogComponent } from './catalog/catalog.component'; +import { UiService} from './services/ui/ui.service'; +import { AdminService} from './services/admin/admin.service'; +import { CatalogService} from './services/catalog/catalog.service'; +import { ControlService} from './services/control/control.service'; +import { SidenavListComponent } from './navigation/sidenav-list/sidenav-list.component'; +import { ControlComponent } from './control/control.component'; +import { StatsComponent } from './stats/stats.component'; +import { AdminComponent } from './admin/admin.component'; +import { CatalogCardComponent} from './ui/catalog-card/catalog-card.component'; +import { ControlCardComponent} from './ui/control-card/control-card.component'; +import { StatCardComponent} from './ui/stat-card/stat-card.component'; +import { ModalEventComponent } from './ui/modal-event/modal-event.component'; +import { XappComponent } from './xapp/xapp.component'; +import { ConfigEventComponent } from './ui/config-event/config-event.component'; + +@NgModule({ + declarations: [ + AppComponent, + LoginComponent, + CatalogComponent, + SidenavListComponent, + CatalogCardComponent, + ControlCardComponent, + StatCardComponent, + ControlComponent, + StatsComponent, + AdminComponent, + ModalEventComponent, + XappComponent, + ConfigEventComponent, + ], + imports: [ + BrowserModule, + BrowserAnimationsModule, + ChartsModule, + AppRoutingModule, + FormsModule, + ReactiveFormsModule, + MatButtonToggleModule, + MatExpansionModule, + MatSliderModule, + MatCardModule, + MatIconModule, + MatGridListModule, + MatListModule, + MatSidenavModule, + MatSlideToggleModule, + MatTabsModule, + Ng2SmartTableModule, + MDBBootstrapModule.forRoot(), + ], + exports: [ + MatButtonToggleModule, + MatExpansionModule, + MatSliderModule, + MatCardModule, + MatIconModule, + MatGridListModule, + MatListModule, + MatSidenavModule, + MatSlideToggleModule, + MatTabsModule, + ], + providers: [ + UiService, + AdminService, + CatalogService, + ControlService, + ], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/webapp-frontend/src/app/catalog/catalog.component.css b/webapp-frontend/src/app/catalog/catalog.component.css new file mode 100644 index 00000000..67d46b43 --- /dev/null +++ b/webapp-frontend/src/app/catalog/catalog.component.css @@ -0,0 +1,51 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.catalog__section { + position: relative; + top: -150px; +} + +.catalog__header { + text-align: center; + color: #432c85; + font-size: 50px; + font-weight: 200; + letter-spacing: .1em; + transform: translate(149 56); +} + +:host /deep/ ng2-smart-table tbody > tr > td{ + text-align: left; +} + +:host /deep/ ng2-smart-table thead th{ + text-align: left; +} + +:host /deep/ ng2-st-tbody-custom a.ng2-smart-action.ng2-smart-action-custom-custom { + display: inline-block; + width: 50px; + text-align: center; + font-size: 1.1em; +} + +:host /deep/ ng2-st-tbody-custom a.ng2-smart-action.ng2-smart-action-custom-custom:hover { + color: #5dcfe3; +} diff --git a/webapp-frontend/src/app/catalog/catalog.component.html b/webapp-frontend/src/app/catalog/catalog.component.html new file mode 100644 index 00000000..5f250b48 --- /dev/null +++ b/webapp-frontend/src/app/catalog/catalog.component.html @@ -0,0 +1,25 @@ + +
+

xApp Catalog

+ + + +
diff --git a/webapp-frontend/src/app/catalog/catalog.component.spec.ts b/webapp-frontend/src/app/catalog/catalog.component.spec.ts new file mode 100644 index 00000000..556c45cb --- /dev/null +++ b/webapp-frontend/src/app/catalog/catalog.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CatalogComponent } from './catalog.component'; + +describe('CatalogComponent', () => { + let component: CatalogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CatalogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CatalogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/catalog/catalog.component.ts b/webapp-frontend/src/app/catalog/catalog.component.ts new file mode 100644 index 00000000..081a206f --- /dev/null +++ b/webapp-frontend/src/app/catalog/catalog.component.ts @@ -0,0 +1,74 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component } from '@angular/core'; +import { LocalDataSource } from 'ng2-smart-table'; +import { CatalogService } from '../services/catalog/catalog.service'; + +@Component({ + selector: 'app-catalog', + templateUrl: './catalog.component.html', + styleUrls: ['./catalog.component.css'] +}) +export class CatalogComponent { + + settings = { + hideSubHeader: true, + actions: { + columnTitle: 'Actions', + add: false, + edit: false, + delete: false, + custom: [ + { name: 'deployxApp', title: 'Deploy'}, + ], + position: 'right' + + }, + columns: { + name: { + title: 'xApp Name', + type: 'string', + }, + version: { + title: 'xApp Version', + type: 'string', + }, + status: { + title: 'Status', + type: 'string', + }, + }, + }; + + source: LocalDataSource = new LocalDataSource(); + + constructor(private service: CatalogService) { + this.service.getAll().subscribe((val:any[]) => this.source.load(val)); + } + + onDeployxApp(event): void { + if (window.confirm('Are you sure you want to deploy?')) { + event.confirm.resolve(); + } else { + event.confirm.reject(); + } + } + +} diff --git a/webapp-frontend/src/app/control/control.component.css b/webapp-frontend/src/app/control/control.component.css new file mode 100644 index 00000000..a3e97aab --- /dev/null +++ b/webapp-frontend/src/app/control/control.component.css @@ -0,0 +1,40 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.control__section { + position: relative; + top: -50px; +} + +.control__header { + text-align: center; + color: #432c85; + font-size: 50px; + font-weight: 200; + letter-spacing: .1em; + transform: translate(149 56); +} + +:host /deep/ ng2-smart-table tbody > tr > td{ + text-align: left; +} + +:host /deep/ ng2-smart-table thead th{ + text-align: left; +} diff --git a/webapp-frontend/src/app/control/control.component.html b/webapp-frontend/src/app/control/control.component.html new file mode 100644 index 00000000..4b2b0205 --- /dev/null +++ b/webapp-frontend/src/app/control/control.component.html @@ -0,0 +1,25 @@ + +
+

xApp Control

+ + + +
diff --git a/webapp-frontend/src/app/control/control.component.spec.ts b/webapp-frontend/src/app/control/control.component.spec.ts new file mode 100644 index 00000000..d6017ca2 --- /dev/null +++ b/webapp-frontend/src/app/control/control.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ControlComponent } from './control.component'; + +describe('ControlComponent', () => { + let component: ControlComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ControlComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ControlComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/control/control.component.ts b/webapp-frontend/src/app/control/control.component.ts new file mode 100644 index 00000000..15208620 --- /dev/null +++ b/webapp-frontend/src/app/control/control.component.ts @@ -0,0 +1,93 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, OnInit } from '@angular/core'; +import { LocalDataSource } from 'ng2-smart-table'; +import { ControlService } from '../services/control/control.service'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-control', + templateUrl: './control.component.html', + styleUrls: ['./control.component.css'] +}) +export class ControlComponent { + + settings = { + hideSubHeader: true, + actions: { + columnTitle: 'Actions', + add: false, + edit: false, + delete: false, + custom: [ + { name: 'view', title: 'view', }, + ], + position: 'right' + + }, + columns: { + id: { + title: 'ID', + type: 'number', + }, + xAppName: { + title: 'xApp Name', + type: 'string', + }, + xAppType: { + title: 'xApp Type', + type: 'string', + }, + podId: { + title: 'Pod ID', + type: 'number', + }, + k8Status: { + title: 'k8 Status', + type: 'string', + }, + age: { + title: 'Age', + type: 'string', + }, + }, + }; + + source: LocalDataSource = new LocalDataSource(); + + constructor(private service: ControlService, private router: Router) { + const data = this.service.getData(); + this.source.load(data); + } + + view(event): void { + const url = '/xapp'; + this.router.navigate([url, event]).then( (e) => { + if (e) { + console.log(event.data); + console.log('Navigation is successful!'); + } else { + console.log('Navigation has failed!'); + } + }); + } + + +} diff --git a/webapp-frontend/src/app/login/login.component.css b/webapp-frontend/src/app/login/login.component.css new file mode 100644 index 00000000..df808cf7 --- /dev/null +++ b/webapp-frontend/src/app/login/login.component.css @@ -0,0 +1,27 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.main__container { + display: grid; + grid-template-columns: repeat(3, 1fr); + grid-template-rows: repeat(auto-fill, 1fr); + align-items: center; + justify-items: center; + height: 100%; +} diff --git a/webapp-frontend/src/app/login/login.component.html b/webapp-frontend/src/app/login/login.component.html new file mode 100644 index 00000000..e92ab063 --- /dev/null +++ b/webapp-frontend/src/app/login/login.component.html @@ -0,0 +1,24 @@ + +
+ + + +
diff --git a/webapp-frontend/src/app/login/login.component.spec.ts b/webapp-frontend/src/app/login/login.component.spec.ts new file mode 100644 index 00000000..04ab7796 --- /dev/null +++ b/webapp-frontend/src/app/login/login.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/login/login.component.ts b/webapp-frontend/src/app/login/login.component.ts new file mode 100644 index 00000000..997b4a0a --- /dev/null +++ b/webapp-frontend/src/app/login/login.component.ts @@ -0,0 +1,34 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.css b/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.css new file mode 100644 index 00000000..967225e9 --- /dev/null +++ b/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.css @@ -0,0 +1,32 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +a { + text-decoration: none; + color: black; +} + +a:hover, a:active{ + color: lightgray; +} + +.nav-caption{ + display: inline-block; + padding-left: 6px; +} diff --git a/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html b/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html new file mode 100644 index 00000000..85088e2c --- /dev/null +++ b/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.html @@ -0,0 +1,36 @@ + + + + home Home + + + list Catalog + + + settingsControl + + + assessment Stats + + + assignment_ind Admin + + diff --git a/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.ts b/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.ts new file mode 100644 index 00000000..ac8256ac --- /dev/null +++ b/webapp-frontend/src/app/navigation/sidenav-list/sidenav-list.component.ts @@ -0,0 +1,39 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, OnInit, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'app-sidenav-list', + templateUrl: './sidenav-list.component.html', + styleUrls: ['./sidenav-list.component.css'] +}) +export class SidenavListComponent implements OnInit { + @Output() sidenavClose = new EventEmitter(); + + constructor() { } + + ngOnInit() { + } + + public onSidenavClose = () => { + this.sidenavClose.emit(); + } + +} diff --git a/webapp-frontend/src/app/services/admin/admin.service.spec.ts b/webapp-frontend/src/app/services/admin/admin.service.spec.ts new file mode 100644 index 00000000..90f0be64 --- /dev/null +++ b/webapp-frontend/src/app/services/admin/admin.service.spec.ts @@ -0,0 +1,31 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { TestBed } from '@angular/core/testing'; + +import { AdminService } from './admin.service'; + +describe('ControlService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: AdminService = TestBed.get(AdminService); + expect(service).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/services/admin/admin.service.ts b/webapp-frontend/src/app/services/admin/admin.service.ts new file mode 100644 index 00000000..999fd230 --- /dev/null +++ b/webapp-frontend/src/app/services/admin/admin.service.ts @@ -0,0 +1,55 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Injectable } from '@angular/core'; + +@Injectable() +export class AdminService { + +data = [{ + id: 1, + firstName: 'John', + lastName: 'Doe', + status: 'Active', + }, { + id: 2, + firstName: 'Alice', + lastName: 'Nolan', + status: 'Active', + }, { + id: 3, + firstName: 'Pierce', + lastName: 'King', + status: 'InActive', + }, { + id: 4, + firstName: 'Paul', + lastName: 'Smith', + status: 'InActive', + }, { + id: 5, + firstName: 'Jack', + lastName: 'Reacher', + status: 'Active', + }]; + + getData() { + return this.data; // @TODO implement the service to fetch the backend data + } +} diff --git a/webapp-frontend/src/app/services/catalog/catalog.service.spec.ts b/webapp-frontend/src/app/services/catalog/catalog.service.spec.ts new file mode 100644 index 00000000..92e51484 --- /dev/null +++ b/webapp-frontend/src/app/services/catalog/catalog.service.spec.ts @@ -0,0 +1,31 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { TestBed } from '@angular/core/testing'; + +import { CatalogService } from './catalog.service'; + +describe('CatalogService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: CatalogService = TestBed.get(CatalogService); + expect(service).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/services/catalog/catalog.service.ts b/webapp-frontend/src/app/services/catalog/catalog.service.ts new file mode 100644 index 00000000..95b86624 --- /dev/null +++ b/webapp-frontend/src/app/services/catalog/catalog.service.ts @@ -0,0 +1,34 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +@Injectable() +export class CatalogService { + + constructor(private http: HttpClient) { + } + + getAll() { + return this.http.get('api/xappmgr/xapps'); + } + +} diff --git a/webapp-frontend/src/app/services/control/control.service.spec.ts b/webapp-frontend/src/app/services/control/control.service.spec.ts new file mode 100644 index 00000000..3d2c536e --- /dev/null +++ b/webapp-frontend/src/app/services/control/control.service.spec.ts @@ -0,0 +1,31 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { TestBed } from '@angular/core/testing'; + +import { ControlService } from './control.service'; + +describe('ControlService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ControlService = TestBed.get(ControlService); + expect(service).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/services/control/control.service.ts b/webapp-frontend/src/app/services/control/control.service.ts new file mode 100644 index 00000000..d75c2554 --- /dev/null +++ b/webapp-frontend/src/app/services/control/control.service.ts @@ -0,0 +1,91 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Injectable } from '@angular/core'; + +@Injectable() +export class ControlService { + +data = [{ + id: 1, + xAppName: 'Pendulum Control', + xAppType: 'Type1', + podId: 'dc-ric-app-b8c6668d8-56bjb', + k8Status: 'running', + age: '25 mins', + }, { + id: 2, + xAppName: 'Dual Connectivity', + xAppType: 'Type2', + podId: 'ac-ric-app-5ddbc59ffd-qc6rp', + k8Status: 'failed', + age: '5 mins', + + }, { + id: 3, + xAppName: 'ANR', + xAppType: 'Type1', + podId: 'dc-ric-app-694c45b75f-nqdtt', + k8Status: 'pending', + age: '55 mins', + }, { + id: 4, + xAppName: 'Admission Control', + xAppType: 'Type2', + podId: 'ac-ric-app-4ddfc59ffd-qc7tp', + k8Status: 'unkown', + age: '5 mins', + + }, { + id: 5, + xAppName: 'Admission Control', + xAppType: 'Type2', + podId: 'ac-ric-app-3ffgc59ffd-qc5rp', + k8Status: 'crashLoopBackoff', + age: '5 mins', + + }, { + id: 6, + xAppName: 'ANR', + xAppType: 'Type1', + podId: 'dc-ric-app-345f44r75f-nertt', + k8Status: 'completed', + age: '55 mins', + }, { + id: 7, + xAppName: 'Admission Control', + xAppType: 'Type2', + podId: 'ac-ric-app-5ddbc67ffd-qc6rp', + k8Status: 'completed', + age: '5 mins', + + }, { + id: 8, + xAppName: 'ANR', + xAppType: 'Type1', + podId: 'dc-ric-app-694c23b75f-nqdtt', + k8Status: 'completed', + age: '55 mins', + + }]; + + getData() { + return this.data; // @TODO implement the service to fetch the backend data + } +} diff --git a/webapp-frontend/src/app/services/stats/stats.service.spec.ts b/webapp-frontend/src/app/services/stats/stats.service.spec.ts new file mode 100644 index 00000000..f5f003f4 --- /dev/null +++ b/webapp-frontend/src/app/services/stats/stats.service.spec.ts @@ -0,0 +1,31 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { TestBed } from '@angular/core/testing'; + +import { StatsService } from './stats.service'; + +describe('StatsService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: StatsService = TestBed.get(StatsService); + expect(service).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/services/stats/stats.service.ts b/webapp-frontend/src/app/services/stats/stats.service.ts new file mode 100644 index 00000000..d0bdc4c1 --- /dev/null +++ b/webapp-frontend/src/app/services/stats/stats.service.ts @@ -0,0 +1,146 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { HttpHeaders } from "@angular/common/http"; +import { Observable } from "rxjs"; +import { HttpErrorResponse } from "@angular/common/http"; + +@Injectable({ + providedIn: 'root' +}) + +export class StatsService { + baseJSONServerUrl = 'http://localhost:3000'; + dataMetrics = [{}]; + latencyMetrics; + load: Observable; + cpuMetrics; + hostURL = 'http://localhost:10080'; + jsonURL = 'http://localhost:3000'; + metricsPath = '/a1ric/metrics'; + delayPath = '/a1ric/delay'; + loadPath = '/a1ric/load'; + delayMax = '15'; + loadMax = '100000'; + httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': '*', + 'Access-Control-Allow-Credentials': 'true', + 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization' + }) + }; + + constructor(private httpClient: HttpClient) { + //this.loadConfig(); + //this.getLoad(); + + } + + getMetrics() { + + return this.dataMetrics; // @TODO implement the service to fetch the backend data + } + + getLatencyMetrics() { + this.latencyMetrics = this.getRandomValue(); + return this.latencyMetrics; + } + + getLoad(): Observable { + //this.loadMetrics = this.getRandomValue(); + this.httpClient.get(this.hostURL + this.loadPath).subscribe((res) => { + console.log(res); + console.log('stats.service.getLoad(): ' + res['load']); + this.load = res['load']; + return this.load; + }); + return this.load; + } + + putLoad(value: number) { + //this.loadMetrics = this.getRandomValue(); + const jsonValue = '{ "load": ' + value + ' }'; + console.log(jsonValue); + this.httpClient.put(this.hostURL + this.loadPath, jsonValue , this.httpOptions).subscribe((res) => { + console.log(res); + }); + } + + putDelay(value: number) { + //this.loadMetrics = this.getRandomValue(); + const jsonValue = '{ "delay": ' + value + ' }'; + console.log(jsonValue); + this.httpClient.put(this.hostURL + this.delayPath, jsonValue , this.httpOptions).subscribe((res) => { + console.log(res); + }); + } + + getCpuMetrics() { + this.cpuMetrics = this.getRandomValue(); + return this.cpuMetrics; + } + + getRandomValue() { + return Math.round((Math.random() * (20 - 0)) + 0); + } + + saveConfig(key: string, value: string) { + if(key == 'jsonURL') + this.baseJSONServerUrl = value; + + console.log('save this.baseJSONServerUrl '+this.baseJSONServerUrl); + const jsonValue = '{"id": "' + key + '", "value": "' + value + '"}'; + console.log(jsonValue); + this.httpClient.put(this.baseJSONServerUrl + '/config/' + key , jsonValue, this.httpOptions).subscribe((res) => { + console.log(res); + }); + + + } + + loadConfig() { + console.log('load this.baseJSONServerUrl '+this.baseJSONServerUrl); + const httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json' + }) + }; + this.httpClient.get(this.baseJSONServerUrl + '/config/', httpOptions).subscribe((res) => { + console.log(res); + this.jsonURL = res[0].value; + this.hostURL = res[1].value; + this.metricsPath = res[2].value; + this.delayPath = res[3].value; + this.loadPath = res[4].value; + this.delayMax = res[5].value; + this.loadMax = res[6].value; + }, + (err: HttpErrorResponse) => { + console.log (err.message); + }); + } +} + +interface Delay { + delay: number; +} diff --git a/webapp-frontend/src/app/services/ui/ui.service.spec.ts b/webapp-frontend/src/app/services/ui/ui.service.spec.ts new file mode 100644 index 00000000..413e3a93 --- /dev/null +++ b/webapp-frontend/src/app/services/ui/ui.service.spec.ts @@ -0,0 +1,34 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {inject, TestBed} from '@angular/core/testing'; + +import {UiService} from './ui.service'; + +describe('UiService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [UiService] + }); + }); + + it('should be created', inject([UiService], (service: UiService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/webapp-frontend/src/app/services/ui/ui.service.ts b/webapp-frontend/src/app/services/ui/ui.service.ts new file mode 100644 index 00000000..f826d200 --- /dev/null +++ b/webapp-frontend/src/app/services/ui/ui.service.ts @@ -0,0 +1,32 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {Injectable} from '@angular/core'; +import {BehaviorSubject} from 'rxjs'; + +@Injectable() +export class UiService { + + darkModeState: BehaviorSubject; + + constructor() { + // TODO: if the user is signed in get the default value from Firebase + this.darkModeState = new BehaviorSubject(false); + } +} diff --git a/webapp-frontend/src/app/stats/stats.component.html b/webapp-frontend/src/app/stats/stats.component.html new file mode 100644 index 00000000..85c519f7 --- /dev/null +++ b/webapp-frontend/src/app/stats/stats.component.html @@ -0,0 +1,117 @@ + +
+ +

Platform stats

+ + + + RIC Total Load + + + + + + + + + + + + +
Additional Delay
+ +
+
+ + + + Pendulum Control Loop Latency + + + + + + + + + + + Pendulum Control Load + + + + + + + +
+ +
+ + + + + + +
Additional Load
+ +
+ +
+
+ +
+
+ + +
+ diff --git a/webapp-frontend/src/app/stats/stats.component.scss b/webapp-frontend/src/app/stats/stats.component.scss new file mode 100644 index 00000000..f36eceef --- /dev/null +++ b/webapp-frontend/src/app/stats/stats.component.scss @@ -0,0 +1,28 @@ +.stats__section { + position: relative; + top: -10px; +} + +.stats__header { + text-align: center; + color: #432c85; + font-size: 40px; + font-weight: 200; + letter-spacing: .1em; + transform: translate(149 56); +} + +.bar-chart-card { + height: 100%; + width: 100%; + max-width: 400px; + margin-left: 1% +} + +.mat-slider { + width: 300px; +} + +.mat-grid-tile { + background: transparent; +} \ No newline at end of file diff --git a/webapp-frontend/src/app/stats/stats.component.spec.ts b/webapp-frontend/src/app/stats/stats.component.spec.ts new file mode 100644 index 00000000..82eb9d9f --- /dev/null +++ b/webapp-frontend/src/app/stats/stats.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StatsComponent } from './stats.component'; + +describe('StatsComponent', () => { + let component: StatsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ StatsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StatsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/stats/stats.component.ts b/webapp-frontend/src/app/stats/stats.component.ts new file mode 100644 index 00000000..71bc6974 --- /dev/null +++ b/webapp-frontend/src/app/stats/stats.component.ts @@ -0,0 +1,397 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, OnInit, ViewChildren, QueryList } from '@angular/core'; +import { BaseChartDirective } from 'ng2-charts/ng2-charts'; +import { StatsService } from '../services/stats/stats.service'; +import { MatSlideToggleChange } from "@angular/material/slide-toggle"; +import { HttpClient } from '@angular/common/http'; +import { HttpHeaders } from "@angular/common/http"; +import { Observable } from "rxjs"; +import { HttpErrorResponse } from "@angular/common/http"; +import { map } from 'rxjs/operators'; + +@Component({ + selector: 'app-stats', + templateUrl: './stats.component.html', + styleUrls: ['./stats.component.scss'] +}) +export class StatsComponent implements OnInit { + + @ViewChildren(BaseChartDirective) charts: QueryList; + timeLeft = 60; + interval; + checked = false; + load; + delay; + + public latencyChartColors: Array = [ + { // blue + backgroundColor: 'rgba(197, 239, 247, 0.2)', + borderColor: 'lightblue', + pointBackgroundColor: 'lightblue', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(148,159,177,0.8)' + } + ]; + public latencyChartOptions = { + scaleShowVerticalLines: true, + responsive: true, + animation: { + duration: 800 * 1.5, + easing: 'linear' + }, + hover: { + animationDuration: 1 // duration of animations when hovering an item + }, + responsiveAnimationDuration: 500, + scales: { + yAxes: [{ + ticks: { + // the data minimum used for determining the ticks is Math.min(dataMin, suggestedMin) + suggestedMin: 0, + // the data maximum used for determining the ticks is Math.max(dataMax, suggestedMax) +// suggestedMax: 1000 + }, + scaleLabel: { + display: true, + labelString: 'msecs' + } + }], + xAxes: [{ + scaleLabel: { + display: true, + labelString: 'time (last 10 seconds)' + } + }] + }, + }; + public latencyChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']; + public latencyChartType = 'line'; + public latencyChartLegend = true; + public latencyChartData = [ + { data: [65, 59, 80, 81, 56, 55, 40, 20, 12, 34], label: 'Latency' }, + ]; + + public loadChartColors: Array = [ + + { // green + backgroundColor: 'rgba(200, 247, 197, 0.2)', + borderColor: 'lightgreen', + pointBackgroundColor: 'lightgreen', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(0,200,0,0.5)' + } + ]; + public loadChartOptions = { + scaleShowVerticalLines: false, + responsive: true, + animation: { + duration: 800 * 1.5, + easing: 'linear' + }, + hover: { + animationDuration: 1 // duration of animations when hovering an item + }, + responsiveAnimationDuration: 500, + scales: { + yAxes: [{ + ticks: { + // the data minimum used for determining the ticks is Math.min(dataMin, suggestedMin) + suggestedMin: 0, + // the data maximum used for determining the ticks is Math.max(dataMax, suggestedMax) +// suggestedMax: 1000 + }, + scaleLabel: { + display: true, + labelString: '# of requests' + } + }], + xAxes: [{ + scaleLabel: { + display: true, + labelString: 'time (last 10 seconds)' + } + }] + }, + }; + public loadChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']; + public loadChartType = 'line'; + public loadChartLegend = true; + public loadChartData = [ + { data: [28, 48, 40, 19, 86, 77, 90, 20, 12, 34], label: 'Load' } + ]; + + public cpuChartColors: Array = [ + + { // red + backgroundColor: 'rgba(241, 169, 160, 0.2)', + borderColor: 'brown', + pointBackgroundColor: 'brown', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(0,200,0,0.5)' + } + ]; + public cpuChartOptions = { + scaleShowVerticalLines: false, + responsive: true, + animation: { + duration: 800 * 1.5, + easing: 'linear' + }, + hover: { + animationDuration: 1 // duration of animations when hovering an item + }, + responsiveAnimationDuration: 500, + scales: { + yAxes: [{ + ticks: { + // the data minimum used for determining the ticks is Math.min(dataMin, suggestedMin) + suggestedMin: 0, + // the data maximum used for determining the ticks is Math.max(dataMax, suggestedMax) +// suggestedMax: 1000 + }, + scaleLabel: { + display: true, + labelString: '# of requests' + } + }], + xAxes: [{ + scaleLabel: { + display: true, + labelString: 'time (last 10 seconds)' + } + }] + }, + }; + public cpuChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']; + public cpuChartType = 'line'; + public cpuChartLegend = true; + public cpuChartData = [ + { data: [15, 29, 30, 31, 53, 52, 41, 70, 32, 14], label: 'RICLoad' } + ]; + + public x = 11; + + public y = 11; + + public z = 11; + public loop = true; + + latencyClickData() { + // this.latencyChartData = [{data: [Math.random() * 100, Math.random() * 100, Math.random() * 100, + // Math.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100, + // Math.random() * 100, Math.random() * 100], label: 'Latency'}]; + this.charts.forEach((child) => { + if (child.datasets[0].label === 'Latency') { + this.latencyChartLabels.shift(); + child.datasets[0].data.shift(); + + const latencyData = this.service.getLatencyMetrics(); + child.datasets[0].data.push(latencyData); + this.latencyChartLabels.push('' + this.x++); + } + // once new data is computed and datasets are updated, tell our baseChart the datasets changed + child.ngOnChanges({ + datasets: { + currentValue: child.datasets, + previousValue: null, + firstChange: true, + isFirstChange: () => true + } + }); + }); + } + + loadClickData() { + if (this.loop) { + this.loop = false; + this.startLoadTimer(); + } else { + this.loop = true; + this.pauseLoadTimer(); + } + } + + loopLoadData(metricsv: any) { + this.charts.forEach((child) => { + if (child.datasets[0].label === 'Load') { + this.loadChartLabels.shift(); + child.datasets[0].data.shift(); + + //const loadData = this.service.getLoad(); + //child.datasets[0].data.push(this.service.load); + child.datasets[0].data.push(metricsv['load']); + this.loadChartLabels.push('' + this.x++); + } + if (child.datasets[0].label === 'Latency') { + this.latencyChartLabels.shift(); + child.datasets[0].data.shift(); + + //const loadData = this.service.getLoad(); + //child.datasets[0].data.push(this.service.load); + child.datasets[0].data.push(metricsv['latency']); + this.latencyChartLabels.push('' + this.x++); + } + if (child.datasets[0].label === 'RICLoad') { + this.latencyChartLabels.shift(); + child.datasets[0].data.shift(); + + //const loadData = this.service.getLoad(); + //child.datasets[0].data.push(this.service.load); + child.datasets[0].data.push(metricsv['ricload']); + this.latencyChartLabels.push('' + this.x++); + } + // once new data is computed and datasets are updated, tell our baseChart the datasets changed + child.ngOnChanges({ + datasets: { + currentValue: child.datasets, + previousValue: null, + firstChange: true, + isFirstChange: () => true + } + }); + }); + } + + cpuClickData() { + // this.cpuChartData = [{data: [Math.random() * 100, Math.random() * 100, Math.random() * 100, + // Math.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100, + // Math.random() * 100, Math.random() * 100], label: 'CPU'}]; + const cpuData = this.service.getLatencyMetrics(); + this.newDataPoint([cpuData], this.z++); + } + + newDataPoint(dataArr = [100], label) { + + this.cpuChartData.forEach((dataset, index) => { + this.cpuChartData[index] = Object.assign({}, this.cpuChartData[index], { + data: [...this.cpuChartData[index].data, dataArr[index]] + }); + }); + + this.cpuChartLabels = [...this.cpuChartLabels, label]; + console.log(this.cpuChartLabels); + console.log(this.cpuChartData); + } + + public sliderLoadMax = Number(this.service.loadMax) || 0; + + public sliderDelayMax = Number(this.service.delayMax) || 0; + + formatLabel(value: number | null) { + if (!value) { + return 0; + } + + if (value >= 1000) { + return Math.round(value / 1000); + } + + return value; + } + + constructor(private service: StatsService, private httpClient: HttpClient) { + this.sliderLoadMax = Number(this.service.loadMax) || 0; + + this.sliderDelayMax = Number(this.service.delayMax) || 0; + console.log('this.sliderLoadMax: ' + this.sliderLoadMax); + console.log('this.sliderDelayMax: ' + this.sliderDelayMax); + } + ngOnInit() { + this.fetchLoad().subscribe(loadv => { + console.log('loadv: ' + loadv); + this.checked = loadv; + }); + this.fetchDelay().subscribe(delayv => { + console.log('delayv: ' + delayv); + this.delay = delayv; + }); + this.fetchMetrics().subscribe(metricsv => { + console.log('metricsv.load: ' + metricsv['load']); + + }); + } + + startLoadTimer() { + this.interval = setInterval(() => { + if (this.timeLeft > 0) { + this.timeLeft--; + this.fetchMetrics().subscribe(metricsv => { + console.log('metricsv.load: ' + metricsv['latency']); + console.log('metricsv.load: ' + metricsv['load']); + console.log('metricsv.load: ' + metricsv['ricload']); + this.loopLoadData(metricsv); + }); + + } else { + this.timeLeft = 60; + } + }, 1000); + } + + pauseLoadTimer() { + clearInterval(this.interval); + } + + fetchMetrics() { + return this.httpClient.get(this.service.hostURL + this.service.metricsPath, this.service.httpOptions).pipe(map(res => { + console.log(res); + console.log(res['load']); + return res; + })); + } + + fetchDelay() { + return this.httpClient.get(this.service.hostURL + this.service.delayPath, this.service.httpOptions).pipe(map(res => { + console.log(res); + console.log(res['delay']); + const delayv = res['delay']; + console.log(delayv); + this.delay = delayv; + return this.delay; + })); + } + + saveDelay() { + console.log(this.delay); + this.service.putDelay(this.delay); + } + + fetchLoad() { + return this.httpClient.get(this.service.hostURL + this.service.loadPath, this.service.httpOptions).pipe(map(res => { + console.log(res); + console.log(res['load']); + const loadv = res['load']; + console.log(loadv); + this.load = loadv; + return this.load; + })); + + } + + saveLoad() { + console.log(this.load); + this.service.putLoad(this.load); + } + +} diff --git a/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.css b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.css new file mode 100644 index 00000000..7c69e9e3 --- /dev/null +++ b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.css @@ -0,0 +1,66 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.home_bg_image{ + height:40em; + background-size:cover; + width:auto; + background-image:url('../../../assets/intelligence.png'); + background-position:50% 50%; +} + +.add__card { + background-color: #ffffff; + box-shadow: 0 0 2rem rgba(0, 0, 255, 0.1); + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + padding: 2rem; + margin: 2rem; + width: 19rem; + height: 30rem; + justify-items: center; + cursor: pointer; + border-radius: 1.75rem; + animation: fadein 1.25s ease-in-out 0ms 1; + color: #443282; +} + +.add__card-dark { + background: linear-gradient(to bottom, #711B86, #00057A); + color: white; +} + +.card__title { + text-transform: uppercase; + letter-spacing: 0.1rem; +} + +.body__container { + align-self: end; + display: flex; + justify-content: space-between; + align-items: center; + flex-flow: column; +} + +.add__icon { + width: 10rem; + margin-bottom: 1.15rem; +} diff --git a/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.html b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.html new file mode 100644 index 00000000..aac0c380 --- /dev/null +++ b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.html @@ -0,0 +1,36 @@ + +
+
+ xApp Catalog


+
+ wifi Dual Connectivity
+
+ check_box Admission Control
+
+ settings_input_antenna ANR
+
+ call_split IFLB
+ +
+
+ +
+
diff --git a/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.spec.ts b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.spec.ts new file mode 100644 index 00000000..7a7330de --- /dev/null +++ b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {CatalogCardComponent} from './catalog-card.component'; + +describe('CatalogCardComponent', () => { + let component: CatalogCardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CatalogCardComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CatalogCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.ts b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.ts new file mode 100644 index 00000000..9b7901e0 --- /dev/null +++ b/webapp-frontend/src/app/ui/catalog-card/catalog-card.component.ts @@ -0,0 +1,49 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {Router} from '@angular/router'; +import {UiService} from '../../services/ui/ui.service'; + +@Component({ + selector: 'app-catalog-card', + templateUrl: './catalog-card.component.html', + styleUrls: ['./catalog-card.component.css'] +}) +export class CatalogCardComponent implements OnInit, OnDestroy { + darkMode: boolean; + + constructor(public router: Router, public ui: UiService) { + } + + ngOnInit() { + this.ui.darkModeState.subscribe((isDark) => { + this.darkMode = isDark; + }); + } + + ngOnDestroy() { + + } + + openDetails() { + this.router.navigateByUrl('../../catalog'); + } + +} diff --git a/webapp-frontend/src/app/ui/config-event/config-event.component.html b/webapp-frontend/src/app/ui/config-event/config-event.component.html new file mode 100644 index 00000000..dcbd2ee0 --- /dev/null +++ b/webapp-frontend/src/app/ui/config-event/config-event.component.html @@ -0,0 +1,89 @@ + + + + diff --git a/webapp-frontend/src/app/ui/config-event/config-event.component.scss b/webapp-frontend/src/app/ui/config-event/config-event.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/webapp-frontend/src/app/ui/config-event/config-event.component.spec.ts b/webapp-frontend/src/app/ui/config-event/config-event.component.spec.ts new file mode 100644 index 00000000..c0bd5d8a --- /dev/null +++ b/webapp-frontend/src/app/ui/config-event/config-event.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfigEventComponent } from './config-event.component'; + +describe('ConfigEventComponent', () => { + let component: ConfigEventComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ConfigEventComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfigEventComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/ui/config-event/config-event.component.ts b/webapp-frontend/src/app/ui/config-event/config-event.component.ts new file mode 100644 index 00000000..6a4b6319 --- /dev/null +++ b/webapp-frontend/src/app/ui/config-event/config-event.component.ts @@ -0,0 +1,76 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, OnInit } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; +import { StatsService } from '../../services/stats/stats.service'; + +@Component({ + selector: 'app-config-event', + templateUrl: './config-event.component.html', + styleUrls: ['./config-event.component.scss'] +}) +export class ConfigEventComponent implements OnInit { + + public renderValue; + + contactFormModalJsonUrl = new FormControl('', Validators.required); + contactFormModalHost = new FormControl('', Validators.required); + contactFormModalMetrics = new FormControl('', Validators.required); + contactFormModalDelay = new FormControl('', Validators.required); + contactFormModalLoad = new FormControl('', Validators.required); + contactFormModalDelayMax = new FormControl('', Validators.required); + contactFormModalLoadMax = new FormControl('', Validators.required); + onOpened(event: any) { + this.service.loadConfig(); + this.contactFormModalJsonUrl.setValue(this.service.jsonURL); + this.contactFormModalHost.setValue(this.service.hostURL); + this.contactFormModalMetrics.setValue(this.service.metricsPath); + this.contactFormModalDelay.setValue(this.service.delayPath); + this.contactFormModalLoad.setValue(this.service.loadPath); + this.contactFormModalDelayMax.setValue(this.service.delayMax); + this.contactFormModalLoadMax.setValue(this.service.loadMax); + console.log(event); + } + + + constructor(private service: StatsService) { } + + ngOnInit() { + // load from file + this.service.loadConfig(); + // console.log(this.service.hostURL); + //this.contactFormModalHost.setValue(this.service.hostURL); + //this.contactFormModalJsonUrl.setValue(this.service.jsonURL); + } + + save() { + // save to file + this.service.saveConfig('jsonURL', this.contactFormModalJsonUrl.value); + this.service.saveConfig('host', this.contactFormModalHost.value); + this.service.saveConfig('metricspath', this.contactFormModalMetrics.value); + this.service.saveConfig('delaypath', this.contactFormModalDelay.value); + this.service.saveConfig('loadpath', this.contactFormModalLoad.value); + this.service.saveConfig('delaymax', this.contactFormModalDelayMax.value); + this.service.saveConfig('loadmax', this.contactFormModalLoadMax.value); + this.service.loadConfig(); + } + + +} diff --git a/webapp-frontend/src/app/ui/control-card/control-card.component.css b/webapp-frontend/src/app/ui/control-card/control-card.component.css new file mode 100644 index 00000000..7c69e9e3 --- /dev/null +++ b/webapp-frontend/src/app/ui/control-card/control-card.component.css @@ -0,0 +1,66 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.home_bg_image{ + height:40em; + background-size:cover; + width:auto; + background-image:url('../../../assets/intelligence.png'); + background-position:50% 50%; +} + +.add__card { + background-color: #ffffff; + box-shadow: 0 0 2rem rgba(0, 0, 255, 0.1); + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + padding: 2rem; + margin: 2rem; + width: 19rem; + height: 30rem; + justify-items: center; + cursor: pointer; + border-radius: 1.75rem; + animation: fadein 1.25s ease-in-out 0ms 1; + color: #443282; +} + +.add__card-dark { + background: linear-gradient(to bottom, #711B86, #00057A); + color: white; +} + +.card__title { + text-transform: uppercase; + letter-spacing: 0.1rem; +} + +.body__container { + align-self: end; + display: flex; + justify-content: space-between; + align-items: center; + flex-flow: column; +} + +.add__icon { + width: 10rem; + margin-bottom: 1.15rem; +} diff --git a/webapp-frontend/src/app/ui/control-card/control-card.component.html b/webapp-frontend/src/app/ui/control-card/control-card.component.html new file mode 100644 index 00000000..11740d06 --- /dev/null +++ b/webapp-frontend/src/app/ui/control-card/control-card.component.html @@ -0,0 +1,37 @@ + +
+
+ xApp Control


+
+ open_in_new Deploy
+
+ play_circle_outline Start
+
+ stop Stop
+
+ buildConfig
+ + +
+
+ +
+
diff --git a/webapp-frontend/src/app/ui/control-card/control-card.component.spec.ts b/webapp-frontend/src/app/ui/control-card/control-card.component.spec.ts new file mode 100644 index 00000000..7a7330de --- /dev/null +++ b/webapp-frontend/src/app/ui/control-card/control-card.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {CatalogCardComponent} from './catalog-card.component'; + +describe('CatalogCardComponent', () => { + let component: CatalogCardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CatalogCardComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CatalogCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/ui/control-card/control-card.component.ts b/webapp-frontend/src/app/ui/control-card/control-card.component.ts new file mode 100644 index 00000000..82ba347e --- /dev/null +++ b/webapp-frontend/src/app/ui/control-card/control-card.component.ts @@ -0,0 +1,49 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {Router} from '@angular/router'; +import {UiService} from '../../services/ui/ui.service'; + +@Component({ + selector: 'app-control-card', + templateUrl: './control-card.component.html', + styleUrls: ['./control-card.component.css'] +}) +export class ControlCardComponent implements OnInit, OnDestroy { + darkMode: boolean; + + constructor(public router: Router, public ui: UiService) { + } + + ngOnInit() { + this.ui.darkModeState.subscribe((isDark) => { + this.darkMode = isDark; + }); + } + + ngOnDestroy() { + + } + + openDetails() { + this.router.navigateByUrl('../../control'); + } + +} diff --git a/webapp-frontend/src/app/ui/modal-event/modal-event.component.html b/webapp-frontend/src/app/ui/modal-event/modal-event.component.html new file mode 100644 index 00000000..84d10ac3 --- /dev/null +++ b/webapp-frontend/src/app/ui/modal-event/modal-event.component.html @@ -0,0 +1,70 @@ + + + + diff --git a/webapp-frontend/src/app/ui/modal-event/modal-event.component.scss b/webapp-frontend/src/app/ui/modal-event/modal-event.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/webapp-frontend/src/app/ui/modal-event/modal-event.component.spec.ts b/webapp-frontend/src/app/ui/modal-event/modal-event.component.spec.ts new file mode 100644 index 00000000..af0b8345 --- /dev/null +++ b/webapp-frontend/src/app/ui/modal-event/modal-event.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModalEventComponent } from './modal-event.component'; + +describe('ModalEventComponent', () => { + let component: ModalEventComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ModalEventComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ModalEventComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/ui/modal-event/modal-event.component.ts b/webapp-frontend/src/app/ui/modal-event/modal-event.component.ts new file mode 100644 index 00000000..90d8edc7 --- /dev/null +++ b/webapp-frontend/src/app/ui/modal-event/modal-event.component.ts @@ -0,0 +1,56 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, Input, OnInit , Output, EventEmitter } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; +import { ViewCell } from 'ng2-smart-table'; + +@Component({ + selector: 'app-modal-event', + templateUrl: './modal-event.component.html', + styleUrls: ['./modal-event.component.scss'] +}) +export class ModalEventComponent implements ViewCell, OnInit { + + public renderValue; + + @Input() value; + @Input() rowData: any; + @Output() save: EventEmitter = new EventEmitter(); + contactFormModalHelm = new FormControl('', Validators.required); + onOpened(event: any) { + console.log(event); + } + + + constructor() { } + + ngOnInit() { + this.renderValue = this.value; + } + + example() { + alert(this.renderValue); + } + + onDeployxApp() { + this.save.emit(this.rowData); + } + +} diff --git a/webapp-frontend/src/app/ui/stat-card/stat-card.component.css b/webapp-frontend/src/app/ui/stat-card/stat-card.component.css new file mode 100644 index 00000000..7c69e9e3 --- /dev/null +++ b/webapp-frontend/src/app/ui/stat-card/stat-card.component.css @@ -0,0 +1,66 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +.home_bg_image{ + height:40em; + background-size:cover; + width:auto; + background-image:url('../../../assets/intelligence.png'); + background-position:50% 50%; +} + +.add__card { + background-color: #ffffff; + box-shadow: 0 0 2rem rgba(0, 0, 255, 0.1); + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + padding: 2rem; + margin: 2rem; + width: 19rem; + height: 30rem; + justify-items: center; + cursor: pointer; + border-radius: 1.75rem; + animation: fadein 1.25s ease-in-out 0ms 1; + color: #443282; +} + +.add__card-dark { + background: linear-gradient(to bottom, #711B86, #00057A); + color: white; +} + +.card__title { + text-transform: uppercase; + letter-spacing: 0.1rem; +} + +.body__container { + align-self: end; + display: flex; + justify-content: space-between; + align-items: center; + flex-flow: column; +} + +.add__icon { + width: 10rem; + margin-bottom: 1.15rem; +} diff --git a/webapp-frontend/src/app/ui/stat-card/stat-card.component.html b/webapp-frontend/src/app/ui/stat-card/stat-card.component.html new file mode 100644 index 00000000..49160eeb --- /dev/null +++ b/webapp-frontend/src/app/ui/stat-card/stat-card.component.html @@ -0,0 +1,34 @@ + +
+
+ xApp Stats


+
+ alarm Control Loop Latency
+
+ backup Load generator
+
+ timelinePerformance
+ +
+
+ +
+
diff --git a/webapp-frontend/src/app/ui/stat-card/stat-card.component.spec.ts b/webapp-frontend/src/app/ui/stat-card/stat-card.component.spec.ts new file mode 100644 index 00000000..7a7330de --- /dev/null +++ b/webapp-frontend/src/app/ui/stat-card/stat-card.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {CatalogCardComponent} from './catalog-card.component'; + +describe('CatalogCardComponent', () => { + let component: CatalogCardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [CatalogCardComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CatalogCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/ui/stat-card/stat-card.component.ts b/webapp-frontend/src/app/ui/stat-card/stat-card.component.ts new file mode 100644 index 00000000..82d01a24 --- /dev/null +++ b/webapp-frontend/src/app/ui/stat-card/stat-card.component.ts @@ -0,0 +1,49 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {Router} from '@angular/router'; +import {UiService} from '../../services/ui/ui.service'; + +@Component({ + selector: 'app-stat-card', + templateUrl: './stat-card.component.html', + styleUrls: ['./stat-card.component.css'] +}) +export class StatCardComponent implements OnInit, OnDestroy { + darkMode: boolean; + + constructor(public router: Router, public ui: UiService) { + } + + ngOnInit() { + this.ui.darkModeState.subscribe((isDark) => { + this.darkMode = isDark; + }); + } + + ngOnDestroy() { + + } + + openDetails() { + this.router.navigateByUrl('../../stats'); + } + +} diff --git a/webapp-frontend/src/app/xapp/xapp.component.html b/webapp-frontend/src/app/xapp/xapp.component.html new file mode 100644 index 00000000..219e3228 --- /dev/null +++ b/webapp-frontend/src/app/xapp/xapp.component.html @@ -0,0 +1,77 @@ + + +
+

Pendulum Control xApp

+

Pod ID: dc-ric-app-b8c6668d8-56bjb

+

Status: running

+
+ + + + diff --git a/webapp-frontend/src/app/xapp/xapp.component.scss b/webapp-frontend/src/app/xapp/xapp.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/webapp-frontend/src/app/xapp/xapp.component.spec.ts b/webapp-frontend/src/app/xapp/xapp.component.spec.ts new file mode 100644 index 00000000..5c4ecb60 --- /dev/null +++ b/webapp-frontend/src/app/xapp/xapp.component.spec.ts @@ -0,0 +1,44 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { XappComponent } from './xapp.component'; + +describe('XappComponent', () => { + let component: XappComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ XappComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(XappComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp-frontend/src/app/xapp/xapp.component.ts b/webapp-frontend/src/app/xapp/xapp.component.ts new file mode 100644 index 00000000..86b15f61 --- /dev/null +++ b/webapp-frontend/src/app/xapp/xapp.component.ts @@ -0,0 +1,59 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { Component, Input, OnInit , Output, EventEmitter } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; +import { ViewCell } from 'ng2-smart-table'; + +@Component({ + selector: 'app-xapp', + templateUrl: './xapp.component.html', + styleUrls: ['./xapp.component.scss'] +}) +export class XappComponent implements ViewCell, OnInit { + + public renderValue; + + @Input() value; + @Input() rowData: any; + @Output() save: EventEmitter = new EventEmitter(); + contactFormModalHelm = new FormControl('', Validators.required); + onOpened(event: any) { + console.log(event); + this.rowData = event.data; + } + + + constructor() { } + + ngOnInit() { + this.renderValue = this.value; + + } + + example() { + alert(this.renderValue); + } + + onDeployxApp() { + this.save.emit(this.rowData); + } + + +} diff --git a/webapp-frontend/src/assets/ORANlogo.png b/webapp-frontend/src/assets/ORANlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3dfb1b352242809609d0d173a545a607b75d0a GIT binary patch literal 61444 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 PHL|^Cf3@n@JIVhGK5rH^ literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/assets/at_t.png b/webapp-frontend/src/assets/at_t.png new file mode 100644 index 0000000000000000000000000000000000000000..3cced1d5ce4668fbf3b33064aaaa6920bc8130b6 GIT binary patch literal 5778 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 literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/assets/intelligence.png b/webapp-frontend/src/assets/intelligence.png new file mode 100644 index 0000000000000000000000000000000000000000..c40693e06b5300e78b325c97870e9f4591a93d71 GIT binary patch literal 278486 zcmV)dK&QWnP)00A@z0ssI2Ra{nS00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm001r{001r{0eGc9b^rhX2XskIMF-*u5flnLA|^!fh6xPP z$-H+HX1;N9Sgj%=zkiA}Knl_nF>N>^Bm<0gLM8|Zn&;I*ROC8?Q4t0NOpue2Pb@!B zkkOT|nI18T+)0d3uE<;|s7I!?;}p6!A_Y+qBw(&uZ;ae_%B8N{i!@{293TaNd~Us{ z2;@$$MNVjpK|nfzK@%XrBhGvsV+?}}5z@jeEF&+4Y>RImVFsB7fG$XD|$$Z zh;z=oQh@6}rN}$##SAj{bKb6UZAN}nJ~S{C3c&y{W`NTSW6;fnS?f-M95C_(LSRM- z2u2Cg48TA|ghHfCnx}*S^HEwZTPa9NCIuiO*cWT0IiZl)Z+YE*{aK+3Y(NC!ya$9( zNauM+UMfj&1>?N?^FAeoB;6Ho6YZoV9Hh)31O&qP>GL1N4 z&_pf}NcD^8c&g*D+d&#A??@T|A5P3(W zfg=wQK}M5spFGb=Sg1oknNPLP9w_S8A)rFxG-C$$wTt@QsRLObR4Zg4gMS|$x!l+< ztbU!tc)P&|H4j(-K^QPWC_KY2KqDt?My@nieomf@5)Dv)aqW8aTf6Sd%)x*NDDOL$ z;GCzK^|m!hz07h;WD&w&})zm+c$73t{YX*ME6nwyI-TIdYGkqbkB)tO`# zG4ptk@(t1~Z@o6?b%^Gw4l=VBPzu6?05UFwKq^SDc%Q3R6L0_#cbbzftkn(xG{meW zK@w2J!vgL+CLfImN)zx5oB6;y?kQrDZkAEr(0NbZAV4FA5te&r0s;p#0k{uV(jyS( z$(Q>XedK3;God4YY^54oD6d$ixdj=`(45m~lhDjFrj|RPJlaw`a#T>leqBEncsR5DlHWc97!D&0ORV2B>~{pc!e%w5v`g&v2Z< z5~L#E*b1y5y$^N}23EQ#lC(ZBRwj5ISfrU*ozb=EEw^L6XI9o<3*9mztWd^2T>!w$ zX>fC|QiDb#t*-?n>&BQVMn4lH2vH>Gw8~eo3X3`+t)BK4xwj&zujJu;&7ZM+n84^) z$xK|=$xIq4*7=clyiT&=e0p-)I(m_n3Ym3Peu9IVXQtKlmRB@dmq9vd{mNkG^;AJg zPAAuaY5BKVMy%CmHgH|?%FHr@4L37`=YIjDjFuNeT7SYS@>JJFx{Zu@9X~7YH%1A#F0IkXwu5f1Ny%BP` z8idd!EMkU2ab}JRbI_!KVrqh8-AqVCZg%Upg3kPe!~+x}5f$pTpV^aRWo>)?t(j$k zW+dQrbE|dCjv^J6>x~G=z-Nw5T*B(-M7lpceSEV}t`!3krV79hOA5InkqKZ1N$v;0 zaE_7pM)D*?4C5dTQdZT*VH~O)e2Px<{GO1mb!)`6G7VIHF%4Ebyko2NgI)_a;ge2g zE3R~EPRpp|p3m5_cFWb6k*h;i<;4KaK&yAVLTUxOx&YM!GlN?_NCZH`h`@}hZ~FAA z&v5TcrI0&~*FXE_S@CN>V)IdGdxO?{on}|OsIbbl$=&RBu=azkvtS)3*LBP&q@#mr z9>7Kb=2x9}EhOxrw*Q1gg*RGHBYW_hTD)5&3$AM5=Mk!f8Y z#zy7=Q#&Y8slKZ%r^#@O=o&~8>9#he>fBhjAhJ`S1OYkv=A9%tDtV}%?*(TgYrXvb z4G0z2n+2;xsO^2 zMzfJQvb&L(QRTrH!`@_jZ}Y#*JZi%PFe`^G0JQJixgnER#YVc>^&BopXU;j}D()Y@ zw*wfFuK=WAK{;f7D$jm?mZeNcAw`7dX-pi^I=0CY7VQ+%3R1OxBb_XOxyHuuF7vKr zsLJMRr*!_8Cr-n;nX(oHc|D5Gag2&caDp&5w+fGWoFDZlK7Ibfo5OaGj0<*o^X3v+ zG~=uUd!?TRG2aHq(GVLl%{|1^=n(;v0Sc2D5EW192{4CZ)ua_6GQC+qO|S4gMYFo> zw_bHn?yf{537HYH`d2!Tg`cf7e^s(wKve`NEVfX;FwzGNzH+tPW%UD{rvQ{01#l)f z02mk%F{dIt@vB6Qs=luCGOIr~cPQ$W_HucD2Jfldm5FchCQo}+UEOF@p(v5j_I7Z1 z)^vq3^ygc5H55?o=SH&%VE{l3_rwjZv_eYgytmt0A(<4TZak6XRUEGz=~}An6bvk+ zOY7}KD1rX!%&Yai6UO>nDmrn9L&xE{%XqelOz%bxu zAw^&V025N<8}NjbyA2}=_t9YS^_@VF9y%lR?OV|7@S%u;gsT&Tg{NH*4FTai&ydjV zJxgpZ8XJ6rok|2kXXS1Q?##LRF*|(!rl!gKy)R?B!H2o6{=}UyDTB{spREF*AeJ0pQbbO-P2N4K=diuCGK(+{;b@X>SsQHp}d2SiTLV7t2$I+#VvRRrSMu3dY z!$k-QNBUMTR~^c(kh!7EpqPggz0t!5XmX{hxS9m@1ZZxga_eQs*Ki?Eoj$8SWNR3& zu5AKMq}DGM)PaJpt4USGRV5=GqJ;>C)=^IomQ`Nue3D8~BC~)!wR~S-y}{G=^1N%Q zN(ZX0@yyODY09qVhi4z%3d`;TITjF=3va@zgScv+T#rUGQz3HIYpKw`g&wn!VI}kH zz3s*eufO^x*}7bLfp=!OYSc{NNV;3XZrzEkuNdQ41sVW%@5r6s9+^%?{=qDOtP=#z zIRz6Kkua%6wSXv5sy;AOS7Ia(h}1ix8MXFEbdkCW1qd92o>dE0n`V_+p0{A`f+Z4B zMZB3H+X{{qb1BRSg&dY~V+D|eo2(b}IuG1ElY6f2>v=v_vwXiJRyTfi<|}u~=jN)g zhVIH#HVlE#X}Q163<=0%h9HBH03o^*%X=!@(c+ynka|mop?0e=zdBG2jbtonIzU`KJg(L*`^4H#&RjVaYn7dnYUegKqT~p5>f4E=C9|UM z_JUu#L2aSP@5vUSwnA;&sulWId9>DZV!4@p?mM^dwDWMQ;$dN-)})=MW0)nJ)w@!2 z$LN4?_c`_LwVDKK)=NQ6k%bHMUgn(VIqNqIYv)?p8K|_?2rK5yIOjR9JYL%Gw_C4x z! z{BYZr=jpJj$;AnNk2SRILp!Se7s&xnMh zrjV6KGPfilXx?-eS>*r^>_)R|8~;1SR!4RsGV!T`0vCg(IukI%ZNS}%LPtObjJ)WT zozGy_r`=@R0hX)dx0iQyj&PNw1wD0YsSWdq;w^2@IcpmCe6&eGLI*T!{@JSfBk4nV zc$>MzjbjrLbu)8HiUi*m0V8IEC)-K6{(B{!R}aH%1r&Fmb9QE9iw@!LW)=4{>0A#d zBr{jcRSa4-s|_;(MOb8?RTVjkvzbpzdbjDe(tRgWHY~RGUIz;-;_Uu9iXmqP%FUDe z<$j$a8HTzxr8PqS@;dMLNWyMmSPPLuu?NqHI&l(;B%yB4qS#xfWSPv_((vl&7fNl4`$P zk)2!qwO0Q{38jbdt?|&NM5YII%zPWS9%uuy;dun?GL|7_oP^uUCduwg(kZsy57;_ z;iucc7y}R(#E?$X6D%Naz)A8HVq$~5e8*cdaJY}m5VJS6m;)4E=-k$y0(Lyp)guze90PI96^HF@mt4?^>fz+Xk0yy@20eS z4_RAlJ2VN6ahQ1}ufT9N<-z)h3U4w>ZvB_ndCo2mvn1hlNZ#+Krs#F(#++<$qcfmp znO5Tj5rX1=zpwl(;@r=t^%mCB(z@+XJt*|nZ4Ct-2vDhwTz&OH9IsH-2Ytc^kt zNkCTwNXDrU%rV>|y8IDN&EY=W^JwlfW0iy4LrSOL+TTxTLQp5S^L$n0iCXKV@}<=o z*9_@?f6XGqc)FAHwNVlOTZWUbvGFm`0MDyIbQ(8Oj*J3^AEU^q=?%6qS?wlWt5E1|ur7u`&? zx7od@g|lP9RNVPf+fui;cs*HY=SI5Tt+8F8wsjLL}^!O%B{Rui}VPD;3+Vq0dn&(Zbf`0AWJo4 zH}M-TrW`z>BR8|&i8v*)310u4a7%kCi_?VSTh%}y|dFB&L z-p{2UV)3g|z{N+DiEp6NMN!3KYpKZNa~B(=rlIA1hbE*MMR`P8DZIDBqLybl6BRRLQ^Z2Ae7vg zofbG_E>cso7_}c}c>&iluqFb5l7rgh#7m(N1{Yx6wvQsNnwFrUXdAKbg6i({qKe2| z$)e%Yc%5cuo@dNKh7jhylz0_*6$yO+G9IBbCAJYVCxo~FMFcjAo*94zN9-i)$E6;8 z_z4g;#!+-@pfrpE!fYhq8z3$Dk(SJ#N}Zpc4&LWEuQ(M7^ph$2X$#10xFpRmOHo@T z?@l|wq>f|UZpZV}Q_OJp)QjcIjfmmyK3YGhh)7br0#9H>n9ChWs142Y zoFORAIj0l~n9=A6Cc8aX&YXc#vZcm2GnE;6Vg$`C>tI<{lc6HVBwsl4Rys#AX#&&f z8I+rm73)Z=CiCz)VcE!+8>ULWNl8WvCQWuw6GUBQeU~0!nJaa`cUX7z8hmdvKBW8t z-0^%EErB(vpo09d30SrbQx20LkQmv*s>l6$gx zGnP6mQ7x73-*GBdkTo*$W<%A81MCf#apSk7Ty9=GDERu{GthKj?_$}y`)J`NMZ`4NZs8Gr-bNk)z_gpjYJq+fY$8kJ8 z9Uq>bQ=?x@Cb!p@mzVo_C8^ckjfI%4g)yf94G;GOc9rCMVV?IH!O-jden%3WSzkhN zrcV1zj$)o_p3PlJK6tx5cRTbFofgJ}MQiLumP`{NRE^rEPZZRWZzSJcoKu)3Yl}2Q z+1d;efOFo@^UR*`uoPeg*ld}{BmDb;rn(Ln0nxVZd4Va%urW5H0!-4u0};R-#-s`x z2kGKjJRchbVrr`Q1FjT1LHYDkXbQW;dQ*r1I6Gf8Z5o#0QhD&WKY{%$#UfnV7M| zHScK-?@rk&Dpl*W3>z$sH7@Idy27dHFd1$~xE&EnRZ<8oJFU9ye%H%u)oSN?ZdICg zVoY|7jGYq*0ABCs60z?$lDYGzPalW7xy?Bf9yyMKgt-Cw^S}PvYCBjqbut(#);Y0N zEjWhLWC=Y6LsJSfNTxX>&X@bWI6asQ1x!TAV1v*UObO~x?mmXQ9Yq@}%Pgi<%*BGK z?r1Q<_iVWpDVY&xhLJg!!b^$(Fz49>n`l0MC{NzP@%8%p8X+Nur+WW{#Lqwc@sWLD z1phtFs?r!E`GvGMd=)c3-<;WxhBx4-MT$;6+5#2Gn#C@0ga;a*2I|{Ib`cON+y&te?h!%t5p%Z%?7{=>Gw|ztU zCZ+0k&SKQ8m}}Xe9he!h*tQ=(Qao`-8B3kc+S;^k$Yb9M_Y(vk3u!id{e6mWk%)j8cp zBax(!A3r=lKP8$wV;VUQU&4iKIsW$RZ|8ZMS>WnUW><6LAg;&G;V^?+&_#1Z7#P$% zCj*lqF=o8pzs;Ggl1chRV9uyCJ|alTh7WqykNFG*0W)8|y24mBT*r44gn9w>e{09B zKV&y}##FTH83VBVSC$k*qGHDVe2obAMEOO8-=01^#1WAAzKl2}P%XIEW7Q9m!{K9C zlUN0&X^bwVu`|J8u$>^A>{+rsW5ejnm8C?Mw!j3Z(Jt$k)he`ZtSz$-(1tY2fuKa{ zD~?y)og3C#R?hMlOo2?h2)0iFd9Zs1d3VW6Mtz#sCwFodC5uf~DAOdsjEgk3#pSmW zYAvMliXzoth&qBzn;Y0As&6^mO{6Q-6YjEGsoJMN2{NDUs%)-)e^KRDj~B4C+~NCzEQ^n9 z{}$d=>LYBt)~=Tlh&Rs-S}pT>K68gs-@8BM25E9iJ7R3Aw__ZK`NYB%o6XW1yIxE3 z@^VOCX(ng8U`^+lbfo1gNS18UyO zeO4RY{q^Ne%b2qy9qB0N*uc7G;4gQhi)iD?ycphYQ9OpbnIOT56uO%NAy0g340AuI zi$Q7C)J!)2ij55htmbNN)o6D3gOOLe8fy9AWTK$V4%=A5y5ErHmnTgKWjjc6_|x;p zRjBgOM&^p?g&;56l*H0^D=~o_Zlhkj`jk-LqE(x8iA$3l=6U{5*t&&hKt(yof|KpF;ycE@N7dv`^k3N+_H-MT zY6z>~bLuo3D8{lyK+#4In@eSXW^QIn%I#%$q8N`yyAFuFld*_ z!G5V;XQ36{XSr-GGdk}47Jf%swVJN&Ou5+Tb$)jw^?WBj{5ow5wa?42^&%d!9Qp$7 zE+31o%-rbii4ip=r**;WXU58|R6cMmJu73>YvpLRrsthe)!?@?KmRB$m2G~7(TobVOtb0Bs_gT&vY)e4SOgqo%gwcyv}+BzATU0ks_He zpbj4?b#~eqgNF0GQ--uEf(7Km+}$hZXz)c~deE@ZOl#F-EdwN`&!)N)3sksxPEzD@ z%Ckbnw=iP20!Xn^6q_~~K6wvjRQT=o!Hk(x@1X9!%`%>7vn;_ow?Z==gXz~zQcP`| zmKV;VUG-(H$C}jR&ScBwvEF{RE7NTcu%c_B(&>dfuQZ%oY>F#WNZ%t~)GzBq#^}b4 zW@K$cMIuQ^V632^wsz_qUsXJ0jZ`Na(J1o`X(&s{y9~S0s!eV6iE>8R#~-J)cXdOgg0FV&DFJC|_@dq{` zo6xyuab}x1YZo!L_;pqt*gf?w>Fo6>S5C5*QO(u4&hJNeu=?9>W-Mw$*2?LMRo30-|efaV7r|x+9aU4m$Tpe#-S!jCJdCZ6iuamN=#r5Ks zZ>c45cd-vWodp@R+fp4)g>;&Eri6J6jB!MqN)az)X6^@6bUt0Kd{j(h`l(n&htBLP zNhDr}2}W3&{2CbboSKRthHE@sPl7R{~0Ym=ik zSVXb6xj+u{V-R#Q)mG6Ii@f67l?RoLgX;J-Qvs}7u0ia!vB^SYo9S6+QO$l^dobVZ zG8m9~j$9Bf#=Bhxq-`sF?aZXMD!mY_uvb&r$E!2~U}U7uoFx?zS=41kmhIB>Ugn?X zdB)b;hQN1jA=hEK!hJ)@<&wopc|hy6u04b``+d``djoIY*Li=VXBu71L|O zEEc~Sdbi8-5>+T{@x4Pr3em&pmGZT5f~Dhhg~Rq~wM*fHz4No)1y`8vQ?!ZRX=5m2 zoe=AF6zmJ_7f?H9ydvh+Yo@8?; zrF!X9szGH5d8CiD8>_dAQXQtdY#G-iC1%cvnru`4+RK#YN|C$MbKcKg$+41~4|Nm+NscSh_H^bYm5e$yB7LRrWQ_ z&4%nYI&lS-us;uJ-kE>EMI6QdV78KDG}^>P&qJ>(n}e zb|}!5Ehkn(lJe)L&us7M;(u`s;kg<{%WTCKR59QLRKZCg-1|!D89zbOyZ&2wSeFW(mkF;YNy7b9=-B->bdTu6K$A z*Sv)TTC-5-ez}q3#T8Rr89No(Jn)O0w$_LE#=o~~@Wk=s^1Qv0l5IK%m;G`M zyPz8$%vjr57(J;Y*PSQ49+2qnpb?3CR*gz9QgW&e3X8?Wy||}Vo0O|W&Zyt464j}b zoP=&eix-;98PPI?(j#0!e&fa4?owN6baDQ<;@8DuGTR-Pn+RCv!IlI@%v8b)F!v3y zZW(a8S!H)7<-P9EBs`OQ+hckLIeP%^(tOQ*EBMONx;SU~oZT$ZMIk3wF_e(zqQF{2 zwghb*5~1A&ygjjVzQ;LxuGW>-xY>`NKRrJ^MNE>n<0;ifYsy$@^>X0Pqt%r{=XoYE zfE$^z%DmKJvj{6mlGc!7^1&rOZL6sNoJKj#buM*)?9+oo%A!^z_~c z0WAIqMk=o#74j>CTwbedK*?_P5m+LZ)t0ih05HyTd1ug{o<4Psuqi`~CCX}zV~h8k zYt+F8^19h=WLtkTILsj}HM$`Kalq22*V-gqf%@+@^4h=sEVF!?<$ivF8L||HPe-WFfCTaWxT_*m%wF3nHurNqjdQv zzsJWPGWP}|Gh_xEnK34;ZyU!Z8(i;2!uubN0HWNY*>NGr3poU)QPuvU@46n$Qrh3hrBt#pgTHTs1KJC(fFkK^ba zswIuKt?M(!0IwO5d9fxojGg;#HajS;Z!tS(c||}Mb0I>D^1H&;82-bjPsefOHy+2x zW~SM4!`dW%E5%X{G7R@I&sh0QFDSN2diKc)?KpeO2rVVMk`3hWfXY1*;HZMn?I1aZ z-=1zFG&5~2p#4g8uF+%cSv1$Yi%Pm%t-SOZ3uL)0?w7!Vs2Mwv+^vU!4Y*SIDjFiv zzurcTG}7ZB4%IxKGzeRkE!qid*O;~iO2^K}Zs*%hLd|j{RRc*@&E>GR#{tSSGSi}T z;L5l;dN_?z04bsPh_yTp72;j2fJVXv8(MmkqRp)WXMsyYQfp#B4l^fC;e-ggHTUff zW<{K=n>&E+D;NJcvUKfy+Dp?10-@d zNiW3eni|4cCjL1(*VZJ9?m8u-F3tHou7`ysi###CXHPCZZ1U%n8r^1JCUTN$m_9As z^C_!~=QKMjf^i|us)lLqH)dX^q%sUoVsrQOeVKnKaE=Lq$ zK9v4d%u!a|0iz|GH#-&B2DIc;m`iVv$D|%uPY>PV@(#i_owSUUH%qeRjRD#O4Rl%% zoU?#zX-JbaiEetn*|*nNB`Kg8bN7U)YKC_BIF1pa1ldu>^y#){{EloQvq;a#3&NZp zBOR-(>@>9O*HV?mBYA{Y4EvOWRk3_Xvw7s+L+g~zD50R>V@Q+2^V1W8=l!0LKqTeG zJpUFLWy-G{R$)Yh5dmU|4OB!s>v6?JP>de#3NTkX0pZ?U{xVr2txtU_T8O1MT=ZluXIiD~x` zzGyW}cRB2|E-e0=x*P&#h`9Vg)g!3Pmj1M-C4}Cnit_oKn&+G!KRh4DZP!$qv8wUM z`6R2zNQ#r2J*6i>@%0N%W+63O_1w}CHyb{zX9xD2&sbhn#AvHQ=InDQEMI~+4v&bK z(H@#TgAqN#xfHy{<&P)P*;AX9mU2}U)zF^wAQ{X0kXo4S60vHjk@`V6marLi&Y4Al zKRtcgnH5-`^WD(fCt0-k^MOn2aawVm!?NR-CKP8@44@MZ zso3H0=Ax>YKCl8GW7)WI&6|J6-*`-otL`Y?rP>X~eY_z@zscEm1i#r)90RwT_dr5x zCbps6TG(PV?v1{Ebl*ODdq?({0IKP#X(+giJS!E*!Nl+u{dN!8-NAJ-^{~<6R$ASE z*VNjW1R$6rJ-H>qWDbbP7`Z&c_J)MLJxAX@Mr{GQXUtyQbv(K&@6Eau`OTJS1HS#$ zo6?GFz*@s5i-NVdG(EKwTr)o1Zdsa`)4iu>flCE; z^;(MR<3>BiIOjRq9Gwjv zW6YW(*T5{-c#dukz~YUS6l9)GNJzL3yW7&$l_}aR1@crz>p>t*L;B4WI>?I+5`SSJ4m*2BB9ro(G|S>{DKb~W_+ z?d9dXCn9_1upxwDgd$(6yP5gaOw-dmE)<#2%$^PcrsTNhRa(qwBa;#<=W>X1_8#KDczu1X;C^+SiG{Ua=dBs}gGeK0 zI$mYuUA4QlJU6i?YsT(1nt=3dslPGf&M>vxMeVC+4L49bG-Vq$G_3~QCcz-}Ad{9R z1cTQ|c-1s?Nt`5%ITg>qkj@C3Gc^j!=k{X4WgPUql~hyzdVcX0Ozl17{YJvRoAB>h z{BiI&n8p=WoaLSvqR&0;pQ#bi$mP3SFE}c7;ZVys|Eo)x^AtvGncDXf5I5Ux*@y|((2YI zkHdRR`85=EDIasrV~n4F{ApF# zX|wg{J`Ho8XS}|?p7(jbpYDDfK4X6V;nUM`TcB3jpG0vJVa7Coq44eH{@1_$jmG=y zU7F7y#*#=zM4a`GLubyR>RwnZE1n4{BBp--{Z)~z%!;`^t+f_`kD7goY`XJQj$c7Q zCMaTF3hiELv3dse)GBz*`&^bs)i&tyW`H7ie|;5WJi>*>|G!ZFcFwB7=&(bY(7jq5 z%gGOSg3=(;GWQMI}$-35>bWeJKeC~Zm5Yt8khy)09pK=5+e&nhz1!izQVcd_$p z{%l997Ro34)zhYBv6@OaUcEW3$lep_+OK%+y0W#%sk_L?zO4FpxL|K3MZ_BM&|(AZ zHU4)U^YtnFr*=Nf(BJ1^_8H&w+R_um>HT_DMKp4WQ{dB$y?advgHYgLE3V4y+i0qr*>Iv15~5)(Es34^(YbNq9fU=1rcyr>O7Y zxV)+LGc^x-P0n4mjXko)%_7=7dr{8XqlJd!FfMo59PJzPQ9e4Ql$9vG{5R{N_l{%A z`t_R3*Td-doZ!sm4n|C4S_Z9yaMtAqggNK@_NwzPJk}O@<713fAGjC#d5rPt`MHnG z2+d*UK3-p6UVp#e&lA+Aj~{N&x7#t2vi17%lB?9SJyV2WmoVq4POYVwbIutgK74r2 zvg5qpzkU1d_m^+kPU>SoF{37#blK4^3q~59=ahlpUS7X`{r$s-4?q9#!~gh~KhKqk zgVb!oSPn4B%qZR4FaO@`HP-~)8m+9%fij)hIWLK3eZgKfE-*`;rzBs?cJ&-pm{<(*bG zF8LZRtEuc4bEKvbmzN@1Qcv3I_Mi~Cq-OVb&4`#0F!K>}T9XT5{4OA#HN^VQegf#R zAw`|aii&-DzaNjc8$-UC&9Z{mKCo#!eDMZ7pydGfbxvH;(|kMorM`EP*`cBRzRIh? zxB!|(I*j$C*$(W&=s9zh4qFYLt#eMP6kWE`>n!w)P73+(F%~|)^WUme?J-zAJQ~>N z66e3(?{k|k7|t5S^)O+M3AKmB-@i@i?WQ=6V?7feo?*nmbIxOo&mTY4Oj@$_{3^wX!xuR|}dFC;%aJ*80V`T2Q9yu7@g=h>~dATfr2{PgiS#^3(>YlMc` zU;g@6Gkbb|8pGUyIRE^Yf4!e`xJ6MZBhF^7XU-Jm77riT(zx?S> z|MI85^ck>5jVPOrp_%LMI{u?xL3T}q^_N+kl{fr4R6?3_D(2>+T#p*cjAY*Lul)Jv zf5;>>-c7-N?3_Hu+%(204l>`2uC{k$e3SN{vmnx_ClQjwce-UzhPl{0U>{~x zU*gH^6f|SExexo0B5S|jOK;guYz20+`_);!T1nh%*vvH(X{jg7W)8HyX1NAr2s=YD zQ5kY)NkQ)kFyWllE*+y zEwLW;*uve*$~XPG2Ozsx)fZZ~$O)Ij?W&2m=!%g$%E_svR>+YQB5Ul?d%XVNKV}{V zobH{2HBYt*z8BG};&ih~f`nQ*F-)aVo5sH{0M7@r<%z1N(Oz?mC$NzYH ze*W#Z-z40Qr~mW+{=dGxyew{D)(TB)j%Dy$SD4AXA}jv11->S%3W``>dwE|oW?Y_Y z%fzaN+$waQcYk{R+^O%5$t?E|K6*lzV=dW~a0Tid`frUL%5+AU0EBD`K6m36NMk`^$fHG297?mekQJ1R3qo{)KDM z2pfhdP_YiO? zVqW>anc9DCagZ*ZDj%rVMDGb;W6XDF&x|=erHIp(&a{P7r)s?TIop$52iQ9u7T&0N zt-6Qn#@5(aym6k|Dv4T(Zf%3v23~C{Vmp^{vsAL`L+70odDP52TRK@ewH`3(s@KP^ zKfJGv*5AHWIXv3N)hld*Y|qiAHz}@ZU5k;KhCZfikYw`(8$e@A(64jadKik=$=7US z0UTrO*S3~hXKZ|j z^PhkG{Nck*((B6!;pzGK!_Pm?(EUDt{q@VYZ{Oyes1aXp%=bZ9w)7P9+qZ9DzI-)z zN&n&Rf0;9qb@Ozyj~||%pPqkzdC5pJuA`0wou;U$ufX5^@t42<`(K`)pW~c#Pt^SB zcKh|WUyYs=7U_b=c`*&GXPGsVxQU_$Tb{poHx-~;uGVwGxNAsOFP}gE{Ey}>yv3zUsKu2hX!=T>*YFK9LxX^bMu|Z;hAd&MP<@&2;C1Ob#k11 z14OC`IM|!|wz7;>Otf0JNa<+?T2j)Ie7BWZW=l*m`)t#*kx394p)ek#OJSz_JsnR* zOzp&Qbn(_Zl`E6&tm@53p!V8z(^UPTCb#79M!%HzS;*I?@#!{D)&iy0O2U{hjV`5& zPN^%}DPGIu<+8Tp?&pzJM(4b45MoBgm54}J@%A00bkfojIQG)*e%8k)0J1WW$6oHk zaOYNsT`rkD6!$H`|Du;9DU+9gr%EDn&bcgH@@KAWN3t3nmz>UvY?r(`qqSQOwz*No zliNzn?=XhnjO=)v8u11TdIx*&34Zmb8BNh!rHpCs%7Uih%m3@*JvTagX~7of_8q|{ z0X?<+Mm>NxcA7xZLr61^h6r*660;w>&N)daW~Nf}{k1=MPFW>HC*v~)yFokcwfBW|Bo{G?9NSN_BhP6}E0w>dH{@b@#pl%?K zuBWG`=jZ27&rg5)^PlPS^QTW{e0llyr+@vo9I4^vkY49R1P~#_jN5Vi{D+@EfBux) zCsXN{*L#jL`!E0WU%!0)>bCl$!kX$(^d;qh)iq^F3Po|6RdTPI$)uWLye4}nW;F#8 z$4=VJI(pCf!k_=}kJ`p;Zu88(6WO^BU?;|~apZ%WX1DZ? zW7tkS)w(qTbj6~*r*xj@%yV}`6$-P?;h3o*+%c=L8q3!Odke%C2Nl%;@1!G1&H3(| zu#%tmbhG0aO-)pvZQZbhON3_4{YBKE*BXp1D}iX|0m+1EIZRo}n*oYIkIDlCA8Gz! z3t8FK26?jH&saU&4igXa6CR24O=!*J<&nh7cQnx5@AwS|=JLMVT|?U`jLQaKr(K$9 zb8O#$sjKI)nRH+oLTyMUHwx0k!+1E&Sbsr;v(KRRuO&e!u8#n7 zn32bEEI+vW{k-4LT(P&CC*iWXj<5Ig3<2kP8VST7e*S43$Ja0a7L4cHlNrzR{2zb% zbM}RuRA@$o=6UMJA3p!`$DhqO15mj8oPzLr&X<=L_wn`Xm;dKK|5Huq21*uF6<^8j zggeQmMW!L>#ybSTv#;f@NkU($0 zHoDxTd){fva}sdRDWeS**_s~^rCw$;aW8kB{#}sc&3wD=K#G@hD2VTv?+b?kZ zt;}lu%uXCy7Fv$9Kq`mQ{zciqNdLksb*mlaP9I~Q0WxM}OBQ(oMGU$*S39(|+MGft zl6Rb3!{mMTQP*ZoNurZj!ZBTT_#5?p!LrLDv}Tqp3d)*4zTQ;?&Q_c6 z<=_}2C3f5KR?apNVI7ZZir$7$_fThS5`>4AX+9A4#D@I!tv^v_g#E)Y#=&bnbVpQ~ zXQV8xS+GI?!~D$JpER>3l@>`fo2$!l^%@*_)hlSHiUsn#DK$`vn*c0MdYBTD;e+id4GKw$ML5> z|LLFq`OhUcsfl59I+^^K84+EKr7a3d_&R5H#d8FDl3|1l7oGJB5p%7&7UF6Z{X={= zqJH&d9|6EOUy+2$_>}( zu1llA_b2G`Lod)zvWS#uaf|FFKAQoUW6sB(VIDKKQ}V>mMn3S`s{8!xqEaZU2bS(q4T1cl8yA+qtOLPZbW&A!dENOMoqayE&e$# z^TpLt#xjrcD=~kh_gtOW)qP#%!p=Ikop0YZ4{2SQd(r8D%`<%DHD9KoZGu*oO%ZJ@ znGPJ8ia`;gkS3I&nOJ`gMbnI)+1v3tO(}9E1tVq}iiE<=#EG6ppSu5>*~>lVgb~As z*6t=kFwpBVA|iYYH%M{b=kwF^)6?y@FJI5|%>DBGd>g~==ltux{VgKQ{5;POAD{o> z?|=D+|M1I~uisu?UNTWQj`2VL<3If8|MK7d>wo+2zy9`R4ExJp{>_K~@ee;AteK>GbyOCM?ptmwsWs{qrECsU+ksO>MI2V3AA!(A=M%pP!zd zo{rn?sQ=Hmu87O7av8>NC3|HvhI4r%xyMq#kua-;Wb z%$#0ZzGyRSs?HjrX^lepV#@5qo;M~LZ=_FevCRU zWQ`8SGMPvfaqZjO7cdIpYmC$yu|tb1*NZj!u86|w#30Y&hKf=zo#Ije$1sTzGSnE} z9cU`^S13YH&$k@8_xf^ovmbx_{O#Mf*VlXI1kX=5qka4K`t|GY5`2u0AD;e?|NTFG z`t;#Aj!&OH{`Iea``h2X{QmpPx0hFQ`w#!&@4kHd{g+?<@W1`1|Mj2#>7QwKp6AQ! z{eC~6o}Z3m0E{_T12I?3FF1;y;QFi7;8vV8_l(t<6++Us@oPLXv3=;Oa1wm|LME#G367N zP7Jg+YE?5EM@|)4R4d;(u-8u9<$?(&PcIM>3hY-0g|3 zh9R0BJqE7eRkPhzi;s&K@P?fokD4Yj&Di*^{eUs-7;Wv{!pk1@X>^-+85vvKP@6!e z=sL?o(3aEvg&QQJqce0w#2CH{a2_*zBRQqCHhME?caNldMB4|jF7upNUA0XC8*_r9 z4L!)39und0A|DzX-{sDKkAYr3>}Ew^U!$MjVRwdJ{$IM@?ANmGI`13ZTx;)rx@vFV)V(An_7pEATBJzH zN&o>eEF^{-06}0wf*Px#MM{*|h+=a|>Go~) zb^5*cT62t%hcV||>zrZ;Lbxp5syb(%wdNen_x--DNu}P;hXs)jvg<(HM7-n@$rwpeD&bUYj3`La(a6F;QnU2B?P2|#NcW= z48yQotq!i=JlNlP>G|g#Jvw^pop&ESI##vCB3-?D#leQnFpS&OWycA3N^+{PF`>)W-RDd$3fSX zRKjNMX$pa=yC`DX8R!v%hD*pPb$#E(yvd?)_7Y%Ja`lKrgor}h9dFS%4x7zj=77d6 zJ*OE~xrF%52iC$;V4pM7O?Y{r#C}E(7($|$7^JXkmo*Uuq0Nx$Tm%Z)*v(a;gec%7 zjIZMQ*`zCy?YxRWCbfnWHu5meCn5EN#l{(EmqEM6`mXp4+u2%{#}w0BG;J9=&58x{ zi9gQ6dn(&&UNE+7<+_$=W94!LU>#wHt^B|4v6BsF0qs(=3wjfNGPphE1!dxowk{GDXmsZ z2OGxWU~kVIPEO9E8tM834kssP@x?sz^b;?<@a%^l-g$U*a`NCV0j>|8cTQlw?hm|M z$#9D6!v&M;Rvy0P$jgIk&pdJcmCt|rkN)Tzj}DKeT}av?a_-$m5J z!;>zpB=PY0or@@g3ZBrr1qnoEEyi5JU!yf*)c?WK}B>GNU_L?SdGt0BciB<@DQ4r6g+A(M#Z zJhv&<$cXap)Yt@@s{morcwV5z&T>(pMvBc<;ncQv^{;EIW{0vU10-<(C`2=y2Tsm6 zv~c0Hjl!zrYX|Y8;x@S^)1sGyprSv^;5Wq?nhj?<$dcjLv@Mq~EOU33ZU*90vJ0{SayAXe0&;pUf*@#czkveW$z2mKl8<(|I9bO`Q6)h?@K-%ZhrLa z%1bBLKc%t+Q@625F(H^>=c{`^**kheAHDv@dj0V5=o25i_14=T+_`&i9LB?khgYv1 z?5+}Xd7 z4Fnj$g)md=T^esAB1?HbYC<8kx&x8i^GxOFwacf~azDuu2`uZFwV(%)0F(+Fr1IZt z%=84ewm^EAJEo4iu1{T`)#^%Vmdb>Mj9gJx05f=4<*Y=YT3ig?_FYwNqAW}`D&1ga zb1k`;UZ=kj2+XpGe2gU$HG6F1n#5y9FYy-K`Zy#VA{Kd;a5kTB5MkE|x13$j8ulA& zK(5F_n4Gvcl?`w~jfs~sgX+3$ddQ|MkTM#KJAGQl79Rk}rLwejFqb}=OF%TA<#x_O zf69^F#v@IB-m)g*Ur0$(;)txAS*9n7T>I@QN!O)5B^K$r#LU9nMUM!T!4LsqW;Gl; zY6fCvt_@{kPVsw_h_E%SNNqSCV^x+N33C;wxX<1yYI57zP8DOkJ|8X>P)AAfnH0fP z-<${)x}3ODYiFi#pH>+nc*z$DX#;==&*3obGpw#|H$XMx3&`S&G%ARx8kDo7Xe_P% z$b=9b%pFBI%F}`$B|?t;+;Uay?d@b$GhHoLIqPP#MRE}q;!$<8*#g3gFFx}NuYCHC zzy7WJcW(pp!>3<)@ba&n?>^7tKsKOdG6Nkck7SCT-F$oPrL(Iqfab;K!FIiVbaMXU zb58@n+4(w~I^b%#aDc2isygA6^I(pvWxqaKBNH<(7k!DGD8>}JxNAfJ$T>3$A|4(d z#v9XWJ_MoySZw~wqV<~H>le&@b-h82t9)@)Gaq51yYp&w(2$2E#03k=^@6AMq9;%! zc1|#D>Y#!ArQ*dWprA;%SS&;+YtCb~GTj40i6cF(9j>KnF))>M!K$I8aQ(*omjWiI zs&nM`ykw3edr~Ev&oc&E70U%>=T+Ae8Lcr;vIsbanpyAIzQ>S%aZNjf#@M?gJ*q~+ z3+9x|K@%5Z%%;5TsxS%r`+T8|i7`oxfdG+^g&IE~t{|&ngvD7-Q@lxehTu}RLrd?A z&!kF{%4)I10o8Aj`GWGXNZK7PUP6QyH_4YSlFO+{_1ljRv(1jnutC(7=_S`cOp)d<$-z5=_e7G{ifo_jdfkx`c4m6omb1BS5pjL%tdWK);VskJSqe{?Rb6ilufyO z)wDtvk`!wyR$$35MCG+$fO*@Y1q5H3!*F;|0M3vDKhI_M%R%gL1ctJ^BjTOi6#=T{ zuJ3ktcaM%w%#Dyl*vwAP&WY&8^{c=53!nYdKmV(Tx8K(*Prm!1gD;um>b8}a7qN6xN)bobF)dVX|#w*AOU&vjjQcz6sBsqYvmb`6%tgZ+c;b~ICF z>AEy*wwqzIx4Tzm1!OfUZlZ7_0->oP;F!n5!y{s8LgJ8?wnQukMdaenneA(uN3zyX zJ{eB1p^)Zt%?nF--d!D3yFf&J2m9S-(Z2N98RRTL$S{3BVO(MW2GAOtNx^MTUAI^y zCdsPfnCmHqh^a|mh$5?Cb7lv0I{@2R+{iXlrbo>8 z-5OSC3LEjCMhBb!Epekz{m(peuKf@%1-i!XVwU*7F+2>tRwWw+(iXcUDam4yk_gQ1 zf15qcR-IerRhcKRLeU=AGB@&&oAQL3>5A%o({(9{M3H}iuZeh(XE)z1H|#rcwV;&d z)vf&uqDiSs0IykmMcf4SA6nUdv7Mb@9!yRCFpE^RDnFGruDobwoKN$8x>RP1acI)D z!1Wi!r8^RGTze%AH6*oElsS$uE{>cWEO98__kFB8QrG2d+hIWTB$ASBwxg*L(@VFW z|J&E!d2r`L-GB1KPyJ(;6}h52aYA&!$Y5|nz#>g{W{#X<1k2sd`L&Pk9=@?Xdbr%( z`7jNq4O6l?Xixpouvuw{R`dR7fh{QWPR{`9hL`jvr>PZuZ zHAZc6+>xL#BYESY7XocfZXjl)P)Tanb<5?-6;yLpZAhca7jqU8Nzv^_$x_~o$TdWi z)WuyL$8YtRfSZ9iGk2*c;XI6SjJGj;oS~&?Eqs(hCBm8Qi3+nUO!-)SI;q_PMc#)5 zs6EHfsd8Yo&~)`+@D z_CmzC5a*q8i65Ee6i)X9hmb$$2q8q{`rgL*Tjm4vN%t(ols)W=0EAo$je4L|h|MGl zs&KKgC8rB;wBlx(7yI*;sGaO7G4q8(zbaV)5tGoOFPd6n@=4QCAQ+lv#Y^Y~zYqg6Do;}#SIq}aNko`MgoRXXwuxzqehk`eF!YHyx~15EQiZdH zV3tbUd@KckOD0*-lU6nbHiNFuognq|QPmhNmJq}m0_`F6Uf% zbABmHwtWFWC83^5$55V8CSfX*QsD}k^FTm)Yk%Egxma|<<_3rdd;6znYgHvCVa{2H z?Wk&>|J*10zJKj+-f-zY_}FiZi|aV9orno@9&^EAfdXz9hc5ykv1je~hMk)S z$8SEk|B#ulU)z89@F?{1sY_-WL56#~J7?!>7EUbgK8#}?$KBO#4V$I{-Y*K%Fr0+o zCwE=1rl;p;(E<{d+&Y?$p_(sKLlda9bO_)TYKMhY-m;YdFTpD2;uk=Z?AhJG^g>v$ zMTUl%P31CkYJQ*C+he(}ikjAe01BKgUZK>dzFU}CHbtyP{}S3l%$QPV4hqnx1mX8!oU^-g5+-KhoO5$NU5fN2$ENabnai=^EN6YB z#v^;^1~ErMlh@?1_-04VYMF?E6MC7*X4A43o9+E#9}!w_EMl|r*UqOjb7^+r0~giZ zbhfr@xu~6Ls~atsTgX+wT&V(Snpr8fJOys-R>IhDlG(L?h*Pz4iL|aCqNawnu8Ug} zW}Sz-WsS5&0lst^Kwp{PqfIjcsatGzCBcku3`GnR}H>wnfFX+x*O__C}6Wpq_KPVrl5m~6>F|Bqwhk1~=1^5@pWB zW6tqTbtwt+u-<6agM+=42wl}uk}o|g|KO8XjyEO*YW{zG z_tC3&@(yc`69mZA90<2(oBijG_nzNBdgJc>hoArK$M4^Nbm!iKQFVcRk}i)M&3V0E z_g&g+fvV__S;aviV;;m{C?Jt{vhjxmbnfud?~P(lJnKtn7yTS5Kc%m-NB zhV7Y`1a1 z4#Nm$NGM&3-;0ih7nB%v^%rp}@deNv2ljY0&xMsn1@z3*jLm>(G8Uq_2mzD3mD{M? zOko4ZY?TBMk4(ugwU{Nu_gHYmP5Xq@!ezK<2MdIxJyjL??&a;M-g;GM7FD|}9Ja3akWLsq%}rs1->szyf|B5s>CWK`GmNn{*zR#mm~hZ7e=dNGwqad(&SmkU1e z){hr&P#K%H@R|a&YnJh8IbSP@a$XZau<0uD2?JYW$?a(a5!r9|xJj)us5u)qB9&RsL@gcp797W-1lIb+Fy z#!^_<7P09{Du*Qe?cjmeFGpnoKO#9=WF&^r!>WE3<70$Y$5q1POixuZh?;~Nz$2c@ zFGYe8kr!+Q01>k=OKY^T?5-Rpkzsuy9Ggi#mhw@L5Rt_W0fCuBBxg;;SFY^u?CfOC zIry3TtFG?=T{xNP(eY`{<$Z>1O2~wQC<-^Gcx)!-vwxFjK=)cy`ITGoTsM?rqI}A{!5Cy~*Mv!8tgP)?Faw-Lhc~NRj zv|gB3?9o^OhRO?KZ2&W3YPr@7Kq@gC2#DA{uuee0HYNUD7|z7^T*R{Bc1HB7qpXyn z`YcvrGXj~L5Y95qD~rM%97({p#jdIDeb;qeSA(oz8%5o46`eER#B?)+T%R1%(Kv>+p?-$!KpPil_9iQB|epSawiWUQpy7(l-2m@e} zvJQc1FIs-$&6ndAVqCNAMW@Vw5nYAIz*b*Kuqg?(CDT0)-4ZRM44AUZ08Fjz4eJD! zTD(qG-xY{B$7LJDFK?f-?(udAlesv;^xhq^U3k)nV+4n zHLi3ea=kG-8hV~_ccee(cQZ)^?+2#mkLP9ck0(KuuW;e#$ zil7dGv~1qy`5NG&i>I+c+G%Fy%+&6oW>zR>1}>JdGQxB;^(x;cEQVn~rYTjT7Lr&~ znA`5LI(;si$sL^KF zEFTJHazhHZO$*(rTJqre8hW96MHLn2JJz2;wLz5z&kPNmxP7EL2g{d9IDq-&o{OJa z&be*;u$<0*DGSrUruZ+6W$%nz3|JPXF$^Xm>KEN7 zKmPI`e(f&+?BtoxIuck0#6&`5*HTxOG zGg#N1KlSmeAN<8;yGf~A^hq^uw%a|~K_qh+$BcohCjbZ23?5uYLZViE2d1z^4-ylE z^g}vkb~gla(7JmfGY8OWovSPm3LIzj)Q&&~+J^3gghHxg_2`Le%u5Qhxl!k&=mT1# zS+b92wH^u59H|jb_ju~d{Y(&3h!Xn|mA(Otc?=d6X{Y&4ATnm-9#z16fw} zV)O-YbueXQ1+yH`eFCgO1W~PHE%icn;tA2$+tahtN89tWoXxU&`O%7l=TY;h+s$x( zB9)$R04Pb$PY*R~y%IYn7D?dnF%h078B>n%-1=WsB}~C=0oQ0X5D`4Z zguJwSaQO;}vWvM1GkEU9ukEn38z<)eEEI77%ysovYzGD<9)6a95hAVB_?Y=Js z5(OTPh!Eu>rUoC=-AYP43#zWQm{6BeP#0>`P%1?&mJjk4`UTD;@v9bTmd$2Sc{^rW zjl`3g*}!5M9Z$Per)eZJRNGYHm?JVHJ5Iq0h3i+}okBcEUM~7!7{_s}rZ%oNS|pN| zeKGMMr!uW2csV-QJj$dPo=c7jBWnCyf;`${dx0a7ORF03Vuq@tlh+G{uy7#SqZ@7E zbl)SWd$bFTglK@yI;jZaiKvSC;zXyiDJdO*qoLhB3lGl6(;>U3rV?-b(Cm%?AGwwQ;HlmHFW=hv-@pCfhxfM32xd48 zK$LTS{q=YHesOxfK0jNpmdmUFj%JxSk??jLSDnP#lewiWIL=HG)6-k+EPb~Skzv?I zpN*XKfFZad56{_fs-eXgo+z5UkC&gz+GpFMi`$g)25#FHP~`9RgVOL-Ux zqD?_lW9H>@b$WVMpLj4g1Trwxf~G{Hc-4WOi4B8$R$m@RVmv=TKYVa^eRk*`!4`#R z4W2c_FsQ0JFu?$b9#&RB%Yy+hF`>J*E^fLstd4l!ygflqM& z)-Ro=5V#0F#!JDlA|af;oCAJI|DKYR(P*vo<5Nk(Nx0eZ%8J#d=*iO1L>ucB^AaDj zI{{kE?#-%V)|n+TfWy)+K?-$rLdym<_p(K0&DY??6;YyPQPoOYuCey8!~y_>0_Xq= zW{X}@;&B|uY&Eejl<5{n+`JBm6^G%3jaD-%aorKo6;Cxs%62@n3D6KCa5Iw5%HV|r zF(%+NL-GOD%msCGFT=k;(8QM(2Jbc;FSjo7@6G(Iaw!Q6Cx%`MVO({=mgWy!t8PhSn$dE3VyzPDV>1Uggcb?OL}KnYuiXqf z)!yFz`?v3m+wK0|PM5m-4<9~w@KBfxVD!P=x9hV9kM5i53(vp6OvlH^hlh`zdg>|5 zezrb+=BcOd+`E^vdNLhHa&kg7V+)yJ8nXc@HV+_hyg%_dB9ghH0c2AW1Z5y346*6) z@x#-TiaJBA=w8g>xa4Tyehq$ zAR1=zNqEWP2oA($o6zR1fEeFS?27A;GIsOJV_?sI3SbaMX-I%uriKGzA3gyACmLhp|B#nyE0RSQS>_R134Iu|OmztOtWITfu!m z1Ou8m16hE;5N9GuU}Q&7b221`cvOlK6JqOv0H|(4WM$vr?#^-g)pdk zCp;T$P)9%mNP@(W$BNR$DXB3VbWAT_Pj4M+Pp-@T?fx@+r|%j--*rf2s#(9S)L^AH_m0dQ!Z?7)%u-4$4Q1#v=?VhHjA4o=D?baO653Ixh%>+(6QOEk zbVPhuMM6y?nqnI(Ywy5K5s`E~ku>06X*|qkKhb!ixaI6Nb52S<5w^t2@Q4x9IE+^g zuEu((#+!WZt`{_xhVTR(X9$A9{bKY!u5 zXMgacSFc^W_QcJbo9*`K_;i1NKQRp3EfEgGkfc-8nw?4GIEwTlG>ls`C@!@^kgUmP zbyg7fq+1pgGxO}@xE{9KaTtcpc^*eEoE`-Ok5Lb(X4DMPno>mNa;P2Lkwp>_6AK}C z-6C9+&976WYn8-H7z5$L3$EvsU$DB(@Vw0-)PMwph}5~8nlh)_A|SKWVUAbSc-Rr3 zv}+|sSA$C&g(o_+-EZBJ5fA}b993xH9-csC7}6InZz2FjNn54ubP;b!vkCG~vFWz+ zf|+B^F38!fq7Z>ul9W)B66O#pLUkZCFrIpyHpKKo5GtJlRQNI06=lqIw4{Yro{S+d zl1D~EGskh=5>siS3MMaR9t0ZRRKSp&6mbz1G?c1E*Z~47sJpXMzz>EoN8ENxK8V{l zXN^uCIF=-l5LW7@_#C;yKuUsO`TcJ3#hZt7&8jjgG|cKsfLT2iXa^R^OW|#B%&ELA zg{mvHcmiyeeCb5QCEs-tJC{B$=K9RR!NTh8u1f=Ua&RC9Ce%$4-!)@70hJK98No6@ zBmm&jk&utR?C4itTx5siGbKhL>KK50ucw0q_cnTXh7;=&%BPVC|GTf;{H?!w^!2yS zS33kqrdk>YsDnNt%YbM#8DWCfA~b|*JY^bTQzg6Diq*K*lt3s*=$hNa(F>Jf1ebQ) zR{SDX=`(<1MO3v(oe_aqi7*W171kkjJjqfdlXNkl-N8(2#coqc3D`j+Tyq(_mrxAX zU}$lZJceQp2vf)f9jx#AYuB#7``!m4OoDgr-C>efUU}u&XP$oTZ+`sUzx?K3e*4>+ zRy>@s>&=@tzWS9fuQ%fxZ@w{X^NkxtxBYYU+E@ ztlAWD<+G_4UIqYH9W|RNQ!=vc=EM~MZOq&4dZR;D-9jmKO|38j-9gnf#}d563&cEx zNQe_ub7a>q5KvV^$ZRDwiHp{)RD@MIKEo0OuIr~nDgy|EM7X7E5jcXOGlu-fTJ~N^ z1dLcKW~mFhlE%|~JSBOVxaM2d(v>XEXs-kF>I^F!ttuw1Hl?c9j;_BX`PIzWmNn5< zb90|+9`xdKqwr4z}e3Q z92gNn&8G+@&)}|6xfRp_wuBm=<+VE)xDcr+M%h(EzoLkk7;y+$GZ-c2j#D-Zzeq2H zNLh0TB_sK`O88^{S+y<%j9fP|wRMOXyGid@WGbmN@-+mg+-Gre239Y~91!(*1WG%o zw}1$$UHZJin(5>)_>|3%0i>=-q1p=3G%#^4M^fd8F|^#V5b8i7d6y5o4C~z|=gQ1& z3vp$z^qYst$0LPbe#G z1~URTba2pY(hJ6Fk!!w5%%Tj5(ap}!PKV7gqJ@ag+)Xo}={Sse)U03%rd29N#mj|; zEw!K^8>=Oj5_0&unMIhmc}8lr-2##j3M8k-(*ay^U{0Er3HAt#C{pIg#NzFuDnD@6 z8DnRbO4#PYQZ_&6Q{YK4E&)tt7I#GEL=2HU2`~w&iMb_#kntfAI zl3(&|HTXf3HpagYjsYz*aqK!_22~(LuLRm08z`8wg{ehd$DCcb#}6!Q`?XH&NlH&G62Djj(2mSA=XGg8r0fdd*i$KmBQt9P1w5<7spV%(5UfUfGo z$Rt}Ivo>;M8?0gT0hN$CA_&)Y{OvQCg_kn`o2>#diahh09uloosVcA$#7lCz8@7-s z08;f99aU1aid@(^&ZjAs*)68(Y6L*Y2w-5juv9R@d5GpVLylS#12!e7EkBV^D~TaA z9!SK3W}s#Vi$x}0-u(%^@P)lASKr8P?AJOt8elX;_l?1J3&J*-=Uf8Oyav=cfDoG7 z|MIOz-?=^P?DV{Tuygo^r;Z3VLvB$Rs+!d~iE4HOrc}do$lTP-42ZPy!^&6Mf>8sp zpr)Z=C7@6vQZ4!8@N6Ndb*gSev1_KneJ3s1tDw_jyW%#BAtu7OieHC>M5eQYCHJ3BjXzWMg<-fA2M0RON5 z$v^q-cfRwjpS;P>ej2(xV>vuI`A5I{3t#)*-=415oD#2gkKX(KAO6XoeDdQz`{2RD z|=E&&#VuhM8rE!;Do_7%`W~g>kS-BAjA4 zV#|X?0}Wsn85Gzu+ZufMaV*-UAfb80^Ch5ITr-^{#|r`>cklbe1WiOFLgNswSZG%M zmKf8*Yr@t=42JAxP=gH3TTKWxlf;T~%Q58P!MBQ(IWM;vs+xmo1VbWMs7R#(*GZW> z6if&@5gL?ZqFG+!&l|D|Ggre))QO9}+m2%!t~BRe9i1W(LTwJhlGlm=;_y9`nhYs| zKEbEoS(*=kX8k~hJvy#Z%LB$3K1Q8ZH5)Q_22ozXU@*gQSG2P3s+qsI@k5*mPpVXav!XB?<3fuN!B8UwN>dKLyv zWC>L2uX>3qx9V9fiw&aEMb(&8b9Z4b#ZF~ctr-4 zfU%&VGWX_ouy^I&{ri2Ni22?JcRu^MPyX3Azxmxa@4~Gwj^oJS!)Eib=Wf3F!M)8! zg%Y}MWogfU;q|w_zdbvB>DEhs{lg#b?(XfZc5mN%cy)ib>$>eWk7MrpZWziO&rQ|5 z>(XYu34CMlMO8;rU7sFp&QG(BLZF6j1Zbdcrn7ao2U5PI75Oy#E^!SlwvQ5XCtb%W zN$OKd2qjLz5zKTPM{r=4Q0|k6n_oKq+L0HK%Q@p|PESmMN+m)-a}CX$yM>x9T151w zvB8OB6zG8xXNcy2%#lAgo%QW}XHJB|F}(iDB-(7Yxj+F)F@nC7(Hv8 zwlp74w_LN3Bj-?=O?5pj`+msdP!M}X>Ql`9Y8c4h*>-J)4sP(ETI5spI896t$7U)m zZm4ESz-n!sHrr+qqu~HfECQ%my&4!I%$XRAv#Km>sAV8WM-&6V>cg*Os|dd}joj9T zUkWJ+7z**Ix$is8mPyTQv)K~U%P&6v^piIo;OAfY^vR>6AKiQOZ^j+i_-}nUzWc)X z)#ny>P7MvO_4<+PB94oM3~<7LfVWTe2ls~2AR*p4%m41R^->5SWmC}&5HI@v$tSM; z_$RLs@$PCl(VRp?_-vz{FcLBg;#i)ak{wHq9xYNUTvQbxBVqXJOMT>EPDQ{&1Wpc0 z1i3}`O|)<{wBf|n%ii4&_75IDe3(*qcy#j8%P(EMa`jKY{xy95mtyngXpXd4EUsNW z@b?b^N8+9|=dS0cKlkv#tNT|sFWq|K!NZ3)ZrnILKE870+U>h{g;7!hV&WE*gO*1n z1O!vvZik$=KIW`BkK18byIWZ;0aS@wS)0wyl(N^Z{6BMwVR!M_5+#DQjc>yeq|myaVa%) zW|#HE5*GC`-E;?l#mtzR&8VuCtF;wsCiq1ol0$egB+|2DYaD3?)p0L8E8KlT)f1Dq zka?z%e#Kj?pv#?pZ+C|P4E^kEy&1OKZ9Y6YDG?%x%$!KTt*qVv5Q;A>n^!PafQKwL zm7{rLV&f;xzaNZm=O>rCRbSg&CHewBtN?m;V6xDJ; zQ4{FhLb9ndqUqHy34d(0u>cHTn2AVDYbaL`l_|rF-cXLAFg#nGbh29~ zcYo(|pZ>(@>G|2&nIw7Vz1!#O?VE4BxqtnG!_WO=9f!SL`u+yK^S$$X$EJ!Ozlond zOplKB6Hj!zJ$?KAK>*%8&Odpu9W=0-wkstcjS#N9`)9~$x$Iwi{T(w4u)dk8DiJY> zaED$YcL2gHi9^KHlIH-uMlMGUm&39ZYj!TyFboM=;Y`)cPNp#!9#LdlQJ|uMqZ<;K zW3dhvOe~bJ!$trK6I&&53X&8(4N|?gnK?~Xj)rdy*O|8?$pH*Wp#GI%-n(S^Ywi^y zzIXo~b4q1li zjzS`@NBkx1`#6qfx?C*Evc*HeQ6#ijsIwGmd=L952~?p_v}0aJF@(S(Sl2A2Dj{MK zA*$>~sN~E*1vt6HmS|K(#FQEuzUe0CD*pLS-ye^7{;42@t`qh)$1cp!UU-rNA~Iq& zC6=-aEjCe`pXy9xU{nNsrOsg_1B-^4CC*R>B(DaNXvQq8-j-){0WIm25mgN2<{8F# zFLqYTz1^i|yLParVE6Am+U7A^0Y{^enNoFXB2tRxue>lpG#3XWKs9G>jx$2U#bSZm zt*QY~42;Oh(GA-L>{>$A=Kx9=Vv9ld<(xsQG1)`JHR^7*}V@6})a(ku6lH$S+mVsIds zRyZX7?Kg+xQ~%Ma@9*PJ-pe>xpJ3Icm6hVb4A8;Sa_`Rfb~X<(@uxrav#wP6^R z%LNH%&88t1!1ZPbgXm^EY`23j9~>MMEMUz?^l81~?E@?aD3y{6(Ll&7a*-Wk6xej` z-e^eE%nHnW3f+zUb4_wassiQ$lq^a`a$W?r^3uC^VS3BewE-jm?N>^nQ|&Y6sbgX? zokF+?fmu`?iTCz)RdpB!Cbq2oV)6caZw;#_EUij*5W;$!zwohV|Lo02A3QwY?YIa` zxi`(~l<&V0F{*u+hGBbpazx~t&HD7@cpOF@hxPh&yFDL=t>&DE?dkEuVY{wW*HU#u z0d^Z;6;}|nP=T-))T1u}NyyxYI0E*}0ZB+YW|6L!zVEsPSI&{TnyHQ1R8=!NaMvyR z#T0A8?d^ruQW23&dCJz7ld8JiZp?B@eV0;XOf(rg7V!lGV0aa&Y>&%`GyWW`DH~9S zNx~u`k|c?ADJ785r0gC_17_CRRSzL zm&CLZo|xLz62k&QN=%Xv(1{B}vp(IEgS7sKTlZ6n8gnK>4st4LEDxy)>?<5iqeO=i zU!NFvR?F3DxwBgCtoqe*vAbG4dE<(dtfg9GwV+~mH$#H1lP;zG{oU(V_Q!EF_nfmZ z#{?*zDyyl4Q#4GmffN~{nbQQ>Mg&YXsG6#<3Zdn0#FCMksyPVRvo!L`rN;sRt085? z(jJVqr7aaZF)}f>yiK3v!x0VNqQpX4Tk+K1{`_Xs@aazlZ;@nm?7|eh-|D)+m>}AA zyG==+dgA7-=bt?|*!}!xKe^d%PfyoB{>ht%hbIpn9BwxoBG92E zKia)@=g?6V0XODPAIRsf%TMl&*A_$qixrAG0SJq^n;HOGv~ZM?Z=ZVO_hEbf(ybRw z?cMi3(44!jlf)qyF16H$DL40NwaP?TPC=1{dx?k0vz77d4$-MCc$ai4#Vl` zX?cl&V@8h^&4E+4QQg&JRf19zWlltl7B7IaNz5#VsWjGd$&64rxK9O5jE|*7}VI0SCR7bq^{PXXBct@QTA!b9&erSgmJr5K zqscOGVxXFQQ1Ghm07hO$E(MNE*rrfz+gSQwH!7hDg_<2AalnXIOPmCevyPBKH~||P zni{yP=A1_s@eN|cowI-gDG{+*$dxFilv01m-W`Bb)eP>;oYFFo0~NERX1gxY)VzkLk;TKc#c|dEZ9Ya~?rT%b05=KH& z^Fc@UP+KA*E*D+Pk0_Ie#?D40Bqk7|zDq40Z?oO1IuecJXxW6T(G%g;vrnI`*N4aF zrzh*|>I4yC%*a-k352L#vT9>C!7y{iP)X)Rz^+T%?O@eD7FT-=c}nsM@N6E14!Oz0 zLBLJJ8Qvs!6LLLnh>&1YJ2)sYhTAl7*g=j8t(_1V+L*oR>x*E65HH&9Bl^e+DiIs+ zyk$1UnstKP5+cCCmHk&f^Xb>$d}n`mXLq&xggvxc>lxAb}OBvP5=tLehNuPRMjzO5l)?iz;Wt+kOAE+*QO-i6*SB1 z^@cc=8Xp6|N$y6Dp<(noC@)!fFgN|7n?pr?AZXE=1I;DQ?rmBY3)NZT<%QHw#2G}$ z%z%Jg&6z4SFqV{DnPfKmA+{_iH#aaQ=Az}X4B&a(O22sW=Cw60l{z0z0m(HRaYB8> z{jY!Y%0GDStGh3}^gG}9;o0lo8}Gfzbh?Fe9kz*ivpHX%Zw{{PM^Y#v8E9!F&CJm> z18Bm;C6^9r&EXhXrVNN0(RAK$Bn7RRsvVEO36UMpYygV6Rk<=qm0M0-$zc5d8 z9xK@ciO4iZxlMqoS#!?ghDf5ciF6tSBJieh&Q$cZ~F7k!_)ag6+$;CePDFjkoS9A;4d zIYjQ4HmI#gH!~3`%37#|bS~ojB*JyGX8?}QNs>(38>@4fn9vH!BqFLx(I&ic2z?-$ zgQ*fBa}kGu;k3msr-GWf@&IxAtcMF%tIno-Qcn zY<=r3t`;NAa5h%^Qc)mV+>+N^X&WD4& zJz>u7!#Eu5?>%^Mgy=dNN0cG6J3M%F)DexT-+%a4e*Hh*{m3sPsHD7))y?5UGkeK>@k-9VtBQd(cYOy#u zIY%I2Qq9}#fCx9P-zX9!Lhurm4gf@{;ycaEiFiAlpPip_=)JsLY((frrb5Kb_Xx`?AX)0po{;DQwaffcbCg$-*=KkV&&b0JQ^NW69M4>la8|E&`xxW5Gqr(UL`0RB1}m~=BGAuBgHT=S zQ)F=!+c)b_fTlKM?)&c9r=K`D*t>S^;1^!`%&30n-h=nv|M2kW=-u}}$YUnrBwdSB z3;!AskE6yc_{k@(GtoHO+wXp`x3{9pSPR5waD^2SNO`) z-I2mON0!jRGZ5JFfX1`ue)#_$Jp7x{{39>F_>q@h`2G)ntT{8&&T8T6W6p?}x^A)T zH`@&%ijcXwsk!g(?*m%>{wtBYT8m@Sq-tS_IyyRul zhUk;pAkOEy8kn)9ie?Uwmpl77WvuYyxgKp##WDlPl^ovUbM;u8AQPaPm6EE0gVZsm zx;f`z82i2-#&J{~P7k+f-}}8{RY!mAo!hVe&Fhcu+|$GR-}|fYzqx_`^4EXqcfbCZ zzx(@t@K=BEd%NS&YPI`wpa1Nazx<_>jRa0$_=WnGl$em_?FsII=`i>X<3@3rU?wFWr)vId#lToG7I-)g?4%fLQ)mjGonU z*itkPIS*zz97d)Zr+K*906lem>J~+tUQ0q@=@ttv`OcuKW*TxsFWeqLbe<(OW7CQS zM*^rOUeLttYw>r?6#0eqK=0~-9b#sy?YW3_eb@ILQBW8~Bu4x+sbT;LF|mjwVoJiq zBuPYs37LhZL{D=)`jJ>zB;u`++TWd!0Ev?`SFBG|@fg!Z zSc1bb{%tQ&B;^4RmI%`zqUEC7SuKbt(%syOvoz;y+NKL3ZcWUbk|ar8lB-wtDnU2M zv6j_T4eAkwz#*9H6EFHsEu^sJsJoOaa^yry>td%K30wu3eVlSL=*(5!sC{b zliLXspn=u+R%|=x%9$@yZla5BIJgky=n<`1NPy+vk3~ocnW16|sT$hKal^u!4F0W~ z(>jCFZx^`{1?L-#&bFxISN>Z#L~) z27qx?cMxGj$f}a0>$}ZnZ4RlEkG=fD!^4xK<6}fRJ3qg6?aIO4-r?DL=j86{{2nGg zO*e8{kvq5&*tz4W+u7P3*_OKmzIXrCCtv%+-J`cNb)Wk9N1uQ8$#49{cZThN0DJqp z#GEz9&T@ZmZ#xd#?Y8d{5uKcznAz1U*H){ghZ1Sxa$B?cgR2*@25z_8lhaecxfsc( z4;h*a0gKbBgar{1Tj@0B;mn2P6-V}@Sm79|lr4@s@N%`^RA7xEe!*N*!{Fl@ZyE`# zHjC;7F2Ry>QDtL8Q^7#{m`5f&IXPJ_R@V;p?v4okE&>cX-n_d1YhQll`>(%y?fP|m z_7lJNfBtWee)9c$x%+#6|L?s&_J9AQS7cZ_(r^7=|MmwzdiCMMM@+K2yL;uzmHQ7L zbzT3|6HolhfAP=0@=L#Xe0;WA?MUi|aU_oOMARJIMG`TmE-jXwbRDIRIZ4+`O2k5x zh&xFgr>K(!rISc03D6ZtJw1!BCG=7;6hlA?_@Pz)U`@^8)OFp0QOt7lKBc~2EO$hb zndO|v?KW#x&1Pn%Ip^SQAq2y%)ZDR{nvvncPvrA(?egC$Oq}~axo%e50IpmBEPa=R zI}u7L)$HOL+*)i47`BF#xUEdfpG`=Nvwv>E)}g!vF6T9rF$ob92Te&zSAv9;B&J3H zRFd;35?+~V=R(XR@h3zP3gruBW~w^r*gl8HWU=h__jV$oR0zQ!tmDCjP9j|=i@x9A z+1cOU*@@ak|gZl5qr?^VZ=zpi$zMEsG6Ef zZOE=3>;mF;$W#?dMR89)4?8p~P|L8SF$cdq>V3{?^UM>Z5XeS8hc_SDJXm~wb4>A* zP=1x`%{^6eWhev8fpftMizcvgbA;TIe0C0mE@8TD5go>?4v>Ts$=>enSHAeU7oLCm z=;ZWZe|7J{;SXMY{oM~f6q;20(ukqn5+N(&8fhHIu1||TJ^R!X=j+XzZ@+J#j3(p*$jW?5Cz5O@(;KRMc_r{&8IvTjdL^R;#}6PEXI6NQBqx4WXIY!NFdal18xC z1ss_d>KS0pL0rbWckf%p#uPAcO>VCIl9Dts_o~;iOtoGYMM%rfLYQGoYBB9Kk-Tc= z3gCYRZNCuiRn8HgMS2Esjlc*9&5f}N4KWlT)?9)ymq6g0^YhO>|N0wm4ciO=<1j3* zUfaF>)>*fcX#tKvvcJEx9#vrc&p-dvC-Oghc<;_1{XhTq_?_3gTc0_)`~FwH@}+*Y zIy^Zgq<7!{;Q1F`{F6WZ=GpK42O{pfj){Kf_y0tgfar-QpMLu3C;qeF__gnR_pkr> zYv0IbUFuGbkMBQtplZW7o}8U87t1aQ5DKSa{|#k06Bs!fFeM^)7wF6t#?jm*mf$gy z%HtGcf`kO_8q;znEPnSCDiIN80OD}mNRrfbX@Q92FvPp9mSada^ZPiWkuV~qB!q&s z@NYvoqiQ{$#}n7vzoe#_Mc&2yWSL-IL|rVAnPveU6!4r@1C}3YD$)xK!U1kr+2S?qlJtEN=0)Ez(`Fd+XyZoB-A&!hJ>-eF9Y%1-S!?hR?Jm21 zk+$1m7)LYz|JZu3XUmf7%x|rgncEz9eRJc0%qMb>vvt~e&nRB!@M6#nH z6(AVK02s*wk_dPJNWd&11P+|%?%JgtM7VbK(yMo_{rO-16AI-E(<|)ST`IFdu7juHldT$R>7!}pzR#>tsj*PT! zgE|^bDu^V7it)=#XaG!}J0iWZkTjJV352c9oU_~8mrhU41USpw#l`s6D|bUvKRZ63 zTzZRJ9uzqc<(B&E>(_qz7ha$5ef06;Kl_It4hH4b`swd{>ljAKYI3jw`uF~#jLKHvX_z07Knn7Aw!mg1BW1j%%Sxm1QbE1wRUKI+Zf}B zOz=&7G}R3h;Q#<&vMeWS5y82P$avpMWNMRj)@6mWHqt5CcYKMMfK4WI&N@?;xsEPG zk;I){mW8=ntw9Ju2WUEevpR^@O4^W?zsA}h0|SW4imX{3;~M>}qtT9)AriweSFr&v zCDnCQrnI$<<6Ny=loG6C)XZi2$b}fPj?S4*m96HHm(w3(GHvvMEVVR5At+ZsEJ5&$ zNJZf?=Q@2_+jtfrK<8p{Z4HUQqH0lV>)-sTuYCORk z|K>OU=s$jYGMjDgZ1;M-VXqK?dmlfVFBUpyH_m3xvPe_4KwyA|!#)QdUtDCFBQmr3 zVzF2h1zq0R%rfT#BN`ChJFg;4oj*brWWb=HTe`5B~U1|M9!;HEj^Wot^E^y!}Sgv^LMSw>E#}Tfgv|zy7WH zqBbr=p{5nGapLHG+te)wAA#{6!Rt4b37~^d2T<)@5XW+&-Ysp#@8+_`HR$9@kkZ!bz$Yq&x z4gvJX;G8uS=N?H3NnJp8(wM6>l9I69q-@1B2#y*>(A5qleLKR-VR+q{(k(s{oOQWG z(qhLstME~UDg$ZiK}Rox?p|5Wn)J>v`bFyBuKT{YHXr~?MnN2-VNbRD>In3K4MLe` zYr}HT?-^@?57SvSThzX7B`MMLKWNEn{+Kqtqfrl*W?cXzVF@fD$b3~g!lHXIC#-RH*w z+$#!WsBL57hK>rXu>g?e_LbW=|I@esc08GGZLAIZB_M6AZ{EIh>-O#Imo8r(&lZTZ zJ{lBx{?WZh&z|kJz74DiKV@b!VQ!T%2C%la=Byc?jgine2h3I73dm^C+uU3W!E24% zIj@rxC6XW1nC+ZBI~%LHCsAJnwGtOKttV-E`ox!j@Cfn5NZufd^S>qCHf3)wQswn}&vy4_ zv-zv9-ua#1`t|?o-~Pd5ws`YXcduQ$w6?zXd%yoD=i|wEd_EZTyk|mknX9Y1@hu@i zstlMp1VIoVnng8RTU#Fv)^g`=-@dl7F*-avVdgLW#5*wRi74u*HvQDUy=kCf-K98b((+FMfrrlNJ!S2&PNYu z$dbX1^{1b-%gH$+TpsRSe;oq*6ffnhwZ>o)n-i!LRUMlh3kOrFZqr&{1$nqU&7)Zy z1;`LZ1t()j0WtAKjfSH*l#S9oj1z{APY{`sj7SoF-eAb25s)k+K+Q_}5)12ok5?-9 z71{|e_3R=s=Y$Y}RIJ4HTQukw!=5;-vS9zW#9in{lPG2qOmqa-L7BL{k*{;3R<0Fv|K)+y$ zj}it6B%Byn7y^e7n#LQnypIJy%mT`)1~S^kND}&_^c68hk+DEqw{_Dv=a>TuZ*8u(AxtI<6bTTt+#vw#%xE~= z-Q8!9whhjjUQt+Q%d&9RtgWq`ou8kaoK;m_Rkd?YH=t#&(D`Fv_P$mB?D}YEjX60v z1BfKi`E0I!!>d=eGPeqQ;HYCzT4n_N1{Fb0CgbCilfVI)e9$479^?@Xrt?S^&&gxT z5_IY)fULsF#34w&IZYhEv=|5x@t2^IAp`(MG;u7W!i<;1%do;X${bp20GAog5j7ft zW2`Ba08o}?jN?KIK^V}IGlVv?*4RADuU)f&nB}; zRry6#{q)zq{MxH`|NJk$efQ4on>TL%-tYgR%k9?s#%wVk4tk$?`>o0B;{Ep@GRmM| z{_EfU?H_%3@A2d3-~Hha4d(rRK}c0y`w*~ONNe(|(wGsfGaMjrFl4+BEWRvC=dvtw zMV1Bj)|x@T|0}=zO>5{6{`gN8i+VKLaIW{!{g3C1rf!<^@dN+{{hpTLiUuV#*4iw~ z0ikVM?}M?nC`z@fbW;!2y2O(!$sU}`DB1&Y)r96Uv_wYtx{2nhe?#j#qokC1PS)x& zz#5|f88Xz_VOLp;vgqtsMIj2gi-|TCjLpxl6Gm`9Dp!{5WC2TwJ4Oa?$XXZ{&zZAABMln*TVyH?th=}KV`T<60gkYAL%sEQ9E#C$JvBr!>150MQ zn73^RKExDCO%8)#$f`F#S~pi}XCk<~wI0_o1`KJv!p!1BP^Hsybse^ZEbQV2tR&$v{=+JOgzP$a(s6pmKFt=gVlWlD$X72w$-tXie6p_ z_Dc8P3%(ViuBy;upzGVZ%Ro)s*s&N5Wj2w4H5@r`-LyrSuaAbkvS^t<^~$X$Pxtl? zPJGkWO|z(LONNX_o^hHii>yQeFR9T4Mi*MN%rlTK2TLG?aO3*bTQ_g~*?;;@mOB(M z)@TYjk&H%z5O_9SFiT)2Lb5m-j;7NIu(aN@2>TG25rhST50@@)5#r(Du__Z-LY@~X zet?^%?R4VnqoJ|p_~hIokTD1_ozJ`vAh5Z)u{P=pw7Q~8LhzWA8xvd@f)6ag7<+Vl ze0FwZ2t_D(2r;s z%5Z)3(Y*)OLZ0P|s+!N6tJf~wynglY=)@2q(A#gle)a0*j~_hR-`oHA;p1U{FkBnf zZPPT(ts6J;tjKfwxzBw15C7wz9UdS1HoW!5YhU>MXWP&|eE7-te(*t_7ggQp@L2?j zOuX)d0o6;X@UN61nG%0lf)7FMG|a)btuba}b5s_?FMsii*RNgw&wulGb<;STedSA^ zKRiD9`+xZUyjombOs4ZimgR%qz*wu=A@5reaV}dm_(U-uV&Wq*kpp014W5mSy3Q^D zfe@V4sWNGZM?&r^2RQoLUzlKE6dtJ9ro+0$HQI_iJWksIsFSmGx4W7wv_Io0pC%*# zF=Pan!BDJ{@5B*}T5st3caWRi^|cI9-Zn?gS5<( z0bzk6&z!Rz_9TQL0E4{f^>ap;O{>=XG|CnQyhMR)YIf7>%9<~s5gZ)!H;c8l*UL5f zv&gM;&U^M6++zrUg_+10YX-g2hp<@GP172yOBx}frm3g%ChkrMLkN$b9)=){Vnk^+ z@hD7a1MZw?&KXTpQgLnFv=K5K@3xifj!x;n^x3BDt~l|6B&S+B&N_UXhRy_L=af{2 z!MD!3wbAhPPu+g~b<;F0vt*g=mA%<)Cc^rTwYnuk zm5uq~aCm8F>;8jBOB0ERuEN!i0sz+8epwRX$=TSFEbz4f)+IU9mb z!$ZQtBmyTx)7C`fz284L^lhW@HGw$Wi*N_d-lV0IN978JN2u@3RVGU4Y z9~8M9V!ouLNu8GexUq8`VL5;6m}f7hszT-{%C;0l5I-d)DH=p05|RwaWm&F|W(dM@ zs7THd0QJkFYTBz;FJIc({@~ty5iYV!1X}NBvstg#@ArF|b9t8adxH-?`k*X(gTcU9 zQ#UPpf9I83gy!+HU1Q9hn>UE?^z{7s-d^BP*Ue9T{j2Mv(PuyN*8lN;{@(HN>2y9X z%hC`kaJDQYMcfYQAu0Hi&7U>sk}eF&TD>%Fo!81z2M%>&wt1deV-sNzLyjs65gcfSJagY77KOJ(P(-UCvaQfKAt z#s~-)L^4NNmgyVTdJjm3sNXMKZkt8BXc|ZkBbAXkXC*qL@P#>sNYi-lz4G5RXO0Zz z){!Oe*>fPIGIPe6B6ovcuKrdQL5jB?A?Ah4^K3euH?7yJLcgJ=Zf1){;R;Bwm^aV& zPg@OiOs{-rCGA$zDcws~Ajly!Z3uyhOzOyad7DPXMzjxc3T?s;NCHF%WR}bTRY_wP z@5Jh8Gezlg=iYer79iex@Z`#+&1btulj*Elv@u>Ni7!}Kco}@Qy3P$8BFj*xlBe6d|;7YnGXkp*75qZiuu1^?#u|3YS6@4#*NXaHp2RRgrrqg4CIeF_<}nM&)g^ zJo+(dd?QUX!hx-|#+VR-_sse?BRPY{kjwHs%j>GXcH`P;G<^2#dDGSiCNFaB+7NLz zuQu1$u3f!)dVaR3s^Gcxp)88+?M)Vb{N(xO#ztMY=i{?1b6@$w=Z&Gi{)g`(z-+$Q zSXYFKf0%ldB5K~JUpH)>bCWh z*$f1GWq}CBSZADoW__m6C5@xh0X?E~Xf1V-**a0N)&yp2Y^QKbnW2>4n5eu~Wlpl9 zbg3N)0j6Oeh$?C}$_G^!9Hy8^fe_-Iw<@PweWX%#sWL~^ZX2ytS0z~5_Brd8DwhbB zvD!r`RCZM!(~)dD26~*Vi6RFOkvy}tw#+k~RQeFq(>WaWGi%2eGv5Y|a9scqQD4^qVx9xnEh_XuZ)KH3sA#Cn+}7rrF~&Li?3;HVKifY(J8Rqa;$pT~RL(kO zjx=rS+vP+EAn}_d`tKlxPz42QGYd!LkV!?PwU&hq#zYL4xxB~`p{nYp^+e!X;2;?F z^+KTUtPZOfKwO^nihS7bF^9wBv)20vJQ4sx_Q4o~1j5qqmp}crpZKFc{k9<^dKD$k zPnKmxksE8z$K$$gh`_l_gn?x;Utsj#LxQFQp(ldvtu5z_h~BcKizjAo+Xev}-#&Tz zRENRZ7y34e;?vL!wNdQ?H_{1DG3h<>@>h;;1|$d}=rRM+*h@Gpp|)v6(=-ik?%YV~ z^)8v0UNW>=16ghp_!qe2ZQ(KsxkK{LyLEti}`tSPvUMHws@p_{n zqdregNwMjT5REX`*+uKYdwE%PpwhJ{78Gl3XIja!tluk&B7f`kyI=nN+kf?U|8zQ@ zNZ?oQ+;q-;_uUVws-9fTYv1&W0z}y?2!Mh*E-+e5WsW+}q3*|DjJYr!FiTdfNok&L zJL?;zKcsUQy;`~yqeO7jwHu}29uyJw92Yx@{+aF|z5E%Yk_3g5M{dQl*D=Mq!`fxh z2&ScYp1BT-3Iaa()u6%joyM>sW-tbgB}G0MYej$qmt|(iqDbq#AXsY#{n8pUp3Ifw zCLkfOGP%3I*?S+DL*Tk@^qkiA-=vv_M&LlaSs_}MQkzob1tDb4Dduc#*e{B#^X}k!;y(mIm`?_h2HOl+lJvg0AXR%~XCnZPdBXi)WjKN4)(~sE)ZhaeD zH_#9=onpm#2*C>yxMhM0rKcvw0E=(EHTLq(#^uXfdwa*Py?S#tUp##D%ya8~%N!@a z1R7$+0>B*V%6A!-O8}&ZNI*drVF`-6;yBX}-SUe7nGi%WYYicSSZ6P7Z(K}g7ZP^TFZK`S=`BgaZf|laV3z5+WxtCJ}eCUPO?<%uyH|4|c8FW#y#AdF9#k#19!^E`Y&Lfq6MYlkDqH)3+M4OzhjU?J-1(Afq z^!%u9tF~#H*~MZ$IoRE8+qw7c_Qpus=3;!ln9uTz9zJ;Zji37J=KApXaKD~UrsMI0 zhaWE{7niSIKRG^n_V`iot;q_-oSvRtOlPxS_{LAYcK6P^?|q1bL^z+%|K!j9YG-S6 zb93!q{)=CJ_I&^1V$!sY>JH;IfW1TT%t#i(q zm5ApM!eUWRXN!+Me)Ru+`#Z;H7ryl&@TKj|qR8v29u0@T{LQca$}jx%WHv`K#;Ty0 zjRtIn5CR)QWqhktvFn$*^^_zEEp#nLM;nRo4_(%aT5PBgO=7vD5PKE$ z1rBu^d|(a=#b*&<&l*b&F;W9WQ1y>25?F$Wt{j=!t0H!3sv=mA(bn9w#pKi7R>!xW#@PVB(NHm+*ZR^W2PsGZk)@Sbb zif+f2O{RWhmFA%Hp(sN&1{LXKj8Ug95gBVmfu=fD~43Hr+=ofFle)r~$D|OXmnLRu{|M33f=g$xI`63-72#CyjnZ zHGQQh3Ko9!cvls}#?Wxk&zy_rmjP=m86;x|{ZiLFgMK+04GBRI>$;gtrfu+wz_3Kj zTvZhZ0YF1!or!{&Xbl1YF(hQLZJVlUdS#DdG>~XCd|lTkC&$`Xslk!scnp(VB}x_( za56@Dim*ES66z-=y(eN1aL}J_ly;>URam{nbw?FKz|EaotC0(YxC8^G2H81l4I%k% zQmo-4h)&ZCI(;4@B}YDyu`ChCim^Hl2F1FpSN6)XEQ%5dvn(si+!%`htq*IXwW_Kn z^XV^r<7bXf#~(jZWZL%T=IvWIPtVT} z508#d&--PGM6>xK&+Oe-ZoTu_w|2I-{`}j2yMM5MF&z&EJz>*@o@mFeb{_y{3C19T zjRAxrjn^Fzb+IR^`tCA}x`S}GI2!ZE|d6wlaLf7MPG%$9nRMV9@&>55^O<>HAhnmKn zERlk6O*D;0P?Og0%E@Yc;3Yjgilr#s{2V<(0)V>jjh$S|Iq4v7Afg8)5hz^CAX;m6 zbDXvvOSNS}$B=SP85sqWs6Fn4M5N3!1)1puOoYQ>FLU<%VycEIVJ4!?S-}|EUe|5w zgRZ-+F?tX?=lZ?8D2mKrzhA5k2br^gVvIF})7fJG=)7%P1iF~b=kwZoZwQ0VPmuD= zW|=ie&bmuG>%iQG&~?L^vt^#otEz5W^?az*ayG9cHUQxG?Be)rtcL%oK8l70*67#3K7gkln0_7RY~M7K1KR|x|%ckdocP_(;1 z5LtdSdbqz3lp`;@-6(Tt9d+wqRa59_pU}jlt`|c=qq)htPR*mbx%1vEz9MgK_V^_u<~&Zd)&0UaW6laV}$F zL~_Q35UQrWdU@w_pLy%)^TYSv{~*hhy@^%bu8sPG!Qg-RSHJV!AG|xAPXG2Fzh?|( zF7Hx)bkUUbyf#5!1waBr2u8YfG9*Sk5w19ky0X0^n|A}8F1Sp`#2f$-Ti*ocvM8L( zh%j?5%d#?eWxxE{uf0QL{`Q}K2;z-(*RNhWJ~`jrKWtmSsOqY2@;n33EJxGT^Ic&e z-JnB*DU9i6JJ<;vlXufl+{NreLwRGk!X5e1`%u?yugo{rM?0JA2PbFm zeEPN1^U3{3&y-H?eNe{@piZBp13zX?LB45Fz&foG5#*pa(eRQNA#J8vZNnh!CFt*i zG+@xh^=Qx^4tfGmR|{B~E2}OG37I7{4AEZ0-5NFq6^R&28|%aAY|b%3kyRI`GD4G( z@kpkssyAPM<=W*-|MAcNs#lhs6U>@O>@rGpJAw@W0% zI4FRN(}Tryvaxfe389(K5y-cd$ua`4F4K4x0g({a*VlKpFMaaKgUNJ?2;TeQ`ZhOp z+ss@(GS;qb?c`-2K%8-iw5TfpXqxuc&1;|i^c(Mg^x)v|$Oo^w1ZF{$`C{?aFMaOS zS6*pa|LBv)AK!mOMz^MBDYOMbw1CkZ0U(|!_!s2=I-r52u#7rKd#OGD9juu zKcEkvdja#nLWTsSZ9N*=S|5#u<@(y_ozK2`czn9McK`@G+uLuxdh2^Xy0^P`GOw!n zqEfdZhi&p&e^-A|j)C))Hwr9jYS17Sm8(zf_LHoYmz@3}Et}{}~d|i;K{g zV)nAkb(3FaF@`d05SI6W{@F!U2}oJydM#;Kgs~>|OdXra=DAhUWZg7`SeC_TP>!eb zrf#FEnvAnXM94tfa$Pr`*{Cv!$Qg6@&Q(JOL{84f7n4P!btuK?4h})}Xv+vtlwOfv zyRwxz(=W^2gOmNE^QDLz(K=IRnScy>u)*G+hedX34{PBM(%RH{BL;`cuwve>52%tWzm2))ul>j8f z36)qQnT_617Otzhs;c2|=q#O{U8vGrCFg3dLqHL)D+K)uWBI5rs2~U<7zKp?7&<~! z_>X9GU!5)-mAt3REWyc`*|))aZ+e6Em&1i|wKX+WiKy#CRUoh^ST&7_>2%oZ70>tf-~Z@7 z0KEFj?O*%W&prI)2@1^@3lsgfUH)g68Ac$)LF2@r%dP{|`gDohTRFK_0~O(=sYr~` zO4=8J7)e7ht_Bd$6}hvH+1E{Taz6gst=vf!l$0!^C1fo;}kM4Q(gqpYFhkcKA+C!8p>8TEr0^h89^h1S*^JW zlt+ZXi~w1lt&jRu-85}WX;|c((~lsqEUH>%mw;fcxxBOS>YZy%-5i~cpX?sa=1pLx z;E@9cPT?+^Y9j^&fei>6+xT#LesMOQ8DmEM-p}7`R0-0yjn6fi*-b$q>$RHyrkg zJpa@yx8C{m-P5y4-L}W4=Lbh84Nx!X#;c6c{%_Q>ii&~y}FVPQ@(G^ zKg+B_K#4iDO&vH8xu&jX^O^dlF=k^R2uEFG;y`zmI5Wp!9?}XzmeEVgrU5#9WXerV zD%Uv4)IZ6oai^5}3%GUZ_VT0b1j)B`h517Y@avAVEU8qBO<7g=(IL73I&lRM4iiSbu~S;vCRY$7?vmPOX#>)!d?o3Fic?Jxi4 zd#B?W2yAbywXJ{f@RNHVeE+Zh{14C;Yik=4T13#EF$nzDfBkPVXS{Fpd)7mlmyQSQ z#Cb|US)IWAco_OBp=d>D4VksoSP$+dRvV3=y_%%K_I$J!=d_ zvx2U1(HJUL9T9Q4bbt+ml$@c8+`bTaeI zNQQii!8e2T#^%VuTi5j0gUf;2yqaf=DH*iP#r%SpB`@`BE(>?(#-*|>cK44b(*=Ww zNZtC(+F`E@B5^(w1B*dZAZCl&`w-*Dqoy!umtME+v;C9UT{E+=>d=yFB&12Y=$=JK zvEF+Q-1?AZ?#9(^)i!-6^2+PbIng=?Y+5hN`e^8^nNAn;YEDE*XydjxDl$8et?n;< z3(TS!+Hn$rfPhWYUb(XEjN9Em(1{_35Or1Q|7w0#uObU)&Ten5A0D60<_km7(wQKb zkwm9tx)3;ec9qA6(BWeAYjaktL1Agz)(0;Tm?d~!cmQ)?VFIUmA;A`efK?Yj927?w z>&Qq)K|>~j2^3(^eeQbBh7fdA6}&cWk=LdrSXf$fplKQjEP$rhU;k%~sfjRyWHhe= zlRPf&@Vmnl0Fj)I^Ox3n02acfQc5(Cs-Dk;0~ymaGXU7wzP6Z6f^P(Zmh7G(%UxYf z8QtAGcMRdP{o}TtBe%EizH)SQ${fg8Yi)nH=JKLm)FFaHU+O*RVlo+DTwK3;<=4LT ziywV_-+OONoaQ-WeehM){P0H~S578D$_vHD$#?ELZqm>ae23|>6P47fk zy8bwm@1?-;7iSch6s*!MKecK=22$|3Vz4Z95gfV}S0PZASr%y8wr-l)qN=KTGMi6l z^AGMl`p!T8aC|WhfwRosy?Lpgo_zNo{xcE(#;^X`&;R@{R9=Fw(b&_|aoe_o(FRNK zp)LC(uXC2v@}>Ma)-TM&$ki8c!K+5f)z`SA5Xy?rqg^x^xhBprLz{1B&zWU0GWd^##p19C?7)RT(4K0o?SGpSCG2al0JkG!lG)B z$T<>#&EfDCUa$_KkYDwdf5OgN^yd z)ybuslbxH@)>U+w&&zyrip=O-5I(<{Pp8$@%bQ!9qqFm=QG^}~B4p0_Hk4&f29xDV z5UFskY1W5+t#Pf$*dL}$#)iMRZB-JNKAK5Fe+n~!P`g?)dcD{U?39}v>jk7p35mz zsDoh{gGHHdZVbj3Qy;uBlyY*#B@MAc{53Wp@kAj}oCQ}($+m5;UAdg)*}>tlb5>0( zst4h;qE{O*C!tr{w%4v+7UA*5gyIq?BJd2Eh;0#M5ye@@${CY3VFl`Ch>+O(I&c&9 zJW=iym{B_sW)Cs<)FKipZ5E5B2BA#sQw z5BKG#^77e4glHY6=#L-I&rH@Bl>-wcWsW}Kl%m6eeqe1~aqx-=uI4iz+Hx>z>p4dX zPe6giY$}4{>;1jGgR_gt_^g^w0`tQM50GmDJNZ9%?pUvu8 z{-6K%-~G`a{vq1o(ZQ3!V8{Xw@8A2M{+Ivx_N`n0f(U4wk<_Uj?E z02o+;=R~7J%?nDBp>ByUt3#*daijD!4qdju5=5m#89*ddjifcyhA^2-j*bov_xI$0(1il7XUFcgK`+#EHvAD>U- zVgnJCia{|jy5o|j*bj{&jf?3eO%I`M!{tj`+nXEjzV}g?=PC6Q5WtWj0%OQPOtRF3 zA!BW|SbXiv?^x%aJ>4zyoCpah5gDbMeRMkS7qHUHkzzE~2?q{>s<{YiLG4huk^)hn z+c2wZLAqg9vX`$M5y_3L;kB}))U75xW3oY|F9bA@HwxqxCk6~%<=&O;F;^&lNLrqY zi`EJ3q-a_~LR_^4#DIiIaefzpbwV%Q1k6&+CLkQe8#ZgJ+GQDs5PZP+uv3Z!Fqf{~ zwgwLOo}r-DoBhVG{?g4G*B?B5 ztl@F0v(`lREOSqu?j0PRot%!hHrL;L{naurrt{gNYSl>(OCaL%eBE-~PmCad~ot*4He|&$mzV3?N;r{OT zzyG~=-}}*II?eO!`O~L=`X~S4-o1}aR;&%zzxvfL|LfoVm*4{$v$e5){mPcLR$GO} zhsC0fSeT^{@df;gM!0l#%1*tr8UUn@WxcxEwq+JVsGE8|pU)QyGSnZAMx(XSa4_l( zie9m5CUC~8&_!3lM3fg!S0cV;A}op`&)mgy(ZyLi>x2UmwLUa;tL5rw)ceBQuRVCY z_jK<#u(0>+>u0aLb9D35)nLSEux$jfva*fA8yV!t`^ga zqMnJ%K;-E7{KnPojkUqi=@@{Rx%DA)&IfKA-z)PF7&TQM#9Av1fmtESi0C;;^b4R5 zQHLHGEQH$S_~45?+u2?p4tuw+@4WHajq~wrGMgV9pPrAW&ks%(b(1-3o$X?_eyn{= z#z9kBoV-#kHzeK6XTY`Sm2n;Y{M5C@D z_PgC2M7o62NPk{Ut`!aG093P{B!86Y4>n#Nnx`bMR5psSgb=VR&h^RfYIY>lv>iay zl$dy{BLLHKl7j%Sm`?%+Lk@s7`jU)WyL8!CwP@<6B{GhT=?yl7{crw@U;e?n?`K*0 z>KkuXRqb0Jn0*Ms(C-gjUaag36tESI?$-K;cDJX9 zWLX9v)9L*1CysE^i+mpElk48WENA4KHj9e|!}4(o2=Tw$6-6FAT3& z2)POri^Gu4@vLqLP}#B;$nj^~EzmKIcSOWkJ3c+wd;TOVhSltRF`og~!{N}`;_UQn z_xbMG>G89@eKE!E{_;un73zXN$Uf z$`a&2FBo28=2w0oD;w7?wi?vPld#@U=H+O(HX4pb{XxIzXL(_)Rc(fEd0x%yx;noA z{Xhc0xM*50EJ(xwiaaMojusH!TpQN4ubWz(d%C@3kv8yrULy#Q9hSK z5DeaXbkART=ls%bVnzrN_51q+@mf%yPSE+Ny3+v5GzfW6aLh z`m1-Zhv4ttzG{tqws-tw?`TogRaMXH8Ub@P5lHgIsI(Wm8zO4AOe)HZj-nOaO@;u0 z#k}y)rtOiXl={+*hd8C_Dfp->)0b_l5*!Ep-mP0#FJ?3ETc7;2F{w*+rhqXhkpMta zKx5Q)>Se@20BX}ENaB5$*^BWMx**v&8tP{9@hnnDUX&~%1n&W)Zd&e`9!uwhEIlz= zl$<5;V2{NdL>MF_kaz_A1OyV`&Y}A9v^|yWhyA?Z(YR0||ttN%WZ9+YpY+kxrFBYTq4VM**>3DtTTGK4BZNB-IaQrrZg>~IHe&(T8*syvEm)@1#ZvsH+SAK_%T>H z>2;iX;^h;@@!N|gX6Q7kX-+~|SM}k+?)J{*$;GK}>(JE37RH#-sDClO*xX#ddga<= zQ3qcS`h!c?UzyJri@M!CIR4x3{^DzoOT*KYsf&wLS)y!Xn8 zSK>;feF>{XZ?$Ic$iP;YHt~?bEOUCeSnGO4QDk}MiXc3j&kqjv4-fXwPEVgc`Q+)- z2hW~8-QC|kJv})ePwKicE_ap)QIa#eEQ-vz*<#^aA2=|eHAY86i$x=mhXuE;UlNf| zo*yEjZ@o8m@6E4FH?Ntd3hJhhmwXa-0E&P~iM3kDFj9OUG0Iv6aJ+dfzc_J=X|T3! z{l#o??b7CCR@L6?5C#bhVjIGsSH^Cd3=3q=3XAvA@u#+??k%d?M)&0XUiRi|H?Lpa zYMZt!%d@k|qo)Ul$LHF^#Tyis6~q$Q04Wj`(I{s)W+%rIKv z)*@n&WkI4-Y`N-EXM6+CWdGLkTt!ssH$2`1DI^1ib+U!i9iaFO^dO}OO+tL zZ9OvrIE#UqLyJHlC<*zh|BPtjB?}?)Ab>jPK&(CmI_jr(rNWw6m?Ey#l-$NiBSWSe>+1?yIu*Pu?NQZy z%BsnXsR$q;)YW1(8JoPkeChING@2|L1T-kq`Q-R?zH{yNqlfno_MV5}ftkn}V-d0F z4Q-aCz;4|E3ILFi)S(jq0fw{*p|U7uvuZM(?`)6Cvb?yM)~(O;EJD(0*-RCMxtPwL zK0COWRBLN%Z@>APHqF!7d=(kmrBo-660yi)K4%d{j47#Hb8AT8Ns% z>6}^FZ0qzgZuhnK>Jsh^b#bO30@k|8#o6wY2Pon>%xBXUT%I{+Oi}b^^ZEJtX}?#Z zE8Dsrt!-St^{Q_h5ozkhd^R~dKRr7;o6qYf&yU{w@ZoqoJHHt3?jJpQe(-E}-}`ph zE5GrRpa0_LJ~f{=dFIM2-&`N$d4@=qOx1V-$g|8?r{bj$LRD9~4r;ykZOh)*O*5TM z1BdZs^61fnhY#O>{NUc+^G}ZUpB^4OIX^j^PR8Chg!cCB+jsBWUf)<3Ffjroy`}`*?4kvI^H`tVF3-* ziV0aMK}khTsV+{X-pck~>4!1$gGiq@Muo)bcS%-VXTb)m;-ki&M{tUeKct5 zHV!USnx&O;-1h}iS{UL=2w^Ft0TDV-M^rZj zW{JVK0)Tdz$CzA>t3~_^$bv){NFXQfvJX>Nmc{%KH4aM*-Hx;|2mmJi=adbP2q+xL zXf!ZBe)K5Ii>8@R&kxCF2sBz7Jb3UiNGQsJ1wlgk0wVe-((jhCJbuBHgb4)3NCr3r ze(4+cA3puyqX)gR3>;E*Y+^P|2t@Mn{rg14aL~VX14K$;OlCkk5o0E_lIkP;b=CSOvYz16NiJbZe#0mQ4}d;o*)U}y3r>A@@j=2 z!I0RsKpoT{g|H?CfpSBv*Qe6XmhgTteb@85Th`h!84mmxGw zU5B=An;MM?O=zTCHgT>bDLdy5I8eY|^^IdlEW_Osn1XKnDT zix3|;fgD6wn%eh!#e7~(=L=0PYg)g#zP4D@cW+*K^lX23@8t2*1Eqs$%UI;Zk}`KN zrlUurG(^x?cf>{qC&(&-El9BHyaZ%a3N)HnOai58AuRbN9g34uezL*=6@{%`CX?Q& zMnsH`3vS%FH0<}^`_X-u+oE*LLO{@UK8Pa39JC@90WyFHln`|woT$|xL35$wm%>4| zHrD}ZQ8!J~woU6YXALQp6rsC>Vn-a|n7Z;cIG@iy_n9|N#}^kDlg!$5RH}BFB#l?J z5ip1h5CU_M;6vb$gzCr~kb*%FQ1W0PG%P@1kkE4g3@T~_KoHV_4uTO1$jnTdWTzPu z##n7=I$D%O?^UYz;*41;MtS zG_CLV2Wx9<{eC|&C=6LQpH&y*`Mv2UfBF}H>D!u+hlBDkJUt+}gS|WuBG2a`)g^zkMAFAwko6AH223klEfEdGE*583Iu7hd19CUwgG^7J_L7 z1!m?ML4Nj9w(d{>KDTCeij*NG00183(TtzWOh)i<8s49ToS-m703uBPKUr@UWLI{b z>8)Y!Gu$aBAORFm^IT+Ak>VgxY7QdRGCMTUR#L=I@-|>4nO(Pwjw+{ zNuhSD)wbJ|TLUSI63HTqRB@(Aieyz`C;){qk<*>;IcM*+mLK*xHY)NaCT^ay z_Zt5H`wfiw;L@{?zWFr;#%Kq}v-4**%iOQ(h8R|LJ?!_ERoyF#%(I#?(W(hSb+%ZV z+QS!jC(}6?WJR`jIR4sq-;gLR@eRN^w{~3uX!>~89IjLyA|uAN5|PXjthg<1pj}YF zX((F?V=*;qN5en1bz6@IRV|IS(iW~IR6;cE9yuemn51Xm)Vre0vj_XfH*ej~3!h$0 zqBiy#PEBvP9g!oZ0TJ37Op^pB*!jp*3@LRhc08LA;&e8@aqG@vxvZ;dI2dkhYz&6I zBJ=&CXalyAh>l2AP6W6LKzML8Zim-t4<;!B$Stu2fJ z6tE?BhyfV4xmGE{$N-1|#2|n%m`9AJZQwgGCPP?)$3RQ(ZO_X!T1-VS4aQ-8W2L$Q z5iqL87)~-S({k%464Or~G2NOWsWVc~dZMxIO2xI^K+|xjz1w7cPiVJ6ri6!0pExpu zp=;U7vYJne!A9BN2+hi%466lNtmdn?u3h={-~5f={oVh?VgbC%Mkgu%lVY&L)vBqP#-b=*eeG*yk-zlf3opO)+$aCtXX>V&PYzbAWnHc6sv?9% ztYd^I2_pel#`|wve*KY47q>S0zxa_49FHfje&w~QS|uasYB3>V_MX@QqDTb5dbOyE zyvWPcM4N)C5ubo?f8ts_0n`xvIN6+j>}PV~j#}p<+Gzk>Lh;QP<4YGF4ie@K^$NGF z>ZWPZBjcFfyn6N7XP++zTX*iuMoULX^*Z>d$?iZH`7|kw4hm4y);8I)k{{8Wq3rkzan_ zPrdx7fA*Q1ckaXxqsVNwNG`#qi9puxdvu&-Wq&X#2cwORt@FF*c6ZNG!rdS;yVQO< z=Ca5Mq2DV_G=wPHk@HLwKM@HYy|{bh_Fmlxng!pRKJ-i;n>2f_)fi~Qe zUC9_!S8C%%PqnRp0GCR7dVq}Z&JF%(gsT(z@?jv4?VR@K(1PGjzZu?>y1 zWeO*SD7DK6#}q}0aHH23gT<->vtE&j%3A%hR(GGM8ktQL(i|aSX}d)trXa*5t7X!l zi`jfxtqzZlpM30*vMfINXP+MS3N^^Ge7;zu@QsbpfSEJLoTLcdDs`>yS1@LJ)>ll1MRKdb0Kor_Wv05KKX`UJt=~z5f2}(0lKP8!A$* z4hO@5HO+E9?)UmhA>MuIH4`nldz?x{FhdO?q|unEGGkVhYfW}?T{fW+Y1mm=7HaYH zU-}Yg^}!Fk=g&U+Ku25N_SR{l1@i@2~#yKX~)< zl?M;@uU)%77z~gg#+VUHj9?}%B2l&~CC0j1nVIuhzc)-TkBD}oxmHNL228G1lF2$G z5rU@1>3Cu_>`wV4&KI?dk38|-_rCWp|NPGo?K`jSt!le)?t*jfIE^ATk(5KI2_>bogL8J`7DALnR>? z7=nnJW856|z_4DeR@Lg@;PA~iujZL^1Wb72`i)m!c{R&?=JR*F^xQ9g?8ATc`7d6( zaYseAHb>=PcyDhk3Sx*ZJGZ+#8jbq>J|lpsXL3wy>y6JmF|X>z5do2NtOg;*5Mvbe z>`e5b-JQj9HJ;9inOBQj&%ZBZc_sk~swmqz|I+#F`AteG(<`xsSV=H&*sa#!RNe*5 zqeZoh@M4L(nSb9I_u2dPjioIk6bw;qeC~;IcHFC$?A)EbgG=Yn98YGU38*lcF19v@ z!?Gl%Jaz06Pz zv=g(pd(m_RxHM+$klzVwg9eVAr01$N!natNlRbaxd6OVUHEAQde5f>HRYF%cVQX{b z7^^x~Rii4@PUNv0ci39{n_3D0)z-#LB4XXZTtrPFgqXs@%rwU4#@i1b>_3<-=8m~6 z{8wJPf?CHwMQ^mZwWT6W(;SZ{Wmz;$@X60CYSK;=)|GqeAL^#gvWy5*a$ZVmYe)5} z(gh-kXsXYMC?U`i=pyY*RF&8eRTGO5Qq$k|(*&p%fGo|;+7}rjU~7vd!!*=(nM-#V zwD4X+G)0Ig1D)=6Uh4kACFh zg@^w3d*8i$<=SL6&GVATwL)D4=RC7dz-vRgaPjfYtutwrl;lF0%g8hSm;nTdICCjd zgHP?Z+p<87TElNwopn2gH7=q!*t_$+Z@spv79fo;2ItOSyz=_@|Iu&$y7T@I{*ON_ zb4KFra}S%!a5xa-)pCxA5=Av4IRuCiOf`hM#YiN3EW38~1gIL!AWDFfK_ws{JICai zogt{iBKM*q5=~7sI(EHY56K}=j4~VzM;oKft?iF|=;xk&_Sx4j-wL7LJ+rmFIl6Ic zuc{*xC0j<8`8>bEwJ?n72&j$eH4u`Aba&lmNempy#(TodD{UxuJ}?jJNEipa*O z=NwNaO9S(c05Sa&9HRniPymbV3x0~#jbPGR<2|vO0-+_-xq+E6qN1UuZf;%RnVxRS z)p(t)V;0kJDY>Y+xlJ2Dp#})fr2x0~AKtRhKmkz1`n}$xk6gHM>+WPW!;{sY!O8Dz zDelznq1C$NrgRfAw}Zy}dk2%*e7RhyMF1djF*K9uN<^pQLr40K=brlfmtM`YJkR^i z6^iz3zxaR$s znE~_3a6mPrG|qOskOU{p)JAzxqVb4?j++b4WkL;51Df)q(j-ww8=K8)6+@jBWm@si zX2%;l7fQssZX8mcyJ@{(&QA~kgc6(8a-kBJi;09LY34Ou{V6v#+H!hSEuGJ^wx2Rh z3Nv=BYB4k_Vy3`)cyRQ+dG-GHzxSQ*cs*p6X`$^1DAWK7O#V(f=3!?LYr7 zf9Idxy>~y)a_^j(5|BjA^K7|l{_$`B=3jjF^Y`~2Fq0~&MiUD`R29$+Vj2RfshO;2 z`_L6)Yh{4}GJEf{gpM>3CMI%-!sJrOgY(XNpMF?*!A8DO*J%FvuYB*@KfLwG#Y;tz zH4#EI=dw|rZwv-cKYk&`c=`GrCJrJY2tg{iBt%hFhLgl@k)(NmewnSR=5RbmaugPm z-RD;2sEqYQ@#7EqU%udH(N=0X0Rl#_e|I}fBiyg#K?RH!(j?N92ps_fzCM$oqf0sc z^ci*tVlWN1li_ban*Bewo4plqY>v-9Ud)br0M7CL(fFljAD=E)x9;vQs(Q7k?%hAM zmR@X*NkmiZhKMndBDhvc0%(9tBAQycpwcbbtfgWmn|vBbCY~R)qU(0_0-6A737ne< zaI!vXDZPHJG$K8D>G!YC;xr-bIJZfg-fH2xXB82-KX7H9UAcC1v08fX62EZmlxhVq zmg3LaP&r7DR09AZrrCUTbbLJMmj_4t_wU`Ws>)1MB#Jnf5yEOEs!-PpbMVR+Uv(Ge56jhbEib87v!+@s=QHP=bG*5^K?JK+&Y$mZj=u8htGz5U5CpFZfE4Q0 zadkU=lgy40O=CN@Lq;Yu(NH&aXsSih0;R2f=rU>n0l@a{0N>y>j8g*_U5> zzOKVJzVV%P(#8MZgWC2@s)IrA_~_{Cher>czi@W<%)j{O|IO#W_{G=XxO{)_Fv~OV zGwWh8h%;3SO-)25iCKY7vkn-smGEOL?PTt?(F&o0a6vze+ommy+P z*FMYgqGZm}W+=s^q@F=le(r-Gn@?8{?!Uc%U;pcW`rGv~UcLI3nG{7?S2M@x9EZ@9 zz2Oh9-0Kgw@nGy6k~a-afChsB2m&(sWU#hw>DIb`IhhI*`<{`IU6$6Now$um)O&8( zb%Y8_mQ7SyRduy$Vi0tUW?LJh^Jlhi-8(?kNMz2TK_&3(7qbuU z`f*SM+;DimlD~csZ!Dx1m_~D8Ib*@J>C=MVMYU;!M&#N=J<}aeUp;P~AMmeS%yOnh zw4S5idL+NHl+WA^J7+d`kB1jF1{+($$!y_sf9vY4<+46JoE5oG)C84ws1~Dm=bWSD zR%K>Q<}Af-1P-b#3w*sw>GIcrnAesIY~42mU}BoMbb!Fy#G=i4z$`Kln56e&gzmTX**m&^Z^QwkaHlDL^}o5gif$PUiFb zdxtT`>G-&AYE>N$hv&|nyZQF5qoaLomaBT647pt}g#v*Y&8N#yhZw`o)@F>cX_o8! zOJ)ZhCGDFsHa9jmx3_NIxbo!lFFp6{GxzV^G6g0Vla?Qq34>TS zr$$OqsMfJj(~gLo^MtWciE5HG9%N z_cylG5UhPIi4*CN9JBM@)S3|H)A4L_6q*J}R2q}W&RM4>mKX>LfDOR=Y;$Y36Q{Ps zg;rvqT9(6afBn@MSEd@9>R>t^4!3};U?_urB8s_BO+&s_sPzAX3p}$xwa}#5+zaf4gnzZITA8)Q5HVSQbWp| zl||7jijE`eQmvOeR{(%&6s_xKwOWyLOdMi7I)=CJKJb~}*%*R@#~zJj=lnE4Mx+4WpUD4vr>cd5S~Pfi zK<5i;%pNJ}-CHh0Ris6*Zy(7~LpjmaWjw58!}GU~;>zsB4flATgF-?0zD>WVQ4z}X z7w+7=dHwc-;h@(m@>SKCna^A+#{wWWG)|&B@13eOP$%w?sGWGytu3zMlt<~bTk<4- z6951iI(2apa$pkh#x) z<(oHd-hA-jAS=r4t?iA`;KJGM@q95EPqWMo`u)tix(d_9V!l}3y?b}LSXA|Ldb}T+ zT12wEy#7{CVhBy8(vTw}PC!}FkW{&5+Eg}QEZ+B1FCHBo&*w8w)P$fZ3Eep+c8-Z0 zu~WvTst^F3V{+c-S(a_?oSiS0bqK?LIh`#+kWc;9m)^eh_Vw#GO#_$_dy%l19EmEi zn@<+H9!X7QN#fnAyXgESOeDmztGavfk&prFhvyVM`>63r*X+rXOZ~N@IYSoBF zBAzW)Rox`}EHYQirAk~Z=hMki48i*>dFT_`&{P0{InVMQXcU27Z!j2bdY>hc%$n`B z4rM}O=UBv?&otC7^FStQ5<~k~iL|XY!}iuTIoN&Z;<*cVV`wCXx^C(^0-}TvW1|vN zeUSLW*e!3F$oq`EckFt-K~|JSUglXAVho`XiNvnoE4=g0d&kVoWtjtjV-IQx+YQ!E z1K2S#!^!3iHGz7Qrht>EfFvq3u?aGnt*+d-$3*=y2ZTJ!oa3_0RMdO-!qblp`^99w zS{xnL{XvuU`ci%TLcWOR5LOZX?VbASOc}9OdwGN3F`|e2{7{La5X~yF+7Q4BhL4?R zkIoD(FYvI2R}Y#J=&hNIgS~U;GP0FIPFOO0YEQSS-i7(X`K+p&qw&1R++rC`*Re{L zwnT`ahN7xqQG)|djDV^lOst8hl2}lukdUXzEuzXurxg&Yx=y`LeRxt9C|bw!OTj^{ zr_MS(d*_u$OSnHvr#g0yBqBBDxj)>zbm`&c zVsZ7YYexqU`h$&2mmb;P+Prsv@AmB*tL40@Rx#8uHrR#>X%(BMTA3MGBruIgOzqSd z#Y9z9EQA^;=|@*f34xqTkZLfAu|Y&8$Ic~GV@kiIz*$kSV^voz7l%!V5<{rdhd-O_ z%_if+2e+9?#SBrJCN_-$ICcsBL5N6PS1VN^V(0R?P3pSxJ{OISdH3A8%~4*KKF|Dg zzD)UO?UM^CBFid-Q1=RRuJt&lSq+n04`5n6m#LYg4ag}qs&vv9Hj^YHO3>vtxx`f3 zfCEZKq7H4MX&mG_>iUnxIITH@#E6_~u@txgW)UgtjuLD;yo6x@Z-#(ML~6vuNqw9? z@MLf`X|ERr%gcerIIpU!H}5f{5~gX|lTST=IG)_y+m}XOc9UH0-zF;sWm0AC)AvE4N7Y3(%yBAb1AuymtNeoxA=1V0&}K%)NdYqwF6XHK{bM7OT}lB}x;CxhQ)+^Db3SqR8IB z%CbKgi~vy$vpn}M>q14+$$m01QdOUMm*ugkQoCv*2<8YwLdT({F`B9Za<5m;rjs`> z-+KCqC&trx6lv;46wNF&O%v)6n^X!CQ6lXjVqG_8Lge~`VUZU_QDj+$V8kwj7(*j! zS>}3W>DU=qGFUS^T;nf+(4dPpq;*7_h&W~dOEF1+NKBj{7(_s7Nn%D=W?odPrZIr~ z`^PtL?}=!h`!dfCj>dcY5MwC%qxV0u{qH^QzI@+(;emYkjCTlse7k;YE~R5f`tcqA zo-H1FTt+)?tRQ5>p6kq=0MTq5Ow1nZ(K|-;)PTg`K^lniPDi6in}^vZ=wX6;t7$R=CMs&e*tO%+&LSxAW7x$L7-yUD@RPW@Zk%GB zOuvhnFiR;G(4z4T0NN00HEjQW?d%k8?UXc7iFPy}FP5vF&5b@hc%hhsjW{cU_EL5w-Vm{7%F`XVR=ab~I5shH$bSgqqlhkgjp`v9PB^_!2 zY6@aP$g}y;&;9Jr?riUT_OCv7=FCoA*KPJwCq#)7f<#V{h@5InXqwu&Wmfi9%cYpa z5Mrof2q82(!{X_u9{cvUzTF@6W7@ijrW;R1Od1WT{>&(8Z&X68RAbYuh?v=zWluz^ zIwE0|MO{@@RX0^NpQ3X<&$AfCIUJN_I&4l1>74imipU`C72LH)Ny@ApYpPSfr}Wx2 zFg$T-2sNrkX-ST@7RD!CAAy-mW&BV4GHaPR0H?%x?X5yS+JgfiQeG5!o|}OJQ>%ib4luGNWVFN^Q(2NqQgBT@bSyj0v=FX*6sOtu>Run-*oO5N-bI#>??lYf$+KyQ= zr-oVP@-7ak^QI?|pqc>zBD<61)l(5bri#fHk?fbE#%k%TKP4NIZYP9hrp3|n|%iUw%8CSt7;ku14&G?|e) zlI@yUCjy9)UYY59c|4iixcSy}a=5*{!}Qp#+xMr_$#{IQm>j9a7!{G#G&V7WeE?Gt z15jOsrczT4K}Af0YV6#R(9-S@5M%PdIF}@nu}#{rHYO%Y+}YV`>iSDx{>tX&MiM%& zlcCmQQfz}2QKKeux-?A#uv*TD+{vM-VLo4E8GYnKANc*>|ASsHH;rkTnMPpIq*a}p zMl+BWX$GnaAt~928|T_ zr;yES>|fGTS?9eZL?^0X9VxcsNSZ;G7w>u3%QtSm^b8GVJ%Cc!LO&O7I`3>nc>qZj8qr_@a(ORI2nYek~0@3tdBCPHJ>^lvW|#d6Z)IxQ*b3Zs^y7>H)xYgeq#ERR!u6hJ*;H zrUYy7@Tqi(w$1O3HiC9sM?~ZdVl-Gr2oWsGgW4`nAsReB03)iM zqG_d*^%RE-+T|)FCK3TQjTp$$czXTz-FtU#REy&?Tf>9Bn>Vjt4l!1%IjCrih^U$% z@x;Vw)(7pW(W)ELzSp`0IJ3k-T+a$l-AbweX{cb(@vv33R}6Z+ayp%O?>mnbp0-(9s*nUv;krYPa}bH$wocYkDv8;E z04RBi)?@rsqNHgNAwK-@V+V%^^HnXOQ4#0e_L&O@d-n`LA*N4~h&2X6^v*T)>h_8Y`MQThm$v3SN>`+$} zD5SM&TO=mM9$Cw4&~D>kAcDi~bDw?XYv<3MdGV!pA>!q$Z&h{eode{&D0X+w=9^>R-HY zKFiDF=`{1}$ZTRpBl6^lUE4LMUdZrtc8GOlOI1~>5<^&3%cv4#biS0>ShGq8I1#A? zKu^Rf(M){iU7kyf08rOWQwJ!^^JllO+`L^aS47US1ArJ~j4^3m0k9~_q9_p2JIBQA zy-%r83CEA^x4IV9c7G5Yx6#mvC(^}1bgcYt5ZoF#5Z7E(T+=nu&j@k-VkC&Xou~_- zlly|2h7hF*bqHcDx5*(g!x>M%^+@Is7OEZ*0Kc*y?yclf4_+8$&kyqo@VQOCSJ@Zu zG>5glJ~IN{%Hw;t{ChT?Cz}O0o72yp$v%Cz=@Ug0G7vRynj(sf)=BZ!#VTmqmLwk# zAfge_X)~;z8nQzd3cjw{yVS!}wA)D?Z)&0)`6S7uwav9K;WX|dk`z7FEoNJCh_#CN zq@*y>$+9}0%x8<)@$vZH?HgO0<$K=$?pMG3Y6!K6Kuh$O&JqbR3L*q-}!EqW!4okr?bFto%7xT)7LRobOHf` z7QbZ%&bj09@wK zVFU%RltP}yC(QmQGUA|nk~-NFwQ~3tb8IP25L;q9w8&f|10@tNZ_q|BCEj6+Lqm!p zU-;rH$&_3#R?fR9@#x?|8}M$xh%WQQUQ|O}tBLdFLytW97oYhHX`0Nt@xi^})^2Fx zU;ou#h=eoeFPdqhPB@pR>!*zswuBN=05)ssjLd7a1(`)_n?xgYZO7D+3eptY075hs z7!5Z?^~#Mq|H*HB;`wKu{nTH-5@OsOZETE&gW;g6Ya~~c{SYb(;+V^#sOyT!$dnn_ zBQZX7VV5|2{mr+Ij;4b_`OClXbFW{%HC-(K?)A%?8^hh*Ep{}S&bz#6N2G|Y5g~~( z@gym$t3(XUFvJj>X17@$2BQvd5D*)Ko*mRynwW{khi6q3RF{PHL7tT9Q7T-ie zbUvdLp_EF7lZrA0LIN>MY&f+SqG~O9#<4R{W>x_<%w`A;7!wld5awj2aQRk4$Q1%MfHx`7}~p9Ike(OT$Ri+^qPa?v0` z4co0Nu4zH7u&zbDx5}li2X8rfNyAQLr!>25Hd*(7+PqHHR-4fZt2z?gA9Pf7UAx-SX8ArqjkZSvCUg}ZM`!MMvJF|*`5L6z1+od`dcV1h>7Y__eA9Q-&3 zGBxaLAT1Mj#CGT!6k3mETEs3gkONanl1J!t0hqLqejQ$wo;@ZEjYd;bC2%o@){c*+ zK$=wZX&G#m<=N)e&ffj~UcaCG7SrSX(dG^zNR;j)u(TuZmi`^m4;jD_b5}(HqA_zz zZB{-B-01M0ZSk-s8k-?;T0oFmhWLN|$zPn=-u~bR-fv*v{ku0dH%GJiqKSdoWm&m* z=fV8=US9NS@2ArlAdH5iqR5={$BWrw=fcBJzT=^-?Hh03Vx+6r-hTgk-f?dC;?qxD z{O0$5w6}M-yL$!z=ZhsG5^3jINR@8)TqNh35HX4t<1}7OQIc#P*Xfz4X$b{Mn~^y+KDN0u`yNWfOyh;GD1Ox@nfv$??XpKgVWOYgzQl zvge(1&J)q9t|Z24wTu!rHg*v4==f+hojK=w{lR2%%+7h26)0U zgJH?VbUXoo(O{S=JMTL#DPSToXcX^!6QY?Fna{IqRn?QpF#}tvpWE5Gb$4$(TZGJ*+YI}Sejk}0JGX@kyT=d|gFpiq4KB~(AH5Bm8PB7BW-oZ7 zS%_fp(ev)-ce9-Wmq8IBMEJFf9udAjv9BG3Z;r!&ZLgv~y4n29Sr&ymOC`{CzJp;G z&Spl8%osw)+Oot+OZ>L9_y`Ub6TF1?z`__hvR5o^I%YBpakR1gsA5YFywJpRx-zyE_DtQHHj8j};z zR3w~2f@2T?O^6mu+1aL+z9}+j!1;6siOiwX(z^D2GW&rt?E6cZ+Gd%>zqSt(OF0Un*JV#r=aZJ{2jXyRZE@h zsDzqk@jsCfY9^;r?^D;g<}wn1Sc?o(FeJyz<+7=kN$CX`Q>Z9($v&NJNRgcboKMCF z2m6;UJd{fB7((Xr(bn$xa1T#vzID>uIzE_Aq65tc6aNU;fujK69GNLQN^J)M0Y*X; z!*tQM;Gv|TM{)#aR&YL<&aS+5^FRF6Up#ka`>WsneqDz=&qakjZ)|Mbxp{euU7ls< z&+q=s&;0a_8#nIX+d~9m_rfzz{OpH*?u|FDJ@NRXN8_?|JdX=bsq% zhF|%{cQ-eNN8@RcXV!wP5z$oI0AiJtUC4%3Rdp(P3_xN~12YRD1Zfy3b6KxHSnl0c z2}DN3qv7b8r=P0p)nGVi9YrY2zFJi`uV0Q$L&T!m4iDr^uPEwJ7ez12ved?{s^xS# z3!z!e#$|uFT+R3Q?^Ua1lCb4@nf4ePn>(Z7CIFa9-Bh8jfN(Gv9qd1-t0gc#{O}V# z%SkntSJ-fBKmh-|_76cy{CV z-Fx>J%=vOv&1O@G;jO~oeQ-Em1qH{BnD`yfK6&oU&UgOq$~V5YJl;OP|DJ~jU4pHc zsoE!RhfvoVU|8bRWV@vQ;)(2M&$v4)J8GmPB(MgIm8KEiwMmbb{+%22rTut!C404f z@>V23hgv!iz>dgjgQI(C){r?j=$Cs3ldcAXb^8)Py^$qhn;NRABbSWqpny&jA3FV& zYMxQL0ZO-=PEnTx0A#3U>5M)hAa?V2ZTY|_B!YFyLK;y6AR{&sCzD0hG(>c8G@ecl zGmH<8C;Jcfiy|+*Q;i51O^DGHh&UDC>6RfP!-ZP^<%O)!aC(-NO6oLG@8C3Q3CP_F08=fW#N5)Z z96BQcs77Z$DW#$=#;D!pr!Ln(Qfb^_-qHiaZ9Je_>!?F#5Kg58v`s-0J|trmn)y=0}1)pW)7*vlB?i2f*c|JSNGJpH- zolkxGGyQ&FMAzID1P%2vG(lqw)<9PSTz~ueQ%^n7%V|12P9CMfa5x?x&u7zgQq9JP z$NP6xB|$luU9(ywnP0V-9c2ZvZ|XY4IyN;R4u?Z9>Gg&?yXVMkHXG-j=99_6@sTO8 zck_wm&a>xpTlwGrh4$RZ$xvUoGcvTz-ANm@ilL*2YFw%sBFmi?k#@2$N%P5eW!vvJz$LKOh+O!QK0_e zy>w(}-WPcmVl*=o0q20w!~~296^z^XO))e?5VM%<*{xWj#d#4?O9dp7E>HryM20pc zp!F@D4p%rGB$STS_D_gL1BxQmDj<^c=p8SX^@GFXx@ng4xyHqEc6{y5-T8dteI_wl zmXXU$8qeO$87Q;`X4(dU0k=`FEm%15h^XUirH~M4-P&ddPEERSU_b&&$;nU{h?zQ9 z9v_cC@oT?g2EX_F|9WF%Lqye*TA5NJXFEkm&>B!l+ln>>4uBL|KOOqK074BZnik9c z;H?|C%U-#$wT0|m#&}9*goMPt6&h$vv`BJ}h>1zn=JR=s!DSh9Bv2-Hnac~G9C^gp z(iSKX8i4Bt=xGTgV5A_eXmiavw$o+?A`%sow7M` z*JcBzO+(fjREt@)oNEjRcWwrW{mtR|OOJl;3t#%RU-{+D&F$XCnf=>uvGbgl?elWV zce^gw)95NCyQcqXAYjN$Ey}LV4|8TfXh;f3W~jylKo}J%g?3unrJT|#sM+Rd6k>e+ z+RcYAp8JIlec&^n|8liz9I}YK{L)L$JpI(4e(E#MIa8fXClV#kv(UuXzWl|ltxaP0 zgExNn>8GBWjmN7>29G|qwXrjvFYewy{8#_>&!2ws(GPy$-A_Jt@$cTaa^>2MEORk5 z&S&1c<#JwEtJ&nJT2>-@_~1^`kE$tCT01bP)vHAab+7CLLQ}0ABS<7>RXd)|l1Ro3 zMHGO<%(3@AQ^wE)l^8-Dnw5cGzI^qC=bpWHrq=ij<{dsVHNIrp@j9-KS7@&5O|e0Xs9wQqj+ z=y+VO>U!0PMp1k7jn_Z(m!C}@4no>Jx04Wk1~SQVQ&F%i^8`AQ!QtV7L{YE=fs)Wz z6DrfGJO06sUU!Ij=Ew5|FQ&86WAp9Du&IvkYODhYNworUQfB8amVfV@JD1_@mF{Hp z_QLK~@jJ)i_7aKgeLMc$8+^VXF;&FU**izbU<-l6#tMU0ZY7{C(-{=NJ2JDqqcLYM_tzt%BH-^2=Eo10R} zm;m5FAHR~qM6?OgG_k50CgO-S(!t^Q&fUAK2qq8e$h9Y+!8M9>S)GDX=1KpB;jN@%amvzWtr= zA0HoWpV<{v)94r#TAuUiVS{Qr(oX2WR*v8@m-#&FrJ|p`mk^TAYoqAB`PR*y&CRW? z?GPjJI_?NLbEDx#Ui4PWc~z|>Mu`#HD$pz{coUNl13Mt+hy6Yv7lj}6d(244fC>go zE^(66(U&^57*x%Ozyy;2H}jb0afS*Cs?bDrtV|Ax7(`84Wrs$IK{O`EVoK!}g&3Q( zOo4UUmJ%Q|A-L1}$}}@fUC5e8$dsaGJFZ2S(}KiFS%L;gsIBJF5IcaTtwr&8I`IqH z&n8E`{zh*wS}mqX1Sx}d7CEXNQO1&Ak7EKm4P!=PzD+^G6zk&&w{I z9M|Hnr1>|~L>@lT-M4*18&-(~iGYmA2(G($Oicke`8Xu4r-3nn3Gigok{+hfpdVG4 z==#lDzyF7~o_qGmosH3hqw(g}D7X5PfBYv|p3Ucrs#-ny_+u|T_w3EL-+tnW$G`Z+ zR}T&j^1Rp>4R7AKdFkT$haY>$m$`&y*ze8e3l+G0_2%`PcmCc_zw6dW4+q!w@A;LV9z955_7a;^lO|Y_bA0yf&c{Cd z;lZ%~#V@~he{bJZV;62oCZ37F7SrkRbR0qhz-I9JkLpi-`m-XEu3Kmu#?%cHCrzYb zk!2b+p^TWw5!O+r^SO%DRb6D+WHPC$8UXS<%Zgrv1_r~RxpH|} zX3IB!IMa)QC`$(jrh&^1HwwS`Qu*4%9;~2NIFr%!h5f6W%`9k-t#AMa-#%<+wR@~j zAKCReA`{$NhT3e)W6$wkrP0!GQ=`kz-nq=NL1rS}-WWbOoTzGy%H)`7Ek#TtMDID- zh5=AO6Cj+|TRR1@c1)pW8U@qC*`8!*s!5R%Mc2UhBp79C@$RjgiI9MRK-8kB0jfko z%yJKA5~Yz?$L7q|s4o4z{r%-^xpU^BCNxdG40W}Rk|shhNGRgCvaNW%mtZS*MO;iRv z?-9XNjB`TH%F+1vmc+n>b-n5hcL3%I#oeXSbdey4r=aL-kyFx&Xo~%5!A8~~A^}TG zdA6F;7Y#B@e*%!%rHUhj#yehBRZ(POTGb7JX3pn%F+N^wZx8<2Klz8B|H2o3_ka4I zN2B54;nAgsE@V3!(^d6%Z(f_tri&oUs{WOa|H7+Z{nqhha&C9`t?M^-b{{HocYi!C zvW%HqTol+VU;f6bs&;q!zx5A4@#f_#-~9G>Z{NAIT+E9i6NwU3(j(Wd9jFe zoG;4ZaC6hUY%w1rJ5Xb0Fla(dm1WaZK@9x3?71AQs%FyENt#jkY`EPo@_aH`fWe?F z9=Uj46_{yjbM)cA_p?tt{>bNE`O@Vp*Xz0#6%jo=8o%=8uMpAgJ9p>vrHTd#Nz)c$ z{O- zbT0DRxv0y4DJi$SM8_AJJ6IovVi6s`A!C@htAL=Z<&pt%8{ zcYZw0Bdwo$>>*~jac3h++txV*oMzMgz0Ka?zA&J2BB<4Dh)Mw+p@jj7bebktuR_VH~S;GQ!qt$9On?@UEvCf8pYP;1O^m}QegIY|& z&e`y}P)au%?asoYb2gu5-dSraTa{s0MM^1UlBAI|8b;|THbxr`F>NAJgn-uC(P-4| zcAJgHbdoDXFGvK66cA?l)O%Me*PX*!LdOVzS|MVRq>W}XQq*V}MHoj~sk+>*wGs^B z9fA42Sa=3OMn*wlQm9ddzfzWpS-kh2eF%DmK(=^b_Tgsey!XzDkYgXF?z4_AD^ef` z;&CR?^O|lv29iJ19%Py0Q=}H5m@}_jfzp z?#k+Mt*NZ?-TmU{ufBWh)}1eW{W8wXfd2xAof1jrC7`ZD5@uI8s_A$G-d1 zOAA_@wYxjJX_^#y{^ZMRY+gU$02snV!LZ^Nmi0GI zn*9p?Y{PBkwrOZ3fxq0gXIoeaq=X+`GH>_Yy{UbENe?S`w=!_&Mr(4!Q6kJI)|d7U zhk03rId`N3a1FfoK!~7>QiSNNSGA*35WzVQ1WJ$*90XM!!|X|2M=3%Nn^}>XZ%~;z z1fRo*#(6I+%4lm{QIwOc1d&D(r_ET{PqI>klh`OlmGkFLA1_Ng7*58MtlMfwQEaP9 z8{O;cgS~BbmXO(dVet-((nvuAJu8ut688CY91g{GY#d2x9XJ94qR3DfUC+9?5|ViH zq9co~3TG={S??WyXsrtcWm(N~kB}q{BubNpiQ-11X^b}7@RC$TSyq+IW>7?!#7P`Q zie`P%c_J>Lw*&>!!D#g5FZ|lK1&;b-qsg-mw29)_ z#7V3p6A)lTN+}dl8U$-r5(Io$eX{iIK*V_lMh5iWAu49B1t18Bpp~BOOuSYRfiuA>(}`uq4{&aF2#lN2j6NtN%yz! z9qjL`sDS|O_R`nC`nhK=p5Hwh|3BaQt|C1ijmCpvoF<5{zP`4xxw(BX{peGV{n!7^ z$A9phzx?^eJ zr%0t)R+QDj!M?M3yAh9ukmu9)uU&uR(wm?E+$SG<0Z0^rgNUi2#|q} z7gJi1t|J>rq6h>?g=f1WBt+I)D-ia8T7~6U2r7hpe4t9qi{pgKi;s+s<5X*iq4!llQb98G#MUk-1^b?ql+(|UQIU+ z;1{=C+K^5Ml?Wlm^Kcaa3dDqw!j_T+BU?EhR`9Vl-5A;3T%Aa0yYMGs`t|kb+q>m2 zj>?u%kF-sv>9+t0AdMqUG|kI-BG?!++ieDVqZmy_t0Jq2NGZka8Nhk3QOQhu780U0 z4G3z&Q-}x$8BqAGkc6pyFCu_2&5E+HjYeXfs~m@OXt&j5$9d`Y508LlX`$O{r`=|A zx!b*b{Z6kxgc<+}N^9@^bTXNYhu(W23*bUIhP^Y9p3NyKxRclwHDo;0dkC4mR!Zv# z>ou#N@y8KReaHY&w=S(Ky)S2LU|{wSKm6d%-XQ{N6QNeNvIw9|6ekTunpx5$?RMJM zTGvQtIercl7w~aZ;33tFy4sT~bPh^c8Y=b%vFq zBBhMhN-1rNqSVG1Qp#urh^WGCr2gxo8VyueNxd*Ji zOTaP@Hv!hLIhcKzNr|7a5$XrMmO1~oF5_wgz~a2ewAryXM;92-K4`s|Ax&HDrPYmF z?=jon(b2#E`yaL&EkzM&rRe^oXjc80TU&#@fCNz3E2Zk>ROm$#3OK@Gw^KlMe+2GF zcZJ0x0--oxAyE{?%$~vj>I+XMk=fYod20aygp)=i@LoRh)RWh5-2Bh~$v6MIKm6wp ztTc9`)hEC4AMM}y;KG^pZ+zk-Szi6i@BXZ+3SzhP^r!aU`n$DubASI}wcVK(mVqM^ zrn*&`M(gPl{rlHruVAy!=|Lo&L&;AN%dEe$_Gm%YM>>c&jSC<%MG|n(g6hn4cm}XOy@P$#J!igK}rfQwI zGEpp=LA-=ZkW%3w1PJ0mW;(aJZlXYI6Pwf|snXh2m53;+w{Pz*Ewziv4n|W1ao)#CBoN$H;Z#FNNNVmy;7}AS z$}&7&eMl_H3>P&ALLr9COTaYM@w8BQWtkK6JxiL##%NplaAfjc@}ipLxl&YCPAiq9 zahjMUHs1Lkz48ts7_IZN91e$hQ6S=EJlfmYsLG6mbxjYR1IW-sF%hBC;8D+j+d;h> zMTu70u_vWs6A@8al~q}=x9r(7hutyP9P-)`6lj$7(uLIW@>-O(nr%+gw)2=5o>Pva zNGWZMHjyS$aS~~*j8S3O<(cPl=sHiNMAcilIu|#;=!i(C-F)Nit6H12V{6X2a2XA( zO?ED}$u!S2Ct7JDWwars2y15!5yepy@KA(dqyEs+pq{PQ zQ*uHC2;iY`5Dpl@pic~eT|^b~5`=zcO#RTxe}+m3b>&%dMwBw_y*4pMX_1X>Sw=A> zX*+X+a8g47Cq9njmE)(5_IKHfF>#g`w{G2DTv-_nNB4by2(!ul%)ko*pk{^Rd2ST$ zONM8wSLeM5f?`FW6vZZ**M9>Vqi(dhD$l1OU;1DDvwsmK3Anr{a_=mm*2`+4yI552 z>a}Z1M}PDue{ryNdt+NIeCa>^*b|T5T$kt+ zOTTx}d*}TdjL`>o54R3}R9RQqDukm=oZR~0{oQ^Kcl+;OeX|%HoqPDppB0wD;G)NR_qa2b_Rb>}fj(y?tpZ}9T|Mv3oO66=#hVov-i->b9 z;z4*u7!5BMrL-1iM3p9~=lLW@P#K!xH@$cSRH(?PI8H;*jgUyGI7y6&8Y`<>83Z&& zM@bTC!|bfBv@zbfg@vVKE5~l#+syMEiP9v|+5o`4dw0jfn~CmfbPg5aDFKb4SW4oxJg!A&3l3P}Qo9YiQFJ-{<-Lgu;sT>!w$M)FnZ#d<_E zMp@?tAdYkzwUt&ceB{EV%Qr{kiB^=xQLuM8=gP8}X4A=_UzG(S850>ThzfN5JtHzn z(n`|A#3`cECJAryI8M@LYq8tW+F0kjcebj60CO^(6#29&OZL_|$86`(e+~d!g+y8_ zV@wQ6pE&tI6s4W6N{lH=JI!pG#EnLRGqz~>J}V@sfg+-%es;4+X&rk{A{ZM@`okU6 zdET&*rV6Q%Mho4}a5T>Id|tAOlce40qd<1i%UvC~XXel`bGv*4oMiU()O_Ue9ls6@ajJf#cx4AXw)rYdr{>h`g6PpH^k= zymzh&h%sizo}De3eaJ*9Z5pkP4gkoSV+6CVAmI%3gCP*ENCix;B83!iW3HYju@L}7 z1_X8tI9HO~2T6uk0w4ydt0KjYSqdaHDk<}cKua+2Q9&7vOr6E0vdnFjDT9b@tIJ)jkbx%C;`Y6rU|99cL08!B zC;-UD{Szmbv@sj^?(A&c{nV#EdGh3imwxgSKtxSdm2Gd|dHTsG&p&j!KT+TNn?Jw! z`1ucZM^aXQ|NXz~oO#499=|&nRHL3YN&&@bTP?1hc4SVa9+!fJi>zvYpi$lV;a>i=edD z%0vo@NGW3gO^|PRQt#c|d;E!yL}{8$CqbiXZIu^USrpDz)|NaA7zBiX(wdZ3N^3!Wwp#5*D{ds3D0pb|Jh!egS}k@L zQIWN-kt8dN3(6$@!JsNFk|M&Q$eOK2@93a(6|;Zi&C6f=%IAOY>tFiQKmV)iAKU|1 z=xB4?epqW=IludAmhC>CKYF^^ZiGv#wHEVXF&Xua9C|3H(<&R1uQExxpL&MY+jlmq z`~)_a@YAc&_xI&ufAc|^_Li5k$)vQd)kyDc9z;q%_Rz^&8+*)wZ71~#ivSU{*53Qd zxvH{SX-(j~M?&$!Arl^uM?xV-2*3)k_S_>f01F7Sk{Wy~A_N2^R9D_np@0tSE-;Zo zY!YB#K&5d^C@){SDl9}Qjn&NH$RZM%h?*qK%v=@|B8rU6Od}Y@jW~&;q>;pFlBT4T zcM?TWnkEW~6g3(t5ot%xQCRW|KocN|)1t_-$%vttPeiqj;v@}rZ_+x75^c-_$4@+P z>iDfY_ZC`hV^p&N-ELjqugy_mg!duDJu`=Two*zVAdz#{yD+H${Qo`K0YGb26y?(w z&)?eEs;VliwM}H=D5`D2N_p?2D2lWpg1S0{wN;dv^TKk3S}B}~RD;tzNG`m1O#}#8 z;il6`mSt5{viETkjmJe^lyPJ_-G#-41)LGcJ%<1{Xwa; z0Ag9#G>Ka$PxX6arP0I@OzvC3=G3=2oV~swfe!yd@KRA7sv&LECttX@y1W1)NI1#! z$Icy7Xc(B;F`{$)=9POQs7(q;I!dFsfl5_nkxeGfIRGEWaTKNAi&koqRjR@Ta>yP@wVP&h}hdMmi_0}4NN5fIO)%r(Y|MI)8q-CDBAM{o3 zCWGSe-od*q6{Qq6P{&-3ilcqbM~Ey4N&}H$qms1sSKsM<;_IJVUrB-aW^RtR>8tVH z<+tBHYMK+r*UEOXveX5ZTX%PWP@sKkZ8=J!jh#cRIV1IbC5g3lE<8{I{H(Ipd)7oD z{4;BZ*A3O$IE{f2C(Nu#0iXj`K-T#n;ADUQ+U$h^z!;^q3ip2Nyoq!pP4lcM%8HPf z9M)Y^pI4=4iQ^amNU24&lq5-(O*HAGVKkxA8UX|-O=6S8Mj5S@wO%~5+Kn`c>d^WO zmEk>$urY>6rEywTg)ur#k^nl;T4`g_q!AgTm1gnGY?LBH>&MnwX`D8aB#HpUI?;@Q z#UnnixAD`5(2ZXtax#{4&8^WeMku+0FS1VgZ*BA(3?(&Rau0@jes*I z1&o%KSE4Ak)+(hmAplw%E*=ab-upl+s46!c_6Pl*t*WXlL;`(&HrBzqcI-ptwSJj# zC_U=Bp#nu=$*ffPVrydvW=Wp#lm|cpCE&vZ2WpRc7!esVGzcbC=@jgLKZ@vV0+FRh)tJ~%?*{&4cSlb?L_ zk@LTJ_0q9pD{s8jpCSnk+O{38cWQg!_|L{|ul!~J$ylAynA~oq9{(59yqhQa?I#RDbz~UzA>#71QZlH@0f)YDk64%dv|9v zIBYkPt=(Pk7y-Sou=CD2Z%-aud-j)}dh5L_FTecS;r_vMAANc}9$&wH)5I+)j=)Zf z#tEz2OenSjU{oqpso9l4Dy(;1rL~Dgk`i;n2U}O}{pJ@gT$(@!+})R7TW-VI_0E28 zvbW!R{+G^!s2{)bu7Kx??{1eXi=9P;m2SJTZaB>aScx)9k)U-90@`StO|t5FHq?Md zn0b2UHodx<7Yf)lUIoLLIe;H(w>1X3OOPOQ-AX}OS?V};Wl@w>C5(y)Sb=8mSOkpH z5@Dy)3BdF^8_pcZQ4%YoRd6IRv(}pGVkK18DhgL?HRpi?fKpy-6$p;(xw4iN8Dru& zj-v=>F|RN~6ZRpZO@LZ~2;bY@ZKi1rD8ZVWiGrwui5cetlYhuO3`;w{&%PJ=u)Ydv ziKv8tl2YpRw=SniTw0fCLkdHD2NgI(a9+m|DVn8AB$OGw)S43j&^m-qxUf}Kd4;GI zmDXBYRAqIzzc-l;x}{I4=?cAL#bZQ`}nl_WBx6k_0EcmPpKd5_b4I-X9AQX(>) zOb5eJS>@jP`E)s;g9Vv@ga`q3L^Uw6-U@s6PS4Zd~Y(`NdO`FW@*<;;_n{QUU76>_1dki=Px{L^DGDY z!P_@pzIto**zuzBzwwnXU%S0w;%1trH*VZ0ijn}Us#01PgF>l>%Fj7gxZ81HHFiT!a6nYeFz#!6sN%U`KQkv_K*MVOP3l+$}B|T z(nNBf>Vxy3dO(hZqf_{*hnr)~PZhqmxiKF0jWKbvxwxoO8@xJU7zxbD#Y9-roLqzW2THXq?8$)oa(S zv%mhiPg-j~xOqp%2^V>zcQsFze6++S0dK`gEiffgAl|d61T>1U3Ud#@gOS`Q8&CU< zgP;9;p=ma%ba}DeFlKqFb8n}2Y^D24Pn>(>-5Ua=P^MX4R#mf+EVi4?G#MA=beg4! z@hn9d>K%kA*7~ZdB4fhSlSKf7Oc}&W7=n?)0F9dSljoy`8K7}Kz@5QKYUrb&z=Nkx z7^AM;-VES?a3KhB6|FK(ln1F)K_C7 zt+lX6B+ovIOe0MK;B#I&nHjwqRR9(+0GK$@gj$(dX9Xx6cv0pDcAV3%LBc&I94v&z zix0#_rRox|;QgOVXflO`U1E#~Y;No|8)=@GA%H6gm3Lu59Vf9;ibTR;JQSvjvZ|^o ziQ}p&N24ARYo*!S(dcM8%~3eK9c)#2=UE&xvkUDlM4}{VoILelnl!aiX(L7u0ODZI zMKngUcVX`wo5*=v7L{{0j$*BdnVqYE1xSS<42!U{VYpAEy!XtGgHoMY*z4dj*2<{J zkWyM{A|g`8=qQSkByA*GX>{I&)$I&7T%Rn$oDM-Tvycxhp+JqeFL?z-5YJv|1prZ! zUOaVjZL!h(=!N%gY(9AA_~GHv>u+6NTw0CeR8Y!n+GsVh!tEXIJ^ASAuYBR-2&fdq zNo#BG@ZpEgymRGd=}HV9*I9ijfapUpWDdWc6|-EJGy|gda`yDG7oL9fXfS#EgYD6H zywq*o-Pqna*lRc1TIq3KeDTxIpEhdfIOnw1Asw)H zIN08MR+knYJpDj6+`V(l7?os`k!hJUY0fFz_2mu(fs~GwR?2E3g&!`kAtI4L zu)w%j>o>37`^hVBed3p&ZMWJYjPwsG5&s{7_=mhM7|8FlI7cW0V`Z%??fio`nU0Gh z3!kcXySuWy65ywVsz2zLWf3d{L{wFkfUC-~$fntJEL?4ExwWOGBRUd9=eXT!oIJ6f zXZc%iUk;!A%3Gt&ojdpb-CzIh*MIBFufFltE3dq!jbWvd{7_dTOR0?(y=fBEY8=mD zS0C@h)`anacPDZX;BluWN}Z>W`Jw|}s)0bly;FWwc{4c5u}jxS=gVPChdo%8j1$Z>#*htkvBKL>zX*Um_0 zw${$&neri}0{~j*h^WX}Dn%so5(=OMQq_zlKRXA+QJhbw;r|gKbbJs%sK&Nd57^d8f3_rc>{H94Dky znj{LTD01grmSshjAz|8Rj0S`8WM7j5My|2S9z;C*+5Q_u#Cr!)?~9GmODk(}9H&XF zbued;2($Q*?{Usr>%8|-qz#kxWVCK1sb%M?a-QcQQq$?AEHiJ*`XqozkoJi`+Ylq#3&W^OCeV`b6`71!Ly7YjMM2fn~pop zbL;FYuU|TG;#8hz$a3w@-Bqsk-+twRPyS|M{hwaCEY5Y;dS@Pe zVz{@n^PPWnszv|)hcCG@Q;O0!4T)H-wdc%R?}46t^4XP@_Fw+Hzw*9Rpak9h4TuVE zKSIPjn;@WyOk^UXQ4txf-+k{^n#RZ1S5F^bJNBhtd*jW^_li+A9&X?LKr4{;nDtT9E!B~6=3>&bAa6tb(Tsu1wr z@pwGxw3@4{%Nv_pzx={;r%xUKi@*Mx%a`9zk~lJ^+i6dxxnm|pTid(e{@WjX{dvK$zx(y49y$4~ zZ~x%jxzkTQasIV8UfVwy?Dr;4)aLfysrByqQmZ!_@9yPVD->+Do0DnQYNTgRts+s9 zmy^uf$|BG2rcp9kkODhk#M1zOd)R{RhZyuN|W+TZhhUKk;T zX>m=z!MRkVhGj6b)P*8J20>)0(Jg+Oy#s+fVPcpYh)wemKUw}EUcA^v^GXZ zF^N=K>!of|mfkw{Y@3akS$URrE55b4w}03JrEG;tY3E$17CYzIaRBE6c<_v(h$2B> zIo>}wvZYPZq(2-B*f?qA(@D~35~`}0AjtmC=J)q@A9?7(a}TTvL4RCSnSJraXH=9{ zMIK&R-ZPN_0naw@7g<=uE2R~ocg)@kNC-0tGqY3LtgkFzy1Kb{aMbJdkNQWYb>q=k z5jpRbR*{Y_U%9%wf4INDf9~Al#fj|omw$f#;tOfoxPIl0oy{97i%T#4twn6($C&X<489(^cDvQERk69fJs6DiPqYC%i`H`4f+7IpcUakZ}h^m zPd#|%fxUyH@BZML7l@lp1VO~u7*cvT99GsvTHm~N`~U9spL+7~FaG+c-@Wqw&0DvJ zqjA*e7;)m9XD9YR%6$yX!!YziFgmEcwN+_V72o;Jw?Ff%AN%5Go^Q9BufP4??YrBL zUwHJZU;NcS`>P-3+4%Ygz2$|p-E18l_9j`rvb192q?x8^5)DR^(WHFh{OSI9JQ!wK zUgkxKh^4imcWP}dUWA{c*oP)<&^FKoPQts-c9ncq9DxY8RA%^NyXbD#rpk zxKbD#d+ROEuzxiWm=pk5=cdzaJe_*)R+qbvoICYDUU@sX>J$<)uvj}|w}nq&eLbL> z^TWnm%DtY^;=xf#kQ%W_1G;G8&bs~}Sk zk)2kfH5eRvR}u&au+2o6m2S2c(`K6#YLl!SJ24p?4f^}9zP9({ACJN`a4;A@dGVo* zd$$hu51xPSIq$r9w|3%;09#urrH?Ild&9wWJUPC;(i`Rn2fc%XJzr)@p)y)2!vK$8 zID6vw$-!`V{`A`3UT<7Z?_9r{mzlyED>fbVSC5|+1SEO)?N<(Wx2Dr&atymEz_ ziz(;o=<4FBQ)R3B<{Ph{J$J#o{8OL&#NjAcI#$3%Svt?o+a!*)Hj1&)?KYZmnl^|u z00D9^u!P1Y=}7BHYi*1UZL<$4#{!cn=?{v3^>6;KV=GI~Kljm7Cr>^4$n-}qy)=_L zLGWmMFG!?xj2K*B0p*GyV6oz8-D4nWw8 z_f8w*tOaCa5@D~LL&Bwn?&*`K29xpC8~3znv=`EVkswllN-J7E#?!2*7fM>)+Z(H- z`^`NVef^*dNkbkUA@5;D5|Pvzy%zLA`$6! z8qL&P}RvwwdLqyoutCz4%Aum96?Y_1R63h_pfiW0L&JgM>8j%2PX-^$nA5A9P zySqk5>{$>zh!21rKiiIipa6S@;Cb>Krc&Pf*&mXWCIr-8r4$DnU{RGpX_6I1Q5K`| za5x+ads|g+7NdoBM99v&S*2Yluob_J3a1Ce=FA~q_oefMhXKk-{G@T4>X#>#~g6Y2Y zKLbNpsfW4=fp}&?ARQRMgp@>4WK2<61Yp6@xJVOeHsY$RhKGYjqh%{QIP3u`LM5V* zgvEPL%|thvElp6_DzB`!5^5 zeB4M=Kp6E7s%n}xn+O10h0gNwa`e(qf7Tz2x}62~-ieRXq|>hu#KUj3i!djy@wxIKDoY}JGyyqZ{z08C~X>Tjt;l9 zN{G;TKN?Po=@bB;dGXV&wDp7UeP?Uq=7VR?x0Y95`^8If8Y?9r3?e%lcmDGBO@)4O z<(M+ZPoI8pb93YL=~I_3y?Nv2t<{xP6UUqlq17IH*|~i6cfavFSvEa9*!bpu_`91s zMjw4}bLIAD(>R!3&RF_~!5b-p_vi@{Q|LP^Qc?V;So<^ z0A!4}k{8+5&LD{!%-%U(TIk-}I^5dc8y@X+7T0R>xbxw=VYHb;=xTYJqWkPN;rZHC zDMJdq10YUFJMR&lR(jrdtHUGV{Uaa%&ROG4k~TvuEJ+Orw9@q4*%Q-g`Lj#cmX^BD zJ@>-)?opt95F)8sPESODWNm#b4JqcWgY49a)nms`KmYuT2fhB4_iqZ|a5&8JEbw1J z*m;7;$9%o4K!qbmjy?%E%omyu@ZUKor`>nl$ z&8@9Yx7$b?kN5oj`a5rx^)7YrIu+vF7oQ#LVVOf^!J&RaZ zWm)E&3kg>No=zs&cqk&wD7Hh zfDB>|!cYW3_^^x^0$xfG(W8hLz#5OMKu8gyFH06s3@AtlzTRzv1V~}v=GSg%_Va{{ z3X>xp28rRpDcWf3y|r$VO+%v!0P?IXtHRkTP13T=#YB~ZI~zOa&OLI_JJMQ*`kvNN z97iEu5!k^YQq2JDIRGAzFin*r2=BiT5=Hb1>+dN7FgpPuGWR{YIy7lR!5^8uwKhN^ zA(*q6$5~buWgI7nkY|~7wyN@~s%9f7?_7|G*UCf@5v*seAaw;I>=|(N__-)UmT1^TYM|x$k?Ogfsk3WCy`nBcdV+`t@%U2qSK|sf{)NMps9S$e^heHt> zPxJ9)G8qk#Ae&CYa4&7NtaaWyZ6W|E^Xa+s7xuO{N5h_oq|HvN-N~opMzi(sxzl;c z2fbeJ@Njiy8BnIv>3BSJRhdu62t=gU)>jB&X=(Y1Cm#RT|K?8~dGv|2(HV_<<#e27 zQ|GE!X;%95Ll+)Bd)CA{FMVn4-8=VockV@zSzKCv>hbf(j~{1OEiN?QzqNDw&b@YL zF^-bqczATQmrurJk(oGccUC6DgCd)VxT@rZV`skk+g}__?cenig zX+^r(>4HF6RlnV2A6&Z_@)wwcq;h z|M|bXef#FwGY|bwfB4U0qyFiC`#)TH_pPTs^071L9<8b}5S;|XImkvwsLW()3Eecy zI_>6gIJ$THb|;3(bhy8_txeQuFPuF4*!d@(SzB7p^QqQmK8~LYh}CRg8vuJyy9;Yn zZ5{Cqyk)sx&z?(T!*6+4h4+T{Zkm@T)>l6A`1!k=`**i@wAMzO<)v;M>7)LL1!pKI zQKV+jDypn?)`Nt`9647B!16*Tj2UIF1m+S+~5@t*T;UXWtkDfU(9eeEPY2n|r%QW35ey z5_%Ry$g-lUTr*8htS_ytEL?i$#_3ROl#UoO9poGzK zaMUSnOq@LY@S_i&J{`rR{()9A#FuLFaIJy6KZUOso8hAqUPg#0JWp)iM~erkeLyED zkVcxUE-u{J*g-?gtU>}qsB+;oAR#n`SSwn?A-lfi)Jt0NVO=2{bQM)qS@xmGiiiPv zfdJ0=%2}R8C(oW*AC4!R+xrMW3XxEeo^OeD_!xVhuass9C9jl61g(SY0vQm*d&fab zz|4dJa;2guL}J1lPP4ZtSlP;XX7BQ>3?&94HJMC{G7FPQ?_5!2SvIv*<=L@w&Q^i! zE;BP?-8z-feXZ*eA%BiQI_x%>eNj~7Y2Ix$E5~uH9ebCH=W(R*jW^%PisJnnThBi8 zbfeiKpC1jTN-KrfYQ&RC;TZzUEi#cwbTe(R_v6u&P_isTu>#P8*RPzwpG1&pxgVzH{Zh58k}@#+z@I`Lrqv zMWB=>6Dg#sDwfwyw7VT=i?YaVUL~!?osFA+_&@)zh+uRSMUBaL(r&fei)*d!imxgL zaWNzJGUnXM1Pw&37+<=CfZswz|5uw*27PhmbHYot3Dl ztkk(Oj!n{Rb#C5#znkJWfB!#t<)yz{SXuvzzx=oFymcjQB+i!I<@J8)jACG0m44;q zLx%WZPI66X+5BMFisWlY2( zfzetNdEiTHBIhdsPNU>gzxQB;y1T?A$(s zL`YCowzOr~@@Y+bhdrf~F=l6Ppbf>53Gh{==!oI&_JQ}_JMqBQx-k0|hP}h#xijmJ zKXUr+*1iaP7SiglH*7adBQb|ZL#1#c^8KH@_T*y^r*U*N7z3hF$~r&I^0Km8t4TIJ z8uVMuMz_&iS?>Jwl{c@xe|535P}!m^GH-1t$0)6xwF}+FNNc4OAPgtt{rx@fy?1sn z7$lAKsSD??yg$5h?bc|}n@mP^AAN={@gbQa?47GaB!S===s+yt=<28d12 zp*F(_DJ9HYi$KwPhZ2MiBK7PS>$4 zUVQB2$@SMSz0+(gs+7K)iQFQF_mL zJ}t{qYaMa}-U}(Uu&}V$?P?P-dl8rAW&fx*8V>*{iVX$9B7oM0#T#RQK`CV`%OX(} zE7G35tx9HLZ)>SjSPwG@cmN6Vs}CC$MOfFo6&CMZR#aJ8MOwETNtTt?`GX_dZY7qz z(li*2fBN!kg7AgU{Yp`~Kl#C{k7}kYPqH=TDtTsH zWqaf#S+Yb0k|H_8kYWG`f&d#J8lBVa+&AZw&)I2Z|5)cXsYd^5bX9kqI=$E0-}k=H zGk}ugkzN__B4dmOz8{8hGVEGy81uCf1QBC2Ll;& z8f8JVxel54p7*`r*Xxf>?o}WdM$x3Oc^CX_8-Q?kcIhM&Gi&rcOcXcA3pnvI1*>Xol$3G&+LoC@hdJF zN1`JuGAetYeG(B8GESj0;fdYhDV^Pn6dUt~pE2WmKK7V8*-lx<=bxwAl4VFBMA&W%$PI<2U;^`lNFLF}|zb!~WdRP_D2sSR&ovTq_~6O zFQ)0#&{&&9_GQ=cD70e#Q8q&`X`6%mJ-kbTx!iCMd6Gwv2eDzLq)5~{;a_I93`7i; zWOTHhDyqx+pSwW-SL{7%(8a@*BlWZA)-&-nFbqJ;P#{>Jp`^)Sc~qDHR?6(&Ou{qkU=0Bb=x2V-zJR6QRn_m=o&Z$SlV^z+vG8Rqq~ z#z>V0Bqm(RmMmi!82xFs5Vn&GEAZ|+v3=$FtZzM(2CG96ffjh*3n_|^kt*`BwQ#vY zwNm+k|KeZA^x+T&_^D^(Ao1R5D@?-7nJn?x!qS@erHW$7dpHb<7>xIIPhL{d7bVXpBi9N;xgEl(}_3d{gfRS zAnzLd%iuVBQe3Xjp4tO`iYMCqD*E$aZnV^@!+4X=#jo+Mfx4|M|FtPE@8vD1;ET!n zpJ&yxcbW1cCd^76`#dZRaJmTc@*=3$9ImTueZ3>8y~Kts1MP6C9~MtctTkAl;vbw_ zl`5{VM2Z8$s=o@&n5WN}XO_lqNu-KNME?i7hZPDBl3BM6OXqYJfx3T!>MARe8jN`i zMDnsUyf-E@YZ#}NPfq4H!n{KCh$C;qT<}H0BQGTCFUE^!PN&5Tyh|TS7AfAs{T9UM z(semP?Rj-P7RhwFX-1ULy4MX0@lfpDNr{}XIj_)HPd{a@k%4ATp;V;wVpeJn9~{X; zPXr2ftEx@NQlf>TXB;uusUJVl-8Co8gDhN_x^tm!yv(hhxK4*Uhg(XcnL*s7oQ{CQ zk*#JK(%9?K|EzpLMlPDA8X%O7+|$pROuj7);nr1y&TcObYB#K_cxayo1c>WLb&IWi zB#$@~*vF_=Elw9m%Z?KpnjxU4hH2y|+ZuIgu2fOb0%>e6Z-L>+{nA zIB7mXIK;)(m|g2n-#47mE9XNZ$fD&A&(Y!mGuh;C34<1fVCPa-MH|$BBkP zUkmnYXZ~o8W(m2mvlIsw$f-84MQAuPg*C^JzG+X}&KSyp|VZ@(>2X_F2qVctWdn71?Rh$(VVOlt&!}Mf)Dmt2{X< zb|L+ff4>{dmfa|En@)LN!dMuVuB@VgU=j&(He64f1STdsi{@6>sr3&C=?{BfplJRGmG zNnAp@ASs$#DUPV$-A_&)B0H%C6VzXVJBI}Pc29_Cj7(P?qG9CABQVBy;Dx;6v+h@b zPp@c{KeJMegB>d?HMh#{g|hKNb1Nxn08n5nSOl(Cipn$!o2l_F9JJbcl>vN8=Uz8+ znIRecv&c|X#e1zcrA7suSiN{T*^#B8R8wbiGx&5p!Zzv6e}*q!l-#`Q!_F$%y_0Y` z5PXsP77uZ;<+pu(>k99gcdDvlUw8M-*dPb z^h!3KBK-aLw?C^_Uv>&Eypsj60ijrGD1h}qbw(avr8xRs!Sp@n<_OP2okSUp9rJ!C z*U;-*>3@b{9dlwcM?0aDZ!sHRsEbC3b+w?2Z!nFQ;UY7q6;vErT&d;iwwySmPQq`-hcTRuj1vehD@IJc8AOJjdgaAKmz z`t#t%VLvn4<#y<5GnSd~fXg23f~N)BG6FDKl!j^If{B+Fv43wrj1*?Nhqrt0frSVI z0gKYeZJ>~iZU&o@Gc(UU;J9&C%?X>I(fy$QXE&j4Ju_zYTsEOO*k?|S!F|8F5H5jU zYX|XhW)hi_JJZ`yGv2G^hYl9s8_KUj$11km@o0&iU-3tLCSH&IF0}NABOLBh?uZpb zKy1iwa^9brgxkSwjGKH~a8ITjBILiQ;x(5JX8sZrgK@`IW5gGE1l;_e09OGZM70mQ zh?52;F6v}4hY&}QZNi?9gg%ARjZoV$0l?JXcE5>2HGQ)bUp>@Mw{Ke>iJV1l^8$)l z;Xo%5c@%RxRpLV-w!HY{Bv99`l?xpJ@fQ3kjch^U1)yBcLdpQFv~PN4Tfe>GV5Pkt ziy*vo{JIb9+5MGSrJrTt5}O;{8mkaVw%|L`d2c}jBApAxMK%=v^@#k+UT-Ab3h$K$du?>Lib`q^hlm% zh%`csE464GhA8~b@$hNBo16G)Q1n?d_eT8^(z7^z1g($9-lq>F%>BI1LJ*&>_1nEj z_wGB=VyA!jt8FBVrh*~rFUb5Ir%v&(DR*@J^Gfc$@A1;(deO7(CFf@35~!Z(NNTTj zwRYmQvz4x6Z(!~(jJWuJDXXBCg9B29#{Q9tL$7%0S0nh<`KZt*+{Hty@3h!&hnGAm z8r(WRcyYembwWz$?aizSINUx|^FJPsnDT$NfWi-Mygt3MA5hGGi&p8)EdW3(1Yv%b zKeO~vqw^h@<|`cvxhmZfF>3*8M|H&%a?u*gthkC#3j}>hR^LB*S4H09i4R`d&1U^! zlWY9s54Tk8H&vBt|8Lps@Xp}Vrn5Rf;toa6*=~64{MU=~-lp?5jj^Wez-0>8*Zt&T zfOIlIsct`DvDrRz*M$=T&NC!ayQWVN9tS&C6*U&S;i=XqLloVQOX!xx=csp9un4Yj z&=q5=h9kGc+qN~PMGCbIEhL^9zd46s<$w3^w1CdT`uh%nu1kEO(V*9dq@{X2Qh~!% zXpgT%T&uwI$PD7+-)l3My*)f$AnN5)09yhbfW~!bqh|NrpnvNZYH@8Wm;j{>&-r(* z^p_wxRaZy+{_SM*T31@$Y1ff*+Cbd1 z$Du@sq>^Bnb@A61-&0I!bDV{DRA0Yv!n~@Gw5h5q8jSn)hxK&bYD~8VX7g2^V;#VNlkbPy;OYicEViZo zoA%lnTk1}I(B!{77d0c6;_<6yWclP*35jK<`e1b?@Fw)-Uc1N)%QFX-t*j|Yf+-i=7MZ8&JSrIYg5ug((WfK?{|PhG6Nz_~hUBnU|<{ zxB(&3T0ky49Q$Us>fNSzDD#u8NDp7@>QH*^{@r>Zv3w9t+WKG2HkybsMOhXT6W_E> ztTO%BpP&T4t;ZZT9_}knPg`#d7aP}Q@QEzb07$tqX@%)>ic{DbM#OY^|=ej=?CpoZV6T;;zfXVV%% z$912pKDgo%$%%4YPm!#*z_Qr4dD4PFs&){SD{crS7BAfb<|!s-lsMBsnGCKu+7+5G z=dtb5NCJt&RNLTP|MQDagNdjh^2AI#`)JWHC2`d*C-Oi>5T)fJFIYLVcJcQ~fXC%@ zIt|19iwD8~N-x&?E`|DJMT7;wj?%o$A2QYgbD{lsPdeETEdI298!hhkuhjO^%STu+ z7y#5}#X{(q#MC-pOjf2WExQW!4;Y zhAw|_fx3b#ZhZW?o7;1>HezU@P$by}_)^shiXK!zP3Zp4xF~>h==dJ*q%hRgj`!KxZ14cD>#>C*@-nKAw}r<8l@2;~ zu$fO3ZR{L9jn#{Fmw72ulCM*5sdZg#ZNMeVwTp@;M|;_UbETY{R&~Lr zh(eQ4fcRvl!GK(>sQ)t-Bp&zYN{po@5ZWKZbFF|@YK?Sn9KF&4CXvu0cGioV>|F!D zSi-iE5nlI2WJzDYN~mqGBvP*JcIH(vV^CA8RyIL6a3R_f|4D43PXF?a^i}g&7|(2r zrEJ-z#b>!uG*5VP5=qY`=Mg(U90)6L`U^1HX%^|*AC86~hv1gj})OEP^*(Qy8r=#gXm~#MuUXt9SuQcu$y~%u#-s# zjnk?p$3@cgf>&8-K;S$e6#NiFB$^s5{Zqp1duFl3zekDL8#;L9$tc`-FQ(e}^|zM! zfN1)c_nc;MtRiRa3|sSpE%L@%I?{G zPMNOv+M?-e^7%Vi7lDYTHnd>x_!ZZibv)e@_X5S6ymozxa*8^_(v4iBD2|4=V;*mv z_xAy4(l}!TBQbkKCpl@3=1|OQd zNIR?$=*FI&HK`DhSJJKT{Sd{FnIQ4p{0v&SxswOOC+E2+5(Z3fn;<6<^v5KGc0n4B?s@;>s0+-|a_sg;ufmUby(Lv0P4Fo^2;w{^}Yy zIXgQ?v2)X$K|I^+3A!DH6I>w-{%A+(cAzGjTQu9)hc|v%u&^a?l{`r++hCq51~k212C3w(!EX%X>DEvNuAre%;N~ zxGM$iy8)`PU_nC4>kA*@P%01=>L0KED6_6IEpR~!R~ZS0LupAcNl%fb^V9C05fuvN ze{RhQu(>18P0c7p%_r=eNc3wf_gffiyIo?{)C)tTIWl&6&{7Sca{Hn5c#{Fl^!%!T z{RO1(D!w$^zXM}8(}=))op$q9-wXZBkh!s8>JW&TFwcu0LDcld{pQe0J5VWYJQ<%l zwofp|gi0gDs6rXUjnGblbYuxV2STB#=vsy)tstZEtj=(`6IKhaintx7<$c=!8}mSY zyWL#5Udj7%b>9UnD8k6M48L)U#>2|>g(Q!KyCb2vOv@%dwDTR}9&q)#tSJSX?5vQ& zLAICOrZPTG2Of1M4in??`^=b7V>-OCc$cTT-8H7E>O0{y_vwa!(d}o2* z*EZMK_E!^SIeHR2m%xzuA5)pax6T11;i|NZZ*N4jfxWO&jyBKZl96ZD^NdmJDOI({xwzKLu`Lj{6t_abfkze~E({gH`FHGBXo|lXvwU`1)}Ow( zUb8ws*bg&*_a7n)0@8Fi1*@aMAS09VdT}|v$tc8(j((czN zsd5f;8YS|Q=f*f*w(eHZ12xa}aboVord5M)Dyp`z(PO3aH>G($P}|;1ZQL7ecx@@> zv2~EL{rFUxWNh>lmt&mG=A3usmc(!A`P=4@lrRo(aqPA?p?EGC?%t;ar2`S;HOHr~Xtz#S1uE1AWgJXj#7*PCdY z-zd;ht*qkGW-n~2zkP44DSz*91>Q-$u{p{C|MDoy0c!&^N-99=6GD@^&<0$uT5iCl zg~55o!_z%XRAK7-6qz3yg9A;%HhQ_RtT|(cSMWktE!dBIvpA031MAZ9s&;#svJM}5 z&8H#m30qbjl+t z4A`JcOdd1^Hcs%2a4+<8V_~<_q!QR}r5N=px56UZ&1cz8-OjKenQ`t7QNzs&2DA!Y zew&YD73CBX!<4A-jFw#1OqtPaS#j$vZs8Bgbpt6sG@ehp-_iAJ7)UUh$N>ks#FHu9 z9zc`RCpF0{%b+)9aWi(Skq1lWDxC1=TdU^P7v= z-)*Ws`4Afn4nF^U<3bAIeA=*iTjThr;1zsVq-fYp#Z)wSX`d3xhHp|+sw1~=3pQQ$1$o=%5o^Ey ztjJe4wVW6`AstFQ<%Ynu)sHSOvMATI;=lMi}UJfN@dShrM{T8hvk5#A03SIIImx#>Zb1U#E%j+KXIT%o?xZ3S1{y#B0OeRH2VI;p@N(#VGGJxy3h5sb z99+PxS-N@yEo@jxK&T;@){VJD9DvftC$qP1yh=g6L1j5ul+GB?2mUy||6rV3MA{y7 z9e9WOtr7Q;dRShG;fI2$AT&XqneXnZXbBLC`AU|?KgwD{7S?xaTZ8XR3G>)SgT9+m z+kK(~C9-^?fh1 zY{4kUCbmncwkl5e?>l;;G+RAmNe3zrus{9i-LNzJ`0GbOogTrhj{aX!iL!nc_sM7-Lp6+Pq{?yic-| zUVrR!See8|{c-7MBTYx$hHKo*&owd)hoHW=t)R>O$90DVTzQ|&Xr z5A4k6${X=GUgNYf@8$(P-D>>fRu{*Lj5@!bpgQuG#rkaQ_DGfD3#*2&mChzEoDx$2 z(6xca4pnP+-1flgK~}m5)1y*ZpQU&&aHzoAP33JEIl$L9-DinBeYr^FsXA?2o%{2b zm_jFled}8|X@pb?ORR7`ZZvc6{nAVerujlPj?E5UzC!!o=ix4y?JgIMk4=GvosqVM z^n{!tmaa$hx}cwKb^e>{Dk-aJ(gM-lNTdc3FAWqh1jEPn1#!Q%X8UHE8i+N1^GDkk zBk06yqly`an=|~y!a~M0k;_sua3*6)WU&a4_32sR2~O(Hv(JMQ(LH ztPI72!CkB1g|gGzW8bppb`E|qd52Q4B$OlaW?Wy_^(?TcQ7l)#a&A3kgklk~QGCkN zX=#*f_#gP=iIj56{<)9`-1YV?|d5Otro_J6`_9F#4 zK6c={$z1V+==zPuUWm4D%0m6s^UFTf%OmgU`cIV#^v$g0H!WOPLmK;v@P3m2jaK>V zqa6tkZY#dw{TS0Wdxo#GFxJFMaTBEONC84}VOSH3_bl&nI_jN?tNta?_kJaislfNr zmj9g1Kb7HyI5OfZlhXi{Bnyt~Y(IqiSk9XhCUqDD`Y>1uMu+?vXTU1l&KhgA$SYW1 zTU-9(@MV{dh@Ix{M>11hkLjUx&Cbl(DmmEaB>r;YK_fdIU-MUVTwa-6#i4oAXvw2) zlBTdLJE_4|fT=Ps|5`tS1{)$zzal4D+fagv^~y;$LB2^o96`GzqkOZt@F5D0pCKFU z`W)0iaXAjwb$@Fx7AK7>myTp(>qsd-NgFc#%gR0Ys7lJVd3?@YPed?{)^^tDF_1eX znJvA%c^B5wsA5WC+MnVh^8+rpC5yL2bNexL|Q|0BD9*FnG{06dK`~FZI)_ zkhh%)e1}Rq`B;bY&`gVe*SLL^U3CYHvSbMh!LFs+WG4deub#&i){hxmQHjDE%g*enSN5$Q`}#RQ z{U!}%2lG%&?_X&El_Zro5n>{8@cAA^3eR?}>2fNSwUr(1YBKJkoKbPztMtyy8-qt2 zh~#5R$6GAR;Lx#6E=kxZG3mmhFyi}REs#*n>#fN!DeWaxI3o?KUd7@{B8J@8SS(kd zRsCYrr?_T+Zz19Am{Wo?Ob|D{yT{n^MkC<#VBZ<)lgO_ury{THu{=7PV=-Q__%6tuK$~=IW)e(_UxPOx$fdE%r^i^Lj+7 z?_-1MhsIf7tD>0aM){BDeNijbCSFh2aTMnZH!5?BnU86cRo+{hZdK%mwci_0Hh-+` zR+0JqR>tnJG#$=SoQ!rQ1B_j`{6eL;ZR;DR&ZZB8jS7=%Gef&3S~l}8SIjQv6q^q4 z`#+8a_~i;58X&6*qb@{}WYEdyCl@2dnEgWhF^}Hv2ua2k=cTT|s_M6DyUI}7uzjml zC|Zz4t_<|l5hq^@N%OJw9h>r;x&n^|rRK5)OeQDnxU{%zjZDq`}i zcj@Hx^H*5`d;P=-gLAFTf+`@C=}wvZ*5;L&JRUDspzggZIYW~K;hDpOjr1YYsVCzD zXjz0ZXP0^2tEL$<)Nv?(RJo~Ww+s_zv2Lo&S92p3{n=^RH>g4SStT0^Zj(l4rG{!} zb%>_K>IO0bLV*G_fVXJN@cA#aPzdl1cNqmkm4>6zI|u!5wZgK_x+R0~rX@Bwhr>o4=i7pqx728?^x6TXkZ-3o)m8&NK2dp?T4UcDcX4Ot zA1^OIYZ`sc{)@HV?=u^o_`Rfyz%OUxJ#7O3AT2OdZ~%1+og~GPF)!Je;|FVq&Fj|% z8BFiwWc`LNJ;(guPK72OTtbS8 zJ}S1Gw>{P9X3NW`2i6uG=ndJ2Ni7R-qNss&8wG!wcpe&pjF7fCkPH}Ze+@1q{sZ2n zxw@31)nIzw&ybbb{M_gqeM9KH8jO^RsMb z%UVGEUn>YqqaV#$ICNWNS5;%>)%S}0D2SL@N1-l5`27z|RveF_t*$iG`uJOj0j@<> z-);1NIx1ek2ag1;f4d8y!nm#+mr|GoYjz8KJ;ZNqU?ZX7Um_)pzNBhUiU~jKaKFj# z^dy2fY@bI*_Ve0?6aWOj`>dV4uE^ZW$l^58NaN-otX(-wk~(XjrWsyf_zVuE5I!$A z52*J=v_pJDyA5p(sf2JcxaTd(w`egTA`=xZql^zUUM@@@?W~^2ZUvsLrg)v(HW59Z zut#*)3amqE^S^HeU+(g(6(4ep&O2L(#Fs-y9ITbOUQ4%l)Id|7*~cPgOoX(h{r@e_ z&riMUV7VNS48CYOB5s-T?0eb^q^oe!tLL2rpC4XcJj^~NmVY~Z5JXl~{65ljFq|41 zkvnV5OH`T4K5y^XoNV-78*#O9^|Ft!G0phnQmswPfKQUUB|6Gld}OO!l0fL0nKrMM zCmu#G9%CpT00E0*RgL?eO`{27ud3q1L2br#i8cU&Jj$*MR*YR7f>9-&A7=;uZLRSl zrKL6LJZ0mt1@Z`A6yn%gXH zWo%?&tfUc{n|#*|zc4_SQHS)8dwrA0B{J{vG13aL-IS@LPqtY~FL|WRwj}u=VBCdy zDy~TZA^0W5bbwu<$v0}WXi2Vzc9c)B^-F!H^ex3LaUM*^+9RMxm7)->1x?z6^N^Ak za;I%LBLQBEU(yx;*wx0$@069gPt~`6(4ch2d=~yR3`)D?`A0Yy3raWrxZ8Xf(~4Hc z{rbXLlzf%q<|uI3uM09p{(Ix^seLL#4?nci8bLpQD=bJ~cKY8NvDuOmU~c-~!qUqr zv1Bl*|5NH6iPD)yuTk{BP%?ku?*5DE^d_@X`Mc-S64JwoL|(x2b4`=Pa%y>@JWd>$eW@aaZ~5qAu$ zXHqFUfJvJ32DIIu-`{a_Bv2%OVY23S9XnEAN91P1U8SYBzX8sUUr)(TU#s6Gi+G-* z0B_sq>eL!;{;q#(YU*Nt$34s0B~-c#e4B%+HyRGqvRz?lRA~dY_KGRaubA6}dc0E8 zEv?K;`Vh)IrQFH_211?%(MlH#d1ZGlwqs?Q4;!TZadNx|;v4y2s!Z7O6054zPj@wD z+$a&ykT-2YOXDlfHCU;vC)RMFpEUqFIX0$^JsUdBnv_=y+#cW1s_JQlNnXY0_o?E_ zP~QgKdJKp8l_{uaU2Xk)PAh$U3WzOmlQT#?TFm1Wui%(l)tl^q%9*WO4R6R%@joAb z)61}Q!S;VKQSsgsza@@C_H4xe{27y;&SiL3_?JR1%+}1(2_!qjBnk9I=5|h5+)wWS zuN{s9Aq4i^b=mB*6$-$uAU>Qrq5#H&=E`FV(ZpPz-){0$WdK{KOx6w5BHCs3lp?qD zO=RJc!2_P$4R(7q*9a5gE}@FpQ)jL@d12_29bB*0F@L z@;l48O?Aa$fS% z`7IM`YtupTC8P({wQ{ohfj=c;5fnm9(fPEL;$jBX?*HKCl@cL6^qqb5s(QdFL#YY( zbp+3H#bXA3_19-Ud367TR0M`+)o{ARterb|LVwOJ`;HdHQzW!9T}oB%v!_$mNnVXE-&l29NUsl%=BD0Z zh!J>K!nO7gu zp!8A-Gdllm1lzUISfGUazsV`!elRvK$DsoV7a~mEG%n1Ss z;)n}@Dm-1iU|pBuWE8Si_8u}Pe+bEqN#_K?|E$c0fXv%q1N{aS`KULQrc4k5Ub>50 z8y2*%H{tZbXF3Q66Bg?BM1opgkN%>C8;ZpNq!2S7>YfpEtbKNuKMt?{;MCxy|BZK1 zJm}*alYM+%EE$}MD#};(pW7ME*v$o5gV+p{#YaX{FMl*$r0$oW*kR6Q*Bfir%wAa6 zfl@lcs@V|upsJsPLa|7F(nO{kSZ8XwpGC#OTF&w&?gZVP5V%-VHGRQa>38`1@s!s1 zq~6InbT@#O>XxCH8$`}jSy`}*!+AIRVpE<#R~Axh0!B>TSBwp7i%KXdDRs<(hlC@E zCc?hGtlAt@(NG1Ws~)S{4$*xw74i*-MxTk)5TxHY%UhypG2BsBS^0P~y<&|g<5yl= z5GRJ|lMbLl>SE79{q<=tL5+b$zKH10Xi(?9QPWiIx0)y@8N4u|y5{?<``w%uzmH$q z&Z$ASb+c+1g?&QnfdqUi{(P*f@T6Q=3NPrhkkA8KYu#&Iz&vWNC&;V zEKzLA-q3iN90KT%}VzMyy39}lBI!8Mix^{~l(Il49HJcx!s^jzO634-X|F(} zB<)_L(RnEIFn@i7;sJho>+FO%-PUC$`!-Im+eAa#5j@enj6a@+h~ksz-WuT$3clLW z_j+xj0OHk#Nvdybt)p$Nhq|}NO&J8EK81C`6rDnW2MkWUC$|%NtZQG7Vuq%+k`>aL zRTmUD#nmoW<~V0A$5c3%aV8`*)#Q3myPhsce-0u#Vt!A=?KORw{poqWRqQi|TO$f} zmYF3T(L^H=5pNm0@f9I1=6Bkn%;LDboyA4=JX-Tl@t%%Uq_-~xOhQ7aK-7%#Sg?f+ zzywXh$Y^bYdv>csY{} z?mc05Qdohx9`LEmOV`)e%BV{dQohmK;#BmrmSRCq-9g9pBEk=%B(&w$N7H9XTgFk0-`(7w zG69;E1A+!@zlFC^sdS=fKd#bq+wc~E(^>l%&9A-g1rt)1tpsRU1;PxVJ5o3pzHLtG zzgmC|u$+hly171Z!o+*l?9wuS9d@IRWc8GNZIeO=Ks%gOqD9umjq>_vwgrSifI{JK zkw!(8FE8t0)my&FY=ls8Y_XXwkWP{}CDexY(|;A}+NZIt_5N;dp3k4pG(JXgT3sd8 z`+IKzm_B{S`ssWST)e4q@$Y1{b$llYr-)#Ra>qV4UbsB3Xo@zF7XEb@ z2E$tLQY-=(wx*s~%}k0{v(>w&@;Ss{fm+cxnY@F{ZcZ@hhp*xX#93%o$vC=$F~ut$T(i<8Q9X~B=WCkO~6ij%r2({;BdcH&*=)4dmtCW z6`cCc&1_TDNo;&I1XlF2;NO89pzaVMqYc^#9r2a2#m00 zel8vXg>@*|&nLC!yD-U{R8t9=z z^<^M1p^($gf*;+SpKrawHiP^N6StjrT4~k~P%`xF=6>i87_y;_GeaX0U+6V0D8aeC z>VB(3<>#k|J-ru~CJkn9t^fMY94}vQnylf`q>1N!CPiZ-1-6OgWmbN={8mQCI3GrM zF8aRfTZ5$~kK6Zv@>=uJ$Q@HcalL)1*?T(|9Seg(abtnoWUUWc&jFc(qfbb=lth@Sp0$&CsGkA z{ryLlk~bUV8%F zsnU$Bq~tkGE&^*9>S~zl@(^HvRucdaG?ie(D``XCP>V2Lvq{8*ug6In#w2$+p7%yo zJ-baR_;B4ROWzen5>_W#T@{ZSM~T8AQ1%3gZir+xm8N4v`mnPyKohvOfMzJp0oWxKZ@OoQu&6bwwiK&U##HrA49jUGI5{;AkZtl04+*>`(1jq* z=y)gow_-^H24bz`=jY-@r?sv$T+H7vF>Rii_IOt3!_uEqe(P7y`@p}R^I%keKPP%e zHm3>n@x;fB4CPGl2Zu<9ra9gT{r!>rX5nPmk1eVhOt>NG2>>+%sPl<_hMf06aBXRL zv_M!4D%R$yg@Qdh0HRY!dn3;^5D#j7`&O=xhq$U&LFmD7_hIb9j)#D1D4#debW)ro}ckrm3mvIv_YgM0lxf zX;{U3>-kr;_GVu7fW?;ZQ;s~@hY#!OCJ+X$FL~(@E+V_0KJYXLi;;^!FGcmnOozm! z>R8VD&V!wNq~5Q5*|#V;CM;)QaWr^? zfjwgy@{+5!LNzW){4b}Dc#V-&muhM)0AOd~`ET}TteM4QOW)x zmFSfi+0fJLo;zF}7%URMEazNw!91sY?%7H zsDmz5aQOUL!TY<}`_w^!CrV0}tts6T6Dp_6oZnPki6q=CyaxR(f5}jS7~4Iql=<$Ku~Q4_1E_-%$&2KUqgATkM$OjE)199G)(<(0=F9uTjf&$iFH~bN=9zwr|p}Sv8-TL*tLYyc* zn)~JV^OGPtTk=T9sNWPbe&|5Vs8BUV3i^I+TRi92EsmadUpm?Hh+2`#S;la8DjYWx zL(@^bne&ayktr2s`})r4CCd2?#q&Elg+m$IS$D;wE1lE{)TT0 zJ{eE%SeaR9U?5{yku0-X_xc4GhQ}t?PHu>le?`-LF&p*1jgCkDn3~=Yw5vAxu5+^^ z7tGwYI8I>L9VBeWERzmG;yh1k8H_}he2^);bWp6Q89GGJ?D4J5_szNJBkSE6)VzxM7Z zAm?f68vH$WW78$UTHOiCG4b?97o0QaB!Yi}dX1L`Grci;jKGa=021uS-#8LXNbHVGsLSNOO@l-yx(Medn!leGS3;7+k+z=gE=Wr7~2JQouvDr|(e3*GeGPr0(yCi^YoT zhpBe&$aPm}Q-HyolraA}JpdI647Dmb4NH7!C?bq|FML_@v48Wt4$Y(dO?*|&Al8%w z%bVk4f0&v;R&!zzU)oQzkRVmsJp>a(gN8M+pVG5FSUtAfEq?VgPCV{r#~{jNjd1%u ze+QW6Q=8J-e&jAgfvg0dcqzNivk7(1lj(B?Uk>LUXb6%DPm72afY~JqS$ueQW0aa3 zh=B+IG)07LlTj0n*D4j7aS456xPXfYFRNHeg|T?g2uVt!$jINx?kji6M(NsV8j)H%FaRS;55#N_h$zimJQY{YzHZl!R6>zC*kg%PX~4bqFrf1 z5M`*s@i#1T|B9})?7ELlj88kiC{b{Z$9(R)7Ihv!93?BuAU>h)``p&kSu`#@`(kg) zH|v?j2ikKQ-TMju{ok(hfdD}(?@xPLmZ}FYR0$kumKEGm-Vg+m;8j0Z{F&E&aA%n* z>iqolfJpjWoecb&+ZisEm7Q_7R?2_(faX&*?8tqr;osgv=HJC@Jo|p~z{m%gzB`?* z7eYNHk1w^w(w}`BWeK-!s;Eg8ZW(Rb(aEv%_rjwJGyPAjlva!kb77rHcKv?}I2J6v z(kh~bfB);B%lmvk>u69`;!a5D2R`HBmF{P>|EnCyo~Z(NHkE?%qJoXpP1IKAC;sWLbyTkNuy zY2EkzdH25bEni;0lFN-J7x-rt+rRf!;^M0O+bFZTSUmmjPh?Y3EeA`nN65^45Qvp} zcye;`&*10HNq^7}4>n!&RV))gPfSFI>dFmY=Q>Jg2k|+s5S7H*@$K;sow13QXb3W1 z;r#}^J{wbH1c+WsIC;U$QuY)N^3A#dk2JP&zc~BxPAhHmWi3*_H^M};Z@1%fz_IW> zpfjOs>A|j2lWlS`+WCggUvid;7rEs_G8+Itl=V30OqxO{bh~8iR=fk}O+&tzP2GOL zx6U%ZabM$(CvrPH&p+{^2U=g(-#7QQFHFDOF7ag{hG`E-_EY}ow9_X z7)(?f4A(|$`{{-@Xo5*sKVYeb%wab2VhYW!V|*~bD`bKczyb^2Z%_d{NDh_8c-D8U zvC>+!fC}Te!Mdg8l3=PqQ5EpKZ?%7oz3@+;xS6> z7$sj6F=`W~M#ZdAp+>6IUbR=z+N(sV)ly~AG~rv)+nmXG z7bRt#Q~4G&@7@;-Cj_RSH+Yc6kTo9*(Y@0Qzo;|U+Sr%H5&~1a@#pi`w>D*ivxX8x zo?hZqLd;$WGrUkp97=vsw$9@zef7%7H}7QYi3%nO;dJSiYSYPoEUaHkG9vYvjC}SF zPTOxM9QoG&buWBGe>f}?<73)pf-PR}BvoK-t)I{PlhPzc; zS8TQa?GRRsL{D6z;DtgXo$~5$*@uz?k!@{Pa+f^~zPE>1l?va*&L#i`C>^NI^AsfK zdHkku^X6pkR>KY($-eEyR>9b(R>0XV852GU3bBWcw0a+PiP{c{^&DM?Qq6{=VbMHg zQUfq~v_Yj&OTr-{2Tk3fk09pQqRhrTwrpd2mK?*T-3Yg|FHl#aYA2*!JU`KM{P8oq zN7x`e&+-44iqs5Kwghp%zFqh0$B`VEaC;xPgJ9T*Az8ui&(>XOD+aX^l4r|^pHUa~VW_9`bn-`>xwN^X748pvRxkP*L7HE&seJ^W~2m{OVMP?Ds&AR37H%w{Q+I%D&sJ9<8WI`#Q}R zpABh-a`@myD}tGvE5%u2w01pid^4@WI9EPyxDJgjUJ;&VCbQh7wQ`__q=_U z;!t3i>NqntSEyJ%Csi`G>=r(6oN(m8OUS@3OxiECR(Jh{qwC`!%B{(R_qX_pAd)PT zOD!4uQ6M1!$xm56an#93kfmEA)*L%qEh8EFUx6wcoH6l=0<^6ogQo8!e&(Uk8*7OM;5{Z`bhV zLjz!KsT<+%;A;jUPqm`;$t1cd8YETF;1Tqu3?4+1hrIE5w{=rBS2WHCwt~Hl%g0Jm zTj{(SCs8LkR5P%^V8R2|n~R(V+@njsX=@ zJ9O-WliHSQSS=Pg&)w$gTlgwcZ<sj+bSAZ35893EuCTJxQXaOr5|8t{0cWZW+e`g(F6{T~1>KN2eU9Bck6LfW% zR$O0FQ^S*JS1erQvSatmq(d-@9QzWny;trPcqQ>C=x9tvX?>(OFoL9+%Xk!S6R>fl zFO)88E_J%)`lrnQ%pnzhvZ{+wwg}?h+%s>6vxlDM;m=o8&5>MA0i~nN_@E<%)SF|q z$O)z4pvB&TCiq*Y9-B%L8dx;1DCk+Xh{~j0A23Ets zMy~aj;Q+pCw))-H$#_s@bw$9zgu2-sfGFylyKX&`AsEawp)$bSj2XEGETzr;t~y`e z$nTHU(vbB!m_7)*sFJHQEzolMSuEP44E;~gqzbd57S~ZU7ZDOj(iyPOZC&shv$Dms zb&mmcA4`!~ZOTF{&yW86p6wGsZp`QALh%Fva7Dq2%>o%0MJWZn;D^WIH)fjso18vCH*WJC_l zdaR9PxVNS}$V!;uvQ{>b!9_QBzFY*v+~2biwJ#gcbH&APx)rN{n|!h>R_}dUlvE2@ z89k|`!tmf(o%|4CQ=^3u!je&X{oDyd&=$S2)yd`g_ZzN3YiW+^TZ)l^kbHx<+>fYc zP}cIZLBXEB031;Lymhj2WluAqsq9D*eYtkG!wM!z8VBB8?5!%`h>)q+sy{WoQ5s;M z+l_pEeSM-(5G`qN3iPXdG60B|-W_i^KFqakr00Y0bQ;wlgL8??MDR(bjgpH6wxA9 z(UY;l-h+%xUIK=Nza5RHMkA~0tM5hs94QPTYZ!vC-(9bn{+phR9%3K37-@a2xBTa6 zZD^yV9@JKPDlL8O&4^iuAzqKW`gxB>uLyH%SZnFCPSC41ekt>I=!{ zP$)s|nn(!@^@?>Si#< zGmz2OVTV7LO*qT3j_kIuQ4dsa&1 za6V8mU=C}_`m$Un4NzslUu=ace6Khc13=>v0^wmpK5sfmH|6 z<<8XSuDgTI%jD!dH=C!GZcZfTNNG#{4Br;tZr!yjT(07z5oUO6`5}4y}EdmBwT;A>t{iyWC2l$+woOq4&0Ic22Q!@Qw&MGTj`?RpGGGMN7OVYfJ#aLl24Z{^kTfCH$a6nw|Qe<4@P^-M3e3U!S<0 zj(j928%9s0O-YA%2m!V~bQaI@rp;QEuqhj%AkN7sx?)Nitblzd6}0rN^9a$00`6{N zYD4S{c3Ig%&YJC@m|u9>J1J(}Y!A_YAt53UqYdcG;7tjSdU?3$XjPKKdTMib zbR0@(X6>a%N_njk9;pZ-1vLbsNnp_;X+Y*wFipKt9*0J)SS!1mf}6s4kc6R(C#354 zYJ`${-;4j1-@feY;K@K}!4v_>KY8AFbn7_0BC@u!1TgmO>EbnS#@5z5Q|(^+!+Z=TDQ5Ac z-MeZ^R6axQuJ?V)!9|!AfSb(Za+${BY5)I(td zG&m(d)@MXoR7zAbFzoG^Nlvp8;eMnkWfScu76(=gZ{?|tIXp(w@jEg>6_uXFp?w(D zxLOqa;On=G{B!G`e!z7;dT`+l$in^}hao?l1{xhN1#G7YL;e-VRJC&-A-Izt8{vEb z5?LMim&f(LkR@H;mh8QYWbJ;B?B(NEC;Vo3pkXx2JY~G z!X!Dy=(Uw)B92-QJ-shKaxYp0Np8>l_Br~S9Uvihn=7~Op8b;1wBev@G3VsScHp|b z_->Q+E?llq*Ej-BsLfA8{jhZmN!c==a-S|)5<@3uB~I~PCGVqMUB1t3IROsY? zauGK|!7+4DY6?0Fz3O{;(Z9au;OQckl-qq^k?BYH3Ig61Y^BUW{_d>k@6j0+8r01R zhNx~AKQd}Eg(p&`WI4G?)Cn!ZFKkv+&UUFElrX2pGCoG>Xoy!$i7TrirY9$RoBy8j zRqi-&B@XKMf7Kikiyr1=P(%Hul<|DM(83h;34{6lnd_E;-7XrI{6@%S&gAlvL0CHT zYPXh^IT=^{v*;r50f!>V^X8__Zp*5A=c!86x2cK#QaWg(K##jIRu|K%vSsA8>*}<_ zocY!H{4pVglFh>W^`C-+zMWmIz*8?)V9msIUM4YXU}&PbxDSki?_`2njm5xhqRpe* z6#v1L?3wf2qQM~$b4xssxP*Qg`^TkZ`PSr&d^fe{AHOWO^)N)T=RkoMm?HSK!L*au zq9jM}V7o5gZPya_?CpH}Si2#Ki>TpPM}FdR<%{eD5U4PQWUiR$g}4d`P1M{Wf6bF= zx5T{L=C5lJLL?I(bM=r4D{nAJ1$@U|p45ah;x5p?yF7-2lVQfR1(iqrXFr`cN_d$WG~pkNZh9`Od#?t*0` z4{6HU)7w&uUp8PNC;A3yI5N81ucwl&@pHAetb4gUs5&ky`(}Q=UdwmET%H#|1Ok4+ zHhr^z=RC@S`4I#ZBUy3~#K2Ljdq7UE-ou^`E?7**!tN?Tbc(w&&GDZr64X8_llsS)Xgg%6MILZ(jQ1CX+K|+;?)S)=q_|{~26N z+scmbw0-sW-!Z#M3)08wVd*d{m|aUk>fp)Bj0=J*<0;>zJ}>>snm=oIfZ!`DJNU}S z`)*~RK8wOB4;^I>L z*hm< zqGANDuOiTkyK6Bc<8a{_u*LQKgXfob+jA5u{*SeCIxf|El?;GxFnJTTODz(6XEZ}|} zvWDvV`SVdrgZugPYKit4chH`=QNa_|7T4d}nD!1vVUv*HH+y;#?g?_7#p) zF8$WSQ4yP%YtX31TH|(|{I3#|T<3z0zXn~VZs~J#r-tsvigdoK^Zq^T%5X)=Qhvb0 z{4FsAoFwX*quNUknzyU`&S|B@%klO-%o<7+(ge6+h~@mQLNhW1bI92{c{ob_0~gju zspcM#UqN~l^o^^p{o@}_?Of3&=Ao2vlj~GKmi|Vs??|2VE7326g}P_jkTrB9T7^TN zBSL-sc1hQA!l+7c$_*`PXI|C*DD^11zVslGb=<$)a+DUPDj`IB~(fe^m- zelrvAhhu3c+nQv%eVx(Gsyq@{xXav#@EU( z|2g<6SVc#BnL6YZ|Cju1NZztJN5qgo&_WnLFgyDJNMwhT4_l+*H>PnPlv6*rp*EZK z^)ZKazx@|_E4C!K1|kJMv~#LOh}8IBOw@YqQlk@B>C40=s!9=S%6PC5pdvb9eg%%l z9#RmKz46vlVtibDOh0?juz-`&q)P7_%6S~tD>BJrz#|ARjYJ5P!neHu6rs-o%Fkx?W4%zl9AWcl#y`#If@-{()#Bn-0ra6J}n+wjua3OVC$YVV#3)h#eBUH z>w9D=LY^f8qV_%9SmVyi6PEP|w5kmyk@7$8BpV1?Z9mzHE^(8`B4KqWIf z1*cZne8Qx?BpeJ1<~B?WAU?f2AGi&uF3!&7IRrcW>Ub89>|+1K%Y}XdN>(YH*g9#r z+HuX0^f&-u+_x|5MKIU`$izVoci^?Y9A%DOfb+)u?F3np+4}CTjXfPv%P{vR{{`$o z-O1qdNCk|W4G?W)?C|gqZP-6luie>AbNy40`+baQX69X6nVqEn@6!L2yMEOk4XptY z&+8W_hBt#llW!#dMjUcJLNetDc7#I=Fd4QaA>TV+^g1E`D>Knq23tKVu&z!bT z4Jt9E(`9{SgzORj4Wqi*L%|%N1RijNA>WRIpY5T-8c!%_o(M z@Q0qG`?Udk#a|>JSNWh1#_4C#c6k-JLc_;o{t`VLL5j>Yx1)yL7;1uXmw1RLP4$9|nR(nEzWzpQ5jA_??`mRKp^f{vPq=sW*-UKoS6{nU^9UvC=h$7 zNWlR^nWx%+XRe|cyZN!dw<%@n_l2b)~XX7 ztel-+@~JtqDpJ4_8-3o~d9qOC(nm|l7b0Q>Iy#_yxPX$?=p z6^dEq(cOtA(PuQrAmBzw)6N6#xu;Vx&J^!Um#;&#t~33TfFKw3!?;#7j~RcrPhUN= z%P!VX(Tw8!&PP+D;9~%}BGh{4?Dr?X4)3lto;w>bD=ie+N8J9e)FirKj1-^E8V@!r zApx8t%ih2_vd_NvuF|_3C`Hb42#Tm+9lkK=3iE{0X;DA*?_aN z=H5fpn|$IpzzJhm`~(piu8o{C?uRHByIf6K-+ln|BrS+@JlCjg}HzsxlW*MLW| zvIJrfLwH9HMilyCrr*WUAHmOQA>Q0utY=b8!_C|Lis{++HUTC@5SvYJ<%2mW`2Dv8 z>PV6jw$|7!OJw*A1+O;?m3LgO+GnmfJ|!Jaq`RWCrE~~GmCM}ZUb%J@% zDM<+xYv$LK%-f!Z>nZkuia7mZlNn=^*bf;k#A|QknE%O{6pV>**)vDg&8J%-VT2hw zqy7D>ImBo8*AN4jE$dA;S7>v>=W+QczMg_r`_I@CIvU0AjXcJD+2@Tvki8hRd0Iv*-IKD}E9WS1Bh<1xfH7CeYOhlMsc~-@Wc6O$MnlhNgob7_*!^ z_>HJQv=QDxm!FNv;%3u&p zGO9xB@R5B`(T*!+r<0w*0LZIfrwWj2kUaWe5a{7R2}1J}jBtib&|1o35R~NB%xkStyX)${|;5iy0>;S)5orrn_%X1(dH#rBQ7F)F*5N& z-&KeYH*EK-tjuS(S0sBmqm3An#iLnORn@`W?mte}48m^>gCOoJ`kG?rcIbRur2G3_ zI*#gW2QpSdRC%kQ6BCmC4s@7CLFSW0GjW? z!91}kFNXOZA*Ua1E0IecPfI>A{PBkE%^~ExMJZ0#aC#g(6vKLfo`-8VGgoQ&f{>u z>7u%B-h%Fa2rB}flk4>O=96n+T}5@k)+vChV=+fU@ZC}~WZlYnNc+jsM68aFm(Mq7 zRV%$bd9l{L{t$Gd-FRh-#pl+N&-Vt(zVU$2J~WP8VCzOZ6_`pRG#a?Pn4@_rcs#&1 z$>xe8A+Hnk#JGxTfBtOBC#4N#$!9zJOO<1F<2K+Ud?i_1c#umL6MlSmT{`c7mhWAu#G@FvlWQ2v+{w`FS?Kkq2`eT{y^;J%d|?PDw(-c{y?0ei^EvnHd+b;ffs>OvEd^4pcMmST+H)+ zX3%GCWTw>J$V^)s=ej*kW?-h_O}b9EQ^%42cp+afZ^eh1cRINSEd0EH@gE8yCu{n| z{KR{EUBvt)La4;`mZT)C%?WP@whO`gVpCgOw4Sa{caQ=C_F;u`UL_wV4r@nP} z-EhY$WFmW4+i(yncTv`GzJGJ3KgPl<7_=2G2UK5v(X6`amv*g^sLFrX&RXQ;6FbVt zN-&A=Ssm$JPS}!+QF&);%Rum7hZ@e*Z*_5)ie8^NNr+jhk*o{45k4sG+E6jN+pGCp zf-#Xlsn`i8yLncNqJvO(955Ht6W4-YbV+#_qdzBf^H2uEdWQ@-&?VN6nbM{vbiB=U zD9nd?3orf{VwHXKzberCY6;3fy;WR3nD!M7#pCbd4~Hbl!yoXzq@gV1TvT@9H1pqI zzYV=&o&EiQ+dlKYMA6)LUB?@?*?<4GcU`=solWWNnSt*u$#|aWVeXPTp&10>!G6oK z0=6*Bw97t4M)uyOH(|D4BflM=4~9KGx&j7SHbT`;4;p-LeB)Q|j?Zof;f%)BZ#-}J zKW^z4YehfyZ%E;~#}399;HqNQicmyyB?f~jFQ1|hitoB5r0W;DFULf+Skh86Z_jrZ z$r!#q@j31s>K?k@e$A{3wbR&fsZvj&C2R?7P=^xydlIm?zYzA6utiLLe0=O|C#|BS z+I?dvbmcJ@;J!>mRtO~~r^qOYeAhJ;Huc@yUCiN(B9S*N-~k7V#4fG)OimaJGWDZ) z6mbV76BfUWia*gR-b+e02&eoCB4WhVJID->MeM(F{ApMqAS@@J4AwDU1x0ii#YAbb z+-(%PYG`W2d>VK}8ZuiMcCvTZ?`m4@@8;px@y*HIA#c#Zg4}t^o%!q|x2BLlZ@7g# zyrAYZEMH5;@3uhSEJ)qMq(E=VsL%oq^^^`}lRP^fF8ea7S6_2({&+1+@5f@bsOT3* z$FyF{1dHHCezRL+%yMPhH-TAWqu3?5);C~QsPL)`ZF0$6QQ^1I(O_#w>yVNI5L>Hw z^UvrT#Pd=yjU1jB0xYL>tVlalcWkCTYtYWKoaSD%4#%1x4|OcmpU>pNr{}^>58=@C z6ihz(H2eKmqturxPn!|~E*|yZliOg_lbA2YMdY*yj zO;ZNsWPiun83UhVdB+q0r!xK$wL4Ws#Q}Q%9>T)~E&)=gf39*GZfgNph*v0^W#UIp zW>2rG@-e8QOwDw*d#sq02!92{Sf78l{m|0SFRD6rYiu*djh8fpq=MfQ+kX^csF|u% zx%8r&jW4Vaa96>8=x!-z;(ivn#o-gctwD-bbRbDBA~amlIT|AWdpnRVx<|>Txa^DD zi#Gua6FvNe{Cjm*3WlwBD{@zRsko1RUM>=bU(~4>);=*;K?y*by?thP>o=0I?HwJN zk{+9VRkIgYU;k`g-oAlAt)dfv@K!PFD{p)z8BvMHQeJP|{kJ#D09Csq=w)FQd@tDjxjAwW#4!kYq3ix3@5PDUZNT#9shDjpES1ge80KpcWL z2I4*6A|}PNoqXM$Y}~I`cczpxdGC=2E6`C8n}Bh%aR0qYpxn{9NH;alO{|kkzLm6@ ztuM-^!gpcgg;DJeZf6FLybLwB^u<`#O>JOu-H>(=v^|E_N#<^Q!nXfwz~RWkjwTfh zRjgk)`eQ88fc{aW2pMeKryq#R4Gr4{F4da(>}}$J)(aaF#n(SgcixJVm!jj{P{%|w zz{l4?VwV8PTx_NJUo7oguV#xmdA3~bx>u$%%;dhnHlZRFniIuPJl)U`k!@e)XOSLw zK_-m0FPV9O(m?Bin*`Loq@{Hvmz7hG(nZqPoXE`+*rH20v+0fyj^Z8HKja?E1l{CF z1f7SnZoA-I_J9ZzUySd&cL7)fN6E@Fpbqm)zu}C3#^oynFmoE2nkY9ytrpF-IkV>x zJ&`d$*&=R-hf=0NA-RW4L9ll8`^`?F+?2swaz+L#S^=}-#gO!5CNQ1T;x7=ok~<%h z*qyFEikiEe9JbZO{S@F<@UqQ+!NZaJw^2#Qe`(b@LP3X4@fj?4$ie5`QkQ541djf^ z7qllGs$l1*8LtFc;84}FB8=AQWk*FQcmX~{d0d&;$0Y@tQ^J9$I-WyLbq zP|)9hr7}GSCgZe<`|M5V*iTwm1KG#34qm=eNue%NZUH*4qYa=OaciQYFH}D<8_!Hm zOgju{Xx+cZK#CvH3{RQz0)b@KcM~Ysa>#?V9Svq5{z#lOhejYq8|5{yJl76i^5b3< zaA<%)ik%9!Q>8PiR1ALgrWK3-bxGGgn5slRtrUL(rR?X4P70nfSTF`vhAxVMKWQLT_#_I3cDw*|P58Byh{d~gKm~5^QjfVtxoCx;dgI-Ko zR8mpr0&?%_26sQsd6%Zg(LF+Q7*oR3|7RespRO7ZKqqCz|}7=zyJ#Xnrp; zdAf-nf^Q1R7}gwamtoAF58+#kY`ycXWl|g2*>O>AVW~iH`OutIi1?&-v$uh{6c{YG zC0TSIJ;V0NGg4yXA;|*I+qv^LV{C9DFtmIG57$zb?L?;d2S_w{U?s9o?ASSTItV1>E4^ zktPFklP<&xoY?N8x*7FD9!a;=<-|4Nx%2(d@j3sa-Hf)9E-9EYcJgOcUQGApjcM}7 zLe{!OfUv41BPAsTnD}aL;G0#>Q}K!rha@uEZ=EA7UPk-rZ0z2f-uHz_6;rIGknX(I zJSc+fu~c)^vRmc{q&rt+U1$Eoj;~TdyO$kRX9KL_$O?T1YOZ7v?CSt0OH22>T-(G! zi|+5@fTNfkVr#ttIGGtU?%#v`tE^AAC6o`zZnI;i1ZP`7G7;`?yu3P2>Hz;&v1^fO z{ky%7-2G$zTbDbd7U``zx7dMnBeOYUgBfkb*`V^tt&4GpuS;|5lfw(q z;j*&YdJ8BPMarSHs`2E%TTwB}^pyuT7<&HLAl&JS@G$V2ZdQg`#k2ALQ6 ztR8>-HODa$xOiM3%1u9%E-Wb5ny}+JHENjX5zE6wPVAV*L^K~D`o$-6IRsFX&J+1y zW8LjGraX%9wYIP$Ezc+QHf3(R+xBy3LjqG0GS9(H&{hRB1VHLBjeimOly*Wm9QoDINOo94xeb9Lf<9?K$qyqUJg)|~su zAQKrXD#VH~HZ++VL8<}31x89=qp7JfQL8ldv&f(SUK!QYdI$Mg@kfM+0f*pC#V9u5 zipp};|9IibjjvL=DRgBN*S9lzf(uO0b)-<7m_8nnJ8u_8yRlbTCa{4?KGfEm;!qc} zUVlOOOOE+#x`~0$x=*5Qe?|(_m6Ay215B~ea((~$dSlpjaz>UgZ(ge6 z2O8xt0l`NKcAS(Ct{6Cp{jHgH3`lq4wGPMrM~&3s=}S!TC48gw$zWe@-2VOQT5$U( zDVzNl@4xX*iM<*40nTm$-q1Yc`Cd)U4xX*f5n@kN{WWx>eh%#0YLeEImQFslMYTe00R1|Izw9(i>6 z?=^O|d)OG6xxzc}2%gGJFkVRK!^r(H{_^_5R>;_Yb@e0-EpNqUjfpRCAxynu*dyt@I+2s*^a)zl&A4r@d$MZI1fE3 zdZY@t{yL)&7(i+w5($Z5o|XtDzgurP8{(Wd253(AOfqfN#1N7aeaw69F^=p})pS;U zBGFy8K?_?g7FmzCw}0LSDFM;A*Bd^0XID$ZNnR$SGo!O!pZ1z0L875}3g>M!pz39J zUV;0yoL*0b6scZ>AO6hWUdwz3kB^p{*Iink-*%k4S?BNbAzGs1VUJa@g+)I3s@m*ahoNH?T zRH1wzj)t`-yRLy7WN5=a6)P`WD+|w|qh2O2OsPN&hn%Kj92RvbpkB}Z0UG`djT#rpk(90R{>ea|fP#JzqqJT7BnZOVTVnfr+Mi>FXJy!Y4 zpEOl(XI<;Fa@Z!O_S}_on>D@u%{zBX|Ava7<$u*!KQES_vXjo`q(V12tk;EM7aTz+ zNkM^Yw=EswYT)o&#;p5KY4GmnUhjC#-h?;Yb!~PJr7VS;`Y(iCow*umy7_HUAP}DMnBSH@cJY z4K)3Q5>i`hET@bi51AFfAia>M5ea(HDGCta-ZoXVhEW;fbY^ujhz&0&$ju$$j8?;f zt$k9pL-`6a>-=>%{DEBu@|`X}MLBzG7A9qF@h{NdfM5HnzZ4PW-$Yw{OslxL&didbHUq?fGd~oWBlPz z^$Ujnj4nJpMj4-r>w>oG8Q-OgH96Z?t1BLBxhOJ^vf@A2QfU@2-E3{UDqmH4o4fg{ z207`+_ig{PPC(_%r{-`ZHkrS%>ka%}7yb5$gvg`yN<9pV0E-C#5oaa`$&<1HFp2Ti zYNzcg*=o0~oUO08Vp&Pg<7e%|TVDfEbB1#>Gp1&K$vvE;L~fFuzqNyrF%QNw(o!y0 zrd(|;f_}#@`0Uan!F z-_*o+jJp2UKi6ZzfpNA48^7%t)nP-%=k>b^WhXseb9Y{0p&-faBb`+P1f|1!DXZIJtOyV&mBs@HxI!Ffu(L3u)Z*8oUcS1TsJIlka5E z2WH@`_#ma4V~LILS9K$MK=EI5sTvbx&H`5 zg+8N5NwRl6jbiGZL4A@e;3il|!lMY0;9$s8WD_|@0yT1 z>eJixf3H%xGCa3V1{&ONzEC~Shl@XP(W%jQ4fH%}AF979T2hRz7(xt0twe53jv@{0 zJMq+pMoJ$PzlvxES*YL?0~$_R6Zy@2PQnIug{Vn$-k2wA(qFJ^C64I;MZXfp<0TZH z7ef<(2@KZn{=OjF`^j;Xg^i6{^KddWZ-uTD$kMP5C4lu9&hsEl4L~Vd#*V?*@1Rd%;C7k!f2-JDN;S=Y35}bjfn? zRG|3Qsd}lLNK$0V2%Ma_ViWurY5W>6A#J7AVw8<`W{x}|RlW>UfseiLaH|NKT%?kNU%4+ee_W+m+lElf*;ys-Y_~l zQ|MPz=6(J*=LFY2tI4biisJ$M&ou;Y?H0?{PuZ0d-OlT?ngt!z58yXEh5VZ<7M+@} zCNwk-I1C~3EuQ`5JpPXCLD1jbW3sSPtBL56zk4cfKhgWfM`QJ)8(o7@wgV4LB+KDJ z-}P`p#Xt25bMltuamPlq00t= z$DIeBRbL+3)8u=xAf~4$R}9|#-9{?_ILa_GhD|>|;=YI2Xo#Ib0vuUz&^8dXn>8^z zJMC$#<(}@y^oXMF{srYNWO4RM+y>AP{k zEg|mJ(g>sqvGDBPUx67P{1Fwbu~r{Wew(TOTd>-No@+TyE!c_$gXQnRh72u=jrr*c zTb{DT5JXROuD_b2;_gs6O(WJxpnURt>cl&fJvti$3ZAI0hVOq8>Xl%;O4b%a@2MI_ zh(%GJZW$JG9^;LGctCW)AQ;9&B*;#jGDlL4tvP+I(kM6KH1%EN_j&(U#cPp{ZO?o9 zz7Q(Bew8=3hwv>|00RkAdB-L$G~5L!Y3&sCzba}%>9`L<$ zE`Igje+2TMp7+t(@L(%CGc3cP7z>|DqhAjO-jKD}|J=AA31A9{{fKd5!)nYtiSqJ8 z(X7%>Uc8;z`s$x|Uu)?zw_E;8R|zVWo>LDkxtk{9@#es?ajAI&_A;@E>kDugNPLV?RgR1^ncNkeOd54Ml1SySXgc|ysOQ_cJ6L{7=B36VlQq~X`OE@<6BPj zSU$lH3*tD`f=An~YUKfqYR!biP4m-Xwy|GjYY*q?N05ic`{_r$LJ8q2NJ1TE z%GK3RJKLlD9K)`4muj`*r$iUQ=Fv-tB}$gAUK{uf`4cFY7r;p7(r-Cu^$cl<4dN#JF_Tw$)(ml^>m+wFR`_E z-k?>(_WKE3Q2IH0CN`NpD-PA|X&mtx!}uZ+(mt|Je7lwzWD~fse|ah!Qd8F84E3~s z%O0aRfU5~xwDPROU>p;B664y3DO0kgrY9fV z;E9rh@!C4wjqhb!YfqKOK1eBe8Kq?=<#kgw<(7WpS08F49cu;FP3O$e400+ztQa>l zG@T+@g5b|z$y)V#Y=^8pifr#t1uG_g3nxKqn^nJwbSy0^o7p*?^SJ|l@Y>8)`|cGs zFuq*9$K8T$mCN2pn*LXxZ}W!IF{kbAmkI%8%k+~s=GH#;Kmp$F(4l5d8y3a*&@Ddi z;Qah;&YuUzhLu}f3d8&_>l6pY3<`A9lG96gAPB$Jjh?xS_A1ScSFfY<)GX8V>|e*D zJZu~;JE#BkF@2>+grgY40#Z~GCZM5~C2$GpfP=+qRi-Iq&TOMx;Pra*^iO9aWEax8 z*-ZvZi1z*KY?;N|9&6;}We6SKNO>9vwTQ-R1vSIyo(z=!JzL^AysA&|P^18qk7+mK zP{0rK*U3wAjWpPFd~RZ52)O9$5BY8+FcD^FsBd0;Ub2_G>2rV)MZoAGi2d zH3Ezs63a+So1K~xe5sP#=?=qoQnN!XU_&J(Zc`$1H`|q+qQjm*>rHCvhbAdv5DXpv zi;686geQXlv_c|KCzT@aeFg2#UQhMd7whGe@FvC|*}|lX(QM*Q+_CtIU_~WltjL20 zOwUm+(B6~CJ{ww&#V7sdf73Eje0Dts>MvH)FkNsfcJ+k$2<`9pv!fX)2bBN1>Zx{M zQTBA~Xs2Sh-QJNv9O_xu5od4dvk0;E3LngCgUPM875!g+5tMgTGcvITT~4gc1?=fd z4S>s17U=kLd@_;QbKU?#NYL4QN_5&1D?aSJ7yiD%d$YT2z(l#V#sk=gXwABar`-Y8 zoilYR*CIq+LseP9<4dogYcpN$eEL}CppB#A7dDk?eMx3lzWHkn*NbH1ML;q@dJkH8 zb6u81MVU%dD#}eszy(OIvBE4yW=3~g4Oh}}+v_O+yoaiz|p?pvqNd2=159UZsGR6mXLwe|JID84&hto{-!aoF$IP;)x#S2#sn zq`(GqOE-BER3wh7y}TB^J2SgI85(+8fF5h~G|`xN!x8^5d*!#O+w#e{>D0dhR~f^Z zf-0D2JNHA9Cg9l*klUp4t=uB%dXKSyOG?@m;RLK~jGuS~I`}*J`YtXUrdmzqnY8w5 z$J5#Er$*f1jyVjHX9J5)aR+5S< ze0wTAo@_1BerU|5lt6b<4}{)F0Xv>>zj1?GvF@QJi&SZO=@Std!9(U31oE8a2|%?l ztog%AuG-tvV-fItS5A25AMeXht-ZOxU#abCLXyo1DZOF>8iL4=dcN;+On>P9xjE5K z(yuBf0uHqvo_o;ROnp8~=I=MYj$TP{2PhH4^}^(bwshZsDRE{BdAe{2P0MLHu&VfA zPowcz`wXM!8~FC}Ttu*Ka3cll`&uGjl}fye!RdvdjsFbk*6ZcV?1$#Zr`NKeLf!z@~S#Zuen2B-MIwdwZd4 zZ7nCmTRjTL7iu;+!&+$mhxY#_E93~?w9=O@M_(jX~_vN-|p0&AB z!ZMTqJd!na)gpJEfem*ADNdd6tt@tN(DD}=eNdnd3*mO7Q&#i+yZP3)9-%(WL(XA_ z{ELu0?;4oZc$B$@h~%I}*g<5jBe83c9-PP8%-16bJ1{7!U9# zMk+vJV)TTK5p!E-39Sh_5pU9Sq1k4t`>?+NEFmRt!j%=6Qt%CE$S5AFsM^}L=P2>; zCeR@Hz+!(R$%>SOa$ECEf*}ggY#_H~M;xdTJ4vi=3dN`P+Jzs;B?oJX=65 z&_+0ng)|=nQVm@~W!uKKToy`SlReN;mSjj%QyTzz0>9jRrlfV^h zlI+Ft(rEbEM@>C_z2If&Fnp6U?hwgwQvW=Y$l~wyRKvxf?YP|aehU=<=DI1aJ9ugN z1X&Wr{mB#&R66^S)MX*mEWrD0HY2X2Am_*f;L{os=YL{tI2;kpvqu1Rdce#jFr52J zGY0sHwheIzQPYf!lz|Ho3dw-sXM^a?cJWTI4hDoVs6Nkl(@=y`o; zh#;ZTXPDe&!`8O$*8zSNI&*v&?!#XJb}pNT*eHH}CXBWEy;5KeN7A%}p8M0FD?m@x zr@@+42h6(Wf{p-3JSGE`edb1V>1j zfYwz8L64_k2LO~c+h-~z-{SUkm#@43bN1@uO?G}zfRfC(1m>ZzVIYu*|SnQ`RvQMw4gt_ZTfbwxj z+t8~L?MKX1c8L$El@d}gLq1J{5n`YS3r;4S-q!s5coCUcYaSV%U@<;*rBl^%HLFR3 z4r4~|qd(rupRIL*AOJ#0{4`Agx&k~!2kkkDDpNsc^;ENgcR5?*#a>Tt0*mK1$`>Vf zJty<5%b(o52lh_V%Ej6|FIlI9%qKPDxqRsD1uIaMM&%D|-#WSb``!YJia@%Z-Cac- zwLI9q`(K%siD_VYKl!TEt{wJrW5?*ra9Q+F^~KX7=Lb@y`;&!c-Zwx1uEzV1Hctd1 zOnwT}26c045p(V-{U1l?9Z2>6fALG=+E-+YYp=Mt_P%6XGH$Z>%+82xSt)yFkGLcs zWM^k*Z{oVy*@W!%dw+lb-@opAJzwW}&f}m5nHs;~Xioh-+rQr3WdMDV*`ym=V?QP8 z)h};qJ>~}ETTyZ88djup_H$YUou1gRZNP`L^5sq@PsYxImTd7=KnmRGjO;vKsv)Z! z7R}=2#O0=@NQbH%dgcmvRuH%lg5o8EhJr-w**!ujx~9L;ia^k`E8L8hnlQUGq+hVT z|Hg!W%T(MA4p7ZBF>NetPfx-m8K}v9arw!jHTbr~;4h4mmbFY2Kx1a&-L3I5OhaBp zf7^U4xv8FPg@AyPHyd{8wF>9t3R1}wneZ6EN|_o%N0Z;lDf;jXQ zMx}FX(OR0?svZ#^tQPcvJIFxQzdb>SI=Q?572X5u9Ihn00AzR4kx;+Dx@l@T8@&~V zC(Su!Eyb&dG9~hu+ooX~c#M5MzN|8=`46$|%TE6M<5*71UrSe!p{XC|C-6wxj=M+$ zne6BBb7DTb=4BsY>TmlbtLA*g=EUJYPELsL|BB!1s+EaC5N_^n__}amxrWBJcNFcu z=ap7M08orh^d=bz|^tA8D12wAb0{^z{0{*`I=?+$_oC?U8I*d8se%V`F2K z_JXqCEd(UFwDYtkZC!0@QFNH!t~&ZV{egb2^XF{+OkWLH>`0*L4g*)S<~b#WhYm74 zGbKDCQGYZm9;=W*T_hfk)&_eKSR%lYV08gdC|=P4%f;U8?P1WSiS+4}TN`xp)!E-N z`J2u|O78pZPt3Pls`CHEYgr@D8pUh*h4`oHpFivbn550&d7DxQ9KZ(K^R4aeIDYpX zRjA|Erh0Ljr%Zy7NF3W#17FdL>DQh~uI_G;y5qZb8fnIU-Z_wTj>0Gi_cql~iKCmF zEB1S^8Moi@`oLy>fLLrYe;h%u4nyY8Wbg|FNy=tfVrFU>?0BJg5p*bU z#P)|Zhh+Z!dJ}axjN}1jdQ`ikUoSGvGK<4#qR^z})WE|3EN%`^1}7?Q08>sX?@Pj; z9rvB*4UIm(1Mk_wCq6qb;A_+b`q@3lS$!MXR#9(X{%I3eNi!1%u7}8Iu*2jzg-t`gl-S0*mWywvj;+zMI zGC=lZmKL7dZXmd0(Vl{@O-~Hh%ZpjKY zxikAHpb;k|P-P)P*859``~feBvTiaSo)CryFBo%JKgb3YXIK6w!&nwC<9FFrcquu! z^=DMz9Sc!_BiXTxb0b5qH7RAzk?CJJ*>$>6Ms6PCMa6bzW`Hj<z=a-E{DP>9D>)g7efXz`Y;)6^M~6 zsgk0kWsi$A6*GEP4rUuBf52n;)gvH5OXAO8yvp@@Oo|_6Qrz$ zi<*RiIVb)kG>?AOdHu~&lOG_K2TWWgY6v38dI=nAE%duqF`&Ry5;0$q+@JEkS zs;L-xNukR!wJviFF}jSF_G+Vqc3}=62v}5PUq)je@eBz)CSglO6ON%YxpBYEZ{rlS zA8!a!ewl0VA+D^guf3KATEV+F>e;p4|Ky0z*m+bCR$&{CU zb7^w;$Vu7Cf^U9d=>=l$d^Y=dn4F}nWWdGxQPHFEZ6#IOs2*NKgrLmj zY8T*r7LXGa3YdPXNAwJHHt1HJzHvF(eVuQ9Z^#Dv2ZcL)opV2|5PW!>4z$?dMPw*!$Y_)Aw1~W?zCGxi z-qWq<>FdS}!+C5Vlm$4P%75!HhcvCieac82mLCztj-Ts2nNAL{EiY1REZ%N6F*F`p zw7zb}9NersxZfFs+~hBr_W;0cM4gp5DcQ~3|!cR?UYbUply02|IuM6^*Y@e0s-Zg26esr&xZf2v!|6!Xlg zD-su?Gdv03^KQN-z@Cm^4}-7Ei;C*2k3Nj-x4~m5@QeuuHM<44%eZS75k`(IO)yO* zzGtwaSlj~7$o8AQPhl{pCw0l+!lU1@;26J{`jNrIqs5p{p6pWf+jME6{lv1~kk>c6 zWu!09pb|Iq>*Mo+{YG-B8RYhP`*lUjkTWKrf}aMZF;t^3-jIfy%8KFJ2$Ochfs#Ti z^;OU5M|vY2yJF+8S6z#yuEoauzf1?ma@ zZ*I2S)_xQuT3Sm9l;DGiK(5B|YgBN2qepz`3@g#I>~6qrO+`smHyP#((kx{;xtJJ4 z)nd)e&C-)QfQm|kIemtaaBI7Nd=|komMZ91LPPI*)QWI$3+DEL@y?tFCpGX-X88~U zCf(7-2{u)NuN11DL=0tTsWgD5Qkw=?)nvV@ogqAUT7@=!cpjEk z)h)o&URAKA8=G|55`Fe<{s67s19p4D_&Se|1J;SKt+3~d7LorcHKO0vE-D)EHpHF4 znwraTG%^eiLa+Lu%-cD{cii<9c;%H&?ZX3dwW#oPX~}NxiZ(W!4^0DhD;npXxE>rF z*ky-En%VF=nc(p7?A< zwNYQ(mp)ftmgLIDhE122ErP^ep$jYu5&h;!1L-QUv%!1N5d(P>^LVaW#c2cmp3f++ z8#)8A`Af_Cj;EdozECBh8r+3^khD9Ig1hUODPCvDD zz3v?|Yx7>oG2su{WU#mNvV)3H0%6JV1O=fvMM)<_GTlO}fOKKT!!Dt0PX|Fm4D3|Ch?g zU_x359|w2#nnf&aNwAh+#&d1Y_n zcY+9OXTj5trl5%$wFj~$BU923Sg zcglsZly?y;%CY>*r2FBHIZ=|R>W!LD{qOS>98qI#*cZEkZsRCJG=0$^SzM(u33uIt!AC!iD1E=zcum9~6!&6OtCU zC`-+-!mIu|&0BHXHgcM#74!o5)|euNT<%G*NEA>egvMt~*Mm?Su^#IYjn?8hy~=2y zGR4U#73zyH)~b-=Egl3qvX&Z{q}YF05!EH4&ZG%sw1ItWdH*ayZwwmI_FFCG+l)*o z*a`uHknm0UcnUxgK?U&Vi`Jb5_N6ndsoWgsVX`r1U!ocIeEs-1S@0gy3oYC?U*&=)hLu{=~1`U!R zGEh8tcnVgAk=A~CU!e+gTPsR9#*P{6LR}Cgel)(q?ZQzB4hYHf^r6syRtpZarN=mgO@D;LSO`&f_iQZ*(zkz=x>0(gT!D=>d_c*DUOypXOEP8-hU|Yfhk^FZD^`^DIPs4d86(u??naBzclxhl@BE;Y463n@o)X=_92)WwKJzK_F+!XEp z+CL~T=H1^vs9P8TlqF!>R}@SPC4wu{st?c=McHv$Az+^6Hda)qK3HcD%stS*V$Kz1 zy--rxG$5@&e<4BKmbB%Kace&^rN<=)ATgw4R~hS z>~TH2-*Rpde7P}Ud}?ubCV#&X!0eplef?mr`h6v?=6oXPnGl8W3kYEu$&?&ig!yV; z-#Opw!)yF5oUZ8_;`)gr&-vTGS6K5zszHuSVg!l6aZV{cZWk)rGN|Lt)vpz2=5y(w zrK47UZ3;yYC?aVjL#1T=i7I84bQp1IvG zq#jjS?6^Q|jZQ?d3>CYsnP@mWGCo2=`w(jpyO{$==#7^kIFuIJEFpJtfA^QU2Hw_D zlN*(5jXs;;YAhJWzdew4JWiW4my!{0s%>0yM5k}i4tI8&(jidleI#IrGRshbRTl3@ ziehzY?`+aOk|EElTzgudzLNNibk_y6ObmdsVk--D0D@@&8NdxY*5~W@y1%OR6S(+B;i>?&ccv!R!}iOMd9Kw(H@0 z*?zTA1^As7nY|xs!xe6W`&n319b1By9}k-1bg!!KG1$BM0Fb^ru!5%0sE7_P4Idk& z+J(pzB{F<7uUSG^>eS(WGvAI-6^{*B!~X(7l!_#v>l}N@UDzn-6EIJKITujsT`*4ow6^r$>1CVpa;0oLaUC;=M>r~TjMBKzCzJd zdg#9l_cGEcM1;pElqywt>goGiF%Y8_)iW#F$nI}C$x%f`HqYk3tIA+W6a&`XhaaJA+e7>EJ@Fc-)!2R>_=>R5-;NqEc}6 zP02YRj3>&jKomad(;6``)LK#VeYt7ro@U8i zjNZhg1;}G)CnpL$U{!#{PentcDM}(D5V5nof-+vZ0EC}_9M+}u@T*m(W1dZMi3;!e zK?Qf-CLv6m9yX?>SYUNA3*QI2hKEBeW0_K@+PeCggBQMt z*QJLMcY1+9n|{@Xyfl5}f{bnr%^g=4eL}Ub<|BgxIEZcwO{SmD)Xjnm3zZz-wnRWk z5*#?tskp3aq#8tW?3dONz*m05?;}rbtptp>9_3nxaqW1sZ$KLcfWn!Dx;Bn`F1`9q zDuNkHJC{L^0-cW5Rl^h3*tf;VRr*y^U_A=Vl2Xs<#555})o*XUyH0Lw1PsGqQAPsX zQ1H*B56?26^~Y=G%b(sd-`#3=vB2r}$^2Dmw0rKhy3^hpmvvmkbkr=OsxXfckB}54 zsMmR=MvU&R2lNdO3VarErzH~bks49l0JKy_PVymCYijzbpI^FvyvORrfMRL`z4Y45 zmHp0QHFyLDQtfrrAh5NQoRj{%ofjzrMvFWmyP z!4saBDrHtT**|8=7uvc1!EM}vwB(5jS64EQ~vLX z42{gECQE!J+8%X$Xj+&OkdQT2Cr#R*QspW+mT?%aaaDEPq8dcKMmo~JANFKXMykbD zPx5NBMI5cE$tw@n0fMR};)^4Fo7>@f8D-w)L#x*Zdzq(ku2Tim@X``;D2PQTnOHN! z;J=r=^;+(h3-SBZPcb$nfd7y2$}vki@)2jr3vM86+5Yb)P5%C*!@G5I94;pp^hPebE8v#@jZ2e5fMMyha? z0EXg)?(0T8Z5K?nD+WHYy}f-HxGS#F+chFh&NRi2CzSF$J`Sz>_HD3#o$c;~5DFVoXUnJK923Ft zSq>Kiq8?y-NAeUR)$%sl6vw^|pU?=#CCrkIFfCxqojI`9qUuF(n#P0w>Wug2IqsL=mv7Cpt!{Ss1ib^^LHu&;QG_zs8e zRp1j}tT2Fa0?KjaV;xHS^8Hr3PECCKoou2y!J?yiaz5h+Xa2y#&equ8Ib_U|WUJMf z&-DOa#GRS>U!+IY1|77{^sA+l9$(t0{1%w3zNE0cM&{!P-M-qDj#f?-WJi*}?!` zVT5q^Yie@l${7{Dw4{)$UP0fpv-Z;wckkQOO{4Uv^q2hUs*4C+=WQxv?0mW_Unfqd zF}G&s>?7W1+%Ju7z(V#$k0|UdHPH}9;F3j|OF}(0M|^50zPdMNUB_=K>oznuBfE%snPCMkrz zmL^c}%3~<8Gl@q%qWGFd#j2zuGL@G6AYx{`iC37UU`@j7{U7m$#uN!N!wd@}^JF4m zT}5L5$B32VJ-A<&<(U>ZD&kdP@y{CeWtskX1J(#f4!~$tZW9yZl~P2jD1hG0A{g;0 zpXmX6w^T?B(25{8l3lIA6dXEAoOYA1Ts9o1-Nf|u=Vryl8XCnuD@w=R$ix*-qCaQb zsWZL@hB9y$n3Y>noc|Nu?8W*XKwOFV3^7QmG-^PRBvx$YB2bhBVkju+?p~F88`E}># z{`>xDslvK(1)B(*VuSqP8dTZMUM|2Nex#skm0BDaa55o(d$XDUyP3_akYy2rk@O2p zl1%fJyQmZ2LOUk+wp&SVAW!4wEasizbT$z+Y4vfPKQ>thQc^SHX9wZKrnr%?5)wst z038+C+2Op2&beR$% zNV@A9#ShRPU($s64WftL_YL}hm=Kr^^QK!-`=hC|tK>7y=tLQ^fN5B$3IrMrxS-bQ zXjZRI88&v*^0*YRp>sxpCx$_i>gHx&0Rk-^7 zDfwOPgk%emmSILtZoGu_sfdKFrxKNi}#vfI8=5V}eOTDt6vjI5~WIt*!NWbdoO zR}U%xEtRDUG)~)zLMub0eQdAhxdbX*_o-$2JzOeYc6#v-5q7bEoXo#JzLgk(Mnr8G zHgp4b!L8-x1m&hSjf{JMdp_hps=tg5YEiNQJ8%1DR#)hF&_FpyvN&yo!hMKL+x#c9 zxuB({Qjy6z;vd&)@L`(W$Xf5Zx;YA9?}%6-FYrM!p0@EP+}p(;n{L+XUn1%N z$iRb#t)b?@tBa+1vTp)?j(_T{jIaM(T=}4#F6MOl=QaIDQBrP>x5E+|=o6nV>(o9| z7=^Rp)EgzRTgC_OectI10^}G*0f5<%D#iTO=m~hZ%IwQ8G&hPdV_G3 zLoM~V*MkOABSJPilaV+oj#jphxF4qd!$YM)iHssw$5_& z?5(Y>9h{Y>Nb#x*w_~4m%Xg0NTWV%lLJCYd>#OU1U;nwF+)UX10B5HyH`HcV?c>zW zkwRztv`a`z$)#x;U#@N~-ehWg%DduPx?_UAqd}Rm5s*ER5tHv|zxr9nA8{HP*|M9R zy|3Rgv)!B16fS0$GnpaOY~lWg`0|dW{pg5kX_p|6{GG91UpZdRcLzq8#T3T&!%9qn<#c zQV}9?T^F&N*C1{saY`-TOaY2mZPV|bH~%jE?R-00+gh8g76#T-Rn~rXH2$^RK3emy z#ev@Km72FTeVg2F$=+xi>$vR8EUMMp5^TTdIy)m%@pSsn5WD1F@3ifb*9(pKL5fS) zU#3Z|KpP2lm{xZH2xt_aw>_vL%q`~LNN2J|CA~(KBz-I!dN@VG_m2R=+V{n69>M~p zEv0};apECDq4=~YdayupnO@t(V%32X9V*I+@0+HfPiN)(_NAW&iZ|`aa%6nii>+L~S(&x-TXSMLhvP#Fzv79}!uq4Dmy>^?X zWKV{S*JYWW81|JfO3Q!wdO-ORONI2`ybkZtn&%`N#Gm3RV!uOz#IIHY&iU%8ZM?^Q z9W`SjTNQPR%o|;}>`VkZUN@o2-@mJJ#P7qi?)lCF;mq-_Z7y{zp4pF2ttql8%9k;n z5tU8xG!NNN^C=HL{QV%}vA(yPn?P>O;nL-|x!viV8U0$jSNh6DEdSii?|%T8`H|Z| zN10p(k(}aOH5}}$w{$K~h8E`wS`9m*%LyR2RHs8fM*VSf%wl*WCWCgsTPh97nW80@ z%K^AcL;f`0cea>^Ec@r>euHCQn|)F}T48&i*A%!d*l}-QvO6Sb)>hNp{tWKwvibw# zexIf1V0QaDA$=}GN0*jBF;SEADHl_plMDOxa2j8xcf-6B3m!!x2$xzF`8w8; zs;@#n{G{-hP-VsPY-=K=KVIMY6gc2Svuw2pd=k#rP_^R5(l)I{*KRh}+qYl-X^EMNQ zO&Bt=Di>3MS)q7#h0E2_uhYUzS)ySP3f~Ngc<@vqxDg*zK%s5#N^Td&auVTNZd!2=ULZnT1;TFP%0#HG;JNl^F>dYXR|eNNLlw{M?0WMp!yk9KmS54ivVqv2dW1)^lD(;j*NS(xwkY z{xCFI`W?f4JGlvzo>fBF1F&MGY~3*YAouNwBA|jpu=O<4g;QKa_UOcUE+BXID5X?8 zU-JI$l$@*2li2qVN=j~ezSnfpJE3G^f=PERNiJLSq7;-5xf~v_Nss>+nPgmRXEgAR z1~OHGdmw(5daP2LK4$;%(gm6=74+}N%JzrulwPOWj_S5+pmhhl5|{fiSvZAn8gsDo z=gymF``K4<+Ss@R0Xg&MT>IF;;M#flApiD>y&02Anwl7g%}4nDSBow}yFfcK_FGuu zLIV^>!pC;?sG zncm!j@gKx>@(>ndO^WPJlvel+L80EA;6J1B1JF>yMMkc)ztiQC>I+ptCc) zHD4!xwUupuJbYQ|((gE1uHWTmo}i-*mxT|Ask2JX zW_RM&;tvGI92C82twtC7$Kt~ogH{tfR z@f7-~*)u*656|>PkMgiJJwAwKNX*{BzI=vy0wzYuL)Xt=lAa4EZAl#CplnDP4+!d5 zc=al)q&N)h(YHFT)NLi+MUMl2GOxiiQ~&e89sx^%^EgJP3}%>o?f7}XdIU(4TRh&!Fdcq zIi-^V$32|r&)gZ(!B0YI5oSD*qNJdoHbkj60ZT>6gEf2Ba?Y9Q$q3|SXFbEdJzvTI z2-KYWduPztu~^R??u{TZ)8Kpo?o{Tb>0g}-*~m>eTnqzo?BOZcT01QaP-*42Z(Sbr zboxmr@uzVfvr%SFzHNv5T@KXJjOB_~Ob0MyLv}01#+cJ;xH!T;S=mv zR048)(+rfbEJuRB){i`$i>VCqZdp3Kwt`Ht7-Z$h`VR=}wP3AtcC*sI{p0>Cce_wp z($|kmZ>(bN;<>=^k8Mn21KI3`%kdm@(8!>;Jg>E|-vGk{DPYteM1W_*6v+{4a3)q< zDo7Zi%45LkQc#dOSoa8GrR+@~b6&NiDM20a+NJLG-EdhhHVE{RafI18>>p!4#s@kC3-Sv>6*=>s+1V;Xy+(fA1i4VSogjD zMbqmm+mJ^m_Ca(HHtvT&ZmYCR^@1_DV--tnP zS0~W`t_wXgvc@%gb|zI}dQEFjMK2)9vhB zhz7E$rgieL2?gV!Rn~buO6473hI|;;Rai@i3l3dHP@T-fVi5pog0{JkLMCXLrIQ{X zsoseLidD%(@O&EDmJ+a?it}-=YIWdv1OnZ?l!L-l$d$Lpb#yj2quqw4GPV`KfTRWteW}nB@C*gE^RfDh@yXHmGR95 zJ8s=aKFoM+akp`Qb5$-FymI26D;;7L7^ums^E1IArU+-PA$MT?V-^rYM}dC1h$q^c zw_fy&V9woszqOdFuTSgE7MFK|o3w0T2Y;8?Wzh1HDwWZysEK$Fjoy$i-Tk5YeKS0> zDHyVYcCZM%8z>($4Llv3V#c=b`pLx=1$XS8U55#AYybr^U{>&ZY9!Q}#G`6zrx6eb z9v0>FLe#)GHaQS$lagFDne)Y3)2|t*x$~_6ySBpvm#Tyfrk(nZ>$XF^hDNG!cWRWh`J$RnLyQQ5v&B*sRNt zcMH((d3+fg{TW8Y0#X+L4Eu|HM+MZKL(Dv>rywk^cG44_-k!e$J7sk`()v9p2zAWp zoj6iy`^um`r2g`2ebwzBcTlX-VDh#pboWB8s*#}0ZEbP>#h6(;`|6MB0br#mkSBM# zJh8L2J}nr0*Ovl@;3t$oqGem>CZOf>xs!@N{9INyVVVsz6ozEY?vlrvfSCW zL!SUlp{d{KQzhfE_iK^jxhl8_Ib??UWrF#&;sH^?vGJh2Kt>zaw!Luehr7WUsv!e< zU-c{6?{0E;NP(?fQ;hz2#V5~dlOgtVgyR5)Exi524 z4gj&Ak=)}(0N|qER8!NAJ@EE_AWo!2;=yU>^+jkjAUqgq@#>9nfpILVV|<%taoaWhZ+d6JU&>5ELNxf5{~~NyT<&E1H11_= zy+nH6E{a~1p+0VZ#J+arIxq3ZIldJwslTlJKTO4+uH49x3fEC<`bb@>3D|1vgR){h zaB_qzLljP`Wg!<@2gS`}H;l8Kt1=_}43g>U2Ov9fmXg9C3{IiT)ehGj8`Oo<$U z;*RIa#nXXUqN>i%2Bjesoe%B8qAK;4{~Z-Imqa*S@$h@H9r(ct83*kpWEs3wN=!SjiX=h_+j$jj0yG z3Zja&F|K%tld4E-X(kQ@lzxz+aHbplY&S06j_y>Y9JBjKlS)UXM0c6=JPxT2juLvz zL`jJlKk#W<_h4iL zN58b}ea^P3l_C#=&pTq{pZ8nM9r{|ly~`X(nq29AZ{dIB)HNR1NHYb?9Atk~R=id$ z968qNY4>OOEoaJTNlK<3YvwnVkMrkpt)w_IFd-iRA2-FNor-)$YJ*O7%*qVpN#R4+ z_G-GpbNMm}2^81ar|enLyCqihIwFrJRk=!!dxf~nrbqPJ82oVd1E9i;nl1%KCArIw zcw9IqZHOo|{~-g8APg8sx6(^yx3)Gg@KZStILc-4_ z$k%;2stAn`OW{3yiFXQwo7!(Sd_NhalWWDw-R}*Vb4%x5c?kwfoe|tBG9y@kE`rwr z_`$!N#BgSDX0y}w+uE?#3A5k3P`u#86g6Xd|D(v#fZNK%E*R4 zM2=BTxzuGbE=SiS90Ur7tS2%@4Cw8+-<`GP?E))MV6MG)cZ1Y5yA8h;$gX$^1enDD zWh_3HnuglIIQK6QvEb4k``vualE(bp!PECJD6BdjA_JFwtnrKKqQNmQH$O{SLP|=Q z_wDq)kF0OOF1;d(?aQ1O8$F4sc%~ZUvt+~V-U}KP71adI1j}OTPvY>Ax3?P(VvU2C zv?#{~2Fzp7OWw4d(*V=1k^S6k-vgW2l=w8H6md*Ut%zzL(g;K`p;J4*&W{f{07|!I z-yHQUzPlcB&QkG4m@bW#GI1qEul@3BYa#!1{h%Xt?0m7^Y76+8RyT}H2~!8|+twqZ zNSO?cDzwkAQub;>RO_`K?}_Ax?2cF$jvtVLRX!+pc}}{w9nDJ<$CzNUX$O58RUzgk zW`H>Z*gd77XDaq{duK*M?#Ax=UF_F?uOgR7bG)m6pPI=Rw+ph9cZWh)CBi%EdU(3w zBvT+AXf#f!kFYB(b%G7HhRB8>QZLJ@*sEwjkIY$$T}p`m^EOHmTc?!|xX*(R`rb3+ zfFBkq9Iq_nP@?$P(YUc5ST%{V|4<53q+!*mLI@pXuY{MG0S}|d?*nf!0H6GtW%YvC z;w=N)^q0BK1Sa1{fTRFQV!l9ehY_MRaU!9~$vjZWI3p^2^8^(us>_dFYH%L(x+xDj zl%-iIn)*d^qk$?dDRsxYg!H!%Y~f3|21_F#WDfSEc{; z9kai=1rcu~NP)H3ij>mY>OVd-3n<<0GLO0ce}fQEY!zz!h5!)@xx`pZ1DHQHDB5b_ zgYp8hFG>0@wle8;aUzJg*pdHCbR^a$iY3DE1<|(*To~024uZuYm@zWav|+~ScFRF@ zl#YHUgYNdo;(mW{jo>;>mM@8wvlEO1mZ0fAiBn*a49`#~VCeyYq7zYxlMqBS%SS{$ z1h)VeY4zD6Xyr0)WdGJlG=E5ZwqapE-i|#ZdS`m*+KLuGvRY~Ben7CM>Az4G*EO4y z&Hs(F6|z_Br{d;jMi?`{*6FWqvVM14_h$hebNm0Y;y4qE*lKH=0uS!5M}6tzqTHmi zDs6s1qG%h2mFb2e9^6T?oi%5_+}~SWLG+%-i34Km0lPu46@U#vao-21I098ax1BB zhUZ1v0Nu9pL3zTV;O`DuIk|SXt46u4H|KLIo?8Cv%R4?Zb(GB|p7X`)!E7#RDqQg+ zPjYg8-X7)OZ#Y-AE^hmrm(Ktys!E*&7ISqXe@mvUtY}o}X43G7{eO^V5F!!*K(Rx+ z)MD0ts@u_SHmupA;)fj`6HA=D$lM!8;6s|vC*IE(%f8@OgGv^Gv(eVjPb2zg=kU)o zL`}q-V@r4IoxM{hiJ=%@>ZQQl+~B1+!{zs@K(*fc`&ElO^V0T{!{GaSM(?lms5T$s z?y%>pw{3AFBX6`ES*`9Tm__4A}H|$wY|O#umWT z+rI{s)fl&J`&BOM7R{G6wgQ2vM`6VgxB3i}|2g^#XC5!Ut7I6^>udPuR_g4ub=TE~ z)hwBH>i5`_=pzsIC$+Mqy*hK7Kfm=4-;GMslFXUn5*&S=5XUw`_8`O|peUpMAoymb zqJ{as+c#t*`!M)O`);+rxkR$TXs~py;hc1&)gQ=-p&t)Tsz)Fr0W6wU;KhK=60s0Y zEMN<)=qBhp-5$umFG8c5TIcrRkcn4}rL_;EpM#`{9)(7*59l{uc6YSjZHAnB(O;Bl zN|g}t6etSd1h)SB;mgn*l}`PYGg$#S8o`X`BfJIx@R#ldLynoc)mj5joiuOdZx7CM zZE=6nB6!kRBVLcDqGJ1-9XD!T#NxX(60+cekpm;jylFi974qQ4_GM?8_{hY{`RWv- z2+#y+r}ew>n?*)+XVFGlf*V%s`3oc(w9G&ICWV$W?nb{fdzgxq)4Mwvr2saq>M$^` z9#$4kOL!Iy5hAI@{3Og{py{dtmYv;8YtiGheiyZ`k5Z0)TaAI$dk z4W5k2v@Pwq{#Rk6nYvEI{aG6ET1os{yyG(QC^{8M7^Y79ZOS1bOY8VgJwp^qf#-?H z60>RBu}s9@l}V>%a`@DQw``^+lJ0?>LNvuJ)hgt3M8$3tXNV)J7u2T!<$0)s^j@YrdJ1rHavlC|GAQ3izu+;OgS?}q;NjRbMWQi|n$bP>=!rMU@tYoC zs+i0E7?X~-hnw}c*t8ARMmOx;-|%y48fH=B=Y@KZC`6cj#p2?U>&u~vEAx(}?emu0 zzTie9Y4}TP#lzqIbLZ!02Tx@TEsVb$xTQAg8&Ds*R#v?{8#LKX7{Zv$9RFEEzt46a z(jY&mtP%hO*|Ty|sI6T7?)g)>vOh}BP z%f1WAj!IPl7nWsSntHGjbz$qTD~x;9(Ue-oBHwWT?)CB+SOmvCs4(4q#9s^%QH{ST zTDtYApSZhW5LEfm^!lvJAox^-OOUYxKoks4Y0KPBHvuNi((?n;``o2F|4&_U8)@z# zyI8(YW4D-)d)3IK0f0~SiJVDtGvk%t8%Zk@fD~JoA@FG^%Zd$5UjgIjXm4IaTmEgG%wPNzN&@*e8?C9P;!~+Hl&TIE{yTw9zjHI67=YZeTSCL#d>6va1^>1o{f3yl1F%sW>s>z$68o(zUq!hAAHGzG;T&EO zR%PREwPvXtSUy`Re={^O3E9-J@c;L!^Tdoql$wB&GG$KgqPHmR>Hkr59`0g+DYJ?i0C~8#gU90w1d+)7;s)pJ>ds8(lcC6Okd$0F-;}6K?xvo6- zea`uw&!>DLp7grF;dWwk^OIRC|1u5+9*}z(Kfr+{3XWeyfVp(ZA*jGix2M^CA~uat z-5Et>k0`}A4d9(Wy(bG=be=wn85r{PUA(9U9x}Z)2u@FN@({_*iC#1y%|TAjX)8P0 zPmvIDsDs!CtQaqM<32-swI*v=qNL7NZI;;4Tg--4Z~Eb3%P2&XW?6NHoqt~3D6$Zr zp5P-5DY`&m4Zl2+?~e-s2=D(yCjG_*$)s9(E;cS{ zR;8QBWA4_L#VKZzEK?xvEr9I;DR)l&+| zPmnJ> zUTYXOav`$7(e~3*Qp;kTjOCOryPQB{wvX&2=b8x(H>VhFiWxi4(RO07esm8evo2x7 z1xgHEQsH;K4L@oW7Z2DY>yx^xucIrNlxkXOkYP=oDNULl(Rz+9+CY-L7f4FbW3v&T zRw;8i*yf)5&GF#WvgCL^8aL^8@W5}R1H_F65mHO%ar|*%4W>5WCj|wAmGcUz(^ZDX zo)db|Xt=}oC1|C;(UA}q(i{Ro;1=eI&9{Vp+!dA2BFTzau5`;@rG6Jt=~b2(nB5A0ibHBKiT^)(ZL zYG5&pPtu1!R@SRj(W0w1+=_V+XIrfYHhvccx!xy}^Y=fTey*vkXlQC_EHzO~&!c*X zU`)>z_q-msxp(%sH@tuaZ17%$itD07S2$BhDDT0t=A&Lqwct8|qn|nB5+*Flrdv4i&MN5*2-0Sn;cn ze=Sx`L~rhsoul(#CWL(JLNv@yP~YfgwAjddx6kkB>TVBc4M7P9wS|r)zj2s8+rPRP zC1h*Z;i#HM)iiN)V1K?y`XERhbt>*U2WO2U;qwoa-8bORe!46Wt(vznlZWeoc={I7 zJR(K5uf_~;JnpBQ)lK)RsYT~9D=@>2|rCK z?x#!V7~pQ}TNY_K-MzbYxRa#`1%8Szt7>Wp@*=*%i^i&>KKd@tc9&A_c`teryityd zeYg`m{$q0Mq(Q604fPECvrGoeiV!5PFgFea^WiVtY%@626Vz#!1JQ?OjfWB`2KV2e z%5E_Q>T-)!@8NMi+Dt z#=+rvTKM5qcu4C|^ak;oiokXnKp2Z97L2j#`j9fT%Aa0swO(W*PU38K@@G)L&b>~g zelbb|r7yYE>9&Tg_sEO57$U!kN)5;AH#; z6YGpn77z%6$QUeI^SCfD`B?ao{xY6j!M2~gV+1~+@)S)cKci&s{EpMCYJ3KV1FTiP zyM2*1JUo3>I@Jeab{~2a%{5B-oo!pRZKT5_7bM*;kH=|^K3{+4Bn4XW*j=|mRIME~ z!jkbQ?YAgR7HK=RDlz-O!``W>Io3aHWFtcuT*f1rkhCztFmp%ZDkNxSQsm3+n{_4z4IG1P77DO%(PDpDY`|N6Y@7#>zDWL{!-rV?cFRY_+39)@VRTw#YpHyrGNIm8ydaANq>bM0=-94VH+Xw z_+1zJm7TZWp40=!8_CD(`oz36zw_yJ_M9mv)l1;e}A0`)O){t?>IOA zS5~vzn~Bx5Q1GyE;TqXEhr^ZEc-c2@HGe)y-`F5fGi+kPD~tlVP04Ql)F(47@_Ez- z*lMkpxk&W$em45h2&PO)myfH9#v_z41<2{u;}=tLajFGjKtm*wZSxCN^gmVipZks% zml!V_{l=RXoVC!^Zr-1Dm6(TTHZ_I|=p?q_r8EGNAZlK=_V)Db1Cq`{HuQ5r0|m!h zHl|H>0-)>a8q~(j{Scbk*eLFIG*5wR1A<*~h>1))P`7#gBeJ(8LJJ;C-8CoUfb^cE zA1rZpTY#DSRHLQ%#fgTPsV9z%E;Jv7!XCqp@$0tSfUCGU^w^ZXTkxY(7+|IQ5}+I= z2j&J=C&MhmpuEk8s0zVpTlb&lU3}4B6=7Xsnh6BlFXwJ|4b411eeeXjAf>}H>_%Cl zSp&-f2@shQ8p1dQRy1B0;RCz%QvXh-0u+QrB@Bg{Jn2`HiYB>Tzl?_MQz1HyfBl>b zf|y5<4Y7oFk`t^k$}AUR%fv^7WPye^U~)O{ABhCKn_zhLGo16BeH~RWjUrpfhcN;a zk`r$cNnRCKk-!KHcmAPX^EuDO^=Kih7oc(hnS*9AxuS*`Z3<|ZhqMT3VGv=g{?ba|{6%seZe5z5d|poW4A$g4!6=E;KVWI#VMU!ZM*G&u6hIKL z5UoHZ?xeUBJ8AG-dmH>YP7uhAEms6WOeKVb#+g4$_j&e5e+50|7S%+;@*o}H_>V8u zT&hGp0hk_>CJ{$)oF@J2mgRw+8Y+Z%qkhqjG-s~&zbyQxh4GVnCs%Wx&7lysEasVMVfG57!_d&d)$E z%vFyNkCT(_e2)~5+NL3a8eC*ml)ztI$Qi& z)`(+bSTEr)7G89I5(DH+$#V7_Z0+8jolQ4#<`PUa1Kr-Pe|2U`)GGw)bsG4c&^t?>+PhJ{q7!dkbT|U)%2A}nE4<0e;!BX zRpY9hk3kRHInsGd24OKwj+G%7nyKCkltDRGGa>Qe#W}tuhULc@53#D*ue|>1x1QKU zD#s?Mj;gN2?=rshJhW-OeUz+?nSN7PIaqdOX_v`!oIc!w&J0iPrDRR|Vy=b?g%AUJ ztMV4VquUZ}aqMF$AB(?#I+}5NMy(esMqUq?QdO zR-ws?lh)(%%@elnj~+2EG_(Txm0~JcytkNLEX|IUu5O@HC2{uWfWyPF=iI+Qh3Ho?Gpp-1B#@7QBToXA5r`fkbgkD zTT?pS{Og?U&hC%oPeXmVzWTKk}8RGW$KN8*dOuEb{!h`UX zu=s;z&}lo%hxPGZWbR-H9y&181nSJi5-3r$VfzPZjt;AHKdr5sw4h{079T;rw^4!+ z$S~MGgpKONl>R9wfH9$yNL>-@%0f61W644M+yL zv3=b)+SR^!`vTwbKPy4TUX~H&<8XVKFc+YYPX>cv!6qv3_Ao+2BRsS9Z@}%DAeHO| zA&@1-lY`0vJ^nCb@PQ+a1kadpV2J5rtk`IJcDmK?&VJd8x5>5-$Iu+ z7SxX=J})j;Oly}42>Gz+z`VWB>{}N^T7<}fIYe5TcHn_%1Z?8iK-lNw>i&@78zmxt`ZD(=C>S89LO?_5=DMBE z#H<{JP$_Q-eflk-{(wCt)npnJyqyl6PxC|fsfvniI09Q`5po z`SHu}#;aZ~GLqMgzDZE2Syh^~!TlOqqs!^x1>F3!ov?mZx6?o{O{an)_XCnAG3-5} zp)BOwn&78+cr5gMr3keOz^oGx?QRJ3Ee*rO8%Yy zy`oHQoSWD+e62YvPtV8_1qJ+i7!hi9eD#=hc{_fZ0GqgS zgY0lBgg_sFHH7ukUOI|qJ}1myu$n9`x?fBGcH!)+@rb=pf>I=^6%fk~=kB^>&Z(M? z*g5x61qXgXRLZgS)%RL{dnc?8dBDFuw(XLGqLhtOU4vSvWl2ri)l;_eVV< zt(%HVz6egO@q)1Ryz7C3?{0Q-G^rqCVS0nfYYl1HSmz!h?3)KRq1lQY305EoC~m#W zi63I}0h$y*o8wWb#pqFeon}nv4@|*ATc|5&3`mD`e-H{hXV2_oOqZOncDH22;}(sC z|9RL2VFiU23#cP0{76|A`ONxbQ=5G!D<6}LRG2=|ykLtol>&1B(;Da2ne)4J&taCn zvLoca@1#WLtE#4Q>phT*h(9s?8z_D-E1pK7oSL;|D78>TdiJ}Wq229JH};eQ4NHZ_ zQt06JfA6i#(Nvro)G~pP=Mwbm_SL1Q@8@;U!`>I$u2)NMO?BT&J^jl6b>7S4Xm&4W z&wFjkzIMl>vp^vC{G5!Zw4XA|+tTG{IrhY^(@{W}JxLjjUPiI1BOD7M1x2GMWDLAx zKu=$9-9;SGjJ^zKSAnvUgIEjWiQ8C+EC%rL1D}Ac0!hXd33?jEIYzA@DHAW7J%f!? zkEi4yykvTg%JKKV6+Z?}6b53!;#$6#g0!Skx!Zx5c=JfeIQU2OWchZwp<8Qze~O z50cTGi3teS)ZwW%6;6-!djMHsV&(V#`Erzs1j~Q#90+Atl99<$NbV>;7Eo4b_THmy z=39J_B71)&i5Y#L9_D-SkMXVkex71gNrMtCZEbBP-}C(Fo$pegM}95Cxa9NOFbJL~ z@fr*g&F^_vvbs8YC3U`4-;HM3R}Mk=q5X;tdlen_#)21Xcl1(1Km`6KX+W>9SS@?o zgNfA`XWzq}R%=JUJa%BZw6x^zFi`evmOPQr>V5g-!snyGXv|>FBu)=l2UXxzW*CY^A^SpTg4hKv0xEikvo4}r z&$`n~{-#&3${lxg=|Z`sJwFWRU!YGU3s!2zPk1KFb+&c}2dx_`?55s{B)U4IIl?F0 z=}T>R(p7G;xxNQ~O})wo<_A_H08HYBO+# z=+wL6NBtS^QY{?(Y3A%LoSZyLXFjj?DJX|@sQWqjlot7WvbMU|nK(OBu&&%QT=!C9 z1DMp`-Rkzbtd3UNP(0=`st=y559#gl&(PN0AAfnFG5oI=ypx@w`|e%1Y&p&DNyH|F5TaCD7{T>{d13A#c)}J|>&@#H^CDcj)60 z`mpW%*YWM&3M+1{T6GtJ^iTQ2pJr{XV2Qk_sK(~cb~X%FAvB8JGD;M|5D0&M5*xP) zZi4NHwn)o)x|-b&UONYo%I+4}Hg^sLnV#I9W;_6j8)Y;lPvh$}CkG%1K^S|@03mqg zWLpOxdEJN_{A;LEi3Th+k%OcGv#}BG*6VjQ=uW%3H^lo)k+Ygc0IOMRqa6JvX#TA2 z2Jx%yEG}hE^$VQ9st~>Jc`(sK-_DYt%iR_X8^kjqB7K0L$0t;I@yc41Ehb_`2KyTl zr4+H+Xc-8{2VPTzjqhd}Sqk`AOXvha@}OXpIUET!2FWq@6Gh3k@`y4sFl>0fFJG&# zXJgId_{T;iL0p);s>hD~^qrx9r$?2V2>PHiF9eaVwaXqn%|#IepsMRjQ+Z7aJM)5) ze|=mqp1-E z@XrU`w5@lC{e#+>8LAbtUqCO68jNve5Q*k1FQ+B2AfGMnr)?WCDnUI$eN!q!&S}=l zeaPq>1mRHn2py<>tfI@Bi}N$i9c_pkHclRMn`kgBHpGyy@>xdvtA{2beO^4o$8hvO zSur*EZLOdKT`MyvIV%PbMzDf#wOF#u?BEs0Dxe-}ZoL z%yU*icS{}wC%uOM2k3A`4DXa0-zCzMh!bsLDFzy5c+LHK9Fw- zn+Sxu)lQ{$wU|tWRSx^^Iu|S{ym;Rv%{`hR&^hI`F1J`mQZ%T&wz+)*2eVr-y@H=O z+}`BQ)qC;W-`tV6JDpikrY-Mb3-5&Qdl^r$7igL;VePq$N@ymvbrgDvmqhbIHDKBq zC#(6L3c|J8N7L6;YOg$Y|9O3(+~%dZXN}oidv)_~BT-@KeLW_5(^Wi}nx(69JH6z_ zZrGwIk@tj?G`rEe&Va6EFJQ^b+}!Yd9f;O@ANOI;y7?M>Z@$wwmGFP7?gEtoy(q_F z(WgM+ZYwypGTXk&UiZ=HWn$|!4?r_Y zhcayvHJ=PdkDOf+%S&4!!NxzIvquG5NL~Js3yb4nBJ!H;gUe7jB&w9KmrI6lu%>@HyQ+~1L4R)1H z9cA1$@Dq7cpjU9P(U}}jaW9tnZiZG$$L5~1y8}7~SgLKt+SgcTo^1B4ZW?TQ_~VJy zC&;ay;M|#gm&cTOy`u;U%u}2L0#vreBqThHjV(F$(y*EjWPl~@AB7pO9LI#SDoQp= zB=2#2U|-S~ope9L8YJ zn)o~^wCDMgR9*_PbjH}F_!3#YaC@)ft+O28%?f+o_0Spkpth@KUoZsJ#um?Y|ciG9(a^OHU5Z!3N?F(JKG)@lt1()kH& zmIM!0pRy6?tYoai+DTn69vt+QP!1WTWn_Unja^*_ovJjT;T-ZXA&xe%6}ck&ve$EK z-DyO74W^=^0sw&n7n!q$Z0)Mrik9ge*QyItixxmX%CRhr8`bNB9oLMq-G>14Kty`t zbB#`Ea7gp+uV3oR?%Ju3=+F}PGneJ5G3VP zqfvBLPlO*5KtpA?-z3O^`|7{#*z(%jCLRy~wAucO-$CXTpN*{tj&9tlUoMZ-HViar3}DaLOV-kzB1aTDs``MFW@2sCv`i`P*>K{%J1jwY6X146(kXD{I*2r ze+1NS`*ZPp9>mXZV%xrgN_Ms;OG`?HHMw z&(2Y1zro)mLAU$pdBOgAiw5>1neB4z5%U)VXtZ{_ijqab7D^a%8aa5&6mWE(YQc7>Z-XirXd z>Ke0}mmBq&ZP%=Hdsfxf)cpCe_ru|btKNxub4w+EtDuw)>|PD|Jw8dbZ== zr^a#b!wQ8}+Eq^e0JE~WhVajf3i*3=H!Mj?BT|Ci%jXK4I35Hk=owlI1x_y%>m=3x zLdhiYpF4l1^StL8BML!ck`Xf+q5hpP_S(?wV}m*qoIH}RO8wb|iHor{$khF_<>E%K z8s>+c&tZ3QigszxO>$EwB7U~1c}%B-PzF}Gs4=!X_8c3tw7#LR*Xm@^z9+oIvisVw z_?>%|hlu{iQ0{ZOC(q;{p?@zg^{5r%_pb8YSL44B|E~8GCvT|9Sy(aQ zC7D@4<`T1OLU*e(7*Q{eoqNe6p72M1ewJG(tl-iHcNF=6UZJTqHMOGih?5lTc9>%JHB zhs)+AnpyTf&*fk7Uzj9Z5AzeR zPE}J$S5PIqse@jI;;Dmhc{%}@5SZ%>@z4btYFPZ>v_iklisJ2{D_A-mYSInSuq#-bj+Kkllf`y9-sZ&W?(%Z`)&1T1;JNUfz{V<5So(mr_e{{$F;cGSb3Un zjvWwSR9*f}-C7smHqYk_9jshkPbaPi8%ss@UZ@A%<}Tds2?gr-xxENSU|fr_yQN8& zJZ7AUKtAhBhI+dxBFeLL!#n~Qu7(3`$z;^DL4IxX_hbX3oK7g56`Y4VQ0ZkIuoTw6 zI^BKu9+w~ihc2;&C9)**?`_-O%cs;O>kA1Rt$)Cg2#cXjNlgq}a;f!~h7cttE)fLD zGT;UcT0Y{oyDChr6gPM%meD_Wg(bUc$jop24ByYQslDU_GNpCjSN_RK*yjG-Y$I<*psw zzi@-o@ucc9X{@b@5j+eMZr8O5CehZ5Refwc_AKRInh7a}_+BWlQRBN`Gv(L&$*Fgn z!+YXzr;Eex2fZ;ro-f=)-d!^(5Bs+Z)((<(|c$1 z-@N_q=WO|Pubu3go>S|(_cgX6_nW5n@bQOj>|e|;OBiMV9_7A*NnW4Dt2cq_kk05W z5w6})+|KII=A3u^nB7DS)3mrcw?Xsy{OV@H#v@SMr}ySBi%fI9_u~h5?4n3$Wf~6o z@TEujEva8;Jps2>3MAZfDt{Ov*`pE^pWNM8%A=fZUV|&Mj<*DKP-J~1TuzIzszA|a z?kv9U5lGh0pNtB8Qk0#W#^~Vw5~B^=o+&-&V$A4sFUKNJ^jwGY3u^S5b$`XGL}{01 z9~@{5A5mb3MC(;c<+(Lc+ksbKnj5{OV<9Z$ggX<_)U0ygw|e~j?MZBeNvPgIfzA;< zD)O{+6fEjwXlSBanbxkqBMpx$m@itoCkw?7hdVB>Yb>166-W-3YTIP1Dk!lgcZqfj zjp(JT%5zhIBuIi4N7Eh#v)F|f)0S5A|A-o;HeFPLC4fz5H(Y9Kh4(6y=(*p3(M1J< z3SnLG<;kPmMCD^6ZT?#g%mxhuU^+(ntW1DardMGne%~j7xCdVz%o=xAD{gC1iQ)i- z^~%h|sq0xkhp;Kil3KJdM@2<3iMv%BmR_|O%}vXLKQnU14;ScKFNY{SSqw|dXO4+h zBac=U-qa@`2vWGuoP@H%h^-;Qj-wTybC2={RVF3r=qaOBurx^3H*cPD_b2}@_q!=& zpcwXDBze%MS_Lc%{pV{_)?D9n^FsBjC+0FSx2fU$a$$Rno>uA{B(0zUfc+ca^G1B7 z@e3FUCIhtb@9I^GT3h|h&CNYMdny>CQGWw(w=G&nzfIcWcK4V+*#YMyO=R~$MTO+m zsl@4efzf#fP%V|Vep>KRxOWBo5m%+#3Mcl_9>y%`rC7lcRHG3#@x~wo2?}-}e|Rs{ zWFT?Mc-1uamEH#Pi(?8(@+gDMW|xbZ!PBAD6EX)j6;K>CH7ijXD>>pEZ8dTk4Qlsgq+MIie!p0Rw82Dv?J3`zJUa{2lt!WIA+(B{*0SERX=}03nglg%e1Qc*MtrW4Wq#M?RF&&OI`{ zN*@-gx7~bjTVsLtWDhz#o{8nYa%9FIJCf*k6Qkrqc*O!%OTDtPLCxQuJH+kh;ZK-a zJuF@&?p0NCN^QTES^FL0j$huX^2mb%`;mvI^u+V1qIYQE`3nKe8>|ACV zb$5M2U|iB_HyCZ-nCF@S4uYE-M3khbtMnKey|=H?2g6yO6&@A@8+VW+!D#qs38UNCehjZ!i zM3qd=eB^ST3)HUESh(J~+huO`JAGz)3~WaHA^r9@gNq9aLV2k zOXRIg-DsPVP#Xy~&SnTY)+w7w55^)hTkBJ=avqRgsY(U2X#^xfmUrDXBIE-arKhj2 zMvVtWEeTrdrf9OHIkqQ$;~`QA4oJ|8DED58T(}rAlGhLv75(+Baqa|-VvG5gXH)+! zDqO`IC@kgDWMOZSA1lrBMOnZvDTW@Xs9(0h7t3f@EAMli*IO9<_tL9s8j!=;nM4VV zIy&^LqqZ7imQK%ffE+-}b$07{sdnkk6o5Ljjb>tyxJWt{AEcrplyP;Ij4BX~NtWM`BOZ-_kV5$o5EKH8 ztL*LVJ>9`IT9^-yj5szM<~9rW*QXh!;Yx&m{#8srH{APsPmQI}$YUkh;1#n1BWo0# z=yy_RaqbP;@9y56CN)viySoEkzth7~DJvm22uuIa$rGGHJm-~!9H#N+!Wy%dU#2xq7H)p;xABnC) zm)cv9FEUA%x{OtR7iwcDVxvwP-kWC>bo%I*Dg#%Xf)p=zCqA%PzPYPcO-u8(Iav|V zRlN-=_d^>lT+`n5w!Q$8aw_vfw7y3?xfjh+*COH!k*dND>C@T;da#p_IWCsyFh}R^ ziuT)sg9?#(Z)LDd3G&1JsWH7zRNUN&a#OXh!HE%?NH|-Ta^XWRV+bku=?bZUV%1zH zOYDN5QNgr*%qJ4$ov?`i z772oaj4noL;ccaUX9aGJbC%;`l*wEu4n33T4~Vcu?pJAPe3OGnGmh||*(!`4(K|J_ z0r@KVO%0X7g(_^!cpx@|F0a^Evm)?K56o=~p7m7Lk!nFrt*8x^)A4zbWUKqm4CZgZ zZ{xeRC$BC>nXmU+TdSJiZ!?>wB=(&>R7TI7dYU?y;J$z8NTLCos-&6d+1D-#)rzTA zqtf^>LMFs$jzdXAnii5r30!h~B9igOT9?rO3017D3Y_(~F^#loUZ~mih2I7CZUyJ} zdFhgqV#bvp^=XJ*T9;e#t0B#26e+eE%m+az@}Mi^+rU)@%A{g^ulTC=Mlg*>+2+Yq zDgc+sZ}>RJ!TY9E>T<)zq4mO

zXFNP}Yhyq93BFouV!t*}fQe7g~{+8oag;o$0mT*`L~cv_BpZW3iB>F~4!CJ>A{@tN-_3CXzke zJw7_z-#?tB&E~<;(JU`KxsN>Y_;0-OseZRpmQ}0S$kKSR-~Q~UUwW{6JUBk`3@%?h z^}SbrhQ1=Cx;Bh6EkOv)i6Pn$YG4crks*e%LlAj#CO9c61(K6OGU6Ws!-e)im%!^6WLfA8DB@#Qbw zc(D7%JMWK*(h$@nDyH6k`|X2`4`xNt>Gsc^J(p$K&dzpS*J+x>aop>#)KyjFvqJQ*F$Cc~nbS?AL< zbIt}rVic!gW2?hc5p;8Hv zBXVK5WNiguYe-B*Nu$+ODh^|)FiYVesyz3I-a8>=6lG;T;R1wI%WLNtaL&P)GHW#B zC<&Z00o*yevvq$iB4iX~kDP8=4`{uje zR?ZsEP=E@R-Ech$*fm549Go}K8jy-{hKOw5djexht)e7JoVDov!t(0cg=<2}vY0Z) znyo$uUY4^+>m*Hukeq>(0t6^A*B#E)EQm_VPCE<4q`IyKM~4i+dsY`yM)vB}#~-I}_xI|$iXt_g=1U9RorB@t!Qf-hKDM`icr=_i zTi3=CQCa5AR-1_K+S_tHx*-g~eqKpqbU{eFMB-+nmEuYT-P zrz5^KDPO+S|JIF7O_g(QTwxYR#?w+FsB`MC|KxwU+JZ+eUw-Yaw>7ZBuqU5!;y~&NS$H&9E zuB1}l86p$_oD&c39i>n7=#FvDxMz%WE)g9forre1cf`05ToPF%20}67I?i;G60$~b zq1jvFM5fL^?0W-%F|`mNr5FqbckkZ&(T{%gwXglo%F4>6OBdgL@0~b`lQ0@zj%#ZEtUFZa$3T_;-HiYdVg<`>k&s>~A+OKYtLd#2@=jdHIFK=RU`; zd}8erudKZIh3>g4h%`Fh+qrW)%9?-p2fx3&v$MUuT@*!{HoPtK>1Z+;bbI}!#ifJ8 z!z4|LV(Od)5R6Ge3OTyKEA-Y137i2Ud5>)Vegp5oIyzZ=l5-BdEA#1Scwow+Dkj7@ z;~v6!8UQ$(6I6&HXI$!lJVvQ>k~YhH76#b>0;D8FbWTVyH%_w?+eUz~d{|orj?T}g z900_al8RBN#t1|dffW>zlmHO=_b1KzUxtwp@?c07LZC;+nGlk5!GH@Xq)>Q5;tl17 zK)VUSOKVEtAVBIkjkA_kafp@&E|?TzG&nF-LFhwVCvLVG<53(htgZuN08mv`nr2ay zgb%8eE{c5r;T_KB+l2swWQ++A;X{FtQpIVb+3YTK`YSJg;<;b@KPNfoBDXG_A_gni9Ayt18c@z^UDg5-m=hxzJl! z*+1AF4hLoJjN{W;F`eZWxsYl&7>}p3SzZ-YO~`}+ z)@o#&({x(Yrb?2yDyyn20C=pU*(`VS867M0iAN`dnvMpIW?Kk-xWDOb6{VT0Y7n5J zh!NLODs}AY%36bHIb)_OTfN2e*Pa^gf5WuT3V!+c!S=*t3r@qKDfD zU;9VD`u(51BZXLBU3%itvp;VT`G&(wG{AMDNFgqq>+bET2{?LhnYSqs8Slr6hnRDS!p`59+R?izlQvYXv z_+Nbai=VH&_9PaUP8a#ed5`4cBug8qtF5UktrZ6E0z;49Su0g?<%YBs?*rrUXlLWp>2u@5o$c)n zsnb>*edHsL|Cj&lKfiYM@^m`Q(hRsnBqlfr9rQEKI#bstElSBa0uV7cN#y|{^W-^k zVmQAHGLTAf0d+BzQg~;asdb!H(=lV1HCjR{?+xO-KMw!_BmbT6eAimDva<5)ul)Mb z($e+o*Uz3kcW|(GcyuTQpN+?Z#zAzC0Kp&} z;Th5#8tknlLaj6FYR(UxQk`HCi81AofSh-Zog@UglpYCy5n||h zQs|~yWL$v&M8p&SA7cn0k=)$op%e%SpoCVO5#yeShm<5|jB$b9xw_`Skvt=ag|ems z#-xzM0Lcp}KlHoK=?O^aEzD#1$T=W$0D=qYohLzv9_xZJ^oY%N|JtMH{`z~rh|_HM zaBz6IYx9wH77-Z%fZ{AvmXOU!nG{SWwyru$r@akoHRjPW;*r)2$<)>2sWS^J>%-AN zfQX_bPE+z|tyx&;2XKxOl7)K?=hoI?oaG%;GD>18m8eWH8Xh@gmrrMnG^$eBXf}t( zgGRfbbr$d5-!OHpbrQ!77uosT|+R+oFj@oYSq z6=fxa$kNyorg3Zq%sv*;~8-wfD|J~M9v|Rcg|`Zqj!V|B2tm=cA~1P+pYFuzjJSM*BEDQ z&5-sEj;q?QFD=~JI6TOvXHWOjBtg!db0DBBt21k>0QAA#ht4@h=)ENhg#=gEby4Kw z;gNS$v)w&DcqoKG^dOX0k#n`RJc^=_7joVQJ&#AS#v*#onAQ@JdGvrBKrq6h%%doZ z}Zzn?zqPui%ROT

EE>U{ic4DAG|JB?)jQgv?r9Ds8!bi^4GLU1mlB#V>Ah4s}Rz5d>f+xJ{u z6X9rZ%+Q^9y#dLE>r3cc6Z&uq^WHBmuT|yDloca(GC0y8b=K;ytY4VT#)znuRvN4^ zAZ4S`neQQ_Vw_14#DByHh?sFE%i=VN7_q7<$D`xvWYXz&*Vj%*itp__*xlL9+6(>V zwe77UW#%R(kQw@{POu`^Te4&Mv?9_U*}RRut7_Ry_aIBh6I5d-EOa%FYBGN#>I1W;u@8XWB|uAXT%JI+~SjWKm?Y9FB8-amTr?B>Jm z!Fck-)eDEm!@+2B@|9#&SqLffd|DOxaIhyp2qDQkBxDTGI~`@Sa&r5<*K4Pa_8v?I zgVFFP&u4Wxi=u=vsH!qfA{902GOw!{appY=2}&jC9U{K;;>TwB?C9vY-&>f~hCF}d z+Ese+?*73sXWkc+WO)r_RBhd@4<0`J!N2G4e(#ened59P-u*lGn~kQ@DMRz*)6ehh z4W`pcUgX|66({{p>(=cL7@?FhNur~}twihXtxXkaPWZ;pf0SfRLhl(XX49jC{SQ94 zwfW%wcs$$R-@A45_BX%zjo06LFE3{bM5B>?=}TYy@|S{;rs{UMBKnRF+wj?BxJ0lk`j;ts0KguKnO99@Wn|q z8Bg!uzyDz4!B@WWl}PK;Yo~Yi4|cYYxV#0p2kp=Fy$#2N|DZ3M3~$=DD{-$T)Y# z1PEftC4tb4p?CH~kizD?U(PuQ#>m+kAb6s|nL5mBf?x=d3mF=l&N&3mwGv9jAiz|G zw+Z}ryfuIv>Nf2BiBIg2$ zAgp%-4F>)E3c`u`z5nG^PArNN&SjBTS)&=p znsE=H0%T4|A%SyZk~5TKYSYXzEv0itsTgx_ja^z^?zLN!@#wXme19??^q1EcR!$ur z?3%jFnw@rcffG5RB#N79?3`0lG@_IPa1IhAG6Es2Gl`Cjr@+Ct4iAoo5@4a%>~~sw zN5{v55pe3Zx@DQS8VSe#!C;uBWStG(oauPPL1-22?QM0IPE7{;#?(q`4&YejP3a+0 zG6F6Lc-HRZlaVtOV@#_!Ycx$+b$g5B!J*)y+3pn6an|acUg>}C#TWkP|MOp7I=}we zm!A6Bo9_xCto6p)$FE*VBCrmL@a$^mtwax|Bu^li=zVQWI72YT1*pK029QYs@T7$6_ID?bPDI17{kB*|Nif?x0My$5M5+0%MJqTEJx<(8q?{r#25o2v{Jhe zfmRS108pDBzx8(X&0x6I>voI0ID2mA*&EM}HbiBg{4{qw+?wau^pz5n{o|M}lPx_^6P`1#A1u042gcRrsKMTZFI zi%GB7-P_xn&zD+pZ&0AHwMEm`Agsv3X)h#7U@v8nH%;(Cl2YNPWOWINj>zjRueI$0 zP$25)oust2F-n^lVgjpkO1p5BG$2jdAd%CNCILw5l1mH>=v`~H1p@X?X+xxe==27( zR-S@DYEq|xIH8Imumn=6=3P_9*3()*5uubH7u3dbaEOMCMF7_z&iPfByb5_us-M1}~H$pwj+hattD2y~+f%o?=T>%35P1M`kwKWMyY`xWAZ=g{5s)&1&IR%fm|_O;9|rw^LZHLlA58(aDk4bmj6Th4jI@KhFD`J~Y*0eEo&bHFevxt21Y| z%ichf$&3vgh*ax5vsi1>{z!`VmDUDQ7LNLy6p63gK(tMUho?d;8&uQ7VZWjZ(Mo-GBLo>(*G$ zv1$Fm$)r;hqou1`U*rWM^JIb|3N;~#1c9`j2O);YQGlDeIe7B0T1?f&E77+k6d@X$ z$KVi2fLYiFf9kBnrfG-$vamKrPEh-G;RBN9Elpilt7GZm+3Vu36fwSS}`Mf3>ZBtybM`Uv+wj#2kUxM=6vs%4Xf{-Su{U-?CDj|q%bgp&%{zl;FToZltt!vb>DDu_xBrkd_ z0a<;bR$g0h00j-HAi$lnK*(ZrqtPhFc>C_{KmF5xt4Z|+WoC<$(Fu#6&1Q&rW_#!I zSUxTcZBFHs5+nE_D%qOn=8 z->>RbQIu!*c2ACvXY=K6{nr2d^2;wNrGD$T{-?WlAN-@=`QL^weg0b?Ki%CJZfcfOomzI^rZlS3EvOV7S? zcyM@h_{bD_ndOfjKHS{g8Ynv%A1eVOAjB90M2|{|aE#IDk~st>S;yxhYMsi{v|Z2P zbe@ou;cK6U(#n{0sR?b1h=P$r&}aoQIG5$!wbYbIYpb+2SrJkL7a_|_*ErI~`&QQV zXClB@Bm$td$1rlb44jTcIMLtJZo1aRCs%=V+g&pS*6!^z1VIF3fCw0Z5O}4`d~(bZ zWALX59MM_EzU4LU1`z>B1jyAZQbs9_i3Fe&vk;o}ge?|xmMDTnRG9^~He><jJD1SyZOz3|zu z_cykL{h95Z;c%Ndgy`!w_By?)suxwu!U9!NMr!ScgKphAWelbrLsCU%Ba4rLg#bw# z8cmmqmcwE9xvQ5yx_hr$R=rLcVl2yScYEu2G$}JP9v$~LHjpL8sPj&2s+74xRBbgU zLSu5JGv~dr5}h+*`@>CF_U0!C+S;<{jOLT&Y>I%r;cz}V5ddX!LHO?LZ*@E6bhh}* z@Bi3ZtF=~I2ju%2UFSt< zZI*TVu3iN1iOATFLaLTiBAU#XXU|@E=Hi8WPYyP=cDK4_I-b1u){pltUNt(ub8zzT z&IcgawC&>YWH=lQ2mQKf8Q}AudA0TR>)-p{mw)cxJGZyptQIFH%NV0?tE#C`p&<>3 zqwxfgeL@=o_;z(>@6zRGKlQ_J|51^bD|eFo$)_DiVFn4UB8%x%5+B!tQyXSx9 zZ~wxoYX9(${&=}+vW(8|oqhWB>Ft{zRdv-i^?W|Bs=CuDJDm;@rv-aN)P@$zMcX<; z+S=ZJ^Ub%LrjAj*^7XI&$G`T=Z+1Tw%g$(YBDTDCeh-@Ebh&K3pU!5TvaIVmM6sF< zW~;&)235OYwT<)1_NRY-`N3PG(bHEx{e@4x^2+^(_h-{FDH?8Wdyg&n-f+tnhWDR#P{rc<4e03=ak((E?9l41y?Gg8Jom**yl$AB^ENmKi2eK@9pq(ns& z0vjWM;$0PdBkR#ZVsn9jAf+9+v`NJ=`f4#n1fz(Mq96b(tr<8CsiH(l`~(3GJ_?gk zz!6EAyh8vfv`$LJ;9?A*P2_e_E!(<|A#eOsNZdXYN1TU#^y$ zn_JGc-A=JwEI}y7(6htCr;k9X#pE!>bCYqNNGX#UZK8L;ARz)#HqT`t0^=3qdNzRFteIj>L!L5^DGOBA~Q#6>ZQpn3rXZoS$y!`>*p_A zyZ!zfI?K}XZSsC8r4ny_-4%uOi!`3jL*#_@*IK7YZj4crLWDDC&OKaAg|KOs97ECR zYHgb3iiMTd2#}t)vNz<=B*Rw(iou5vnq~!nWq-5Vzcd>iZtb20pjEpfZFEs6rElK4 z)$5ku`0^LVOSh=_($yV7EVArmd^{bGjO}P+jb0FYo99*Cbo>2p{_NNGpFDm4{hQXB zYE`pm*R-u~twrC4VZS(hLP*#&jdxrWy?Q=ft`_~^l_^l1RL3^!W<^J3Hh5p zw{G44!$0`Fvdp)4b~Mtn*ROr$%U`_z;9>M3WvgynzjpcZmDgW?{qdtmRb5Y})7f+q zLhSW=M@L5?w0TiBbNlQ{jQ+4oOY3-X@ zkpe-bOwsMviv@saZLG;#R{@|fH%$$M+L%;&E3Ja}b(pu+Dn^G$#^xck-ZiPQV6xn| z4G6QGI#C1!L}>#tlGe;2U1RZ-nF%aF#A)9Q*TEDJKt+kFm>z5I#TZOu;2752T^1%% zF(i2A`imu`7+4u1QlxAQ;nb3$kQfA+frvuzA|RlNjKr9A`ljgMUngXcL&O}*PA?t1 zA`B3P453j-AS}YsHKH@6l`#9*uD|chB2ukd*How58N?iduh-gZ(y)GG2AdUxD1e?r z;9A#NauApw{&0>CvE9Ub=90 zJXtIjOKm84f9c|dx88cwWO>t6NGda?1yE!-&1JMPHfQGOYmSjQGGktL2sHqY4j*2A z_OrciFDrXDKJ|sn*wM*h^uc@I?e?^>8(o|70lT|r51#HPp^q`DEK02{A{nJJYajxl z%;rnFu){2?s)|-+nR)p5@z&OMp5-CLciz99tRt;!2{GB=>eZst+sw=I(Y=q{YJ!B? zY6SA$Ynun})3F{x2*DBJY+1FfBSI0boNt{c#PCTf0Wos4goVvpr3I+WJ7iQ_t)hqm z=nl6MZ%#l!;h=XWc+XsV*8-^~RH3buwyonVlWH-xS#jn1OKoVgtPH;0J^xHwuO>(P z%yBxMoY~&qJhStu=P%!WcrYGMtTEoZ3sTsi{_Z zR%lbS^$Ii!3n_&JNQ%J#Mj|aB!cOTtL=4dZ5>o2lrqF>0)@Zag1^|Pv6ep3nzk2Iv*4Ko2v3>s1-JAFBKG?r>@xruf zA0JP)&Rt-g&8it0Nen&)NuL!lD9&wu;TM*7-~GYsuUl)4)ggEvoO8Zz>TB1oRCPU{ zuZ+=IS(>bfA~6DBCcq#-I%7sagXFcfp{j(VDCK;^oM?3T*WRR0f{*K%H|P-k+Ej;# zs6==zp&j0+GZR zqhB}01zf!}S?-!8GYChb1Pl5p2m!5ShN`JEfHfpn$TO zQWgP)BZDYyl{NyDGN&Sulm?`vADPT%F{If;QlzQ`B3~y=5r9xQW&0^{F@t9j=D;!V z*>hL7ws($?o|a{&+Z~8N(>9$>*BBd^jm?sBWpiiy*=Nq*el)5YXN^izb)z++j=Y@B z781g9&%U^->JLA7_jv!I%1Qv}_Xig*UKpJm`4E(`K5z^%%d!ys#&FQ@^-z!$SZn&d zey`UfrRt`c%`0Xpi())mPG?I1PB*#bvh8<@qOicCiLA98qYvKsa5$Qr84mV#w(ixn zYki*C`C_`Uwb8cRG|SY30+8UF)cs&)Zd*V>AV4rSN27~Q&t?TGB^=vo_4oh7UwQGy z*+2TT*MIc(yUg79Rbuskpdhd?3iW#3!$TB~F~&vZ$CCvJ&6c%`@#W{vp~gYKvwv{B zF)ZrEikT5Lh=dTo^y%l``QUclwoea_|IXj~`geZtR^2F(03t-n*gVUNr~CIWT)NS& zrZEPkGXPYIn4n{nuBk)$wR-jF~T%t!vwMS=B2_sSJ=1{CGMUY;5iCKXSn-GR$DCeeT9{cRzZI zj98oXdzwWe$Jnk&Q^G@~14QWz$N~fc5@rw*u^|c)Ds6-jwTf$TCJLi1b410_0cfL( zbOa$H8B=z8F@`Mfa&U+kyi>~L)@*F=I3HGvS?$}|YQv~PXCL~ockZX_4aPR<3kV-)7?;714!8^in42U zW{k~D>mylH7+WAVMNt5d*48(TK&`ZnAreX(JhRbCNa;K;h;&o0I0lX}D@tZYz_zXs zk&^2)oua3;vR0&oBPtDu$%2iL&KgOGhm?-|#H=KkIP4$yWkWjfTuKIK^9UPMg9@#RIw<*d*?!y8Sk6ra#nPDZQCS(T4EX_ zDHZ@iMMOX#j6_M>``2t7B8dUD5SidT5}j^%VOlLnfQR&@hQOcfQvh%>3nur7cMSk) zV~`=Uxyg#%^OrZz?9FDAvgnqbUenZ(xhTp!%UujvZZ)aXk-7TEzyBITREWYVNbGis zwqAPQv<>7o?``Btn|rrD9v?r|CMSj7FE=+gjV-Ft6iF*Gk)yFjDSG9_m-cqImdk}P z`R)6UX7kl#z92bXk?$K&P7g&5y@{}v(^dEPibUsl6@hmbXb%CpA# zs&16RMb#K<&TMbozyF93fT7pv42JpbTcfh<6rJ6J=toCST+=9Rf~!H+X<9{V&{Jeq zT6c%r{r<4*^!Ij#n}g2t*Duy}egDz^d^XBU@iAy?6cMnHrn+v@HpXPO__NpEdH(vv z!{gbiaihudYoEP7U$tj}iwObF4Z#_78?#46s?mc+&^vRtEPu}^-M==KHomPrN)Dn?{3+sgp5%iI* zv6^r(pL@>;DkZ+E)%?%@h9RN2DdK5e5&65Ye~J=DBYwL;*6+wah8m!ALL| z_7vF|gLBS#$1Eo&C*B8R?Ee1a(dgv0*Iv_x>Z-YZ{aGUYji3Em=L5 zX^sJyg;@h2l1d8j)KXtl8`o8(I@M`%2tIYsBP3Khr6DQ+aAZ=-=4De?>3yQK21RXM zkfmZl!Z1V@ff$oe`jenNN1t5T$*6^Z-n9s*ltxmB7=ovCCRWi|{A&U?0}{p_G10-?X3B%mPS^oSfas6Kk{n zaPw?`&~2&}0F<3h3|?X^J6$4byvy=DRdyN`Gmpp9JkKRSj4^O9Rx4#(h|OeDFIJsi zVYdeRPY;)~6A`giBZ^gn?VT%+9zUvEw|C}@2y3mLyLPqTFUzdB_hA42qsQJeB|^Q< zlvc(Bty)rMx>!DVdYl{k%!NH>{`s$b=Jx&l+xMOzqS7=P&j$T6w>pvf2+_4Z&&%1o z>Xi2E+1-PqYMezxe9aZ~eu$yM=YF^JP~NF$*Ay$kFj3iy%PVw1cksxi5e2AOHTh zw}+kcyIYfa!yG!fx^{8%WHNv2!@JfP4vYXtK7Q}YbFYLL44YJ?GP85eT3xrUt{Y8sGMV>!y|e_5 zAevNnqrd;)_PI;Xpz67%-8ge$xtNFO=SL@HcOU}QYQfC2@u;d-!;LcxvRX_+Qy1Mq zQI_7-90D0?>ZNlP5gKdu_O{;p_{nfkeEHSqe(?I+x5ncvGo#TF2)kyPWo5RpX*7L! z=P^Xas1D_|y-f^$(3c6&Y7woeZZ0EIvS zQ3^HI)m-aRlk#nS<;E)l@!swC>(#jEZMgOTB_e7Oj$uWpd`Kca3ehW_*fNyv-XsV} zOhSr~42KY7Af*y~NomW`vv*3{L}&MH<$YzcEQv1wpsE%{cZ;-ALC4@k&KPQ zdGYw+Bk2OF1Hu$ugx(y>bYET4@1^(NjcOxBf^@ zbD)uZW=&d@2LPp$OUNN2LprBI$}=gW^Rm}es~B8XlpLLRO%inoN7Pzb+g4sMXl;G) zN@=ZijE>aBdpgpsFZ#~#2BM66Otlgj(}+~LK$0>(f%Yd+5E|Sg(0FeYRjY1V7v2TKF8y8~R3P=pzW@XXouUVJ^074)khPG|f z9|mNQC_s_pnqaGJ2u+NhO#vdpE(B3_eT%H>ItCw{CxsAMC|L|82A@`egxQ!=i%3F7 zc-QUrVr=JAS9CfCG&A@ZjLnHq2s2|1CER}!gCkOwI=MbZtthvd05~5rYdeGT^2G~J zk52aQeKegMX=O-)Z=272`R7HM+5BK{_nZLj?rgkxK7mBP_v*6WtTevdg8xeYN^ ztCb@1uDNjTY}5Mj$&t;o)pD`5u|Zksy)TQh)9WoJM=ml5viBfDS|b92Xp@;dS4x+? z;rUB9BFEdeZni;ow|d>qOExQrge4LH0)`ktgaEyF)?^_#kr-SUPiKqevdB%5sbyVl z^g8z*ojg66|ME9?oagy`Q5LyUROI>VZ-4MJpMU9%w?7Oaj;7OJ`}e>3$AA7;tJPAG z$@8)(d)j133Pg6!U+(n>hfgShEwe0dswD_AGoXYJtj+}R`D^E&K0T=H|{H{_F2(V}JE;eaSPAj-D7z!8?ut0P-RSrFM5Z z-~Hj6_Z~edioz&bOvkQWB&|ZaSy}^4Jzp$bhyer?B1dc+XO$_-d^R1AC!r|2%lSCr zkpQ$(R;eb2l>nQfyId`py;4>{bXF#zn^GxFtwXBAaE(7ffmCJ@r#KCZ0Fe=i2r5Yj zV~hwkxR}TdN*e)DO2z0xTWe)}vjSm}WQ)w2YMKNUA`*PiDbS&aqj%0(+a;p;dfPx!roaqe*T9GDWvwS`q?caYGIh@((93C7^Cnr_CtZUaBY|N)8u65OX z(lm}S58eYne=y9u{l)B1Jl9RFXsxk>)C5j_U|^C=NcfO`5R9wKq#r z8Z==!IR;5Dmt>k&CYiJ(If-l`!gX~5g2og=5Q5iQlTpI#T_jS*TALNjv90R>pffTi z&+@WbEfTOr4>INu*GiCd9rr;-`u|O z^4}Pp9Aq|AigKGTRtsx#ZA?-FTcv5exB*cjGLo<&^4^PxBCC~Z+t$05gTMOB<*E*M zZ+$cwA8=%i5^%!b zr$*4EPi5$sSJQlc1R(ih(zy2CqXWfamHzT)U-IqIp6GNgAUF$i znXmH9?rwJ{^VK)L`11KP{r!{0d^VfSW+L*!wex@V`g=-IZnMLaY1?|OO$b37lb7A5 zTI`&?=-OtrSg>m!+B)hyCP`(Q)sj@Lvs^1Pn;dZrh)Bw$?w`$aAQhRlu}T})`Um$v z-rPR-=)v9L#-NRAG@fZ=H_z-<^Qm`Ds#!?qO4+9e`y3-Fg6KE5cZQo=qvN)zmmtn) z-MGNffkZ;&z%fQaX__Si_sSypaCm%jX7}us3m5hud|VnEWAM>Q6c9j_1?OyDj1C?~ z4&DBCTTPq!7*G3AQ7r0Xj7DmtkhhefCwrQ2)1q0>2wicHk-WZ2Xh& zb#J`f+1i5`I0okf0*BxUl_jZXV@Jwj-0Eh51B;}7uXjztcR&8q-#NMY&Z{pzd-(Lx z+i!elYjf+&nXR^+DP@ihpNvLFA~2uMo3_$gyQcC!HlYpySfcIpFh*-~1j;)b)ncBP z$iYV+lr?K0Z@T)!+R_PpdSpc=tqpwAiU$Aytxeh_0>ss7l{(l$*>VQu!%))w8~ zu+#15dB;^%^j;fFsBO_RHuJuAO%-DVgc#%LMl414%s$58U7M_ufJ$pifP|V*CH&2L zOBP5eT`eZd*$DtDtzvX8HFlU`En?NicDub{r_<^8hrPjO(H&%2uPg`MZr|vPkPt*E zqjiSJr`Eq@e2oASoXd+&S$6ZH?DV&a{xIte^0Kp*0wO2<9iiGidpBN zx~a>&NRk0%v?i7Q$AUy&^E8uGGNhEfvDP_1o6o9xr4_m>;oP~s?Kj?h_xAk^_j`PlXMtw@aLBguDF*^U^ z+@&N#^@R3V6?n){+x3mwF)~$rzp#Aw+{lS&0;a@ z40R`6++xxBQxXLd;IS2-}~P^=kYn8_jtXYFUSiI+bA`u zsbtt?x0}`R82fd(JmpdfUB~LGRkq7ebV%Yo8#B-P$v$gCeMhUh7gJEi(tB z(GXH-nDV#LmYIf69-5}ZnTm*wJ{CjB9=pn2wtyJAr>JTEaU(CPOM=^*G>n)`Teh)r z-^%ROPums|zaqM?G61>{wu0+#*!5Uo@UdBIc;mD$9l$|!k-VO5?%g?Ve z{i`m9O`AR$Dnsbf2p_DVGojz@cu9eVLw~s)OxpI{4@de+Mq6v7`9vYzvZKFsH#F!+ zW{#M*Om2Cll`ETh$JEN?<}^2cHN?Hg-09*FSr(ZpLg_qaQlK8S&6*Zkxm^f zw0?nbyDoM$1`h3i`yu%U!(|_c_iUZLy*k3VgP}VA>yY|XQF-k!D(*O+#?)JkYzbQAf|yEnqL=wP|&Bn$?TC=k4z61<@>p^&&jjj|byXKCxO7 z6y^e}c0#7Jvi|P^4oD&?Un_qqz+MG!jHn7_S1mu`Z0BkkQ@3t7BTs^Rd^-d__TcJj zgonO)a2rrnIaB?zl?2DOR}gr{eF#Xn%ygk^ymy=BuTScl*4N%?68z@#lJE?&Dw0-F*>)h)od^StM` zc;$X>rquy?Kie%GsAloL;dmo-9r(eGfuW8RQ?sYV?uLrc%W8KLob!D?QinXMvq>m) z(_od(LHt@bdR3$?yzqIF2E~#XjU>0eFT^ILvY>P3=P1QhZhU6aL+x~YgDlbFgG=#A zZTP&-O<*mI-rcJ-2B(EiFWKeq0L2hRTo zX%dPT!1sw**^0qw#l)!Cr6|Zk*NhDW%1(>qe{aKc);%eCo|YrFO&;@ix3C0w;$)r- z6){u+fZE2{E)Z$MvYQV$k}R1#G*X5dYBCLhFjSt|y$yPf&k#j5sMAN#$2T!SqzfV3 zke+Ys8$ZL8lWqt{z9#8qG@9|Dz*Z=yXv_bsV$5R)3|SNwOV=+-ZvJubzN;pp0*kY* z9|q)Cnb@kc*7QM3@LNbger8||;k@EabMk@Z>qlAz^*_Rg?49p&NDJ+^XN&Ha>M&U; z=~DL(fh1ukYYVcK6RCE&lTI&jL zQD4I-m6PX&5q<86ft`5M+3fal@J@P%SuYC{J!j)EG+Tp0amPT=OtMbu;skfur%Vgi zanWotf1_|~g9lpap}gT`cLxCK8`mfU0O}h!B4^9r)s)MhJUT<%JR*dt3jJwDoOhF` zE};2!=iFs|5U4=p)Y=^>h@910z1livu5&0EcQB}{*gR~qc`h@_!}v!1m|LWeCB{Vv zi)B&7PckUd(A(N{kN%j)wm&lr+WylUMYqjwYsI|u=k~}JYQ3pS_Q7ky_1fe_Ec3Q3 zqPgYk>F6v~@cG>7#ZHZhc*k5+-|4rR+2L-qhayRfx_cbFKzFrNeU$Konw$gFPdA5= zT}v%GIA@>3v)q-t9P@DPyw=V&&R#7R{D+_~e06fzYP3B2GQeGEM23{KxL@%z=3gs0 zpzx5D*nYj)P(EW1I6J`&n_rwUKhJCs>1zt735lmWKL1`hZyNV!;~<`n{T0r{TEcmw%fE@MloC?w&ZX2T%JX=v!%XF9kcEia zC4|0>rT+OW7Fhm*SoFmTKiN04G|IonruZ589>0!~?lq9PPePdbXTQkniCfgyK zm&;N+eRluVnmAJcq%$#Hown1dI*=L^4{9+Ut{*U z_T9}-GV*6fgpo^kACKy+NB(^%v)x5fgvM39&8JUvLgv4vJ2&k=m^@vH=DUHmWA8+L zc6KIZnC)uPgRx@`@tLWUobSKBc-s4paDKz(9fs$$&S|TdcSr#B z{_Z=sN`*1w9}ULgQ??zvq1-ef1JEh{?BzJ1Rh&qv*G*2UBsI15;W+A#+@}N2E$=Kr z2h44m2KEbF^u?c2z`qf=nkfM8O9;b}z8~E!wc|1qFVtgR_4Sj}cERz_G#iX?WsYW* zE3Y2~9IS1VCM=IQIC3nPltPe>__E4$0JVZT>hmYcLV4-;h;r_@pAa zl&6&$GC*4*xt(VhVj~^xEk0%x6~py7?-5gn8RfXIb6Zc9MIvk0KID_8@R_*!fr>_b zuxMoMp8`&`K?RBhdog_Dp<_dT?c!#ON1Oj@?RFwl0}hO?6s>}%;!<&n_CjVau06~z zNtrAGEsng6Rcmdloop0bXG}ZcIyrV{Qkar)yXZ{i#1!!eL&$sutxyoRec|tsbnLF@ z-Y21;;yEHGxkKureNprHmIFG#_!H0m@TX9oWmE!4>+W{^-EAsj60$++)d74$|Mo&+ z>O&YG1u?7GY$&T08g{uB5KZvw{PG`H7LEtxYr95rq}c3Z*e|)T9_)(^PgmtH_YRk) z*V1~8hJyxb7=o;?bw9cXrn|`74`L@s_ z6bZ`nchvr?iIEj#r|&IXfD_kO*uDnv&@&*#$DRMVo%adEi+)>h?4qZa*pF2}73^m+ zR~PB=+%IKim#R@3lkRD5Xn4-zd=Qn5x$5$N5`rQWj}`N`@w1tHXXAdJ8BteYReSgI z?-w2&BH|lIQ8D!*HfG)pqu;&}sOBgPR?90}s( zjb_b#H&qmViL*O9-&g)j-8Ng*&{&oJcYwEs7p)wk_H-=wbbX*6|6u2gP0xW<`-2sI z%3&*}QnhK$P(X#otFG+d^0%nOv#ds5hJHsB(n@Q-PYI*-+0pQZKL{+UnQBLQslC|p^dige>j<$Qs>yCn^>8<_cSmt(*4lg5PD-zyE zJX1sNGINAsH{trnwd2uF+JH3N)TbwKVeIJXs)W4H`p~KnF=%^i+n_p6=u=1YG{)U_ zhgpK%%Uw~K*v)=1xi&i`IP3e)O1RnQ`VsY#AANuu&P&>+dP-J0psc>E93h>Tve>`K z=GHU**JVqNA!NdR!Bo<8#oV}5c=zGW_G*k%gt8@hhzRxLP?$ACD)TsJOwpDW5U4Eu z6g!V{Wi^suL{c+yzET^KvEdhE%?^w9fM@M+c_a#7U+ZF~s^Ny-1c^S4r(3??WRL%_ z@kLct+3MBBB7YZsu_)(;C4;&sFD$-aM_dCo)F}_y1PG@1=p=MZDc%@s{CVw8tF3Z2=T|1Tn-m;? z(pcP#i)=!-=>B&Jx&E>s{A9}jw(MW4xR_s>O*DC`5(ud=IMXMTR`I1YTw85jk$2C8 z+G4)oi)bO$rK7ZY9=oieMs;i%IW-gbsVd!^Zf=^$47NyCx+%Z)Yfl+_tO<#mJ z!s{94&W?P7_SS`vJyr0c#J?y^EEc=_<$7lu^>bpD9R=?$$C_0eRXbHqSQ;`bPk5zeCTI!CpRS?SEhif9 zhDLO)-Ov%{d2RXBvCtaESVEsM0hgicZ|>$O824;AEP~6KJ*ks z|AP9lKd_L??g0)u)|d^e$jFrU)|VQX;+JePbAt@;QvSsh{Fi1kCl%Gz#}s>NL)*g! z5bogxIOCnG=by0JV z{y^eU)4H&-XsEf7MYn&f*7=|W1tXD3oPdL~uwn;J#)6^RxQuGS>WsCO1yp%mO0Up$ z0pfx%KYxTBSe(0BW)9w49$>%RTfV;Rjg`MzTuTT#y^xp3octXzzv>>zH4*a{Bs`LBzm7G(uxxmnu57jxL3dX&URB00ZMc{boyeHa2g6emAMaiV=cMw6 z+Z$)=2Ub6${e7j#hh=ZSa(T{DdEcXF>*yK!`8YC{3C{f~IqRe4K^Jl?12U-lhhKQt z{4wA*63V;C60mC8ltVgr^biiT&*sYS$MH<<3LqqGhSw&9_avT|{BcB=f(BDN-L2gu zGZm=b<$IEq#IUqJ3C34CwxV!LAeG`HL=D8vG2=ZexLQ}fKRq!pIxdtKuv>>Mbk)iY z4s<{G=3gDB&EwRjXI!mA4Zdgn#O$KHG7boZMuaH5Wx_Z%>*$6(W9899ajGts$#36L zQJ=jJak+b-L`najHUr#y8Nx?+L!$tF5cayAiWBm+^eSd3%7-0uU1{$Bck8(GaMbmV z3Kc09`>^jE=bZ`Ot0>!ePV=RV&+lQ=P_#g5o+R)T2>U8Y22=+9^fIN+{V0TsKf5G2 zf2CNNx2labv`a5vc5)4r%+q3*YxZAV>9)%YzBP}5EqqG2!T2Ll={v>7jg`vGm_}KF zoD-L!BoIRc{0=}2Ksn;KOvJ3tXg%Fs7YdSEOFwVB!F`i+=)MQwtxz=_ukO%(JihK6 z>{@L&lBvGV#zDBeS3;G~S6wR67ROXoyhrfYEhYtnfW3_~8e0!Bw31 zvFpQw!DO;Lj3k2i=?5MApY4iQ&&K7?N7FkmH;6_XW@egbhOjYT_IRO{?=R&{E3sp0 zNJHDWu_vnrZQuWOW3o|Re#K8>w--=t1G1@(jvtyf4#|N9TS(pV!{nEI;PWtg`ei?! zh?pegSm>Jk#d^ZI&GHAhjH_1|=u{$LUqx0(UI_U6r1mZkICMm~GYDm{!WU+IA&El3ogOhahcP!?s+!vye!L%+Sxs!vvV5*}h5YOSDKDkvG* zwf;AqXY!8BO+QAb*J}4DfdJM&EIji()GJHF`)rEt&Aq@7*t$7ih@umUu7kh)G~jc6 zOYk+lm=Y&Qx!NGKt7IfE@M6?Q?&75Fvs3Oxc5us!E2G$xlkPBM|G(Ln7jADJ-mNwM z9?&^RVpGk@{uWYxapiN3*j>-t{1bE_e@S<3MZK`O$%U<5a9dN{2_@C3$Er{4N}$XA zmeQGkf_>-8*CxgqodUn*Qa-)iohpjyeBW=iv;FU2d3gYvO_H>~Xjd+c`EFm@zyx8a zLpn+l5=4Y+#Eobkd@TAkpq4#&KjZ-^Am#vjXNC$kqhp_{O`E|`*#+Ta5)Hhqm-ea@ z-lnDFxAQ2IK`X)X4`BL1crx^X0@*Dniq9*Gf$tr%=X{Z~azC|-&|1HHE&#I=nXSYOlK1`sQNoD|sT{Q-31zwWT8 z*kw@_X_=t0s@0E}Db_86LezZQ+y&uB-sQjYQ%iI>P1D?m(K|(n^KjPRqFvq+H6H`H zd)D;Jrhh#xX67Q}fX^1%+?(`Zthh~zc3de`{b9G-_odbB=}owfj2&72=AFpzpp&E1 zx@wY+E4sZuyV$D{TU+tpc3DLtOr0BBHrKG#NArn#hzHA|Lh~pD{miv}f5E_97F^pd z&+_Y#<^i_A*F7NUc>5tuy@`N7rUU8TP?q|PK!rYVI==fPR*<4KxcPf{CcXUm-ZPzl zqq8?wzs06tcWWe!Nm`DP>eal9nWo$q!Ss;k_T2XUzOeOz#wtw;xDy;-A^zS;DYRgY z{e|zrihGONuu0NeCIUNl(BeKF z-9_TECVFJ@Oy&uO+?r4($~h4=FgHk`WXf+8i#6MMsQiNsOkpGHibu@`PE~*)9==8H%P2yI} z?Ia0CNv?;7_vCDJO2f0eJ;(b$LW=xVpc5r8xdMeH{<86{G{01a%d2t-f21jWVECZU zq{{o)d#2b6C-Oe|{!DA&?&7JB{8=>c3G-_DHIcpNG&NR9WQppy+dBWwN~%+K@05IY z@a4M1^@@4LNbZY(4SeUmaqz~{(q_Wdn!L522+L8bI3bE`Z_kqZ=_STlJk@leo1+hb<5f?J{mW@Hftfg zBj-z04b!&Ej@?i1YHoqNbI*2fH7i=m29igp>Cr;h!$Z1|A(qg&oC$Zt`@Ow?7blx1 z>y_u#t2Xjyi4bGCW`69MOnDuTI}oQdzTb| z+o9{0jl&EjvNAL+A7@;yxOps8(BP-br~A~UCd%TddnAsF7}J}3H&yAr43<$1mEzNH z?enQJ?N7gWT8?7%iE%^*eXDJMD`YETQz60bOa4dKhu%XU>Dsa1y_y%St&jE~_&=?e zYxc8~Mg{C_vofbo5q>cLcp`r?OJqlxtMY)AECK>ZM8(-F10lisw5Fpo|G)n%Cv!CK zAG_X7Z+LhVTb=vpDH!-(uNtAJo^MIpU)k!s7^HUlnvkt>Qyl;Ax}&GhfU&!qbdkMTGgtV^d64>ZM5jU|EMpyk(q5 zlgp!k!$X4&96I@#f=buGY3!wp>wl=JLs<5ZcBbcIxpPqT#3g)#N&-dnX|=`y1a|`fqPy)e)Si7 zC9&q0zE{f$Px7wh4M=vlFL^=ww0)iDZNb6MDoEq+pc4c6v+|*gD+@`s?YB;P`iJKe znDgU=`1lMp^@g{C5DLys>1-o$j)pfkgnK+=yiM&YH4EVgwcst6xo_4CG|sUHyUOn7AD%V z@n5{>^#Ut=3PH?>1{W3CJ9^r1=rW)W8iTe_beY1=B4&e3{2aqmN=#uXu+P6f+$vgX zc5u6COQEY=J;iz>&>idhv zP0UeFg+4yVBMEt8vAei8>dOH@Sf1SVpw}Hn_KqX1T!W3nJ)fYB6q{K&S!qSr%dq1m ziwa?{fWO5nH(BUYVUQZ%=VHRqTs^L371X?bq2jEMlFXbm^2N9li|xj3E_b#o@lA9I z2}0?yhK6a-=vFh4@qBrXl@}?EhTgbUKQKjsAQIPZiuYFUp4za%v5W%wROe#%?5`NI&*;@snyo9y_~JWi}!Z zArgE%e2zOUA1E`oFO5y<4>;ZA9WO4; zo<%(@{bema>#qHqN+_a#Z*018inac*%n5H6OdYM9D?=RLvTHG7-=vF!32EWPD*Yn{ zV!N%yU%yV^>}8>tKkUVt1y>*)v-Ds2U0mEolc=B@ahwgq$&VFjl|U-53AezZR+tRO zlv|$x4?yIM$v3($M_t-Ta(NC8kN((~!OeeL^{Ff4AR1V4@yw3|6&jd5S`>9JI|s?+ zXQs5;zCkHN)%S%Mcw878dwZ2lfm~LN8 zGiiu&6AI$GnYXNG9ZlfTdjj5c7__BS`bcgeQ&X~hS^^%8l75wKOH|k&dER?p9n}>!BxL-@I1hV$5 zg0E!zhv?Gsqtl>dV!d4oT^|&8s(2_r+YK;Ox89IgJE&`Rr`-vmYRM~Y+0q5q^ArpJ`eXz-L(uw@l4)#0dYU^@T z8UU!8a#Av>+<2kWd9`31eDv3RrH`X)EBl;zYO1ROc?-u7(P&l(P#SG)5HTFDNEQE! znyuO>(#X_k6lC(#XPWL^u9(8gpZ5wOCfr)gZU6yMz*tU$nfgXX$bVL(M75S&(>#B> zR1wTVvjiKJYh3}`_Llz?&sTo*eQk23Y9!N#tOaZcl=Lw42enm6YK@?tqJGzSe_N$nwCtB>b8?7N>&NE+m&Dc5rCbLm6D=e0Ti|vd z&GA3&e$)UtC3ab1JHuk#`yb?GWn`q}g3gvU3WPhaUtecS5d7#;<(dPD!#;E8CD#|E z=Ma2YZhm$0Lq3R9X(LGZ41#a_jede3@i9l|;iU19TR?y`3vFAYu|PWf??(<7V7;Zs z0*5Zif{UCK={rOSi1#uBsvBKDnCrn@W%D`Skn+omOKvgsesTZaGh;oKZYPb68#pgS zu|^%6y|{!pr0CywC`~o0w4xn7UvfaRkPK}kt==sHXa7O)exp^P)j{;h-ZW{9=r;w* z7x#;k^E+0EX1T$kRvG>iyUx8x38Pd>BLAR(R>)_f(N=QR4zE0Y_$EK`18?72y|{*k zH3rVO+VO?5$5EsWV3Cr_q=^6Jrwxk(qtgiP00uH7tjk`*1#ZA}Ii?2Ch4S2k@HiXQ zo_&e4w2ld(S8$eL0p3)hflvd$6d{&9;X@jy@zD_S?v#hpQW zQrh`CzrmndD6DvoA!)L%zw2YvM}U%oh605`PZB4&zFw!9AbHZ__Cc?~cMRS^2AL>% zJa_TtOTgERKke^pj3$}W8EJD}I{U(ALqmdh76L1+ImBW0ax7pn5YPs8J2W>Vv%Y6i z$3fRRMoxuNp!xmRXJe5)F4o}iSkJHa!R{aaux@x?UaYNcqwwEf-t0nc0mFeX>Sati zjLJ6AvAIs3(5X(~H!3ePSNe+$Lt(S2B`7vI_5R zZ!`s69g5_)x8To@@W*nOi>Gw*{#SIJ*SSiQgZ7mu9~ zQv~0V?a6BS*8Pc;$6y8O9m1;LJ6&;%TwCC=h=SYwIp5Vb^NWiSDw%Uac;#$L&)7Q0kDJPkb=yTnuBs zkzHfMqnu-^sV(3Iu0xy@=eSN5?|JmjmoYS$-AC%szQu>D?I5WcfwRBAG<(^2BOA?rl{?fKwKUomoE|DqRirq$ zK2C8xh@<9hPY9_o(?BA5#G+#iCGF@PjBnnh6%oRsW=$<2VEQHfz(@mhh58j#Ul*JT zGg7P6yE_CR%Rnc>Y^0yU+@`!Y_=)Us5nkfv9ReP$xnR z?aTxaW)LHjFilzJX6#{!E%^5@b)PgL8CuHulyvqTwSfCnz9B~Ld)c5W^L_A)BO(!o z`1Y4cBjLrEQh`7=Qg}`w}BTS0SA5L3GA@MM-$;l+zcG1BXEFN+8IN zQL3J+bv>yLZ1Y}rHXW&MLoCibP|cp{4&fxD!i#<#z>aQzx-_PXZ1aa$dJYG8XPp)0 zY1HWc25k-Hr`%QnKeq=R`?jN!%yP9jH&#{>YUjLO~C*bcvR(M9lJft#TuWT4oQI*>mFP-LH@7TG@1zFU;)4Hk( zGD9A^i?>LUG+Ul#MZ{jLo%xNF+ui=1nLsjLp2GV#i6l=3zItvS$5)zB3O5Fnk?!hd zMW($MbX7Wr9l>t?i1!SNYgw&^Ln?piW4<58k$5=iEYUfG96=2DtgM~}hS>LDcz`w1APeHY{ z`Tf!xV)M-AvZsd$a!g~ql@0pFkD?0Kq=ujKN4$ZpA^bGi>e`DkoZ}$*8jUktIA?kN z_6EA5TEmu0X_#og^UBVFvYPlQQ(lnQt^WO-%(3rt)-Ho~os^+B; z(8Cyc!++2h!HAvL@#6nfgAbWm6sP!cxOn4NZ4%o-I}1?~uJQ`t260g=S<`(P?o6;W zzOhm?6Y0o0vgoGRb5xXtJ+vf|M|-qEpO4JVb#7UmXGr#{nUPW z?@|vw%TldLR_Q+H$3TAcpU(F>YMB?}U0e~#qZBa$p$ykX=7H$y@Pmog}R=ghK( zo=+50hon4A{7BZm(Ow7W7dcsb+=37h;W^*UyNnt*JUxxA#wB!goS(q);=Daqgm;EZ zkaCu=pFDgioPpz$xw!0D8=n{E<`c80?NX-C(#y9!N7+WQv3fq3f4H>a`u9Kf&#Xst zgz%(ao*8ORZS7Wcm^?4Rt^|yBbCm>TDC;s9%b8N+F&Q&8>-IKWVCqM_1WqxsMzX%!mWs!E4sX28iLs&2phdT+cs zkA0X(_;We`$v^m{Bu{hY6HFy*h;e;rla@;U{9@hrZO8su;Od1VCSY&zfc*+J$9Ci& zonf=ok@-IpUE>DA-}LaK#g!iv-tMMhGMrWg zp&0;70n9n~);VK%x%uF4z$wS|IN&`R-m+ZX8S$rc)AJQRpIl{#e`H)cM_GyB6cIPt z&r`(emGSZMx+yb%0Wm#M9k5Mt%EoC~;Le&CXMZglz=aU32o59H&^N@RQQZTXpV(Gaf9YOt4^hpVS!Ox-6*J_L; zW;P#o58`N3Yx$IFx191X(=2KKh8h+n&7TR8@4UTN`h8i|vz81g>)}!S91k*Ix(eE}?bz5TXr}uRvtJ zqM4ceubNItJ5ajg$GuCF_aLqFXmJR2sh9=56%r~8|fO<0gs;y;sCejC z#cK4o3^sa}@Ibzq$s#vboY z)fTm}%mk<(J#<9Zi}yX#gljauE4jtBxYf%@mdII@A>!QR)=kB6)UC;r9yW?&&bx{T zr;au?CJmJ6u>@b@{N(O#5(6K$mcC6W(rzg54}xMU`iC7G6ex%R2wx@b?25HdNSw=`APam| z74yb&948VJD#)jlX%nIF7FX><=VIsgHFp?s3DS0}szgkXs6-}a81L(C3t@Zd^K#eR zPn4M1U0+diYH%up{AsU*QOu8H*Blf63LhiAynyr3x|H$1`vb&l9F;Q9)!viNECDB* zTDIMhpaX31flu(?0c>nRf3B?j*3Fux6rq^aS5 z0|t5Wz6U%sY6bg<=Tsa(8c?I=e%|%s`0-reer$CIS)vjd*rbA759s(^j$;Z`_#3G72yh>(wGC8GG zyO)=R^@5_-=-)crdCP)oDJJ6p{XCEV9THhF6SzNo9(+|e(lFG%!RzgXDVr)s%$l6*-(nGo}o!Mhs&A1nf?G`IxUKMn>ulw9!)+D@}ot25T!(|7EB zoGuk8pk>n0oew6aSI8vpt1EF9AR}#xpY8CXUR9DM`Ux~7@!jABDpSWpuu8lf(yzLB zmndCvJ!}yQM0F?(3gUATDEOs9`Fbv3e|U@3wG%K_8b=cbc|X>iqX%B{q(T(blQYQF zNX?UoB+q>quzO))Yr*0-`vD09CT-5Y_eXf|blQ(AGc}B5ZF9*NA)CZNTAgsJum?tw z7eW1Rkfc2kKPlK0-^@@a8*1~Ubkqs-eyPi`j3X2RMJPdBF3!nnBG7mx5f^a=-V__P zd>|yVfMU@zf*xY4Jks#o^}wGpvf$q`+XrKL!o5g}a@)_XA z=^yqteB}5*r2agXnQ?mP`;wB{*Ul!^kNRF#cyD1A;rFyJvrSl)mA-eo$>sUs9Rwb@ z$+bj}K8D7~5fcUpTKad8qZ`YcXBQE!ldyFZCcAJp5Z%!5G$u&+_xXxJ9;`SU6WNUja`l(0U=#P`hzj$+bnSr>g#q3qr&eJdOtlqK#(HmVP z-BE#|pttLvp*?r0wxRtG4|2ASj$FfmA)s(zd+_NS7lmpzP0nPs^JO3FbI8fX9>mdwF$yJsW%;e7V5>6n<97I$oDP z`UCL$SA%$O>-)b8YTySSEvfy?`1N0b!Y3W2Gx4^5XL}ngIb$1r{L}FBJ|tU1Z9oGlyaJZaEkI z>@coM0U38kG!hs#VOU&GW(#TEYN^fWh+b&dA6~P^KGhYlxH)4C~vMI7-N=eb9%VE z?smNMZ?mW9m;(A432g2Z`^h6Cg%MW1<=-R_{jTcz3f~mor7>vo>W?nPhqSj3Y>N7k zL&#^a_OlI*kC0Lmb#|+NM#;QlI?#c8PP@se~KnIF9rz->b7cV0+b?DFDdrN3$0 zU6G6mzCnnZ)EXUWgJf4ZIlXx1Dc!;VOFEvgmw1X0X$6{Ka;t5{tm1I{ql5*wRh76$ zypnic@UaV9ZeBaBi>dyEMf>=#y4p1=yHuEA8px7w^=!wO7_`3`F&Ps|%8KdUJ@ra+ zpiG9=SDvF@6a4%{Q#op3k1djH;v-Y0A?gw2RaL7A?0=-&MLIG_Ch79l z)9ol%O=c%%NR^lMU@cpS!G3IeMNC0cMy{RT171p^xAzgm4e9`z`0n4NQb@r5WmMq5 zeR%elYQ(I)zxE)IT*0-r-E4%kShlS-9j`wmeEPnhLMmW2bdOXBKI+Z+%>$E+%A8|7 z-whth!0tp+9U>g?sZ25bH*OJ)U1it<;?ktZ-4DF4S1yaqrmN_wbJCP2aKm^yp^=0P zhkBp=gJlEAvSGtx05C#4QZk5GNH-&BVrpt*2#UzjvXvH#ifVeDkf&-#>^$9C?{#pM zq`~>&N&bN)4KpYx6a2KS$`BsqO)z?}dvEfut8+i^#HPg_`3;v?PjRYSP{zP)!80Zk z4P7^j;tZN2fOXtU*32MRR>sRlzh~V2mexvOajsg;FUAgArfqMFu@IUCMSEkrwyro4AT@^G z6a5An1ti^gc77AgycF(SYcql>bX`0os}Qr5<2%;Kd0tAiC@6wx1gE7Z+ZD$(lYLer zNoQ$Z(tyQ1KyG{y@l0dze*f&gK9+WIKUhbIBt>j<<|2I&P_6yl#QsVj>AT~o#JBw$ zHWO<3d*-Qfb!W=GK%2NkqX#!Mx}``G8p_h=z0@J?>r;g0jIoW>Om2=FPf;8ELVL-U z6iTUfGfUkvI=a$A65DUkK&4UE1F9QJ6u)(gIH5fMX6`0h#qkKG)s-U}^3^a4ID0#x zVJzt6MKuG-;nS;BzT9pm(CEla^O*vQjImr|fl13xAeZnv#|aEaJgW%qnXA`Et!WRZn5{xqeBY#3+Xmm zpBqk=?`^C*e|1zTd}nyyU`mG+Szoc?GCO1Le|+`2!&jP3-&J0E?Vj}bS$SbBdjJVs zEAxHhbPpjn5=Sv#hdp(@m^pu9mp*yA?AXiEdA;i|^txKwu0fYNaanoiom|`6;SYZa zm&*H7JYqc>qjywga9+IMdJmUSQ|y#;e(VV&LLK{+Q`}>{%U)1haB0K92OlPkXk@{@ z;F3+J(+(yc?#Kg<>bGmHnCHpQ1-M30xC zLT;fCaF719cIKEjnSM{|H?o~GI(~gMN+)-@DQ1hV>pmSAX93uyBo;4X_i~1MRdp#K|CWv z`gSD-kQY3;PJD8&egs=GWtgae(S(0T3QR@1B7N^0t5{B6Mn+C* zE9=lwWU3EIlA9B}O?4!Os52Nv(Bp}uXwQzUB1U{hCVDWd&&3)JP8H3_($4fsb5*kV z`tewzJYql;$vM3T;HX9v^G4{3KDd&|<+3OU(O`0rloR&5-~O6{9FPd{v$NW{6&C>! z4%LNaI(r-xQ94jk^3bfOCjNO?W9VwtN@eY5vsb(MskXqi7UuA<@bzt#sY=r+XZoSU z7pEWZHHbv+H{Q+4pnn|EzGma6cc%}QX-#7CH6H#qW}`%nGWfVytvSIShn%5&sPiB> z(G>5psRVg*FzE+aJB<3idl%5#KRHvj8L*%*zYs z-Szdw@xRj}TIuq#xmRnwOGjT?J9Wq`^G}4XcIxtSHG(~#UH-GoTrGZ^8?nsw;pE8Q zRd8x+{j}6)*1qO%4jg|Mtu)Vx{WOqOoUJ($XrNQS(fVlX53JalCdnkYxx8M)?{i%M zNv7gv_Zq5))YH3zPVVaGXuy@EU zjht*-qL9>GMoW6aQyvV5U{AeVCGUcy@zh{fLXa><&cH~l z4k>y^k(c8s6wF;C>L(ov{jU2<~Tzebo zP!F37(xxUsZ~W|?AZc#SU1j}(wDs?a3GtMS{z#BJmBIGLv52M!8F+B^doV(f5a7+# zKhw*H$E4OCfq5Z?5NFw*Ebk?iH+5My6Zz%L40`%^+bi|bGTWWgbij99#|bAA#p?nA zNYAwFc7QGTj>BeegD$od z$&?vIG6g;)q(|+R#{*LtjGW)m1$Lm9`{vxV%h$Jgc_@>dJk6?-s*M1*?jHxO!=CpG zsq%6~A; zj&#;SP^*H%w%wFo{OO)^Ql_fdeiu00uc3sjV7tj&FxPTrfrIm-Hm4nDImR#fwz z01TgpIjXC@(}?6PJO)$d^k+wBaF{CxXQZZzr{bWX=QQ9{>wM^uG08JCbEtn%-V(i=)lV&0L0uj?|^Q ztGa5M%^{m0K!5;2z9e6OFF@W9;E)_vbGoZbWM*ZCa(C0}s4W*S_A$?#!GMv8M5JH1 zFt@Y!6951GNtUCK^`x~?mVoX9&L@-+9sA9mZWIUu4+va^fpG%t#BG8&&{d9Jde7)^_E zl#eEPHO|U$R+LgDN~xlpsH|{~X0yw@tgNw8Dy>__peU+XGYBCV02e|E5lu1CZowG& zFyt-8d6aY37~{R0PS4k?x$e7WyNFTd6#V4uOk0r)hv_9alPQ%-R6>k%^>)`jKP!6U{+B;|6asT8QpppJsT7Go#UbHb2~->vhj-iV zW|UTm_@Dpp?~le6iOiKuBr>6r{R6ahQI#*A-G01(Xu4hs#RVAMTI;mwt74p`DFIn; zKfL?1QVCE5%MB; z&N|yqCX;G(W{l=sI&Xlnv&q;R^YwS%*KGsHvoyV1EG{ml&u=c@y`OUqh^V#YTw1HU z=8)v2_n~WQm8SJ(-nKPk5Uh3H6ytLuMm_{`GR=}aZ|fst1jxt}5u41ebl-Vzt?4TfG1JvtRsn z_3%9xD&~9=fRs}A-H=1}gR7n%4NY;a703e$-V;$hiwH z_`ryO^T7lQi~{qXVwfEANJ2kJD*zthMHqpWf+I&{5Q1~Y5_tm5^HL0%9?=Go2q}d? zKoM(j&avw|ZM65nhajbNE*KN6^}6q^>4T3fMHzzEeNW`#TAPAHz`oaA*K#3Mk^}wV z>0-pZx6au>fr1O(g%A(-RwxDRq(Nusy>re4Z@5w!I~{Yebmf8zAtM7I+Q})z>mt4o zQ3c2V!8_}nCGTla=ml#{oD;EAp-qgbG|#JvkO}89$qFfz_s*LxSmT4^LU?B)OgR2Z zgL4$4f4CU-DjbJ(ImKXfWFh$AeQ&;$FOtOeJ!26;YKVe&J!32{ zM&)RFTGR|l_KZPSH{J&dK1SkE@E{T?<=O1gISas?b6J*q@2$~kT7*DNeK4ly$dfe7 z$}#6W%?i#1u^?rNQXv<}2Lc*E0Kns6n-_)dy1c9|uAf<>qv609lO!o1ct6;z<6cKd z$xc=)^5laZ))*9sk@wDf-*&YRzACG_-Z4h?`tG!52shW)fian#A%JyuJUSCX9uNC0 z&5|Td5?N$v)Axa~P)?bYF+m|>Z+h$hpZDv3_kP#ez~ftsAPj0^3V{)$A+iIoHTK`X zU;S@i&+qpwA8H>TP|*4g?!F1$S9ul~efRxar6eO3&68bIw@ot|jq)s2Nm|!kvtI+F zKxAwXDsiR@1m*aGybnH9<4HA{Fp7I`;({Y`#!v|ELj*<%L_m&tR&-tGy?561?J=)P z@+?iWL?sAeyFWa=InRrHv)Os)j*b50&5O71@2zu*64v#bef#?9Wv~5wwf*XoE21D| za;T5%ZJlQF=HhH~I9l%$DIZqbi|P33&H0D<79jlT+jlpY=bS^+_DV_y#1U1R*N1&m z?=LQ{iafW*2q8Dih1NDn6KDG*%YOEg&mZO+CHZo-{OM1=Ld4a28-mZWG|Lia{b9S| zlIMA$d);@H`}*waiS3MY&gjNj z&7~|x6QPnMErPSw^g=2Ex_@uDdI<&S@Pdi&(ft5^T@Pyeq} zl7iFL&Mu!b7L>}``iKZ^+oBLRH`i_3S?i*=cCp(1^5;MEA#Ap5Z**2pn&a9Tqf}y@ zM&u!QVo;5yUA;RY_y)vde6Pg|n}|+l4)e}N{vG0A^A5o=AY=#}LI}az6Iv{A6j4wa zeRK3Um}V>@`G#1C7}x+9H+&I6jNn5s(aRd;dGYD9#yID+F0vn;pPIIHubA|mT-Q||#-Ii4b7@IFbB5SgMB z02l#KAi*VhZ;U3Q<9@$c&aJbz&t4#k5IpDHxxj!4A*B$&KuXDD&A_>k0#PtV7->9# zVj5on27ti_=d3k)Hod41`{uZ(5OjY8MxFv=?Be1wIClN))3!a9MV03{M+gk1RK~i0 z_{}f7zQ14Xu-*H~6)Q$844zvGL5Qdo1HqA7a9Vl>&jVKtcxk!8BS51A4 zSu}xyl!^gliTu|;ebZ z?;jo>g4M*BF-B{Rhyw`SnBc7Uj)Lc00%O*66o`V0vO`2j^D@mxadH(&g^!XW#u%3} ziRPone@{WiQ3mPb-vQ#SGq7stL`o(`CndS_JY8AM!>mp9I7ZOr`L zH(YRH0f7@R;PT6#|Jr&$;7OWCl%w+wV)MgUp5@!aF?i1yqsaxG`cgLZG=zXG{xe+K zbdngclM(Jwx)Vh%Op*;vy;heG&*AhTnv$i&XbZ-3J4U0lz_rm3yi$8jsl~Q zrup%(%kvU|4!ey?bHPQg^{5&-Zy2zL`TFzE-s}&DzSryB_Nz}{TVoD&BREIoz3~sr z!|#6f$=C1iSKInmU%b%T?He0BB?1G(^YQ3zxl5#SPSMc;>agF<@869^v$7m7?%%pVWif8sTB`KBw;!&rt`CRWTC>?~I<3<*Mb5Ld zXxfgkkY)L9y(&gy6r%51(|5(_EH87Va@{q~TC3}PG!rs&w)ft3^^OBqS*lc89}i_U z?V7!_HXl`tnD+sZ0}5k0?;Ph+%EajY`O7c%o6Tl5M__3-N{bPfD%L3E_4NEorD;}- z`u4b9+)XcTu5X^M*UM^r7Uz>3alhO4#^ia4h<)E8qA~Wvhwqa#d-Ck{VZWMQJgs-j z?dD-JyLQ%8lc_U30;JVcDACtP9OPjv&Jl=$5Q+;CykpE$h)9_*kRQoYAdGPwj41dx z*og`T80^5&tRKrf;hkqd-aD%e1s^wB1KpHC2*f#)@>ISMgyB=+5BtLyV#gp3z9QI? zPB5={&U)`dh=UVy-ZMf9al;1`SVXrn#`^9!pFi}?5rFl5-*w#yjR_1RcqEpIfuo4Y z%m|DjN~z*dTBVr~GMXns@ZMR@B@D?CflHObX|NM(@DMzCj{s4YGA!@nKoj_|gakey ze26$A0FRWIN44G%SxYQVjVbuP-3J?^mQM*kJ`e>@K1QB9XQB+oSy0)o-aRPrh99P?&O7cKV2)se3RC@&z2wK@Oo~Ml1p?SCo@Uc7*%E0cWvKVZFJveMRtCEx!!I9u{>$bCByt>*QTN_9Up_EWkl(}4N z4oWF)+_7$c{fpO&^}!h1YMbZ9-~IBF?RLA_wMxq1J?A`4Q)^6`r)ipuCbPCZAPSCn zIP9~${MnbEcx#%jZ@XS8Rpetp2tF{zo8~B`5=nC0@3O2sn_Xz#>HcswdosWO-Wd%H zk%7!IXByobXN;1PF{ayI%4EO3pI$u)D~{;hd{97gBI8DTHX7LO|dmZZRnY6w(=O`p#S9Oz*As!6S<32EeFq zp#dXtO8ANTPzDiG4pDi2a_2;hJK`yLm2*Z6Aih8>l4~%|!-R+`NnqfeiSv6J3^-9; z&p8+Pm^U7RwOUFw*y|~T5R=s$S4o=YQl-|J_&os%K+f1;k8-w;n*_;~OtX5odiLt` zB+pIT6NtXvny#bZ%h9wPjp1})4Z2EBM)zr+nXc2imq|(l*7Qor(PS1pF-F#EE`$_P z2uT!(g|=z>zMq|6BInLKj(mD?x!WvPi-)dl7z>Pr<8HHD+^-fNkH>wM7pwcX?Xi9G z;!OmKF-F$7h`(??vYWXO{G@k`X<-8HAHgp^#S&t89Zd3jy84I&Rd_~1CA5K0?M6s)mrtKYnMcDGo0YpL1O^(*i$us{%t zj1#+a==Ip6*W?tu^ux-FhS~HW-ls{PCenLy&PgG+ z>-nS_PiGg)<i~Ag>P_)0r$U+NSo_jLy!Q<{0%7T!_VTJFco%&u`y-_$WDF@AqGP z_Q}VGIWoApzT9pPZQt#W-Os*w`pvsln##|fpMO{!jkSr8sgTt;Pb4l@2Pws|>34_r zH^2C7zTEf5G;Ixx|IN=nI~)(2ZJp&wbXAwtsIK>nF_mP~+0}CXUP+mkDQ(p2S5+tr8d)zx#;HH`D%eUfClZ<1`}bVEcaxDY9YfFKwIfGAlW8p=}| z*??aq#sH&*98S!fh^L7zZUE$Q7)7Vn^Q7s+2s`G214F@?;GDq_8Tt5j2apiemq3gO zMj;{-qM8yIBC1nwfQ%3zW?qo@=tD%!{}AW{NFjJcE~Ny<%E?Uk{eHKN9XS^&O$%=g zaE@GfKLlQKDFL`QTBZds^3FMLVmg&j3Q+)p(Z*XFSuYd<1bWU7(7Co|$87a~J8gEX7lM%x? zM&5fL`w?f2cZM;teR~Reb5bSc_&hJiWjRjrQ9hdFs#ZLQOGzj=^}s>TILz`~DWwusRO7O$^1LX@GA}F6C6SNaj1U-UVp0l3aXf6h_J~~0 zW>>~&-M6FBSS2YD&1M(n=*(K{tmRS&A(JdmvvmIP``Z_9CbLVewUi>hv{{x0ik@C3 zr9du(;8Jiz;9MYbM4;1&I!p#BLJoY}HbSOZUexVjefL&yk&UMHZdsI*@$BmLXFuz8 zSLKEG5Xh5rDoH5>p@dY@XoG;aPc9bAjjh>iw{4TAxlqzuJ-fV3lOix0>;xkH?*}K`G^&(^>~_fAcp#U9C6E)rKhaeUoMi zg)*Hv9`?nk1fcq`y?OdcQH@sfJE77LobFrZ1Lp!bcivdr2k)Kt=U30?@4s&LD{pE> zpu65%gFK}`j7Yb2@D@-!d+~a+TJAS1V4jOqsDu&YLJE}zYZ;<*E-xoWcjwnH4%_8n zzd_`>@6)VEvcg&u?UcdUB+a(F14qpAB9T0nh+1o7ERp~DFMi#$Jp=B%wWd#t(wL4D z3yjiyZ2E?)bWn%{M+AeA`ou3JM#CvT1k1oMR)84lJ0wLgA}$3)6#0;U$vGbsB5?o_ zhYdu;ISz`Kp)=)?gfK)+5(01r9+45_kxCh_35EiOQ_BJ4#2jPZIk1iqdmMN?E^HBq z#g?2g=824T&bTB=Ip@whWGn9@ERV;f5RfEUn&nxRr&*DtIhQJ$_c-U?6CyXd z-K-bYctXV5<`{yv)&_DfU%pC`OmHDMP9~Ey%iHE)jb?!H1oR=~X;~i+PhWgWfJ7ll zGGjDjgeW-j_`Vy|SBSAhC5Q}}5ZkE`Tr624(Ov6S2$86yX^u_3+iw;s&(nNly5sEn z_Q|tPbl->IrjwDjmH@i8lQI#46H(vwz_9Im&iUW}-Os=O@DO|m^N(JoY;s9f10vDm zW+n>jS%m1(iR#22Ll5Gw&=X_ClHC2}_xS!#LM2(2{Nq3T=3oBs&1$owz(NR0N})v8 zw;_aMy-yIzEPYrkP$Zlf=RzAJgfP1A+GcWoU6v!pqWY7q?lXXMma$+=aKST1 z-a1B%G4I0=SH`(AS_fwlnN+H6_KB)Oa9!KR%Q8vQyZP#Dd{!3uZddOQhpWrWvq|+Z zUpntYAO_U-eXre%>*+Ud7qdzA@^<=uzTF<0Ns)67LdrZ%*4smtC5J ziwr+LELWT3fAO229ggj0x8-~&cVv>ZZEcK^QcWhahr74Pxl&2n)XwTy@HBM~h*F7% z`9cU4Yt5o4+ODz2l;v619i1`3g{-QUi}%bsqG0bwumW_f-*9GZH6`{ES> zX9&mj(i2lE1px0&F`DJoq~0!1@Q)AzA@Ug2t5g<%#q4Fq@Z@BIQ}5`8cPz3Wv=}Ei z@KB5*5P3jBA)Kc2K?opbeXxQ{M*gu&jeUKHZ5IwtC_wzUpi?Y&6h|-?nZtnsSj#A& zkZPcdbIus!LL@5j!Nvzl_Z@+XsYF7Gh)Q(U1n-4ZQl&%zg))6@`Yw8afO8@rf+J7f z+rf_Aqt2dQ)pv-&xhk17y=-2 zIOPV#L21OT#Kvgom3~Mb9TNKhkO3j*G3Wz$%(H&nc?@a|XPviZa(Q!k{Y*+JRU(8? zN(w2Ylw5G7q*6jEm87YZN=fCM(QUn+zsrj%hEqSzZ~-6$zuWDsiBYM2Q`h_Ls&8vX zA8sm|*;(DSA3lC;j>q-t9)WQ# zLhxLONX5Rmy6trffShCB_tB;l0tpds9l-?(F6psaj!;S>M&zB1P_wAS>ia&+@~W&3 z$DQrE-Ri!qrbSU|)4%@wmz;AVuT4K0O{%ik9qJ@WBax=aGe*ohD}^{5>+`e8#rfp@ z{Q{++#Rrm#on5jJqT2O`KSQNNKiZ}a-Eo`%5+IY(fAf3#?hlyciIPA6>eCM&9{%)~ zZ&jjv2ug9}NS--Q3`lZ$IlEYIR{Q-v&kE$wG>sIA_x`wFWyL7Tsw7E>VHBO-sNpW|KdDe|LL*_WFAA_F=oL+soNR2@x1( zN`72yq~u+1sv^I=nLRAmX(IP^z1kfA{?|X*9h&{2PLjk2#{wlu>TEb3wt?K`_3dW0 zNV9|y^tv-zmu01t+U*a&`_(TJB|kpQrBvQ|=UkE`rtj){J(*rhmFT`F7oI$QxwyZJ zS~ll`N>d>d(;bmB1Q7xoPp|jud#w#IZu%~GCuGXVJJZMID(9kWk1t+-zM9`1j%%4@ zzVE$v?QtEv;{Y7d1$J?M@jv~K|HHrj`FmpCc{d(kE$8nhv+MQz0{~Q$S>H8EsU%6d zrdCOsstkd(UE`b`jn7n)Zq`d7WPLpBwwu>4U-sIZ%`SKA1u@T)3;-FR5CXWgx^cE; z00@lBM9S3Y9+3qi4xE@jIZFosEu)CJi%G*nF+!&(9gZT(x`tpsMu-^Kr#u$7gfWDj z2oMDfAv$m^nGug zQ%NS%G=8g6CEgjv7)s%+0mcY|>6+8^6|bc@G8sryk(()mLPV8j09;7LrHn6#6p|zI zm}@-D)rVe%euyq)_(&8dU@-#wQ9c1IQt(e65_SroeN^8MJq*S86oL@b6HkzMjGqPL z5+I)JQC2z(Z3YTxtkj}Xb$otvb@NhiG2A7m)910}0QRFZ3BX$0G=~sCs#Gc^gkX<9 zEC2vI?042$Yi$TlcTLwE`(6u~6y+$cFP!&r(TOPYECYZ*kmu!iJifTNnog>pe|h`t zdU}3Vw5{&7=R#z8A!LdG-UrS_qSDcLDplf~OVhOP`$)+^j*rrIM9yNff;a%F;SsFC zqW;M_r>zd&S!c4mOwz3D`mWx!^&u-tndHs|-5i6n)*rsZ&a3Z z4lkeITIat0_O186*QP8>#K4H@UJDcekff>Puv)FG^=Xy%V^IX>=IO>?O0 zL*F-xkAK}RAC~j?<>+j;UEIC@Zo8VV7wzk`-Rp!gp z8i4{s&avq_2JB)|ef|Bz`E2~nu@+W4%~!e*4R>_Q!g+KPo9>(<7A#M62b37+hRlc~8!CLP}@ce!HH|E;tt-KHNWl z@r)52>pBWNi=vWB9S^%K8v#P!_RgBobe0vP`Q7(1!3Q{o5JhSMkz3PGW;fgAowFJ_ z0-RWPTnU*lZvjQD(w@J3vt2Lus|9)OgBL1IvMMXbTu5g&y^6-FG%p%elqegGJ#Aq1W~XY_yFbthQNVK0Kv!)DIo|+RtS{}S#Vhf!eTrv zs!36f%F$Ud8keI?IDWABhM-Z(!oia zGO!Ne@mw9ALuX9PQ8Bu+RS%eQ$HNCvJc?QEf z^apfYBp<+!Bzwayf(v8%!*1hDCsdN)-g2xKC#!MW-Ad0AF{-*YZG z=Uv|rv9c(gBOwF;;~b@u(bfdWgphGEhy!PU9xpjSZ0iOAs;Y9<9{1b(cV7!B8N;jF zS3-*IdQpxiaTpz?(?W{AxAAuz?bI<<-8rX}tn2RT>bxq_&F(-9X!C%Zdp4RfnW0Jm zdGJ2wm!CW)!?cbGF<_gPcj1r!j@KLFGD+04+sm>jzW(bw>zsEUSh&8qw#FJ`10z7j zkx$2CF66^}6@mrE7?+3LUP#H6@_{ysySoqH*85f8w(I%be*I84hvRnh@w-2-?!Rkx zt9rk#_uIp6`S9^O+cjsitAGB#{@259xt@Q&ncr;|@3)J0yXF0Ev)pa&wQfd}S=5oT zKz-jPS>AOWA~(h;rH*w=#J>9clkeZXS5n+B)=#dltD<^XETtSuwx;cgv9odc-G{}K zi^)&kJp20n@=!NVug-k1K7`xz+4mpkQt{1hcXK(ryqMfQtYV(mVzvFdUwv_`yWO!y z;E~TEWmXjV{QiBCre!%+NxIu@(k%1d9rwFLCC6hk8js$*xcT$fe`Sowd#w#)#F5v> zJ+XiY&QX%cSFgXgxVpW5`sV4&PoKT~f=e~Od+U8*1QcjAyV$Mg)(ndDKqv-7GNXL()}WuBM2?W*tU;OsCc zIb|xH4%Ht*B||{ z!`B}!g1C`8soo#;n~b=?crZtX0phS(jsE(G0bq=X98my<#Jms*pa6vG?DFjVI#CG% zk7xA2=scb8@$Nx}r+ExG)q5!{q(!{^SfpJ;bFa8@0P2T*6nV$TQBZ)R|7zn z=UF}ifVS(hEQ_2=DU&2gq9`R|!T`mvj)q8GW|3Apg!wXxR;fJ8KD_%YV{~=%bTPj( zrhj<PPbiq3{DdTqr0rAh>=n$Ak>F-k``G}Fhzwl*0J6L)in2EyBBUx?t>j3~Dsu+lK5E2n(JOpHt za}mq)$TyV1*XAf_IMr zK|hF#;fF!Uk3aYye}tV3h9~hl=T`ST))D{lAZ2h7AV&EQozm{vsWFf97tY|cc!ftE z1P%0jh~i2Hk3n(q3j>2Vx*29)(b+mEMH!>O+%Tcw5&%I+DH9=6;G9c2yL?)eqrq1Y z2d}3n7etJOEg}-ok5aY3TI;+EM2XCWlv2t^j&sa1GF|Vyb=DCCqx%p5InT0uGQDul z#LvLF(7Nl|V@MoJ~?)x7Jv5IiGiwE@H|&p21X zITS+cmRuN>BkMh5#G^3q z0lBz+@p;?SpMUlh#T;|zvMhUgdv$DDW8BsG+2POtNAH98KB5Pek|6|ZEiv}6T)ldB z`~2y3*LJP8LMlm)FW;s6d!{>Kd)aKmZo!)!Kd#}hiMyZP|fKS()v$^juM3KSB7jb=}Z(JZd2 zRGLPiCj}?Clv0J@^1L**Q&MeqJ0IxFPdGY_c@}?9KDlh1S~1QOACat#I2ZM?&hwH>Ss%A;Q*U`n!TY8y$7juc#fU^&sI1_eAGS-Wa?VBYh5>qS z5!m^~jmoRV-P`k<7dOv8kxACKO(a({;HGb+6qi@GZQC@*!{}_v7@&~BS(#*cQEcZA zd08EHYhak=h4&s1rBp1$2?>vh$K*m$=Ewk02#`NwVN0E7V=)LbXv>|k~ol0AkpG%EUl7yt`G2;>a88crAjAteRo zLkwPz5^`aUuD7f0;@{!=nF-o&?wOlyotT93< zZEaH@owEo4Q z)2%l9w%)Z}lO$=9WL;mA_lR7ogbO^IUK!mB$r&+i3?QUg9s3{st?RmO`QaPjyt=q~^7M7zbywFn+s(oUh-TN1ck})6=$+4! zB*~Jl*HIl5S=9(2mGsUz=MnKQe|=Xs?WeDvefs8w)|wc200tbogE%Z9+v#D z;>R^}j)amb$&0Mav;XeD`mK=SpZ@vJ|KSgRVMMw&LW(Lc7*QY}0$J-+l31rNW>b!^ zT<@hy5+${65BsCF8aWqIb0$E_O@`4ZNI;ARlRXPQkn43vAIOooL0^%rw3!HPog|$XWxmj-l3qSq*v$yZw zODP`atE-EPJWm$O<;85a+imi^?2Ua`Z@+qV^WEKwh`xAvvD$SuP@1N})Ao4y>8H;( z`+9$D_LAd3jS-W8`R!;aq6l zH}$b;>OkCC=Y3%0t#f%c>a|%vd@M(2N~J=|L@8?x016>D+tv8&q8d-97uU`j>s@=; zbX{Y0o2EsY<+^VNEEWeLl@v+6U*5iWlU1|bZZjI69X1cn>fnhBAyrD=B7jWu$@FTs zT?S`D2IuF7q9-y z-+sXWHrqO;WGJb8@Lk(TDJ7S)i%TB@0|elvZ}V!FB)N&yEkt&*pAs<6`4HqYkZ2wU z4G@Ea*oiZVKwO|q^H^V!*CBWYQGwzZa0{ngbi0bV_M?wv2H(aqCWNmc|#rZ;_iIBXXb z0sy)l(>OI|bV4-ap2qlt4Hr&d|1sh&dZyyt zaLV%xz<9Jc4jWNC-KjtN_PzJ)1dL>ZNQp&RH*gUt#zcW3IMeH{3C>hk(nw{_b#&9QGAV|0?_jIrR{cE9^?{_Q_Jd+}zm z*f17&j6JbNsSE}wP_zmF=Unh%4-r@WfjkA~oac-)ARl}zTH2;Tl&^5-QvCX z;mONS)3m6Mo7r?$j%U05R!W&93Fll&#ej@8v+2ZGr?ugc*+fHvr4-6K=e-x49}e|; zyFVP7fBU;%rD@7JOwY!|1#!VRN2LOAluD&}QRdHYF3UXo$?y4 z_j5$(x=uD70ljnD*bqWlRZ`$&Gf>R#xS!0| z<(PAxsKi_6DWqw(UVPkdmp4ye-@pI%%&z;k?wdNv%F*)XE)xLW_YDOyy7$gq-99tMINKZD zjVBk0QpdyL{QBu}xAxAaS%HiJ5HbL+gg`{05+$Yl?A7gOFRw>MzTUU{V-3KhO4GF9 z9Ife%)qSroF0Z7J43Gi$UZ+{fMH0M;632)<3Lczo>V4lH$CLB<{n8CdKOklD)6ZVKcyfMd+WUul z3jZHnZ_*`Ml4R$}psH`M(Ps~jh#aaatEvYyn;=LoK>h;mxaWW61`C2b2aN*~=&r8L z$}t9?%+2ggI*D+h&mywAfn8)qM7pP&nLg1g_kLGg<$@2^+RD{2L}vEWxLB_G?zmX3 z+jiae2T<8PzRS_ikcC;ag8$ax{%1POXX)gh|2aTBc^&5-D<+sd52|y%{S-bd1bqek z#eWND|0lvHiwb=9I-}qT`oL&@;g+AB^ttp=l`|KmVAzO>h?#AXVnigTq&es0XTb&J z=Jjtbu5U$h*}0a|j9+e3%Xe3laU%M&=N>>zImb9ngR2{3oO6}TF4y^Iw_2ZVHfQVY z<=Oew#r56g_1)#oo5lJ(#Z-oZ7$Xu|V?~vSOKD+MwSF2y@D~^7hzI#)MccZe~$sy=y7CB|%xxxP3*9*6nQKs;LIL4@1LJY^g z|L*4x&o76&+w0$c^A!^@;my_g?dAE!X1!T1tIA%SZGZpkF9+}c^FMt1pZ@-j&$|~t zP6`O3*4d_M05RtrQp}P|yV+*5zI%23!;kO!VQiWj5twN5sqc>}TI$hLl9V$c#^7JQ z`PI-JV;F4Jq~wX%8Y7Zb1eL~NP*o6R>n`4W{rK*OoT7D0S1)o3%k4$8Sg9xyftChj zMMO4+j4A0CVv}=dn#DNuC420HXT!Vw3xWCFZ-4#MyL)Ht`;Yf`uP&?FJv=Phxfa2j7{z8%60wN4MS7cFJ1Wc+e;?Ce|k9_k1xmJuYddH?)jJ{dmqMe zxW2gBZWfadA*Q-=C4*AM;6K)zGgraM5FxQ4)rU^u5!^W~< zX8Y-7$SJC3(2Rg+Eg%A!>)S7`ZtgxwE@g5LF_yl{UrJ8DoZLUdpov0^-cSAU#Z`^1 zs#489ug2&5-P}M}3UhPLvwu^dn9yU4BDr$)%(6g4r0%#s9`-m~ZB-nl2sE$3i;BdE2m(^po^zcOLW$TF=Z~t4!%)|) zVGD>)AAcJAF@r(KRiCajDGSy=A1<`Gc6Xa zF2ms&w=Ifu{eYDozKRmy>K07$> zj~{>fwppwJAq9VN`TFJQBckNsnVHxepFS8@569iu?KbDPDtR1^cW=HJCf^-N?ihrc<1$;4@cJM2Y7z2 zq(BNrRZv9*UY;I|t26N9bNBB4`Qds0#jBf_m)-sS{pIy_)3$z^j{Dtad)^P7bJZ~P zIi;BW(Cu?hDR^TmYb#f^!H=H|hyP4h`Iid&r}gKj&FbmKQpRLf#he9H0fh_YT|o)S zSXVXe=K^dzMa^fsGehZp{_G)#Qj=Op!1L;Yu^_!pwI<~;A)iNSCT2F)5z|b3kSs9? zq*Azrh{jgdwSc@_ZO<=nh(9YZ-7cnL8hyCOGX1TUi zZLKS3$826bEn#L{&>VHZQvwZ&KN^6l+7`2U78&|}=)02Rzc{}PDIL2m1)ozk#u{r6 zFV9HG#x!-yY;#V|StNLT__$hai0vHRMI~aQBD-T20U*f`bIK{j7(>i4mD63S%1mR3 zDJ>SQb=AxB!=L{CKi+-$`}6D908$*2h>)`=U`g@J#8k_qh(!I^i^A>AW!H5n$>()6 z&bcvTxHMJ85M5O(3J|80VoXoFmzTrwY4>vMh7jU71u6(6Bp)L*=Q_2bX)$0-s5fdT;$9lBmstaW|2XKRM8b5(;xDR@8xk*Zl}mc#zBn21V$ zCJ{}+=PXF5Dpk|I`TF-y5ATU9RWVh)+FX@Z*V#ZSP+)6WH0PYcgvhR{oOPW=0g-+jtE&EA|IP3Jr@#5_cC&o< z;dvVSoMoE)YQ66J!%si_)9vk>&Gvl%{M>af%hj24&GE2{lB}zUIL5G8tcGzM#y)2W z({wnze0=|tvDIp^j4@=%aT>Q5*D?AK0|BBj<*tK(IgZ(%Dx>+n1OG1j#2k))5s|Mk${Y1_(g^>XvimPHI;ud#Jgev>5R;L#fZ2uKcajk zdmJfTb{EddNm-|mea;?VcSd$jh^$Js?0uYMo>AwrMP)lKzOqBcxw5l4<9EM5e}DY` z`uz3&>+^WL#&f-11a5|@2s)ZErEx*{Q7ucgJ{G!d_wR9WjMz2nGgwwBMOu&qI!P8@ zeKvE|76BU`l<5|zZGHY2^0QaA_vb0F%=htpGP=1UJHch3n29u9=ANk3O6hf9cL>|R z7WpJgi;CHDvYC@CUA^Cm6BmW)>P0)5q^?ydm=v^Og<_zT+$u|l$4|%Wy|1I_O^UQO z*kOa#MjC8IT*2WZKcf3o@=;Ty6>iQV-mAkN&26pCC)?YfW^S-Mwcfwp%aKv&=rF)C zDZ^XzRAt>io(but)O&y%kNLAYHq(pkcq|26GOzD@^fd-*MEBe7>||~Jv)cWmg}(7S z%Gq{uA93i##Egw+dMvJ~?t;8TZ@N%UenzIH9}QI*^|&f_H4wjc>)A-}cGZXWkdP45 z%-P*={F9FJRU(y|jF{Es6}k^%d(CF*BXc+Qr{d;j=nKKopsm98(13BaaF)OG=lLBW zK^HsQp(+PU9W)T6E#haD7JPz8KC$$zl~o>En<12UZX3_fez2$skcnnTWneyIVdT@r zklzPk5ng;m?j@%~n%?7MZX-O}aQ;TmJI`tI@C|+Ase{Ebk7>ar#hZC!$0~vvCDvH} zrGYTz69~oGi%hNc;k%f*IFBg7FtBj3_1bqtJh*u?b+}0YkQe|Mt{op&MJ}yoF;!Ph zAxP7k+Zbe1TW}5YmtWQC89b4>Yh{dI1TWpo_D2#ce!stx`HGv*)DT3Q2FQRo$O@+C z-5T{hq|L#XH=zb19xVxiu6fjhP}TKmB@Wg7R)BqNbqO!P%P(WJ3>bGS9nmW$^@w{E zHL>sQoo1KCaX=ItVa_jHf*l7r|6aJqfVAeNOdL;qAp%3WyFs!XHc!1OM)}?|mPs zcJX3#1)2Q#PRD(0r95H>dN+-&_`f z6Yi^|w1JXjtKxE4kJTDLq|~Yq)NQQS<#i`j0bxIG$9YMTMh3Ln)DTy9v)Ldp11X-S zvA<2S>4)UwgW+pf)JygsXFs}uX3V21M}D+&;Z8d_5~9vB zt8xH|0(MILsHqq4{^N4k*TXUMs*(t;nOMsp96pecg(j@DSZ6)D&tVa8{Z&xrW4)Hm ze``?6&~m#c;JknO5pP+td-XTK3S`VR5r~be$(_K0B|J9zU0XQhBqoL}+cL;-Hazs= zeSL!uZ}7u*XU31?bQMh8+ir-dZ#l3pe$4Sr4h?H##n;8fFKaOlL9-vKmo@*F61O(M zuS^44F-p;?nELT4T-?4NEyae7LbD9+@FXz4!wZ0 zw0rQ@dW4(aDYAOV#DNf#M>S@1Payy)X3h=c<~q?@zlxXZz3=U5kGLIBUpt5Gt_+<| zlELo?N%uZLN`;)bEqJiI3_WF~hLQ>Td z3m`rOXf}rUqqircK@mg?ULd8QbRo~x`B90q@Q4<0cCfUAIP6pHyWC$@ql#r2FdmI* zSNBAx*Q1JY%Yk@-n0M|16yAVVnekO_dj8scG2}zh39ncv%cHuiB*YN36ys{o8kdsO zFO1Gg#5wCLh_G8SJq!pJnKXCNk9T+Y@uo6ckUes;2ZMo3+znEvEgXt(aayIn{xN~2 z3H3T*zjgI|UN1~s_|?0xoqY28q3)4L3e-!>gg^1S|AkTF3{7y8;&V+5}*P@ zx7)#++S^bvSUxFS@CE7);U$Ln+5~L_wzMv4VuFE$ZI-mQ;SqMV4TxC=Y+gtzTEm>e zlAZ*4&H2O}AZ#R+BoYIR@e7#?GNyL!692k4Mm+x+7W(}B=u-rAkBYid6xNt6s{8ZC zLClhme_$>$H2kCq+WHKEP<3Iad{$DZ0*OdT(~kud><&K86IVa_Xe0B1bQiwOXpNfG z&3(&lW?||_5|NiS`Fe1R<2xjEKmb+k4+bQv8Kq;zRbTd0i&1_~ICk))#`IF0fH{3O zmx`nw^D>1y%S*3HPXs*zIe>ZX8!Zw2mALD4{ZQMrHky&z_q7o9EIlB=D0t^QBhHnv zdWIHq?5M8Z_Q=^%*4XFetGPmQC&vGeeij%cfAGD*!?AFSr@|ggXCm_WrEuIb7-3%u zG#{~kK`UFOj$!*%;lIs{(hrw@%gU0pm<(qPMvEc`<=&o8vPu1^vj)Ju|C}IqBhGr& z=j?q^qN3+Re0;5)+kgG$lg@o3E;0|L0o0|xDqUFh&8&ojh*L|)GinF*H6~t!eYiPq zYTfZc571&wL3FM|4Ttkff{35|IsOwi3vQUXY6^@AZ~fc{?fzZm!SUHQ`*EZoie*lL zgD~qb$6=at+5BHyGUgQ)H!vIaSBa|>!%FR4cn;{o`6LCvaC zf$+s!-Fq>BVl7ytwHO_{X_5jPf*E|14z|0j9n9jwG4$^F{XUh<9cw&mx7r;(H2SkRos%+ibQrh`@KB;k;CRl^ zL1Ib`xvVyjdP#x9Z=p#>##^F*8O)Ht3Y7HXBRXyzyN`uk;a)f#w9*#I~ zYxgXYSwAzgmn0?a5CN#kSB@T`R{D&;In^1Ix(sM;3Q;nAk1zAO--fNO$SGo3&9LR&tt3r9W>ZgF?arzIx>h$9!>duLKmqV9}xRFwxSSrw@PSCvQdkEG#(d{@@r9 z5aieH6LEUPVl(-qgt>~0B-mqpEvZXSFSgYT)13mzbh0OHFDln?xK-f$3U)uuIOTwQ zEcQ}cF0N~<+)Ijql%fR|9cK@U8zUO9dCbh(?X7YtQ7K~%kZWl89~dE^r+4p@&|G`_>FA-5z2S!sq??5;V|8akd>=Z( z4j0Iij`m(N(`uguqn$!S!lA57z7YX@X%99WjQHHl*~J49_uifj3*~OFuM27tqzQD2 zX`_lsox{EjGYP~hKY^UvLOsREZeaGzRf>QX6Qo2idg&&Q0fOy}bO27V#a%ht<@g$YwRM{CL;2}%+k8m(3i^|c!t#Qi_>#zMD=uo&8O1U z3Dw7g#mzPOE!I40&v!I6v~x64V|556)kV>jI02M_zA57AO$if3ry?hRfAg9{bwE!} zAl_u8(@7!?MOqtbsP#nAwC{!ndSVn{nh+p&O2CrL{SSn!a{ZD1El8H&l;CG>5rnqa z6j0d+!Q6Q}>Q{MGSGS)?+P3ozCr|$Yg#B!L$l2N9{AKkbntKYi`wtA9hTI8%5zh0? z88ejDsn~vg5+q_EW#HmE6fDDNj_|zQ|JQ#Hdycs;w{@=q7@F`-h+RXS@SN_Y{n&EG zN)EOE?xhL|6Kc7a)X-qi@KiF>Wup#6p*eYgtrXV@R5a+5E{0YuqgA=CBg+Or{Pd|A z{;X1O(ztFdr342A2Kf1%5gGBXK<{GBNwc$db9UYlN5|Us6NWS4oQnlDE$x<(KrWCf zW#!o=q;6%KU)(j6HP*`0vs3KcBaSJTeM;quxsjXvc-D)N{+H$zXcMcCIDQeX>!MyW z$`r{o6tk0{nUR4j@Se`+rY2JaYVw6FsE1nx!FU-Cs*A9HC`i{g~{i1mt0 z#hf5&Or{QiTR;3x8Utzd+~M_91}peqd>X#o2mP2ULXBJvLzCk5N9>VV?41jfSgf}N zF|gjIE5qODIZi^-C{%|X0UDGZ6vcVvwdNBq$Q@LVDT_G@wVVXK#9(OK(bDWSqe?j) zZB3@0(N^d_WK+hU-|z0pr%Sgq=t;SZU^uVe+b^h*?o`|B-Ff%{mo-KI3LhQIJG8pE zGBkSj$W+o>Kk^AiN0hSKDjVJy5zN4dOaphwWe#QcW4Lhi!#_G$dduaKW)dv3gB)eE z9wWJyekcnt`U=mb_b3ag*(>`3Tn~7%7xX_)05Sm^Mw(s!?u}@mR9H{8|p5? z$EW006m?cJ4fmhxm>_jw!qKi=G~#IUY^x(=fAkEsgzGpvkfBfgQ zC|$`rbv(=43ftm>;MUHG~ce2zbvts%VH(XT2io zk(JMVNvhb%w!YSyLH%v78&ct!tTRhw33uFceET|UGJHNkcT6#+oXz^32k+Z!k}7bw ze(zCG3Qo@S;aCpGl(DvjjybA8*Md&8E^7^^17a9RON4-ObIRQJ!aewIt6%FJE@$^5 zk5>_JIDm=bG2WL~>AFKTDK8{!JrGtVDr&X|HB5Vxqz9E#mCvkP6}(@OA?^UUS_B(3 zh?kbi`q`Q+()~)2FSAp4WU}_`JU;Sal9zYNS2*CluRnzYF{xWml_? zy|Yt+W#G^G^T%A2h2r4j9AGjxg8+^7YuDSl&q)YNQos z`LH`Tysg$O#`%1g^%>}$$(hg#22qveU zck^B(z~1rS_W^GwGuG{Az)4C)X7nZ!_ia##iP5>l*P=sBp#Tke=iG#2%H%%eA5M$$ z_LgRu%%8d?c^o4^TN&9b=%XYE#@8~Tfp;t@IY#|-`KBOBcbQ6mWdck1c z&+_loGFYVBFE7^3m6Zcg%M9-W4OTNij>sWPuZv-Sr5Ee zCka79q!IAqk6q<;3ZK!Wj1tZ!AIBf4ZI0)6kCD4aM-!Yv!o!ajht|OVC87A=)ajDf zH-|S^3!IPgX)t|QTeFR==SAmy#9@A8V{f>qysxi}9r=7=Mo8K%;&4A-=z*G5S;xuB zPzN>QT!G-es#?m8l3DXH)iCk&)?Ya9q?S`?Qrv_V>qL|+6z`Ym-`kmRNXOAY;mfQ_ z)g`dQ_eOmVy{f~`kJ5!4WadwC)?N-b=Ns1uID54=>KxnbhlmTBtyqw`@mF zkv!^ez8p7ERbL@G;{IC`tv>?nbcVT&%ndgF5daM2V<+jqC?-WQ^%bEfx6BL%UGY|* z47+=d*pd27Ip}rPdzMNjp=RAzg`vFw`eJ0Y=};QTbSh82h_gUn9W4`JDAEOlSK0$4 z#qFU=PY0!@xR*leTRy*_8b_SQaEk*{7Mrm5e@lXxb7S8NolbVkW#)APADZb1^GLF zOm;brx)s4PzA|4yV$1(k6iG|PNfyG`OLBRIrN}^zPm-)mT_jG>@?ej{T$}rWdbkptMDy&ksBeOhb4enFBH}CeUB-)dt9&;K>z1dl^ zWH*y`PvGL_Hh+@@S*I=0EygtWbaEyV0L%Sg_XVbFck_}+Vz^-Oq1Rf*BC=k-$Hvy$ z7LrQ~rJmr_lUUY)WbaDQX%2AhiK6tRrVSw!rs6qck+=DTtDT!?-y>{l8^)V;F#CL#8}S>>bbz!PV~-m;s84^C-ttcFe+t@o=b zg#R7t2st_O?})(7xQtalDDOAepZZa{8lxTYT$S&Ez^@7XYJ1xTG_Pk)-9|NcQ-=* zo}w}7lfuzS5E3w7^u$lj%dz8FzI<=znJljF$z)Fsn$-F9(|9UgI?aD)&X@E-_CsxQ z%&jTuBfs^7p%B}Ngzipe|u(L zgn_qO;dFOi#-T~N+`(77^GRzuLs#trQu`z{du>;x@@QtbBAi%l}w9dA|jiJA@U9F8)`SiOxHbA=@!b!7Z6G&?CjKC6|FT)=T95fSN+K*IOx>wO?V< z_rg3;Oj7@daJ`Rr?w?)YhfP{A(d$yO8^xH3Udg>@=w@lnlC(ah9{F1e{GK%d27S&? zeM}1YvE9`=&NVfYz_<~C);SF0mSdo?;b@ecVJEwUqbx6JEDi3i@hNbV3p_EG=5YJR zOZ1)FzO9RYWhHCtVEs~W;jz%bvybY}V0H)uyt%trd0Z96>us+zX8Ga6+-%1YdyHR8 z#N0-!4<>YiO~IdjjUcdh|`gn=d=T_VeO|K7xNL%vU>akqyKE=+fvqj8t+E)e0)Z{?#41hgT$%! zS)qObYq*wsn;iev&&98FE{r6fAwN46PhI4`imm=Gvl`-ev3bvPEwK6Tk|gv5pX?NR zezfZwemLL z_sJ*kuH)&-pH3>Jmo2Y*y2ZX0tzW8QO*f^&C|Ub)Xr+4Vg=KT?3?)NerN>iT@?^n@wV|o*A-4Ijs#5Z0KOc=ZP&S(f ze&mz_cvktakvs1#Sij4^C7kKbt~?^H8kxv|m;B5M<@(0!k^BYl_{x99<+z`7(^wew zv0hNP$GQs76MFjeV@6{Gn1WX2ahH6!KD3oso6G)B?ls}%9J54!F-C>!wxRz)9~(i) zc4Hf}Gmf&;7O)kp_=w70@}YW6KP5vsUqK^LimzL@r09WCY1cT=lUlVdvYBRO}#G5O23)?6&m_6*^ypT}t{^h7jOselej2MSqd>c%A zGu5q9s`AQX&nY1A0c-F6N}GK(dSG0DVg2nDOUpM&$$jOFK_aWeag!FC^ETrh*pvs@ zl#V&$$aT9Li`?aYc-8CWnh5lOcPrQy$v!02j6-SxVns5EFSYdISKS-sJEF>e`|=+I zKfDL%0;UhB7(6IB!@qzAQahin$1KU+OgRL}MLTw{8ad`ZQQl)-uRLvpN&W5vQAH`7@7A?;mt#fAB$*Xggf_#j$V4Up*Q{ z@`b5*8~qzRgRV4V6vce*HZUYS9p9gQcW=Fca(8XWnilfsHxJIjt)2lxbs^Pv-AK)t zufWk8Y%>W}-5&e26Rh1QZ9kM`CTw}?5xd=%9dD&h{8+-()(Z{Cnp%{4>K0n;)jwa< z&d?-YSzv$_A~QA$FKhc=@O4!-v>a#MB`4{@+HPG9Cyh=Tb~*uB`^wz;APncQMvGJy z3G+fke@}~C(&(h|sEN2BQ4pmO1`NKnCJBQwybffpFSo?g$x zf2D#U2Wdx>Bl1nmM^GP`cQ4+Oxx5LVIF)^kxez=?d}%6@j_;6U$`B-Wfu(W$bV@`w zu4S4ZdG{|1c5qeavy-ds;!W)NbotyWeGr&M6RA4&df=Ot@!b>XQTkP?G5Q##VWpVP zjnq>Fh@{@>6Ud}#ETnivCR;*Y_|3@hVx5w7W6pL*&#tUt4(;{p?0oGIop$_mxD*=K z@UdRudYT*sY+X&zu{D-@^NV=MQnWNo2IeHieuVT)V-&ufTA8JQ`#(z6Nzn_e4V){K z*GCh7iEn)$W-|LS$4NYfc5EK4wgrhRxq zoIi3Gd@GA+1rM<_e&`4dJz~;8wBlwEW8i9q+1*~bYqL&nEU)or=g=6F5O?DBJCq!F zAOdBFV4sEd|2?9KA`%z4^myB_T1;NmRrbs`Q@K-^S~gXZmb$x3mDE^YSFnafg!$WB zW-64esVY}TmTsQ5VufU6Wj#C(dreLG0``|;3X=bZjNB;QSXL%v z&5dY$?dr^or`yoqNn1~&X@Cu-y5>N(HG38{_Ni)!U*Xs<1LHOJX(MDknf9MO2zSzA zofHg5U0>j#t-o7QvtZ>JVwrU+B!9PRXv)RN5BP|u9}obywiS`*vR$in4AU&LK&lIx z#Y-`m;%oJx@v$PftSbD>YiZltA_hy4OD!#Nqq;rhjO3WGJ@_oxykswFS&;o@98tgR zc~^s*Tdj@3lHA*ZLzKaYjaxOsup4O@g+SbM!_-3`2{ZC+N%R+`WmhEyAdK|Pkr)g? z=cyZLEXtYPn?&E;iqntnDwXC(@5L%7XjS$ za=N%0v(^44J-L3*V#&Z-t#UzPD*G8LD6H;Iq1Jx&n`}{+U|TiQQs8;iBkG55Zmxx- zpYArw<%8?Y!Kf@>_T4th*$*1kl-Rvqna5~+gfG6VPfB}CelGpY@Qs@76?jgE94CE- ziFQ1s9QMQxk$L>2nHELRfc;doGaDj=+;&>$(Lg)YHfB}<*mD$#!$DEYt7U3z6oYDK zgp!vIniQND4Q}?P)t+KkE`lFP#WKsar>Vid8CTap&**uZQ5R}UsjkxR;{{xs(IQH{ z_U_kvEnW0Ly-nzCYY1MaNRX=nxb{k@7~4Rxto6{py!w37mXe|&kFhB5x0g>55Pze! z7{%|+7Aa2@mw*etT6R)VK}`ov9olch305i-E6a4kQF=U>DqbSu?HmGue?eiPhm!(E<2`bxSBx|8*78MVK)Akd$GP`> z5TyH6X=_tReMGwu6&3uf3D;0-kFmGhkPlW5q;j9^2-nv-SxPzUy-adhs`eW~S|b7y z)BWqQJs1LnWCIr;rIoJ26z-1ziJV};-W`LG(9n>uAXE;keR8b*MCI!2?Cfyz9F@LG zdJ?l0(Gqd7eY!t8hToOy{$HfxY?p>!2szl-7P6k@=T{+YFR&Nq>QL0&+-%~UP;wZe zS*zz_Xu>i27u5;uETbV6S{8`c`r#)?gB`rSXIBwA&!H#o%~QO_+ru|_eyy)_n)nZd zMOf8*KUHL%)zob5tldhErNJlRe4&ET4@%YE7C>Z9K3aL>T59vVkH_|7upL4N$zmcr zWpjwD%Hq8osfm6|!?$uVZ8ZYwfl*)VdV%P8of}GJJE)7g7g~$E#C*ZeuEHyrIy@@} zrV2wKjeVu5UTi!OPX&^fhTS;U1PP4nFb0}-bxFF>#+xT9DG4H}u_sdcv(^G0A=r9r zXg2nUF4erI$6{TO7F1zNSsDG_FrbX3OEniwv&L{U5J zuVYI0p5r12Ka6ko$?6+)o+J%TjRTRklZ)L|J}lptH9Grx2Ko3qdorr@t#buXHF$Cd z%Fcx)`;F*z&l;t1fd5x9+oj27vrco_yZJ-S{;Y9r*neH;7N4pG_S%o6^HzDcT4mzz zmJh-n9AVIU24RbY@(h1oSLXh5Zq4rIX#qYIte9Jy*#iwI>&uZA&#NL z_jt`XGi0woiGQRoDfmZhYF{xI)-LxD=gzDXHjTug&EAG~%da~Y)*l+jrUo>6&RE`E8;Bi(Fot~UeLZS%;W zbJ!ZrPa{TX=Vf~ zf*+#Qs#bYWnF55TWSFs72Q=I9aQidih106>(qE12I?n zSbBknp8C35%q$#XLcg!u5k5BHrZZ!gm$TP)xgQFH>Z}R+JK7RZuD{6U_z|vGPG&E2 z7K`oQuqW0_xzMH{$aT?p+IW&;CTi|!|L4EmxmzH4ivauP>8Cnf@NFgm3EwJ#Ty|kM zS!+%HFOg{;gB{UV*)7g1bCVjMes!9S3&Q@-WEBT7opnc7#Z)#ook zzTx#W#|+s6Z$~3n8|-B))>^D(vTnmXrV#|I`UJyPtGWQMsz5w0KkFL7&tIXss({uv zYkekFl{4`)>rKmaQ+$$(E&rOnV$sKUHC3_KIBh8nlnIim#`B|Xc+lk7P-txO=RIN*AYN{_qu4@o`fg8HL#wrxb(q7Bw-TH6mn?G2wUT)2L#riCn^5ChO zV&C#thW*|^N zIh>xPDHA8HbKs-slH0+ryVfuZgtt?lx7uFtpTOs$LRlgId|~%GtTP-0umB*JeW^ft zz@X(_0@0=YHuSFUk64@}F>%#3cC6Y=-`X=SRyXEfg?Bjcz{uM?7JuRY0L8P7hJ=b$ z+}1tV*kM@gf=BbuE!(&*2)V}}w$MgB_VhHE`mvu}zK`(t`|P1iUD^$4#Z1f#H3l_q z-KBPp?yjuOO7Jb=*OWNQpQ#k;R?1?1qeoOJ<<5;J!YQ$?gaigT)`G)YYdcTxz_mv@ zqEW*w+oYSUFDjo{jLlhZ*_jSTnZs=IIscgnv>cM&>U{D-Z{=|5^GHd>^QH^sLYtW& zLdebcl$_WB*L^y`i}YF;%jglC#u|G>Zpc1;n23AUE4Qc@y9hZ^I}XH1yeeTnb-*saUiWsx@~u4McrX z?ta{QGv?N#WZiga)-NNFEAnDj@`d00QlZ_scon++^$qvZaxih~Urfg3$PDd|b8p>V z+@<6&J>uom`35|7AxOsW9RJZ|&a5;S<;<>m4&<)6 xyqqdTPE`qdTTV_@PA;!K=KTLW@b-0fcMbmkAFM5@YtbG6^mL41wOaqa`XBk>H-P{E literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/assets/latency.png b/webapp-frontend/src/assets/latency.png new file mode 100644 index 0000000000000000000000000000000000000000..874d11b3f5330eaa9aea4c3d92ec68ae0917efec GIT binary patch literal 13966 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 literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/assets/mockdata/db.json b/webapp-frontend/src/assets/mockdata/db.json new file mode 100644 index 00000000..31bd4734 --- /dev/null +++ b/webapp-frontend/src/assets/mockdata/db.json @@ -0,0 +1,36 @@ +{ + "config": [ + { + "id": "jsonURL", + "value": "http://localhost:3000" + }, + { + "id": "host", + "value": "http://localhost:3000" + }, + { + "id": "metricspath", + "value": "/a1ric/metrics" + }, + { + "id": "delaypath", + "value": "/a1ric/delay" + }, + { + "id": "loadpath", + "value": "/a1ric/load" + } + ], + "metrics": { + "latency": 11, + "load": 100, + "ricload": 100, + "time": 123 + }, + "delay": { + "delay": 64877 + }, + "load": { + "load": 1 + } +} \ No newline at end of file diff --git a/webapp-frontend/src/assets/mockdata/routes.json b/webapp-frontend/src/assets/mockdata/routes.json new file mode 100644 index 00000000..0745958c --- /dev/null +++ b/webapp-frontend/src/assets/mockdata/routes.json @@ -0,0 +1,4 @@ +{ + "/a1ric/*": "/$1", + "/:resource/:id/show": "/:resource/:id" +} \ No newline at end of file diff --git a/webapp-frontend/src/assets/oran-logo.png b/webapp-frontend/src/assets/oran-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b6ce56468d87a3d9463ee75297b3895fc9a414 GIT binary patch literal 43935 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

r@f1gRWk|A*%4`3la7*fhEBO++ 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 literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/assets/profile_default.png b/webapp-frontend/src/assets/profile_default.png new file mode 100644 index 0000000000000000000000000000000000000000..2b90bf0515b39c61a53bbfde8309f231a6dc3395 GIT binary patch literal 6214 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 z�lvZ1pY05+AFXxlF*=tV>L2yl}2%-WH*qOb+2y)wmAp=bo+!(yPYR^;&dG#UYwy zS0_2#UzcQ#pbMFNel(cBq(%vok;cuX4H#8BZ6xVW5-GUBK%{Q@ckA+N*%(~+h kqxyP(%WL^RyuSnQKjp9z>s*WlQUCw|07*qoM6N<$g5yp|b^rhX literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/assets/xAppControl.png b/webapp-frontend/src/assets/xAppControl.png new file mode 100644 index 0000000000000000000000000000000000000000..9458a8581afe03c60ee8c3cd9b0fbdf972331bdb GIT binary patch literal 46015 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 Kye$*g_y2z$&=;`) literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/browserslist b/webapp-frontend/src/browserslist new file mode 100644 index 00000000..37371cb0 --- /dev/null +++ b/webapp-frontend/src/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/webapp-frontend/src/environments/environment.prod.ts b/webapp-frontend/src/environments/environment.prod.ts new file mode 100644 index 00000000..4be8f163 --- /dev/null +++ b/webapp-frontend/src/environments/environment.prod.ts @@ -0,0 +1,22 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +export const environment = { + production: true +}; diff --git a/webapp-frontend/src/environments/environment.ts b/webapp-frontend/src/environments/environment.ts new file mode 100644 index 00000000..3f0e8d17 --- /dev/null +++ b/webapp-frontend/src/environments/environment.ts @@ -0,0 +1,35 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/webapp-frontend/src/favicon.ico b/webapp-frontend/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..00b0fd0ef0b4e78fbb8cdb413ce84561dfeb404f GIT binary patch literal 15086 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

4K$ruCE1 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 XY+}&}KC=mD;X?Iq*l*cA?B4$ePY*3q literal 0 HcmV?d00001 diff --git a/webapp-frontend/src/index.html b/webapp-frontend/src/index.html new file mode 100644 index 00000000..a7fb606f --- /dev/null +++ b/webapp-frontend/src/index.html @@ -0,0 +1,33 @@ + + + + + + RIC Dashboard + + + + + + + + + diff --git a/webapp-frontend/src/karma.conf.js b/webapp-frontend/src/karma.conf.js new file mode 100644 index 00000000..0ac17912 --- /dev/null +++ b/webapp-frontend/src/karma.conf.js @@ -0,0 +1,50 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/webapp-frontend/src/main.ts b/webapp-frontend/src/main.ts new file mode 100644 index 00000000..87a19b3f --- /dev/null +++ b/webapp-frontend/src/main.ts @@ -0,0 +1,31 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/webapp-frontend/src/polyfills.ts b/webapp-frontend/src/polyfills.ts new file mode 100644 index 00000000..aa5f8422 --- /dev/null +++ b/webapp-frontend/src/polyfills.ts @@ -0,0 +1,104 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10, IE11, and Chrome <55 requires all of the following polyfills. + * This also includes Android Emulators with older versions of Chrome and Google Search/Googlebot + */ + +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/webapp-frontend/src/styles.scss b/webapp-frontend/src/styles.scss new file mode 100644 index 00000000..4d97b1a3 --- /dev/null +++ b/webapp-frontend/src/styles.scss @@ -0,0 +1,11 @@ +/* You can add global styles to this file, and also import other style files */ + +@import '~bootstrap/dist/css/bootstrap.min.css'; +@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; +/* for sidenav to take a whole page */ +html, body { + margin: 0; + height: 100%; + font-family: Helvetica, Arial, sans-serif; +} + diff --git a/webapp-frontend/src/test.ts b/webapp-frontend/src/test.ts new file mode 100644 index 00000000..14553265 --- /dev/null +++ b/webapp-frontend/src/test.ts @@ -0,0 +1,39 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/webapp-frontend/src/tsconfig.app.json b/webapp-frontend/src/tsconfig.app.json new file mode 100644 index 00000000..190fd300 --- /dev/null +++ b/webapp-frontend/src/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/webapp-frontend/src/tsconfig.spec.json b/webapp-frontend/src/tsconfig.spec.json new file mode 100644 index 00000000..de773363 --- /dev/null +++ b/webapp-frontend/src/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/webapp-frontend/src/tslint.json b/webapp-frontend/src/tslint.json new file mode 100644 index 00000000..52e2c1a5 --- /dev/null +++ b/webapp-frontend/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/webapp-frontend/tsconfig.json b/webapp-frontend/tsconfig.json new file mode 100644 index 00000000..b271fd9f --- /dev/null +++ b/webapp-frontend/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "module": "es2015", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/webapp-frontend/tslint.json b/webapp-frontend/tslint.json new file mode 100644 index 00000000..c740a7b2 --- /dev/null +++ b/webapp-frontend/tslint.json @@ -0,0 +1,131 @@ +{ + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/xapp-mgr-client/.gitignore b/xapp-mgr-client/.gitignore new file mode 100644 index 00000000..10d81e8c --- /dev/null +++ b/xapp-mgr-client/.gitignore @@ -0,0 +1,4 @@ +/.classpath +/.project +/.settings/ +/target/ diff --git a/xapp-mgr-client/README.md b/xapp-mgr-client/README.md new file mode 100644 index 00000000..3fcdc312 --- /dev/null +++ b/xapp-mgr-client/README.md @@ -0,0 +1,19 @@ +# XApp Manager Client Generator + +This projects generates a REST client library from the Swagger specification +file stored here and packages it in a jar. + +## License + +Copyright (C) 2019 AT&T Intellectual Property & Nokia. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/xapp-mgr-client/XappManagerClientDemo.java b/xapp-mgr-client/XappManagerClientDemo.java new file mode 100644 index 00000000..bb5a58ad --- /dev/null +++ b/xapp-mgr-client/XappManagerClientDemo.java @@ -0,0 +1,51 @@ +/*- + * ========================LICENSE_START================================= + * ORAN-OSC + * %% + * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ +package org.oranosc.ric.portal.dashboard.xmc.demo; + +import org.oranosc.ric.portal.dashboard.api.DefaultApi; +import org.oranosc.ric.portal.dashboard.model.AllXapps; +import org.oranosc.ric.portal.dashboard.invoker.ApiClient; +import org.oranosc.ric.portal.dashboard.model.Xapp; +import org.springframework.web.client.RestClientException; + +public class XappManagerClientDemo { + + public static void main(String[] args) { + ApiClient apiClient = new ApiClient(); + apiClient.setBasePath("http://localhost:30099/"); + DefaultApi apiInstance = new DefaultApi(apiClient); + try { + apiInstance.getHealth(); + System.out.println("Healthcheck answered " + apiClient.getStatusCode().toString()); + } catch (RestClientException e) { + System.err.println("Failed on DefaultApi#getHealth: " + e.toString()); + } + try { + AllXapps allXapps = apiInstance.getAllXapps(); + System.out.println("getAllXapps answered " + apiClient.getStatusCode().toString()); + System.out.println("xApp count: " + allXapps.size()); + for (Xapp x : allXapps) + System.out.println("xApp: " + x.toString()); + } catch (RestClientException e) { + System.err.println("Failed on DefaultApi#getAllXapps: " + e.toString()); + } + } + +} diff --git a/xapp-mgr-client/pom.xml b/xapp-mgr-client/pom.xml new file mode 100644 index 00000000..cc549400 --- /dev/null +++ b/xapp-mgr-client/pom.xml @@ -0,0 +1,171 @@ + + + + 4.0.0 + + org.oranosc.ric.portal.dashboard + ric-dash-parent + 1.0.0-SNAPSHOT + + xapp-mgr-client + RIC xApp Manager client + 0.0.10-SNAPSHOT + + UTF-8 + UTF-8 + 1.5.15 + ${project.groupId}.xmc + + + + + io.swagger + swagger-annotations + ${swagger-annotations-version} + + + org.springframework + spring-context + + + + org.springframework + spring-web + + + + + com.fasterxml.jackson.core + jackson-core + + + + com.fasterxml.jackson.core + jackson-annotations + + + + com.fasterxml.jackson.core + jackson-databind + + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + + junit + junit + + test + + + + + + io.swagger + swagger-codegen-maven-plugin + 2.2.3 + + + + generate + + + ${project.basedir}/xapp_manager_rest_api_v0_0_10.json + java + + ${project.groupId} + ${project.artifactId} + ${project.version} + www.oran-osc.org + xApp manager client library + resttemplate + true + java8 + Apache 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + http://gerrit.oran-osc.org + RIC Team + + AT&T and Nokia + + + ${client.base.package.name} + ${client.base.package.name}.model + ${client.base.package.name}.api + ${client.base.package.name}.invoker + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + + attach-javadocs + + jar + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + + attach-sources + + jar + + + + + + + diff --git a/xapp-mgr-client/xapp_manager_rest_api_v0_0_10.json b/xapp-mgr-client/xapp_manager_rest_api_v0_0_10.json new file mode 100644 index 00000000..78bf0656 --- /dev/null +++ b/xapp-mgr-client/xapp_manager_rest_api_v0_0_10.json @@ -0,0 +1,541 @@ +{ + "swagger": "2.0", + "info": { + "description": "This is a draft API for RIC xapp-manager", + "version": "0.0.10", + "title": "RIC xapp-manager" + }, + "host": "hostname", + "basePath": "/ric/v1/xapps", + "schemes": [ + "https", + "http" + ], + "paths": { + "/ric/v1/health": { + "get": { + "summary": "Health check of xApp Manager", + "operationId": "getHealth", + "responses": { + "200": { + "description": "Status of xApp Manager is ok" + } + } + } + }, + "/ric/v1/xapps": { + "post": { + "summary": "Deploy a xapp", + "operationId": "deployXapp", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "xAppInfo", + "in": "body", + "description": "xApp information", + "schema": { + "type": "object", + "required": [ + "xAppName" + ], + "properties": { + "xAppName": { + "type":"string", + "description":"Name of the xApp", + "example": "xapp-dummy" + } + } + } + } + ], + "responses": { + "201": { + "description": "xApp successfully created", + "schema": { + "$ref": "#/definitions/Xapp" + } + }, + "400": { + "description": "Invalid input" + }, + "500": { + "description": "Internal error" + } + } + }, + "get": { + "summary": "Returns the status of all xapps", + "operationId": "getAllXapps", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "successful query of xApps", + "schema": { + "$ref": "#/definitions/AllXapps" + } + }, + "500": { + "description": "Internal error" + } + } + } + }, + "/ric/v1/xapps/{xAppName}": { + "get": { + "summary": "Returns the status of a given xapp", + "operationId": "getXappByName", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "xAppName", + "in": "path", + "description": "Name of xApp", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/Xapp" + } + }, + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Xapp not found" + }, + "500": { + "description": "Internal error" + } + } + }, + "delete": { + "summary": "Undeploy an existing xapp", + "operationId": "undeployXapp", + "parameters": [ + { + "name": "xAppName", + "in": "path", + "description": "Xapp to be undeployed", + "required": true, + "type": "string" + } + ], + "responses": { + "204": { + "description": "Successful deletion of xApp" + }, + "400": { + "description": "Invalid xApp name supplied" + }, + "500": { + "description": "Internal error" + } + } + } + }, + "/ric/v1/xapps/{xAppName}/instances/{xAppInstanceName}": { + "get": { + "summary": "Returns the status of a given xapp", + "operationId": "getXappInstanceByName", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "xAppName", + "in": "path", + "description": "Name of xApp", + "required": true, + "type": "string" + }, + { + "name": "xAppInstanceName", + "in": "path", + "description": "Name of xApp instance to get information", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/XappInstance" + } + }, + "400": { + "description": "Invalid name supplied" + }, + "404": { + "description": "Xapp not found" + }, + "500": { + "description": "Internal error" + } + } + } + }, + "/ric/v1/subscriptions": { + "post": { + "summary": "Subscribe event", + "operationId": "addSubscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "subscriptionRequest", + "in": "body", + "description": "New subscription", + "required": true, + "schema": { + "$ref": "#/definitions/subscriptionRequest" + } + } + ], + "responses": { + "200": { + "description": "Subscription successful", + "schema": { + "$ref": "#/definitions/subscriptionResponse" + } + }, + "400": { + "description": "Invalid input" + } + } + }, + "get": { + "summary": "Returns all subscriptions", + "operationId": "getSubscriptions", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "successful query of subscriptions", + "schema": { + "$ref": "#/definitions/allSubscriptions" + } + } + } + } + }, + "/ric/v1/subscriptions/{subscriptionId}": { + "get": { + "summary": "Returns the information of subscription", + "operationId": "getSubscriptionById", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "ID of subscription", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "$ref": "#/definitions/subscription" + } + }, + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Subscription not found" + } + } + }, + "put": { + "summary": "Modify event subscription", + "operationId": "modifySubscription", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "ID of subscription", + "required": true, + "type": "integer" + }, + { + "in": "body", + "name": "subscriptionRequest", + "description": "Modified subscription", + "required": true, + "schema": { + "$ref": "#/definitions/subscriptionRequest" + } + } + ], + "responses": { + "200": { + "description": "Subscription modification successful", + "schema": { + "$ref": "#/definitions/subscriptionResponse" + } + }, + "400": { + "description": "Invalid input" + } + } + }, + "delete": { + "summary": "Unsubscribe event", + "description": "", + "operationId": "deleteSubscription", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "ID of subscription", + "required": true, + "type": "integer" + } + ], + "responses": { + "204": { + "description": "Successful deletion of subscription" + }, + "400": { + "description": "Invalid subscription supplied" + } + } + } + } + }, + "definitions": { + "AllXapps": { + "type": "array", + "items": { + "$ref": "#/definitions/Xapp" + } + }, + "Xapp": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "example": "xapp-dummy" + }, + "status": { + "type": "string", + "description": "xapp status in the RIC", + "enum": [ + "unknown", + "deployed", + "deleted", + "superseded", + "failed", + "deleting" + ] + }, + "version": { + "type": "string", + "example": "1.2.3" + }, + "instances": { + "type": "array", + "items": { + "$ref": "#/definitions/XappInstance" + } + } + } + }, + "XappInstance": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "example": "xapp-dummy-6cd577d9-4v255" + }, + "status": { + "type": "string", + "description": "xapp instance status", + "enum": [ + "pending", + "running", + "succeeded", + "failed", + "unknown", + "completed", + "crashLoopBackOff" + ] + }, + "ip": { + "type": "string", + "example": "192.168.0.1" + }, + "port": { + "type": "integer", + "example": 32300 + }, + "txMessages" : { + "type": "array", + "items": { + "type" : "string", + "example" : "ControlIndication" + } + }, + "rxMessages" : { + "type": "array", + "items": { + "type" : "string", + "example" : "LoadIndication" + } + } + } + }, + "subscriptionRequest": { + "type": "object", + "required": [ + "targetUrl", + "eventType", + "maxRetries", + "retryTimer" + ], + "properties": { + "targetUrl": { + "type": "string", + "example": "http://localhost:11111/apps/webhook/" + }, + "eventType": { + "type": "string", + "description": "Event which is subscribed", + "enum": [ + "created", + "deleted", + "all" + ] + }, + "maxRetries": { + "type": "integer", + "description": "Maximum number of retries", + "example": 11 + }, + "retryTimer": { + "type": "integer", + "description": "Time in seconds to wait before next retry", + "example": 22 + } + } + }, + "subscriptionResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "1ILBltYYzEGzWRrVPZKmuUmhwcc" + }, + "version": { + "type": "integer", + "example": 2 + }, + "eventType": { + "type": "string", + "description": "Event which is subscribed", + "enum": [ + "created", + "deleted", + "all" + ] + } + } + }, + "allSubscriptions": { + "type": "array", + "items": { + "$ref": "#/definitions/subscription" + } + }, + "subscription": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "1ILBltYYzEGzWRrVPZKmuUmhwcc" + }, + "targetUrl": { + "type": "string", + "example": "http://localhost:11111/apps/webhook/" + }, + "eventType": { + "type": "string", + "description": "Event which is subscribed", + "enum": [ + "created", + "deleted", + "all" + ] + }, + "maxRetries": { + "type": "integer", + "description": "Maximum number of retries", + "example": 11 + }, + "retryTimer": { + "type": "integer", + "description": "Time in seconds to wait before next retry", + "example": 22 + } + } + }, + "subscriptionNotification": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "1ILBltYYzEGzWRrVPZKmuUmhwcc" + }, + "version": { + "type": "integer", + "example": 2 + }, + "eventType": { + "type": "string", + "description": "Event to be notified", + "enum": [ + "created", + "deleted" + ] + }, + "xApps": { + "$ref": "#/definitions/AllXapps" + } + } + } + } + } \ No newline at end of file -- 2.16.6

++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