From 49bb3bf8af241a9c729b9c5b6f4494f1d7fcb554 Mon Sep 17 00:00:00 2001 From: Nightly Neko Date: Mon, 13 Apr 2020 22:03:31 +0800 Subject: [PATCH 01/13] added source code --- .firebaserc | 5 + .gitignore | 157 + firebase.json | 23 + functions/.gitignore | 8 + functions/package-lock.json | 3256 ++++ functions/package.json | 30 + functions/src/@core/firestore-collections.ts | 9 + .../src/@core/firestore-interfaces/contrib.ts | 21 + .../src/@core/firestore-interfaces/global.ts | 6 + .../@core/firestore-interfaces/messages.ts | 13 + .../src/@core/firestore-interfaces/request.ts | 84 + .../src/@core/firestore-interfaces/user.ts | 22 + functions/src/index.ts | 559 + functions/src/mailer.ts | 104 + functions/tsconfig.json | 15 + functions/tslint.json | 115 + hosting/.editorconfig | 16 + hosting/.gitignore | 51 + hosting/README.md | 27 + hosting/alien.jpeg | Bin 0 -> 193302 bytes hosting/angular.json | 139 + hosting/browserslist | 12 + hosting/e2e/protractor.conf.js | 33 + hosting/e2e/src/app.e2e-spec.ts | 23 + hosting/e2e/src/app.po.ts | 11 + hosting/e2e/tsconfig.json | 13 + hosting/hospital.jpg | Bin 0 -> 20700 bytes hosting/karma.conf.js | 32 + hosting/package-lock.json | 15385 ++++++++++++++++ hosting/package.json | 53 + hosting/src/@core/MOCK.ts | 20 + hosting/src/@core/firestore-collections.ts | 9 + .../src/@core/firestore-interfaces/global.ts | 6 + .../@core/firestore-interfaces/messages.ts | 15 + .../src/@core/firestore-interfaces/request.ts | 84 + .../src/@core/firestore-interfaces/user.ts | 22 + hosting/src/@core/leaveMessage.ts | 51 + hosting/src/@core/requestContribution.ts | 65 + .../@backend/admin-contrib.service.spec.ts | 16 + .../src/app/@backend/admin-contrib.service.ts | 9 + .../@backend/admin-request.service.spec.ts | 16 + .../src/app/@backend/admin-request.service.ts | 9 + .../app/@backend/admin-user.service.spec.ts | 123 + .../src/app/@backend/admin-user.service.ts | 204 + hosting/src/app/@backend/backend.module.ts | 12 + .../src/app/@backend/contribs.service.spec.ts | 32 + hosting/src/app/@backend/contribs.service.ts | 34 + .../src/app/@backend/message.service.spec.ts | 47 + hosting/src/app/@backend/message.service.ts | 118 + .../src/app/@backend/request.service.spec.ts | 38 + hosting/src/app/@backend/request.service.ts | 173 + .../src/app/@backend/stats.service.spec.ts | 40 + hosting/src/app/@backend/stats.service.ts | 120 + .../@backend/user-contribs.service.spec.ts | 57 + .../app/@backend/user-contribution.service.ts | 189 + .../app/@backend/user-request.service.spec.ts | 111 + .../src/app/@backend/user-request.service.ts | 306 + hosting/src/app/@backend/user.service.spec.ts | 81 + hosting/src/app/@backend/user.service.ts | 267 + hosting/src/app/app-routing.module.ts | 10 + hosting/src/app/app.component.html | 1 + hosting/src/app/app.component.scss | 0 hosting/src/app/app.component.spec.ts | 31 + hosting/src/app/app.component.ts | 10 + hosting/src/app/app.module.ts | 27 + .../src/app/auth/auth-content.guard.spec.ts | 16 + hosting/src/app/auth/auth-content.guard.ts | 29 + hosting/src/app/auth/auth-routing.module.ts | 37 + hosting/src/app/auth/auth.component.html | 22 + hosting/src/app/auth/auth.component.scss | 59 + hosting/src/app/auth/auth.component.spec.ts | 25 + hosting/src/app/auth/auth.component.ts | 15 + hosting/src/app/auth/auth.guard.spec.ts | 16 + hosting/src/app/auth/auth.guard.ts | 29 + hosting/src/app/auth/auth.module.ts | 28 + hosting/src/app/auth/auth.service.spec.ts | 16 + hosting/src/app/auth/auth.service.ts | 44 + .../app/auth/sign-in/sign-in.component.html | 37 + .../app/auth/sign-in/sign-in.component.scss | 3 + .../auth/sign-in/sign-in.component.spec.ts | 25 + .../src/app/auth/sign-in/sign-in.component.ts | 69 + .../app/auth/sign-up/sign-up.component.html | 68 + .../app/auth/sign-up/sign-up.component.scss | 3 + .../auth/sign-up/sign-up.component.spec.ts | 25 + .../src/app/auth/sign-up/sign-up.component.ts | 99 + hosting/src/app/firebase.service.spec.ts | 16 + hosting/src/app/firebase.service.ts | 57 + .../admin-agencies.component.html | 45 + .../admin-agencies.component.scss | 32 + .../admin-agencies.component.spec.ts | 25 + .../admin-agencies.component.ts | 22 + ...admin-agency-member-request.component.html | 30 + ...admin-agency-member-request.component.scss | 38 + ...in-agency-member-request.component.spec.ts | 25 + .../admin-agency-member-request.component.ts | 75 + ...dmin-agency-member-requests.component.html | 31 + ...dmin-agency-member-requests.component.scss | 38 + ...n-agency-member-requests.component.spec.ts | 25 + .../admin-agency-member-requests.component.ts | 22 + .../admin-create-agency.component.html | 56 + .../admin-create-agency.component.scss | 38 + .../admin-create-agency.component.spec.ts | 25 + .../admin-create-agency.component.ts | 62 + .../admin-dashboard.component.html | 1 + .../admin-dashboard.component.scss | 0 .../admin-dashboard.component.spec.ts | 25 + .../admin-dashboard.component.ts | 16 + .../admin-delete-user-dialog.component.html | 11 + .../admin-delete-user-dialog.component.scss | 0 ...admin-delete-user-dialog.component.spec.ts | 25 + .../admin-delete-user-dialog.component.ts | 15 + .../admin-users/admin-users.component.html | 41 + .../admin-users/admin-users.component.scss | 10 + .../admin-users/admin-users.component.spec.ts | 25 + .../admin-users/admin-users.component.ts | 54 + .../src/app/main/admin/admin.component.html | 28 + .../src/app/main/admin/admin.component.scss | 3 + .../app/main/admin/admin.component.spec.ts | 25 + hosting/src/app/main/admin/admin.component.ts | 27 + .../src/app/main/admin/admin.guard.spec.ts | 16 + hosting/src/app/main/admin/admin.guard.ts | 24 + ...ncy-completed-contributions.component.html | 49 + ...ncy-completed-contributions.component.scss | 0 ...-completed-contributions.component.spec.ts | 25 + ...gency-completed-contributions.component.ts | 73 + .../agency-contributions.component.html | 48 + .../agency-contributions.component.scss | 0 .../agency-contributions.component.spec.ts | 25 + .../agency-contributions.component.ts | 73 + .../agency-details-edit.component.html | 32 + .../agency-details-edit.component.scss | 0 .../agency-details-edit.component.spec.ts | 25 + .../agency-details-edit.component.ts | 63 + .../agency-details.component.html | 26 + .../agency-details.component.scss | 0 .../agency-details.component.spec.ts | 25 + .../agency-details.component.ts | 23 + .../agency-inbox/agency-inbox.component.html | 33 + .../agency-inbox/agency-inbox.component.scss | 6 + .../agency-inbox.component.spec.ts | 25 + .../agency-inbox/agency-inbox.component.ts | 37 + .../message-dialog.component.html | 26 + .../message-dialog.component.scss | 0 .../message-dialog.component.spec.ts | 25 + .../message-dialog.component.ts | 31 + ...ency-incoming-contributions.component.html | 49 + ...ency-incoming-contributions.component.scss | 0 ...y-incoming-contributions.component.spec.ts | 25 + ...agency-incoming-contributions.component.ts | 69 + .../contribution-dialog.component.html | 108 + .../contribution-dialog.component.scss | 0 .../contribution-dialog.component.spec.ts | 25 + .../contribution-dialog.component.ts | 156 + .../agency-overview.component.html | 90 + .../agency-overview.component.scss | 23 + .../agency-overview.component.spec.ts | 25 + .../agency-overview.component.ts | 49 + ...agency-request-contribution.component.html | 61 + ...agency-request-contribution.component.scss | 0 ...ncy-request-contribution.component.spec.ts | 25 + .../agency-request-contribution.component.ts | 132 + ...gency-request-delete-dialog.component.html | 12 + ...gency-request-delete-dialog.component.scss | 0 ...cy-request-delete-dialog.component.spec.ts | 25 + .../agency-request-delete-dialog.component.ts | 16 + .../agency-request.component.html | 141 + .../agency-request.component.scss | 0 .../agency-request.component.spec.ts | 25 + .../agency-request.component.ts | 191 + .../agency-requests.component.html | 55 + .../agency-requests.component.scss | 32 + .../agency-requests.component.spec.ts | 25 + .../agency-requests.component.ts | 96 + ...-transporting-contributions.component.html | 49 + ...-transporting-contributions.component.scss | 0 ...ansporting-contributions.component.spec.ts | 25 + ...cy-transporting-contributions.component.ts | 69 + .../src/app/main/agency/agency.component.html | 58 + .../src/app/main/agency/agency.component.scss | 3 + .../app/main/agency/agency.component.spec.ts | 25 + .../src/app/main/agency/agency.component.ts | 29 + .../home/contribute/contribute.component.html | 57 + .../home/contribute/contribute.component.scss | 0 .../contribute/contribute.component.spec.ts | 25 + .../home/contribute/contribute.component.ts | 112 + .../finish-email-auth.component.html | 36 + .../finish-email-auth.component.scss | 5 + .../finish-email-auth.component.spec.ts | 25 + .../finish-email-auth.component.ts | 72 + hosting/src/app/main/home/home.component.html | 1 + hosting/src/app/main/home/home.component.scss | 0 .../src/app/main/home/home.component.spec.ts | 25 + hosting/src/app/main/home/home.component.ts | 16 + .../home/overview/overview.component.html | 107 + .../home/overview/overview.component.scss | 67 + .../home/overview/overview.component.spec.ts | 25 + .../main/home/overview/overview.component.ts | 73 + .../public-requests.component.html | 79 + .../public-requests.component.scss | 7 + .../public-requests.component.spec.ts | 25 + .../public-requests.component.ts | 47 + hosting/src/app/main/main-routing.module.ts | 125 + hosting/src/app/main/main.component.html | 57 + hosting/src/app/main/main.component.scss | 33 + hosting/src/app/main/main.component.spec.ts | 25 + hosting/src/app/main/main.component.ts | 58 + hosting/src/app/main/main.module.ts | 82 + hosting/src/app/material.module.ts | 49 + .../card-request-contrib.component.html | 71 + .../card-request-contrib.component.scss | 7 + .../card-request-contrib.component.spec.ts | 25 + .../card-request-contrib.component.ts | 77 + .../request-item/request-item.component.html | 4 + .../request-item/request-item.component.scss | 0 .../request-item.component.spec.ts | 25 + .../request-item/request-item.component.ts | 17 + .../learn-more/learn-more.component.html | 46 + .../learn-more/learn-more.component.scss | 0 .../learn-more/learn-more.component.spec.ts | 25 + .../learn-more/learn-more.component.ts | 15 + .../leave-message-dialog.component.html | 54 + .../leave-message-dialog.component.scss | 0 .../leave-message-dialog.component.spec.ts | 25 + .../leave-message-dialog.component.ts | 87 + .../app/my-components/my-components.module.ts | 25 + hosting/src/assets/.gitkeep | 0 hosting/src/assets/completed-stamp-3.png | Bin 0 -> 247857 bytes .../1200px-Kuala_Lumpur_Hospital.jpg | Bin 0 -> 238099 bytes ...9 CaroMont Regional Medical Center 712.jpg | Bin 0 -> 71909 bytes .../cleveland-clinic-florida-wellington.jpg | Bin 0 -> 49392 bytes hosting/src/assets/dummy-images/ming.jpg | Bin 0 -> 11075 bytes .../photo-1519494026892-80bbd2d6fd0d.jpg | Bin 0 -> 84415 bytes hosting/src/assets/svg/learn_more_agency.svg | 1 + hosting/src/assets/svg/learn_more_donor.svg | 1 + hosting/src/assets/svg/learn_more_publish.svg | 1 + hosting/src/assets/svg/sic_logo.svg | 53 + .../vectors/undraw_air_support_wy1q.svg | 222 + .../vectors/undraw_conversation_h12g.svg | 416 + .../src/assets/vectors/undraw_create_f05x.svg | 68 + .../assets/vectors/undraw_medicine_b1ol.svg | 382 + hosting/src/environments/environment.prod.ts | 3 + hosting/src/environments/environment.ts | 16 + hosting/src/favicon.ico | Bin 0 -> 948 bytes hosting/src/hospital.jpg | Bin 0 -> 20700 bytes hosting/src/index.html | 17 + hosting/src/main.ts | 12 + hosting/src/polyfills.ts | 63 + hosting/src/styles.scss | 175 + hosting/src/test.ts | 22 + hosting/tsconfig.app.json | 14 + hosting/tsconfig.json | 23 + hosting/tsconfig.spec.json | 18 + hosting/tslint.json | 148 + 253 files changed, 30022 insertions(+) create mode 100644 .firebaserc create mode 100644 .gitignore create mode 100644 firebase.json create mode 100644 functions/.gitignore create mode 100644 functions/package-lock.json create mode 100644 functions/package.json create mode 100644 functions/src/@core/firestore-collections.ts create mode 100644 functions/src/@core/firestore-interfaces/contrib.ts create mode 100644 functions/src/@core/firestore-interfaces/global.ts create mode 100644 functions/src/@core/firestore-interfaces/messages.ts create mode 100644 functions/src/@core/firestore-interfaces/request.ts create mode 100644 functions/src/@core/firestore-interfaces/user.ts create mode 100644 functions/src/index.ts create mode 100644 functions/src/mailer.ts create mode 100644 functions/tsconfig.json create mode 100644 functions/tslint.json create mode 100644 hosting/.editorconfig create mode 100644 hosting/.gitignore create mode 100644 hosting/README.md create mode 100644 hosting/alien.jpeg create mode 100644 hosting/angular.json create mode 100644 hosting/browserslist create mode 100644 hosting/e2e/protractor.conf.js create mode 100644 hosting/e2e/src/app.e2e-spec.ts create mode 100644 hosting/e2e/src/app.po.ts create mode 100644 hosting/e2e/tsconfig.json create mode 100644 hosting/hospital.jpg create mode 100644 hosting/karma.conf.js create mode 100644 hosting/package-lock.json create mode 100644 hosting/package.json create mode 100644 hosting/src/@core/MOCK.ts create mode 100644 hosting/src/@core/firestore-collections.ts create mode 100644 hosting/src/@core/firestore-interfaces/global.ts create mode 100644 hosting/src/@core/firestore-interfaces/messages.ts create mode 100644 hosting/src/@core/firestore-interfaces/request.ts create mode 100644 hosting/src/@core/firestore-interfaces/user.ts create mode 100644 hosting/src/@core/leaveMessage.ts create mode 100644 hosting/src/@core/requestContribution.ts create mode 100644 hosting/src/app/@backend/admin-contrib.service.spec.ts create mode 100644 hosting/src/app/@backend/admin-contrib.service.ts create mode 100644 hosting/src/app/@backend/admin-request.service.spec.ts create mode 100644 hosting/src/app/@backend/admin-request.service.ts create mode 100644 hosting/src/app/@backend/admin-user.service.spec.ts create mode 100644 hosting/src/app/@backend/admin-user.service.ts create mode 100644 hosting/src/app/@backend/backend.module.ts create mode 100644 hosting/src/app/@backend/contribs.service.spec.ts create mode 100644 hosting/src/app/@backend/contribs.service.ts create mode 100644 hosting/src/app/@backend/message.service.spec.ts create mode 100644 hosting/src/app/@backend/message.service.ts create mode 100644 hosting/src/app/@backend/request.service.spec.ts create mode 100644 hosting/src/app/@backend/request.service.ts create mode 100644 hosting/src/app/@backend/stats.service.spec.ts create mode 100644 hosting/src/app/@backend/stats.service.ts create mode 100644 hosting/src/app/@backend/user-contribs.service.spec.ts create mode 100644 hosting/src/app/@backend/user-contribution.service.ts create mode 100644 hosting/src/app/@backend/user-request.service.spec.ts create mode 100644 hosting/src/app/@backend/user-request.service.ts create mode 100644 hosting/src/app/@backend/user.service.spec.ts create mode 100644 hosting/src/app/@backend/user.service.ts create mode 100644 hosting/src/app/app-routing.module.ts create mode 100644 hosting/src/app/app.component.html create mode 100644 hosting/src/app/app.component.scss create mode 100644 hosting/src/app/app.component.spec.ts create mode 100644 hosting/src/app/app.component.ts create mode 100644 hosting/src/app/app.module.ts create mode 100644 hosting/src/app/auth/auth-content.guard.spec.ts create mode 100644 hosting/src/app/auth/auth-content.guard.ts create mode 100644 hosting/src/app/auth/auth-routing.module.ts create mode 100644 hosting/src/app/auth/auth.component.html create mode 100644 hosting/src/app/auth/auth.component.scss create mode 100644 hosting/src/app/auth/auth.component.spec.ts create mode 100644 hosting/src/app/auth/auth.component.ts create mode 100644 hosting/src/app/auth/auth.guard.spec.ts create mode 100644 hosting/src/app/auth/auth.guard.ts create mode 100644 hosting/src/app/auth/auth.module.ts create mode 100644 hosting/src/app/auth/auth.service.spec.ts create mode 100644 hosting/src/app/auth/auth.service.ts create mode 100644 hosting/src/app/auth/sign-in/sign-in.component.html create mode 100644 hosting/src/app/auth/sign-in/sign-in.component.scss create mode 100644 hosting/src/app/auth/sign-in/sign-in.component.spec.ts create mode 100644 hosting/src/app/auth/sign-in/sign-in.component.ts create mode 100644 hosting/src/app/auth/sign-up/sign-up.component.html create mode 100644 hosting/src/app/auth/sign-up/sign-up.component.scss create mode 100644 hosting/src/app/auth/sign-up/sign-up.component.spec.ts create mode 100644 hosting/src/app/auth/sign-up/sign-up.component.ts create mode 100644 hosting/src/app/firebase.service.spec.ts create mode 100644 hosting/src/app/firebase.service.ts create mode 100644 hosting/src/app/main/admin/admin-agencies/admin-agencies.component.html create mode 100644 hosting/src/app/main/admin/admin-agencies/admin-agencies.component.scss create mode 100644 hosting/src/app/main/admin/admin-agencies/admin-agencies.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-agencies/admin-agencies.component.ts create mode 100644 hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.html create mode 100644 hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.scss create mode 100644 hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.ts create mode 100644 hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.html create mode 100644 hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.scss create mode 100644 hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.ts create mode 100644 hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.html create mode 100644 hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.scss create mode 100644 hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.ts create mode 100644 hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.html create mode 100644 hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.scss create mode 100644 hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.ts create mode 100644 hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.html create mode 100644 hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.scss create mode 100644 hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.ts create mode 100644 hosting/src/app/main/admin/admin-users/admin-users.component.html create mode 100644 hosting/src/app/main/admin/admin-users/admin-users.component.scss create mode 100644 hosting/src/app/main/admin/admin-users/admin-users.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin-users/admin-users.component.ts create mode 100644 hosting/src/app/main/admin/admin.component.html create mode 100644 hosting/src/app/main/admin/admin.component.scss create mode 100644 hosting/src/app/main/admin/admin.component.spec.ts create mode 100644 hosting/src/app/main/admin/admin.component.ts create mode 100644 hosting/src/app/main/admin/admin.guard.spec.ts create mode 100644 hosting/src/app/main/admin/admin.guard.ts create mode 100644 hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.html create mode 100644 hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.scss create mode 100644 hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.ts create mode 100644 hosting/src/app/main/agency/agency-contributions/agency-contributions.component.html create mode 100644 hosting/src/app/main/agency/agency-contributions/agency-contributions.component.scss create mode 100644 hosting/src/app/main/agency/agency-contributions/agency-contributions.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-contributions/agency-contributions.component.ts create mode 100644 hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.html create mode 100644 hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.scss create mode 100644 hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.ts create mode 100644 hosting/src/app/main/agency/agency-details/agency-details.component.html create mode 100644 hosting/src/app/main/agency/agency-details/agency-details.component.scss create mode 100644 hosting/src/app/main/agency/agency-details/agency-details.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-details/agency-details.component.ts create mode 100644 hosting/src/app/main/agency/agency-inbox/agency-inbox.component.html create mode 100644 hosting/src/app/main/agency/agency-inbox/agency-inbox.component.scss create mode 100644 hosting/src/app/main/agency/agency-inbox/agency-inbox.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts create mode 100644 hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.html create mode 100644 hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.scss create mode 100644 hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.ts create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.html create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.scss create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.ts create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.html create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.scss create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts create mode 100644 hosting/src/app/main/agency/agency-overview/agency-overview.component.html create mode 100644 hosting/src/app/main/agency/agency-overview/agency-overview.component.scss create mode 100644 hosting/src/app/main/agency/agency-overview/agency-overview.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-overview/agency-overview.component.ts create mode 100644 hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html create mode 100644 hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.scss create mode 100644 hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts create mode 100644 hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.html create mode 100644 hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.scss create mode 100644 hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.ts create mode 100644 hosting/src/app/main/agency/agency-request/agency-request.component.html create mode 100644 hosting/src/app/main/agency/agency-request/agency-request.component.scss create mode 100644 hosting/src/app/main/agency/agency-request/agency-request.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-request/agency-request.component.ts create mode 100644 hosting/src/app/main/agency/agency-requests/agency-requests.component.html create mode 100644 hosting/src/app/main/agency/agency-requests/agency-requests.component.scss create mode 100644 hosting/src/app/main/agency/agency-requests/agency-requests.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-requests/agency-requests.component.ts create mode 100644 hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.html create mode 100644 hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.scss create mode 100644 hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.ts create mode 100644 hosting/src/app/main/agency/agency.component.html create mode 100644 hosting/src/app/main/agency/agency.component.scss create mode 100644 hosting/src/app/main/agency/agency.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency.component.ts create mode 100644 hosting/src/app/main/home/contribute/contribute.component.html create mode 100644 hosting/src/app/main/home/contribute/contribute.component.scss create mode 100644 hosting/src/app/main/home/contribute/contribute.component.spec.ts create mode 100644 hosting/src/app/main/home/contribute/contribute.component.ts create mode 100644 hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.html create mode 100644 hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.scss create mode 100644 hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.spec.ts create mode 100644 hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.ts create mode 100644 hosting/src/app/main/home/home.component.html create mode 100644 hosting/src/app/main/home/home.component.scss create mode 100644 hosting/src/app/main/home/home.component.spec.ts create mode 100644 hosting/src/app/main/home/home.component.ts create mode 100644 hosting/src/app/main/home/overview/overview.component.html create mode 100644 hosting/src/app/main/home/overview/overview.component.scss create mode 100644 hosting/src/app/main/home/overview/overview.component.spec.ts create mode 100644 hosting/src/app/main/home/overview/overview.component.ts create mode 100644 hosting/src/app/main/home/public-requests/public-requests.component.html create mode 100644 hosting/src/app/main/home/public-requests/public-requests.component.scss create mode 100644 hosting/src/app/main/home/public-requests/public-requests.component.spec.ts create mode 100644 hosting/src/app/main/home/public-requests/public-requests.component.ts create mode 100644 hosting/src/app/main/main-routing.module.ts create mode 100644 hosting/src/app/main/main.component.html create mode 100644 hosting/src/app/main/main.component.scss create mode 100644 hosting/src/app/main/main.component.spec.ts create mode 100644 hosting/src/app/main/main.component.ts create mode 100644 hosting/src/app/main/main.module.ts create mode 100644 hosting/src/app/material.module.ts create mode 100644 hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html create mode 100644 hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.scss create mode 100644 hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.spec.ts create mode 100644 hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts create mode 100644 hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.html create mode 100644 hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.scss create mode 100644 hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.spec.ts create mode 100644 hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.ts create mode 100644 hosting/src/app/my-components/learn-more/learn-more.component.html create mode 100644 hosting/src/app/my-components/learn-more/learn-more.component.scss create mode 100644 hosting/src/app/my-components/learn-more/learn-more.component.spec.ts create mode 100644 hosting/src/app/my-components/learn-more/learn-more.component.ts create mode 100644 hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.html create mode 100644 hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.scss create mode 100644 hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.spec.ts create mode 100644 hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.ts create mode 100644 hosting/src/app/my-components/my-components.module.ts create mode 100644 hosting/src/assets/.gitkeep create mode 100644 hosting/src/assets/completed-stamp-3.png create mode 100644 hosting/src/assets/dummy-images/1200px-Kuala_Lumpur_Hospital.jpg create mode 100644 hosting/src/assets/dummy-images/120319 CaroMont Regional Medical Center 712.jpg create mode 100644 hosting/src/assets/dummy-images/cleveland-clinic-florida-wellington.jpg create mode 100644 hosting/src/assets/dummy-images/ming.jpg create mode 100644 hosting/src/assets/dummy-images/photo-1519494026892-80bbd2d6fd0d.jpg create mode 100644 hosting/src/assets/svg/learn_more_agency.svg create mode 100644 hosting/src/assets/svg/learn_more_donor.svg create mode 100644 hosting/src/assets/svg/learn_more_publish.svg create mode 100644 hosting/src/assets/svg/sic_logo.svg create mode 100644 hosting/src/assets/vectors/undraw_air_support_wy1q.svg create mode 100644 hosting/src/assets/vectors/undraw_conversation_h12g.svg create mode 100644 hosting/src/assets/vectors/undraw_create_f05x.svg create mode 100644 hosting/src/assets/vectors/undraw_medicine_b1ol.svg create mode 100644 hosting/src/environments/environment.prod.ts create mode 100644 hosting/src/environments/environment.ts create mode 100644 hosting/src/favicon.ico create mode 100644 hosting/src/hospital.jpg create mode 100644 hosting/src/index.html create mode 100644 hosting/src/main.ts create mode 100644 hosting/src/polyfills.ts create mode 100644 hosting/src/styles.scss create mode 100644 hosting/src/test.ts create mode 100644 hosting/tsconfig.app.json create mode 100644 hosting/tsconfig.json create mode 100644 hosting/tsconfig.spec.json create mode 100644 hosting/tslint.json diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 00000000..8a2213f5 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "neuon-hackathon-holmes" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c6b828f1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,157 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +firebase-debug.log* + +# Firebase cache +.firebase/ + +# Firebase config + +# Uncomment this if you'd like others to create their own Firebase project. +# For a team working on the same Firebase project(s), it is recommended to leave +# it commented so all members can deploy to the same project(s) in .firebaserc. +# .firebaserc + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +# Created by https://www.gitignore.io/api/webstorm+all +# Edit at https://www.gitignore.io/?templates=webstorm+all + +### WebStorm+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### WebStorm+all Patch ### +# Ignores the whole .idea folder and all .iml files +# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 + +.idea/ + +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +# Sonarlint plugin +.idea/sonarlint + +# End of https://www.gitignore.io/api/webstorm+all diff --git a/firebase.json b/firebase.json new file mode 100644 index 00000000..cdc25e1d --- /dev/null +++ b/firebase.json @@ -0,0 +1,23 @@ +{ + "functions": { + "predeploy": [ + "npm --prefix \"$RESOURCE_DIR\" run lint", + "npm --prefix \"$RESOURCE_DIR\" run build" + ], + "source": "functions" + }, + "hosting": { + "public": "dist/hibiscus", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + } +} diff --git a/functions/.gitignore b/functions/.gitignore new file mode 100644 index 00000000..7fbb8b40 --- /dev/null +++ b/functions/.gitignore @@ -0,0 +1,8 @@ +## Compiled JavaScript files +**/*.js +**/*.js.map + +# Typescript v1 declaration files +typings/ + +node_modules/ \ No newline at end of file diff --git a/functions/package-lock.json b/functions/package-lock.json new file mode 100644 index 00000000..e34389ce --- /dev/null +++ b/functions/package-lock.json @@ -0,0 +1,3256 @@ +{ + "name": "functions", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@firebase/analytics": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.3.0.tgz", + "integrity": "sha512-EEHuK+OcWH6UxufRLVU3lAJ4rmm7aVHmcgkhE9ZQJQy5c+w7QTLvVpGqtrpqD+cYyIBJkFBKJB8NziVyqKwQHw==", + "requires": { + "@firebase/analytics-types": "0.3.0", + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/analytics-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.3.0.tgz", + "integrity": "sha512-0AJ6xn53Qn0D/YOVHHvlWFfnzzRSdd98Lr8Oqe1PJ2HPIN+o7qf03YmOG7fLpR1uplcWd+7vGKmxUrN3jKUBwg==" + }, + "@firebase/app": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.0.tgz", + "integrity": "sha512-utFL07aO64ZVs9g79cv1KHomtLdKkkAeKN5e8G9NlXXuO6dZXhcHLbOmKY1AfwrkAvUzPEKkFFY3dytOIt+nlg==", + "requires": { + "@firebase/app-types": "0.6.0", + "@firebase/component": "0.1.8", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "dom-storage": "2.1.0", + "tslib": "1.11.1", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.0.tgz", + "integrity": "sha512-ld6rzjXk/SUauHiQZJkeuSJpxIZ5wdnWuF5fWBFQNPaxsaJ9kyYg9GqEvwZ1z2e6JP5cU9gwRBlfW1WkGtGDYA==" + }, + "@firebase/auth": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.14.1.tgz", + "integrity": "sha512-LE+QED10cjp28jJ7wwIY58HQBXoJioEWiQy7iQS8Fo2UxHGY5BvGjwnxX4yyszQPbcZZRLDSlBIUaYfog+rdEA==", + "requires": { + "@firebase/auth-types": "0.10.0" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.4.tgz", + "integrity": "sha512-CLKNS84KGAv5lRnHTQZFWoR11Ti7gIPFirDDXWek/fSU+TdYdnxJFR5XSD4OuGyzUYQ3Dq7aVj5teiRdyBl9hA==" + }, + "@firebase/auth-types": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.0.tgz", + "integrity": "sha512-VuW7c+RAk3AYPU0Hxmun3RzXn7fbJDdjQbxvvpRMnQ9zrhk8mH42cY466M0n4e/UGQ+0smlx5BqZII8aYQ5XPg==" + }, + "@firebase/component": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.8.tgz", + "integrity": "sha512-kzuCF+NVympQk3gcsHldOmDRVPVndECi6O9Wvd47HTEQYO9HsZWfOM1fHUvvHAijSzNi16p4NSM7UziuBQBL4w==", + "requires": { + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/database": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.5.24.tgz", + "integrity": "sha512-9whAQzU8cxDUKGBWCT/aHVmqfyzCP2RkGhbZi2oHpMrmvht7cuBtXtUbDD5R8WomniCOUP8rtQfmCFI7V9ehYw==", + "requires": { + "@firebase/auth-interop-types": "0.1.4", + "@firebase/component": "0.1.8", + "@firebase/database-types": "0.4.14", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "faye-websocket": "0.11.3", + "tslib": "1.11.1" + } + }, + "@firebase/database-types": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.14.tgz", + "integrity": "sha512-+D41HWac0HcvwMi+0dezEdSOZHpVjPKPNmpQiW2GDuS5kk27/v1jxc9v7F4ALLtpxbVcn16UZl5PqEkcS9H2Xg==", + "requires": { + "@firebase/app-types": "0.6.0" + } + }, + "@firebase/firestore": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.13.0.tgz", + "integrity": "sha512-GctO+sxLqOnY8SkBN5Z5p1nUYRX+yWSc9Kcx9nIPbUZ0WqBM5BaSlBHZHTFtjmJxS+0j/Y8Mu7c6qm6q5rVnjA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/firestore-types": "1.10.1", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "@firebase/webchannel-wrapper": "0.2.38", + "@grpc/proto-loader": "^0.5.0", + "grpc": "1.24.2", + "tslib": "1.11.1" + } + }, + "@firebase/firestore-types": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.10.1.tgz", + "integrity": "sha512-vyKdm+AYUFT8XeUX62IOqaqPFCs/mAMoSEsqIz9HnSVsqCw/IocNjtjSa+3M80kRw4V8fI7JI+Xz6Wg5VJXLqA==" + }, + "@firebase/functions": { + "version": "0.4.38", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.38.tgz", + "integrity": "sha512-t5QkJg251FmIEEi2mh3Xrf7Q3yonSLRaUW/vhgze7A3Xy3uTIUT3BVNWuKaRmg1n0PgKQaBHCjlDoLJAdSpujg==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/functions-types": "0.3.16", + "@firebase/messaging-types": "0.4.4", + "isomorphic-fetch": "2.2.1", + "tslib": "1.11.1" + } + }, + "@firebase/functions-types": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.16.tgz", + "integrity": "sha512-kHhBvSYiY2prY4vNQCALYs1+OruTdylvGemHG6G6Bs/rj3qw7ui3WysBsDU/rInJitHIcsZ35qrtanoJeQUIXQ==" + }, + "@firebase/installations": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.6.tgz", + "integrity": "sha512-ey8cE2ldRO4pYqg0lCWQ+XFLETHZWha3Hw1CnYJjLivk4FMM8u/es3Oa257wwtYXAUfr0UsPDfHFgYME9E9EhA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations-types": "0.3.3", + "@firebase/util": "0.2.43", + "idb": "3.0.2", + "tslib": "1.11.1" + } + }, + "@firebase/installations-types": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.3.tgz", + "integrity": "sha512-XvWhPPAGeZlc+CfCA8jTt2pv19Jovi/nUV73u30QbjBbk5xci9bp5I29aBZukHsR6YNBjFCLSkLPbno4m/bLUg==" + }, + "@firebase/logger": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.0.tgz", + "integrity": "sha512-qOMnAh1JY9NkYUEy3iFviiFq0dCvk6qN2DsRy2Y7eAhHR6RqwA47l1kI+0MIXmSzlJ9akXjWAXxV5ijzr68Big==" + }, + "@firebase/messaging": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.6.10.tgz", + "integrity": "sha512-WYnKEffG6m0EMHzib8KCWVUGno1cuBC13RrOfGWOCv/whdy9QCIZgMxH/NsY3BrYst8FnjuXEU16fi5AEf4qbg==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/messaging-types": "0.4.4", + "@firebase/util": "0.2.43", + "idb": "3.0.2", + "tslib": "1.11.1" + } + }, + "@firebase/messaging-types": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.4.4.tgz", + "integrity": "sha512-JGtkr+1A1Dw7+yCqQigqBfGKtq0gTCruFScBD4MVjqZHiqGIYpnQisWnpGbkzPR6aOt6iQxgwxUhHG1ulUQGeg==" + }, + "@firebase/performance": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.2.36.tgz", + "integrity": "sha512-nMx3gT+ZD86MV5n460XFA1o75YYMGcs2MXrJa462rfUQtqOrtOOvdUvVtmE6cLrHsL4Y83B+VBWKHzACIPghPw==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/logger": "0.2.0", + "@firebase/performance-types": "0.0.12", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/performance-types": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.12.tgz", + "integrity": "sha512-eIDF7CHetOE5sc+hCaUebEn/2Aiaju7UkgZDTl7lNQHz5fK9wJ/11HaE8WdnDr//ngS3lQAGC2RB4lAZeEWraA==" + }, + "@firebase/polyfill": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.33.tgz", + "integrity": "sha512-Arp9JViyD2i0K01NCCY0WZK5p16kQB/wddf44+Qboh+u3eIrFbVk0OO2IknjrkzIW392u73Ts7TkVxLPGPJF9g==", + "requires": { + "core-js": "3.6.4", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@firebase/remote-config": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.17.tgz", + "integrity": "sha512-jIRHXih0krVTNGYMewFVIaX8WPE1iS06fV4oMMHCCSSforGodv535uVZZ41Il29Q+22zOcyJvahoc990V0cFoA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/logger": "0.2.0", + "@firebase/remote-config-types": "0.1.8", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/remote-config-types": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.8.tgz", + "integrity": "sha512-K12IBHO7OD4gCW0FEqZL9zMqVAfS4+joC4YIn3bHezZfu3RL+Bw1wCb0cAD7RfDPcQxWJjxOHpce4YhuqSxPFA==" + }, + "@firebase/storage": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.30.tgz", + "integrity": "sha512-wapt4+NiEqTiLKPpsy+XbdLTN99pkqjf46Z7zqeS+vh+61cJsUT8M7YBfBb0ZN+dY6gnI5QNzviiKpykhJQbVA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/storage-types": "0.3.11", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/storage-types": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.11.tgz", + "integrity": "sha512-EMOo5aeiJIa8eQ/VqjIa/DYlDcEJX1V84FOxmLfNWZIlmCSvcqx9E9mcNlOnoUB4iePqQjTMQRtKlIBvvEVhVg==" + }, + "@firebase/util": { + "version": "0.2.43", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.43.tgz", + "integrity": "sha512-4gGlvcoOJ48xO6PH59UOHLjvImdYXANF/1d0ao60fbiJDIKxJqMksXw3UF2zsUrRkyCOqIDLeiVuF18vffXP+g==", + "requires": { + "tslib": "1.11.1" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.2.38", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.38.tgz", + "integrity": "sha512-mp1XmAJsuqaSWm5WQYo7R0zfZWe9EmwMCxsxkKr+ubLOumyNy4NG5aV45hEpFTosQv4myXpiCiS4GFE9mNqLZQ==" + }, + "@google-cloud/common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.4.0.tgz", + "integrity": "sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg==", + "optional": true, + "requires": { + "@google-cloud/projectify": "^1.0.0", + "@google-cloud/promisify": "^1.0.0", + "arrify": "^2.0.0", + "duplexify": "^3.6.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^5.5.0", + "retry-request": "^4.0.0", + "teeny-request": "^6.0.0" + } + }, + "@google-cloud/firestore": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-3.7.3.tgz", + "integrity": "sha512-6ro45y5FjSbJCRHUQ8PfIu2EbnGNNVoQmKtBnI1YlhlVHaC7oMu+m0cuI0Cr3lLs1mT5iZ0QGyjHTeUYR8pygw==", + "optional": true, + "requires": { + "deep-equal": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^1.13.0", + "readable-stream": "^3.4.0", + "through2": "^3.0.0" + } + }, + "@google-cloud/paginator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz", + "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz", + "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz", + "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==", + "optional": true + }, + "@google-cloud/storage": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-4.7.0.tgz", + "integrity": "sha512-f0guAlbeg7Z0m3gKjCfBCu7FG9qS3M3oL5OQQxlvGoPtK7/qg3+W+KQV73O2/sbuS54n0Kh2mvT5K2FWzF5vVQ==", + "optional": true, + "requires": { + "@google-cloud/common": "^2.1.1", + "@google-cloud/paginator": "^2.0.0", + "@google-cloud/promisify": "^1.0.0", + "arrify": "^2.0.0", + "compressible": "^2.0.12", + "concat-stream": "^2.0.0", + "date-and-time": "^0.13.0", + "duplexify": "^3.5.0", + "extend": "^3.0.2", + "gaxios": "^3.0.0", + "gcs-resumable-upload": "^2.2.4", + "hash-stream-validation": "^0.2.2", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "onetime": "^5.1.0", + "p-limit": "^2.2.0", + "pumpify": "^2.0.0", + "readable-stream": "^3.4.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "through2": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "gaxios": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.0.2.tgz", + "integrity": "sha512-cLOetrsKOBLPwjzVyFzirYaGjrhtYjbKUHp6fQpsio2HH8Mil35JTFQLgkV5D3CCXV7Gnd5V69/m4C9rMBi9bA==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + } + } + }, + "@grpc/grpc-js": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.7.5.tgz", + "integrity": "sha512-hhWT+vHPtG4tn0zZJw4ndfv730pBPb+lhJfvQhc7ANBvqixtlNOaXm9VNI98wYF/em0PnrskXnOr8rHh96zjlg==", + "optional": true, + "requires": { + "semver": "^6.2.0" + } + }, + "@grpc/proto-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.4.tgz", + "integrity": "sha512-HTM4QpI9B2XFkPz7pjwMyMgZchJ93TVkL3kWPW8GDMDKYxsMnmf4w2TNMJK7+KNiYHS5cJrCEAFlF+AwtXWVPA==", + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@tootallnate/once": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", + "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", + "optional": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bytebuffer": { + "version": "5.0.40", + "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz", + "integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==", + "requires": { + "@types/long": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.4.tgz", + "integrity": "sha512-DO1L53rGqIDUEvOjJKmbMEQ5Z+BM2cIEPy/eV3En+s166Gz+FeuzRerxcab757u/U4v4XF4RYrZPmqKa+aY/2w==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.3.tgz", + "integrity": "sha512-sHEsvEzjqN+zLbqP+8OXTipc10yH1QLR+hnr5uw29gi9AhCAAAdri8ClNV7iMdrJrIzXIQtlkPvq8tJGhj3QJQ==", + "requires": { + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.149", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", + "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" + }, + "@types/node": { + "version": "8.10.59", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.59.tgz", + "integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==" + }, + "@types/nodemailer": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.0.tgz", + "integrity": "sha512-KY7bFWB0MahRZvVW4CuW83qcCDny59pJJ0MQ5ifvfcjNwPlIT0vW4uARO4u1gtkYnWdhSvURegecY/tzcukJcA==", + "requires": { + "@types/node": "*" + } + }, + "@types/qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz", + "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "agent-base": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "optional": true, + "requires": { + "debug": "4" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.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" + } + }, + "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" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "optional": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "optional": true + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "optional": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "optional": true + }, + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", + "optional": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-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==", + "optional": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "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" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "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=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "requires": { + "mime-db": ">= 1.43.0 < 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": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "optional": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "optional": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "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==" + } + } + }, + "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==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + }, + "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=", + "optional": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true + }, + "date-and-time": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.13.1.tgz", + "integrity": "sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw==", + "optional": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-equal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.2.tgz", + "integrity": "sha512-kX0bjV7tdMuhrhzKPEnVwqfQCuf+IEfN+4Xqv4eKd75xGRyn8yzdQ9ujPY6a221rgJKyQC4KBu1PibDTpa6m9w==", + "optional": true, + "requires": { + "es-abstract": "^1.17.5", + "es-get-iterator": "^1.1.0", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.0.5", + "isarray": "^2.0.5", + "object-is": "^1.0.2", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.1" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "requires": { + "streamsearch": "0.1.2" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "optional": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "optional": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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==", + "optional": true + } + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "optional": true, + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "optional": true + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "optional": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "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 + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "fast-text-encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz", + "integrity": "sha512-x4FEgaz3zNRtJfLFqJmHWxkMDDvXVtaznj2V9jiP8ACUJrUgist4bP9FmDL2Vew2Y9mEQI/tG4GqabaitYp9CQ==", + "optional": true + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "firebase": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.13.1.tgz", + "integrity": "sha512-v4Z7Wioy/7LMC8RJn1jNlOaUqLK7bUEva+Uf+qrbtFd7hM2rWLW+0IqHZBwPrQ5tI604uHj7IlhqAZEjm38AMw==", + "requires": { + "@firebase/analytics": "0.3.0", + "@firebase/app": "0.6.0", + "@firebase/app-types": "0.6.0", + "@firebase/auth": "0.14.1", + "@firebase/database": "0.5.24", + "@firebase/firestore": "1.13.0", + "@firebase/functions": "0.4.38", + "@firebase/installations": "0.4.6", + "@firebase/messaging": "0.6.10", + "@firebase/performance": "0.2.36", + "@firebase/polyfill": "0.3.33", + "@firebase/remote-config": "0.1.17", + "@firebase/storage": "0.3.30", + "@firebase/util": "0.2.43" + } + }, + "firebase-admin": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-8.10.0.tgz", + "integrity": "sha512-QzJZ1sBh9xzKjb44aP6m1duy0Xe1ixexwh0eaOt1CkJYCOq2b6bievK4GNWMl5yGQ7FFBEbZO6hyDi+5wrctcg==", + "requires": { + "@firebase/database": "^0.5.17", + "@google-cloud/firestore": "^3.0.0", + "@google-cloud/storage": "^4.1.2", + "@types/node": "^8.10.59", + "dicer": "^0.3.0", + "jsonwebtoken": "8.1.0", + "node-forge": "0.7.4" + } + }, + "firebase-functions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.6.0.tgz", + "integrity": "sha512-8S70Pq5nOblDKmBExq2CAgBMq+L8IDOcv10HfpDWGtgK5IpYlP0BKcchXYXcyjHtIG7xWHtR9oBLVtXFUiTp3A==", + "requires": { + "@types/express": "^4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "firebase-functions-test": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.1.7.tgz", + "integrity": "sha512-/zVQhaUZ+M7z25aUaZSIah0MIDZIfnRfQxtHYTE8hgUgODmKdaMX20vh5Gv23hnCPauIHuYb7XFTUOZiWU1udA==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "optional": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "optional": true + }, + "gaxios": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz", + "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz", + "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==", + "optional": true, + "requires": { + "gaxios": "^2.1.0", + "json-bigint": "^0.3.0" + } + }, + "gcs-resumable-upload": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz", + "integrity": "sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "configstore": "^5.0.0", + "gaxios": "^2.0.0", + "google-auth-library": "^5.0.0", + "pumpify": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "google-auth-library": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz", + "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^2.1.0", + "gcp-metadata": "^3.4.0", + "gtoken": "^4.1.0", + "jws": "^4.0.0", + "lru-cache": "^5.0.0" + } + }, + "google-gax": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.2.tgz", + "integrity": "sha512-yNNiRf9QxWpZNfQQmSPz3rIDTBDDKnLKY/QEsjCaJyDxttespr6v8WRGgU5KrU/6ZM7QRlgBAYXCkxqHhJp0wA==", + "optional": true, + "requires": { + "@grpc/grpc-js": "^0.7.4", + "@grpc/proto-loader": "^0.5.1", + "@types/fs-extra": "^8.0.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^3.6.0", + "google-auth-library": "^5.0.0", + "is-stream-ended": "^0.1.4", + "lodash.at": "^4.6.0", + "lodash.has": "^4.5.2", + "node-fetch": "^2.6.0", + "protobufjs": "^6.8.9", + "retry-request": "^4.0.0", + "semver": "^6.0.0", + "walkdir": "^0.4.0" + } + }, + "google-p12-pem": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz", + "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==", + "optional": true, + "requires": { + "node-forge": "^0.9.0" + }, + "dependencies": { + "node-forge": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", + "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==", + "optional": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "optional": true + }, + "grpc": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.24.2.tgz", + "integrity": "sha512-EG3WH6AWMVvAiV15d+lr+K77HJ/KV/3FvMpjKjulXHbTwgDZkhkcWbwhxFAoTdxTkQvy0WFcO3Nog50QBbHZWw==", + "requires": { + "@types/bytebuffer": "^5.0.40", + "lodash.camelcase": "^4.3.0", + "lodash.clone": "^4.5.0", + "nan": "^2.13.2", + "node-pre-gyp": "^0.14.0", + "protobufjs": "^5.0.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": 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.4", + "bundled": 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 + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "ms": { + "version": "2.1.2", + "bundled": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": 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.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true + }, + "npm-packlist": { + "version": "1.4.6", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": 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 + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": 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.7.1", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.7.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true + } + } + }, + "gtoken": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz", + "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==", + "optional": true, + "requires": { + "gaxios": "^2.1.0", + "google-p12-pem": "^2.0.0", + "jws": "^4.0.0", + "mime": "^2.2.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "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-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "hash-stream-validation": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.2.tgz", + "integrity": "sha512-cMlva5CxWZOrlS/cY0C+9qAzesn5srhFA8IT1VPiHc9bWWBLkJfEUIZr7MWoi89oOOGmpg8ymchaOjiArsGu5A==", + "optional": true, + "requires": { + "through2": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "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==", + "optional": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "optional": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "optional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "optional": 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.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "optional": true + }, + "is-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", + "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", + "optional": true + }, + "is-boolean-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", + "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", + "optional": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "optional": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "optional": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "optional": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "optional": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "optional": true + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "optional": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "optional": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "optional": true + }, + "is-weakset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", + "optional": true + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "optional": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "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 + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-bigint": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", + "optional": true, + "requires": { + "bignumber.js": "^7.0.0" + } + }, + "jsonwebtoken": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", + "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", + "requires": { + "jws": "^3.1.4", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + } + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "optional": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "optional": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.at": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz", + "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g=", + "optional": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=", + "optional": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "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==", + "optional": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "optional": true, + "requires": { + "semver": "^6.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "optional": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "optional": 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": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "optional": true + }, + "node-forge": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", + "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" + }, + "nodemailer": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.6.tgz", + "integrity": "sha512-/kJ+FYVEm2HuUlw87hjSqTss+GU35D4giOpdSfGp7DO+5h6RlJj7R94YaYHOkoxu1CSaM0d3WRBtCzwXrY6MKA==" + }, + "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=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "optional": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "optional": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "optional": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "optional": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "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-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=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, + "protobufjs": { + "version": "6.8.9", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.9.tgz", + "integrity": "sha512-j2JlRdUeL/f4Z6x4aU4gj9I2LECglC+5qR2TrWb193Tla1qfdaNQTZ8I27Pt7K0Ajmvjjpft7O3KWTGciz4gpw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.17.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.18.tgz", + "integrity": "sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg==" + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "optional": true, + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + }, + "dependencies": { + "duplexify": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz", + "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==", + "optional": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + } + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "optional": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "retry-request": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz", + "integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==", + "optional": true, + "requires": { + "debug": "^4.1.1", + "through2": "^3.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "optional": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "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==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "optional": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "optional": true + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", + "optional": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "optional": true + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", + "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", + "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "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==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "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==", + "optional": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "optional": 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" + } + }, + "teeny-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.3.tgz", + "integrity": "sha512-TZG/dfd2r6yeji19es1cUIwAlVD8y+/svB1kAC2Y0bjEyysrfbO8EZvJBRwIE6WkwmUoB7uvWLwTIhJbMXZ1Dw==", + "optional": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^7.0.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "optional": true, + "requires": { + "readable-stream": "2 || 3" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "optional": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "optional": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "optional": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "walkdir": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==", + "optional": true + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.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==" + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "which-boxed-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", + "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", + "optional": true, + "requires": { + "is-bigint": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-number-object": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.2" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "optional": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.1.tgz", + "integrity": "sha512-IWlkoJZ4Zdfi4YBn2wnYB8AVox+4A2+Kmr4kHFAraffHYrQZFiTOjgjk9et8e6RSPZOV1QjZOC51PVCK9SkR/A==", + "optional": true, + "requires": { + "available-typed-arrays": "^1.0.1", + "es-abstract": "^1.17.4", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.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=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "optional": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } +} diff --git a/functions/package.json b/functions/package.json new file mode 100644 index 00000000..cfc6569e --- /dev/null +++ b/functions/package.json @@ -0,0 +1,30 @@ +{ + "name": "functions", + "scripts": { + "lint": "tslint --project tsconfig.json", + "build": "tsc", + "serve": "npm run build && firebase emulators:start --only functions", + "shell": "npm run build && firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "8" + }, + "main": "lib/index.js", + "dependencies": { + "@types/nodemailer": "^6.4.0", + "cors": "^2.8.5", + "firebase": "latest", + "firebase-admin": "^8.9.0", + "firebase-functions": "^3.3.0", + "nodemailer": "^6.4.6" + }, + "devDependencies": { + "tslint": "^5.12.0", + "typescript": "^3.2.2", + "firebase-functions-test": "^0.1.6" + }, + "private": true +} diff --git a/functions/src/@core/firestore-collections.ts b/functions/src/@core/firestore-collections.ts new file mode 100644 index 00000000..6264e3df --- /dev/null +++ b/functions/src/@core/firestore-collections.ts @@ -0,0 +1,9 @@ +export const USERS = 'users'; +export const REQUESTS = 'requests'; +export const REQUESTS__ITEMS = `${REQUESTS}--items`; +export const REQUESTS__CONTRIBS = `${REQUESTS}--contribs`; +export const REQUESTS__MESSAGES = `${REQUESTS}--messages`; +export const __STATS__ = '--stats--'; +export const __STATS__ITEMS = `${__STATS__}--items`; +export const CONTRIBS = 'contribs'; +export const MESSAGES = 'messages'; diff --git a/functions/src/@core/firestore-interfaces/contrib.ts b/functions/src/@core/firestore-interfaces/contrib.ts new file mode 100644 index 00000000..bf248efb --- /dev/null +++ b/functions/src/@core/firestore-interfaces/contrib.ts @@ -0,0 +1,21 @@ +import {UserBase} from './user'; +import * as firebase from 'firebase'; + +export interface ContribItem { + name: string; + qty: number; +} + +export interface Contrib { + request: string; + user?: string; + guest?: UserBase; + dateUpd?: firebase.firestore.Timestamp; + dateCrt?: firebase.firestore.Timestamp; + // items?: firebase.firestore.CollectionReference; +} + +export interface ContribObject extends Contrib { + id: string; + contribItems: ContribItem[]; +} diff --git a/functions/src/@core/firestore-interfaces/global.ts b/functions/src/@core/firestore-interfaces/global.ts new file mode 100644 index 00000000..bad7c9fa --- /dev/null +++ b/functions/src/@core/firestore-interfaces/global.ts @@ -0,0 +1,6 @@ +import {RequestItem} from './request'; + +export interface Global { + otherItems: string[]; + requests: RequestItem[]; +} diff --git a/functions/src/@core/firestore-interfaces/messages.ts b/functions/src/@core/firestore-interfaces/messages.ts new file mode 100644 index 00000000..7c295bdb --- /dev/null +++ b/functions/src/@core/firestore-interfaces/messages.ts @@ -0,0 +1,13 @@ +import * as firebase from 'firebase'; +import {UserBase} from './user'; + +export type MessageStatus = 'unread' | 'read'; + +export interface MessageDocument { + content: string; + sender: string | UserBase; + requestId: string; + status: MessageStatus; + dateCrt: firebase.firestore.Timestamp; + receiverId?: string; +} diff --git a/functions/src/@core/firestore-interfaces/request.ts b/functions/src/@core/firestore-interfaces/request.ts new file mode 100644 index 00000000..54a68341 --- /dev/null +++ b/functions/src/@core/firestore-interfaces/request.ts @@ -0,0 +1,84 @@ +import * as firebase from 'firebase/app'; +import {User, UserBase} from './user'; + +export interface ContributionItem { + name: string; + qty: number; +} + +export interface ContributionParams { + items: { + name: string; + qty: number; + }[]; + status?: ContributionStatus; +} + +export type ContributionStatus = 'waiting' | 'transporting' | 'received'; + +export interface ContributionDetails { + sender: UserBase; + contributionItems: ContributionItem[]; + remarks: string; + contributionItemsTransporting?: { + name: string; + qty: number; + }[]; + contributionItemsReceived?: { + name: string; + qty: number; + }[]; + senderId?: string; + dateCrt?: firebase.firestore.Timestamp; + status?: ContributionStatus; + requestId?: string; + receiverId?: string; + id?: string; +} + +export interface ContributionAcceptedParams { + itemReceived: ContributionItem[]; +} + +export interface RequestItem { + name: string; + qtyNeed: number; + qtyFilled: number; +} + +export type RequestStatus = 'active'|'complete'; + +export interface Request { + user: string; + status?: RequestStatus; + dateUpd?: firebase.firestore.Timestamp; + dateCrt?: firebase.firestore.Timestamp; + active?: string[]; + complete?: string[]; + userInfo?: { + name: string; + email: string; + }; +} + +export interface RequestObject extends Request { + id?: string; + requestItems?: RequestItem[]; + userInfo?: User; +} + +export const DEFAULT_REQUEST_ITEMS = [ + 'Isolation Gowns', 'Level 2 Gowns', 'Level 3 Gowns', 'Level 4 Gowns', 'Coveralls (Full suit, with or without hood)', + 'KN95 Masks', 'N95 Masks', 'Respirator', 'Respirator Filters', 'Disposable Filtering Face Pieces', 'Exam Mask Paediatric', + 'Surgical Mask', 'Exam Mask (Ear loop)', 'FFP2 Masks', 'Procedure Masks', 'Surgical Gloves', 'Medical Examination Gloves - Rubber Latex', + 'Nitrile Gloves (exam)', + 'Viral Swabs', 'Disinfectants', 'Disinfectant Wipes', 'Hand Sanitizer', 'Hand Sanitizer Foam', + 'Head Hood Covers (Balaclava)', 'Knee-high Shoe Covers (Impervious)', + 'Safety/Protective Goggles', 'FIT Testing Supplies', + 'Thermometer', 'Ventilators', 'Zip Lock Bags', 'Blanket']; + +export interface RequestStats { + itemsByUsers: string[]; + active: number; + complete: number; +} diff --git a/functions/src/@core/firestore-interfaces/user.ts b/functions/src/@core/firestore-interfaces/user.ts new file mode 100644 index 00000000..e525e0d1 --- /dev/null +++ b/functions/src/@core/firestore-interfaces/user.ts @@ -0,0 +1,22 @@ +export interface UserBase { + name: string; + email: string; + phone: string; +} + +export type UserRoles = 'admin' | 'agency'; + +export interface User extends UserBase { + address: string; + userId?: string; + roles?: UserRoles[]; + imageUrl?: string; + verifiedByAdmin?: boolean; + rejectedByAdmin?: boolean; + _recentNeededItems?: string[]; +} + +export interface UserStats { + agencies?: number; + pendingMembers?: number; +} diff --git a/functions/src/index.ts b/functions/src/index.ts new file mode 100644 index 00000000..e813c846 --- /dev/null +++ b/functions/src/index.ts @@ -0,0 +1,559 @@ +import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; + +import { + __STATS__, + __STATS__ITEMS, CONTRIBS, MESSAGES, + REQUESTS, + REQUESTS__ITEMS, + USERS +} from "./@core/firestore-collections"; +import { + RequestItem, + Request, + RequestStatus, + ContributionDetails, + RequestStats, DEFAULT_REQUEST_ITEMS +} from "./@core/firestore-interfaces/request"; +import {User, UserRoles} from "./@core/firestore-interfaces/user"; +import { + sendNewContributionEmail, + sendPasswordlessSignInEmail, + sendRegistrationSuccessEmail, + sendRejectedByAdminEmail, + sendVerifiedByAdminEmail +} from "./mailer"; + +import FieldValue = admin.firestore.FieldValue; +import {MessageDocument} from "./@core/firestore-interfaces/messages"; + +admin.initializeApp(); + +const auth = admin.auth(); +const db = admin.firestore(); + +const regionName = 'asia-east2'; + +export interface MyCustomClaims { + admin: boolean; + verifiedByAdmin: boolean; +} + +exports.userOnCreate = functions.region(regionName).auth.user().onCreate(async user => { + try { + await sendRegistrationSuccessEmail(user.email as string); + } catch (e) { + } + return; +}); + +exports.userOnDelete = functions.region(regionName).auth.user().onDelete(async user => { + const uid = user.uid; + const batch = db.batch(); + const userRef = db.collection('/users').doc(uid); + + batch.delete(userRef); + + try { + await batch.commit(); + return true; + } catch (e) { + console.error(e); + return false; + } +}); + +exports.usersOnWrite = functions.region(regionName).firestore + .document(`${USERS}/{userId}`) + .onWrite(async (change, context) => { + const uid = context.params.userId; + + if (uid === __STATS__) { + return; + } + + return new Promise(async (resolve, reject) => { + const firestore = admin.firestore(); + const batch = firestore.batch(); + const statsRef = firestore.collection(USERS).doc(__STATS__); + + const after = change.after.data(); + try { + if (!after) { + // user deleted + const before = change.before.data(); + + if (before.roles?.includes('agency')) { + const agencies = -1; + let pendingMembers = 0; + if (before.rejectedByAdmin) { + pendingMembers = -1; + } + batch.update(statsRef, { + agencies: admin.firestore.FieldValue.increment(agencies), + pendingMembers: admin.firestore.FieldValue.increment(pendingMembers) + }); + } + } else { + // manage custom claims + const customClaims: MyCustomClaims = { + admin: false, + verifiedByAdmin: false, + }; + const rolesAfter = after.roles; + const findRole: UserRoles = 'admin'; + if (rolesAfter && rolesAfter.includes(findRole)) { + customClaims.admin = true; + } + + let verifiedByAdmin = false; + let rejectedByAdmin = false; + if (change.before.data()) { + const before = change.before.data(); + + const agencies = 0; + let pendingMembers = 0; + + if (!before.verifiedByAdmin && after.verifiedByAdmin) { + verifiedByAdmin = true; + if (after.roles?.includes('agency')) { + pendingMembers = -1; + } + } + + if (!before.rejectedByAdmin && after.rejectedByAdmin) { + rejectedByAdmin = true; + } + + batch.update(statsRef, { + agencies: admin.firestore.FieldValue.increment(agencies), + pendingMembers: admin.firestore.FieldValue.increment(pendingMembers) + }); + } else { + if (after.roles?.includes('agency')) { + const agencies = 1; + let pendingMembers = 0; + if (!after.verifiedByAdmin) { + pendingMembers = 1; + } + batch.update(statsRef, { + agencies: admin.firestore.FieldValue.increment(agencies), + pendingMembers: admin.firestore.FieldValue.increment(pendingMembers) + }); + } + } + + if (verifiedByAdmin) { + customClaims.verifiedByAdmin = true; + await sendVerifiedByAdminEmail(after.email); + } + + if (rejectedByAdmin) { + await sendRejectedByAdminEmail(after.email); + await admin.auth().deleteUser(after.userId as string); + } else { + await admin.auth().setCustomUserClaims(uid, customClaims); + } + } + + await batch.commit(); + resolve(); + } catch (e) { + reject(e); + } + }); + }); + +exports.registerUser = functions.region(regionName).https.onCall((data, context) => { + if (!context.auth) { + throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + + 'while authenticated.'); + } else if (!context.auth.token.admin) { + throw new functions.https.HttpsError('failed-precondition', 'Admin-only function'); + } else { + const userAccount = data; + return auth.createUser({ + email: userAccount.email, + }).then(async userRecord => { + const link = await auth.generateSignInWithEmailLink(userAccount.email, {url: 'https://neuon-hackathon-holmes.web.app/finish-sign-up'}); + await sendPasswordlessSignInEmail(userAccount.email, link); + return userRecord.uid; + }).catch(e => { + const errorInfo = e.errorInfo; + console.info(errorInfo); + throw new functions.https.HttpsError('internal', errorInfo.code, errorInfo.message); + }); + } +}); + +exports.deleteUser = functions.region(regionName).https.onCall((data, context) => { + if (!context.auth) { + throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + + 'while authenticated.'); + } else if (!context.auth.token.admin) { + throw new functions.https.HttpsError('failed-precondition', 'Admin-only function'); + } else { + const userId = data.userId; + console.info(userId); + return auth.deleteUser(userId).then(() => { + return true; + }).catch(e => { + throw e; + }); + } +}); + +exports.requestStatusWatcher = functions.region(regionName).firestore + .document(`${REQUESTS}/{requestId}`) + .onWrite((change, context) => { + const requestId = context.params.requestId; + + const firestore = admin.firestore(); + const batch = firestore.batch(); + + const statsRef = firestore.collection(REQUESTS).doc(__STATS__); + const requestRef = firestore.collection(REQUESTS).doc(requestId); + let userRef: FirebaseFirestore.DocumentReference; + + const dataBefore = change.before.data() as Request; + const dataAfter = change.after.data() as Request; + + let activeRequest = 0; + let completeRequest = 0; + let requestStatus = null; + + if (!dataAfter) { + // deleted + if (dataBefore.status === 'active') { + activeRequest = -1; + } else if (dataBefore.status === 'complete') { + completeRequest = -1; + } + + // remove active items from user + userRef = firestore.collection(USERS).doc(dataBefore.user); + const activeItemsBefore = dataBefore.active as string[]; + if (activeItemsBefore) { + activeItemsBefore.forEach(item => { + batch.update(userRef, { + ['_recentNeededItems.' + item]: FieldValue.increment(-1) + }); + }); + } + } else { + if (dataBefore) { + // updated + const activeListAfter = dataAfter.active; + const completeListAfter = dataAfter.complete; + const activeListBefore = dataBefore.active; + const completeListBefore = dataBefore.complete; + + // check if list is changed + if (completeListAfter && activeListAfter) { + const activeListChanged = activeListBefore !== activeListAfter; + const completeListChanged = completeListBefore !== completeListAfter; + if (activeListChanged || completeListChanged) { + if (activeListAfter.length === 0 && completeListAfter.length > 0) { + if (dataAfter.status !== 'complete') { + requestStatus = 'complete'; + completeRequest = 1; + activeRequest = -1; + } + } else { + if (dataAfter.status !== 'active') { + requestStatus = 'active'; + completeRequest = -1; + activeRequest = 1; + } + } + } + } + } else { + // created + const activeList = dataAfter.active; + const completeList = dataAfter.complete; + + if (activeList && completeList) { + // change status + if (activeList.length === 0 && completeList.length > 0) { + requestStatus = 'complete'; + } else { + requestStatus = 'active'; + } + } + + if (dataAfter.status === 'active') { + console.info('is active'); + activeRequest = 1; + } else if (dataAfter.status === 'complete') { + console.info('is complete'); + completeRequest = 1; + } + } + } + + batch.update(statsRef, { + active: FieldValue.increment(activeRequest), + complete: FieldValue.increment(completeRequest), + }); + + if (requestStatus) { + batch.update(requestRef, {status: requestStatus}); + } + + return batch.commit(); + }); + +exports.contributionWatcher = functions.region(regionName).firestore + .document(`${CONTRIBS}/{contribId}`) + .onWrite((change, context) => { + const firestore = admin.firestore(); + + const contribId = context.params.contribId; + const contribRef = firestore.collection(CONTRIBS).doc(contribId); + + const dataBefore = change.before.data() as ContributionDetails; + const dataAfter = change.after.data() as ContributionDetails; + + const batchRequest = firestore.batch(); + + return new Promise(async (resolve, reject) => { + try { + if (!dataBefore) { + if (dataAfter && dataAfter.requestId) { + const requestDoc = await firestore.collection(REQUESTS) + .doc(dataAfter.requestId).get(); + const requestData = requestDoc.data() as Request; + await contribRef.update({ + receiverId: requestData.user + }); + + const items = dataAfter.contributionItems; + const contributorName = dataAfter.sender.name; + const remarks = dataAfter.remarks; + + return sendNewContributionEmail( + requestData.userInfo?.email || '', + contributorName, + items, + remarks + ); + } + } else { + if (dataAfter) { + const statusAfter = dataAfter.status; + const requestId = dataAfter.requestId; + + if (requestId) { + const requestRef = firestore.collection(REQUESTS) + .doc(requestId).collection(REQUESTS__ITEMS); + + if (statusAfter === 'received') { + const itemsReceived = dataAfter.contributionItemsReceived; + if (itemsReceived) { + itemsReceived.forEach(item => { + batchRequest.update(requestRef.doc(item.name), {qtyFilled: item.qty}); + }); + } + } + } + } + } + + await Promise.all([ + batchRequest.commit() + ]); + + resolve(); + } catch (e) { + reject(e); + } + }); + }); + +/** + * update __STATS__ in REQUESTS + * + * - will delete the request item if qtyNeed <= 0 + */ +exports.demandsStatsWatcher = functions.region(regionName).firestore + .document(`${REQUESTS}/${__STATS__}/${__STATS__ITEMS}/{requestItemId}`) + .onWrite((change, context) => { + const itemName = context.params.requestItemId; + + const firestore = admin.firestore(); + const batchStats = firestore.batch(); + + const statsRef = firestore.collection(REQUESTS).doc(__STATS__); + const itemsRef = statsRef.collection(__STATS__ITEMS); + const itemRef = itemsRef.doc(itemName); + + const dataAfter = change.after.data() as RequestItem; + + if (dataAfter) { + const qtyNeed = dataAfter.qtyNeed; + + if (qtyNeed <= 0) { + batchStats.delete(itemRef); + } + } + + return Promise.all([ + batchStats.commit(), + ]).then(() => { + console.info('ok'); + return true; + }).catch(e => { + console.error(e); + return false; + }); + }); + +/** + * remember that this can be in 2 mode; + * 1. parent is deleted + * 2. parent is not deleted + */ +exports.demandsWatcher = functions.region(regionName).firestore + .document(`${REQUESTS}/{requestId}/${REQUESTS__ITEMS}/{requestItemId}`) + .onWrite(async (change, context) => { + const requestId = context.params.requestId; + const itemName = context.params.requestItemId; + + const firestore = admin.firestore(); + const batchStats = firestore.batch(); + const batchRequest = firestore.batch(); + const batchUser = firestore.batch(); + + const requestRef = firestore.collection(REQUESTS).doc(requestId); + + const statsRef = firestore.collection(REQUESTS).doc(__STATS__); + const itemsRef = statsRef.collection(__STATS__ITEMS); + const itemRef = itemsRef.doc(itemName); + let userRef; + + // check if parent is deleted + const requestDoc = await requestRef.get(); + if (requestDoc.exists) { + const requestData = requestDoc.data() as Request; + const userId = requestData.user; + userRef = firestore.collection(USERS).doc(userId); + } + + const dataBefore = change.before.data() as RequestItem; + const dataAfter = change.after.data() as RequestItem; + + let needIncrement: admin.firestore.FieldValue; + let fillIncrement: admin.firestore.FieldValue; + let itemNeed = FieldValue.arrayRemove(itemName); + let itemComplete = FieldValue.arrayRemove(itemName); + let recentItemNeedIncrement = 0; + + if (!dataAfter) { + // item deleted + needIncrement = admin.firestore.FieldValue.increment(-dataBefore.qtyNeed); + fillIncrement = admin.firestore.FieldValue.increment(-dataBefore.qtyFilled); + recentItemNeedIncrement = -1; + } else { + if (dataBefore) { + // item changed + needIncrement = admin.firestore.FieldValue.increment(dataAfter.qtyNeed - dataBefore.qtyNeed); + fillIncrement = admin.firestore.FieldValue.increment(dataAfter.qtyFilled - dataBefore.qtyFilled); + + const beforeWasCompleted = dataBefore.qtyFilled >= dataBefore.qtyNeed; + const afterIsComplete = dataAfter.qtyFilled >= dataAfter.qtyNeed; + + if (!beforeWasCompleted && afterIsComplete) { + recentItemNeedIncrement = -1; + } + if (beforeWasCompleted && !afterIsComplete) { + recentItemNeedIncrement = 1; + } + } else { + // item added + needIncrement = admin.firestore.FieldValue.increment(dataAfter.qtyNeed); + fillIncrement = admin.firestore.FieldValue.increment(dataAfter.qtyFilled); + if (dataAfter.qtyFilled >= dataAfter.qtyNeed) { + recentItemNeedIncrement = -1; + } else { + recentItemNeedIncrement = 1; + } + } + + if (dataAfter.qtyFilled >= dataAfter.qtyNeed) { + itemComplete = FieldValue.arrayUnion(itemName); + } else { + itemNeed = FieldValue.arrayUnion(itemName); + } + } + + batchStats.set(itemRef, {name: itemName}, {merge: true}); + batchStats.update(itemRef, { + qtyNeed: needIncrement, + qtyFilled: fillIncrement + }); + + if (userRef) { + batchRequest.update(requestRef, { + complete: itemComplete, + active: itemNeed, + }); + batchUser.update(userRef, { + [`_recentNeededItems.${itemName}`]: admin.firestore.FieldValue.increment(recentItemNeedIncrement) + }); + } + + // update itemsByUsers in stats + // read first to avoid write + if (itemName && !DEFAULT_REQUEST_ITEMS.includes(itemName)) { + const recentItemSnapshot = await statsRef.get(); + const recentItemData = recentItemSnapshot.data() as RequestStats; + if (recentItemData) { + if (!recentItemData.itemsByUsers.includes(itemName)) { + batchStats.update(statsRef, { + itemsByUsers: FieldValue.arrayUnion(itemName) + }); + } + } + } + + return Promise.all([ + batchStats.commit(), + batchRequest.commit(), + batchUser.commit() + ]).then(() => { + console.info('ok'); + return true; + }).catch(e => { + console.error(e); + return false; + }); + }); + +exports.messageOnCreate = functions.region(regionName).firestore + .document(`${MESSAGES}/{messageId}`) + .onCreate(async (snapshot, context) => { + const firestore = admin.firestore(); + const batch = firestore.batch(); + + const messageData = snapshot.data() as MessageDocument; + + if (messageData) { + const requestSnapshot = await firestore.collection(REQUESTS).doc(messageData.requestId).get(); + const requestData = requestSnapshot.data() as Request; + if (requestData) { + batch.update(snapshot.ref, { + receiverId: requestData.user + }); + } + } + + return Promise.all([batch.commit()]) + .then(() => { + return true; + }) + .catch(e => { + console.error(e); + return false; + }); + }); diff --git a/functions/src/mailer.ts b/functions/src/mailer.ts new file mode 100644 index 00000000..3a3c6734 --- /dev/null +++ b/functions/src/mailer.ts @@ -0,0 +1,104 @@ +import * as Mail from "nodemailer/lib/mailer"; + +const nodemailer = require('nodemailer'); +const defaultMailOptions: Mail.Options = { + from: '"Sharing is Caring" ' +}; + +function createTransport(): Mail { + return nodemailer.createTransport({ + service: 'gmail', + auth: { + user: '', + pass: '' + }, + tls: { + rejectUnauthorized: false + } + }); +} + +export function sendRegistrationSuccessEmail(targetEmail: string): Promise { + const mailOptions: Mail.Options = { + ...defaultMailOptions, + to: targetEmail, + subject: 'Account Created', + text: 'You have successfully created an account. If problem occurs with signing in, try verifying your email address.' + }; + return sendMail(mailOptions); +} + +export function sendVerifiedByAdminEmail(targetEmail: string): Promise { + const mailOptions: Mail.Options = { + ...defaultMailOptions, + to: targetEmail, + subject: 'Account Verified', + text: 'Great news! Your account was verified by our admins! Visit https://neuon-hackathon-holmes.web.app and start sharing!' + }; + return sendMail(mailOptions); +} + +export function sendRejectedByAdminEmail(targetEmail: string): Promise { + const mailOptions: Mail.Options = { + ...defaultMailOptions, + to: targetEmail, + subject: 'Account Rejected', + text: 'We are sorry to inform you that your registration application was rejected by our admins.' + }; + return sendMail(mailOptions); +} + +export function sendPasswordlessSignInEmail(targetEmail: string, link: string): Promise { + const mailOptions: Mail.Options = { + ...defaultMailOptions, + to: targetEmail, + subject: 'Account Registered by Admin', + text: 'We have created an account for you. Join the fray! ' + link + }; + return sendMail(mailOptions); +} + +export interface ItemsParams { + name: string; + qty: number; +} + +export function sendNewContributionEmail( + targetEmail: string, + contributorName: string, + itemsParams: ItemsParams[], + remarks: string +): Promise { + let itemsTemplate = ``; + itemsParams.forEach(item => { + itemsTemplate += `
  • ${item.qty} ${item.name}
  • `; + }); + + const mailOptions: Mail.Options = { + ...defaultMailOptions, + to: targetEmail, + subject: 'New Contribution', + text: `New contribution from ${contributorName}`, + html: ` +

    You have new contribution from ${contributorName}, check it on our site!

    +
      ${itemsTemplate}
    +

    Remarks: ${remarks}

    + ` + }; + return sendMail(mailOptions); +} + +function sendMail(mailOptions: Mail.Options): Promise { + return new Promise(async (resolve, reject) => { + try { + const mail = createTransport(); + await mail.sendMail(mailOptions); + mail.close(); + resolve(); + } catch (e) { + console.error('There was an error sending email'); + console.error(e); + reject(e); + } + }); +} diff --git a/functions/tsconfig.json b/functions/tsconfig.json new file mode 100644 index 00000000..7ce05d03 --- /dev/null +++ b/functions/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "noImplicitReturns": true, + "noUnusedLocals": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017" + }, + "compileOnSave": true, + "include": [ + "src" + ] +} diff --git a/functions/tslint.json b/functions/tslint.json new file mode 100644 index 00000000..98b2bfdc --- /dev/null +++ b/functions/tslint.json @@ -0,0 +1,115 @@ +{ + "rules": { + // -- Strict errors -- + // These lint rules are likely always a good idea. + + // Force function overloads to be declared together. This ensures readers understand APIs. + "adjacent-overload-signatures": true, + + // Do not allow the subtle/obscure comma operator. + "ban-comma-operator": true, + + // Do not allow internal modules or namespaces . These are deprecated in favor of ES6 modules. + "no-namespace": true, + + // Do not allow parameters to be reassigned. To avoid bugs, developers should instead assign new values to new vars. + "no-parameter-reassignment": true, + + // Force the use of ES6-style imports instead of /// imports. + "no-reference": true, + + // Do not allow type assertions that do nothing. This is a big warning that the developer may not understand the + // code currently being edited (they may be incorrectly handling a different type case that does not exist). + "no-unnecessary-type-assertion": true, + + // Disallow nonsensical label usage. + "label-position": true, + + // Disallows the (often typo) syntax if (var1 = var2). Replace with if (var2) { var1 = var2 }. + "no-conditional-assignment": true, + + // Disallows constructors for primitive types (e.g. new Number('123'), though Number('123') is still allowed). + "no-construct": true, + + // Do not allow super() to be called twice in a constructor. + "no-duplicate-super": true, + + // Do not allow the same case to appear more than once in a switch block. + "no-duplicate-switch-case": true, + + // Do not allow a variable to be declared more than once in the same block. Consider function parameters in this + // rule. + "no-duplicate-variable": [true, "check-parameters"], + + // Disallows a variable definition in an inner scope from shadowing a variable in an outer scope. Developers should + // instead use a separate variable name. + "no-shadowed-variable": true, + + // Empty blocks are almost never needed. Allow the one general exception: empty catch blocks. + "no-empty": [true, "allow-empty-catch"], + + // Functions must either be handled directly (e.g. with a catch() handler) or returned to another function. + // This is a major source of errors in Cloud Functions and the team strongly recommends leaving this rule on. + "no-floating-promises": true, + + // Do not allow any imports for modules that are not in package.json. These will almost certainly fail when + // deployed. + "no-implicit-dependencies": true, + + // The 'this' keyword can only be used inside of classes. + "no-invalid-this": true, + + // Do not allow strings to be thrown because they will not include stack traces. Throw Errors instead. + "no-string-throw": true, + + // Disallow control flow statements, such as return, continue, break, and throw in finally blocks. + "no-unsafe-finally": true, + + // Expressions must always return a value. Avoids common errors like const myValue = functionReturningVoid(); + "no-void-expression": [true, "ignore-arrow-function-shorthand"], + + // Disallow duplicate imports in the same file. + "no-duplicate-imports": true, + + + // -- Strong Warnings -- + // These rules should almost never be needed, but may be included due to legacy code. + // They are left as a warning to avoid frustration with blocked deploys when the developer + // understand the warning and wants to deploy anyway. + + // Warn when an empty interface is defined. These are generally not useful. + "no-empty-interface": {"severity": "warning"}, + + // Warn when an import will have side effects. + "no-import-side-effect": {"severity": "warning"}, + + // Warn when variables are defined with var. Var has subtle meaning that can lead to bugs. Strongly prefer const for + // most values and let for values that will change. + "no-var-keyword": {"severity": "warning"}, + + // Prefer === and !== over == and !=. The latter operators support overloads that are often accidental. + "triple-equals": {"severity": "warning"}, + + // Warn when using deprecated APIs. + "deprecation": {"severity": "warning"}, + + // -- Light Warnings -- + // These rules are intended to help developers use better style. Simpler code has fewer bugs. These would be "info" + // if TSLint supported such a level. + + // prefer for( ... of ... ) to an index loop when the index is only used to fetch an object from an array. + // (Even better: check out utils like .map if transforming an array!) + "prefer-for-of": {"severity": "warning"}, + + // Warns if function overloads could be unified into a single function with optional or rest parameters. + "unified-signatures": {"severity": "warning"}, + + // Prefer const for values that will not change. This better documents code. + "prefer-const": {"severity": "warning"}, + + // Multi-line object literals and function calls should have a trailing comma. This helps avoid merge conflicts. + "trailing-comma": {"severity": "warning"} + }, + + "defaultSeverity": "error" +} diff --git a/hosting/.editorconfig b/hosting/.editorconfig new file mode 100644 index 00000000..59d9a3a3 --- /dev/null +++ b/hosting/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/hosting/.gitignore b/hosting/.gitignore new file mode 100644 index 00000000..ef0aa313 --- /dev/null +++ b/hosting/.gitignore @@ -0,0 +1,51 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +# Firebase +/.firebase +.firebaserc +firebase.json diff --git a/hosting/README.md b/hosting/README.md new file mode 100644 index 00000000..c7c535e1 --- /dev/null +++ b/hosting/README.md @@ -0,0 +1,27 @@ +# Hibiscus + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.0. + +## 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). diff --git a/hosting/alien.jpeg b/hosting/alien.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5a4b4d45cbe82f9b38c04c1f0d1f55d119f6d39c GIT binary patch literal 193302 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 z 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

    1Nrd7XRP+zb;X`=`a4< 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�**-D>prBOPp`~jO|F-!IhwX|jGn&cs zO99k+LqIb*^3EH)1pcOJ_=HjHcx%v~5(cl1*2It!)7}k&N1%N4nhuZh3?Ir18A=$U*@1DtN&%|@}?+#-mXh$=&E48 zbAXwD+I*waY9AOuKj!ih^%~p;SCq)NMBc$^UP`t;qlJ>O^he!q(y0p@qNN|ep-tCjK?m^~;acxSoma=dN%mzFHgCXJBXq-lnm0p^=s|S<8~2J7E5_##T0*c`Y*31J&p^iSog&t?5*_rYl9EqLJ4 zINz}BR6hzGu|0feK`uc|m5p_}?&V zOjZc11$Jj9nrb`A{zPWxZ!zbJr=83^ z7+E$adu*iFoKexU1hT0uF796XMp-|AnH4EouLnm*9sDmPZ~S{sV1 zho$=L)^{4hq+bcWdGfEV{)4)O4e0)5507(_&yQ3tIITtg68b0gKxwjXKVPsKkbfU% zU{*q?6Y$PmdU+zc?kD+XSmv!Qke_asp+&&ih>d-AJnmt{#v*9evB%A$`m0%KpO?&w zQH;oY*@V={(j~iR8IeMcA@9j%zl65)`J6=uM9zLOPyiw!D>m_G1aQZp>({%=SIx|y zoV|EQ_A4_x3wUHAyHJ8vL29M3QMAxY6aRvQx1Pij^V3o*dOx*f0}o0|f%UW%u0<5r zNNuA;l|zL8uDMX9psUpa^r|ziY*R7Y*Ge8^?+uOz%{Q#V`L`*K>!7LUf@W}`IrUmt zR&RR^Bv=;AIdO3RiNS+Xqs%|=-90^j)ZxT?zOtq3?p}(39&wihJ_w6oU9;3bq5pP= zR*38={@qv^yHtLo{M>5zmyKscYw`NMeS&h?aLadz77qM6d)bb^gmZIyH;CuW9loJE zb?(~;#JhZQ>F>Q-bMya9&iSI_23v-8cpY?%q`;t$mzTWzB4J)TcNXJv<-ODQi%J^# zh1lINm&PI0B!yRZPL@=hwOjuG$19ITlqD3oit51@>@;nT4jUA78kX+6M*Zwzy!c3c z@k>a@R#8C!>Y&uA@9rh?m%f(zSTh^di&RH{?-!C1T6B7LCC~ZJyL;}H(=IV&pt6ot z8d>cgr0{1U7s|i1)V=&-_o}!`%Z_)3-Dlh&$N)_vfU3fU0ABm#sQLu`kJ3^#_>jBW z>pH(nHu=7L)7W}UA=uU*J&0%Ta)C4Z*4bY|X*nFYm9ayngmBHBb630En2bz_^y$A% zF5cbLhabzsTXExqukd$)=t5tGAvGzCgtf0Aub#8Y+pXA9ZNn@?I%5lgrN^u|?7Axe ttt*XZe@-bJ+zz8923US%&L_#Tu@Hx(6#(UuAt<8bP7roVUV(m%{STX(TZ;ey literal 0 HcmV?d00001 diff --git a/hosting/angular.json b/hosting/angular.json new file mode 100644 index 00000000..d0bb6e3f --- /dev/null +++ b/hosting/angular.json @@ -0,0 +1,139 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "hibiscus": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/hibiscus", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "stylePreprocessorOptions": { + "includePaths": [ + "node_modules/" + ] + }, + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "20kb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "hibiscus:build" + }, + "configurations": { + "production": { + "browserTarget": "hibiscus:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "hibiscus:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "stylePreprocessorOptions": { + "includePaths": [ + "node_modules/" + ] + }, + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "tsconfig.app.json", + "tsconfig.spec.json", + "e2e/tsconfig.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "hibiscus:serve" + }, + "configurations": { + "production": { + "devServerTarget": "hibiscus:serve:production" + } + } + } + } + } + }, + "defaultProject": "hibiscus" +} diff --git a/hosting/browserslist b/hosting/browserslist new file mode 100644 index 00000000..80848532 --- /dev/null +++ b/hosting/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/hosting/e2e/protractor.conf.js b/hosting/e2e/protractor.conf.js new file mode 100644 index 00000000..defbd365 --- /dev/null +++ b/hosting/e2e/protractor.conf.js @@ -0,0 +1,33 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const {SpecReporter} = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +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.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}})); + } +}; diff --git a/hosting/e2e/src/app.e2e-spec.ts b/hosting/e2e/src/app.e2e-spec.ts new file mode 100644 index 00000000..a683c02e --- /dev/null +++ b/hosting/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +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('hibiscus app is running!'); + }); + + 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, + } as logging.Entry)); + }); +}); diff --git a/hosting/e2e/src/app.po.ts b/hosting/e2e/src/app.po.ts new file mode 100644 index 00000000..8a9811cc --- /dev/null +++ b/hosting/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import {browser, by, element} from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/hosting/e2e/tsconfig.json b/hosting/e2e/tsconfig.json new file mode 100644 index 00000000..39b800f7 --- /dev/null +++ b/hosting/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/hosting/hospital.jpg b/hosting/hospital.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f04191a613ca43b62fb310729abb1b7ef05a23f5 GIT binary patch literal 20700 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 literal 0 HcmV?d00001 diff --git a/hosting/karma.conf.js b/hosting/karma.conf.js new file mode 100644 index 00000000..4e72e578 --- /dev/null +++ b/hosting/karma.conf.js @@ -0,0 +1,32 @@ +// 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/hibiscus'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/hosting/package-lock.json b/hosting/package-lock.json new file mode 100644 index 00000000..6aa4394d --- /dev/null +++ b/hosting/package-lock.json @@ -0,0 +1,15385 @@ +{ + "name": "hibiscus", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.901.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.0.tgz", + "integrity": "sha512-SlqEBkPrT40zMCy5344AsUqC76pEPCaGPaAkCIvadaz2dC9vNMzQrvubCPJHViD/TumkSX1kYmLS3iYASVM9GQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "rxjs": "6.5.4" + } + }, + "@angular-devkit/build-angular": { + "version": "0.901.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.0.tgz", + "integrity": "sha512-ftJVNlKvIomqRfr5jFVraPqlLSUJu8YyVbFv/aCsvhNpuZGkYpTOMoJDwyywdslSTH608BIoU63IAnIz9PwUdw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.901.0", + "@angular-devkit/build-optimizer": "0.901.0", + "@angular-devkit/build-webpack": "0.901.0", + "@angular-devkit/core": "9.1.0", + "@babel/core": "7.9.0", + "@babel/generator": "7.9.3", + "@babel/preset-env": "7.9.0", + "@babel/template": "7.8.6", + "@jsdevtools/coverage-istanbul-loader": "3.0.3", + "@ngtools/webpack": "9.1.0", + "ajv": "6.12.0", + "autoprefixer": "9.7.4", + "babel-loader": "8.0.6", + "browserslist": "^4.9.1", + "cacache": "15.0.0", + "caniuse-lite": "^1.0.30001032", + "circular-dependency-plugin": "5.2.0", + "copy-webpack-plugin": "5.1.1", + "core-js": "3.6.4", + "cssnano": "4.1.10", + "file-loader": "6.0.0", + "find-cache-dir": "3.3.1", + "glob": "7.1.6", + "jest-worker": "25.1.0", + "karma-source-map-support": "1.4.0", + "less": "3.11.1", + "less-loader": "5.0.0", + "license-webpack-plugin": "2.1.4", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "0.9.0", + "minimatch": "3.0.4", + "open": "7.0.3", + "parse5": "4.0.0", + "postcss": "7.0.27", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "4.0.0", + "regenerator-runtime": "0.13.5", + "rimraf": "3.0.2", + "rollup": "2.1.0", + "rxjs": "6.5.4", + "sass": "1.26.3", + "sass-loader": "8.0.2", + "semver": "7.1.3", + "source-map": "0.7.3", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.16", + "speed-measure-webpack-plugin": "1.3.1", + "style-loader": "1.1.3", + "stylus": "0.54.7", + "stylus-loader": "3.0.2", + "terser": "4.6.7", + "terser-webpack-plugin": "2.3.5", + "tree-kill": "1.2.2", + "webpack": "4.42.0", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.10.3", + "webpack-merge": "4.2.2", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.4.0", + "worker-plugin": "4.0.2" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.901.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.0.tgz", + "integrity": "sha512-Y9sz8uf2zjilhPUVYb0K9Mio6c1d5c+csuDc15CCKzELXJwyyDxilIFgn6Eu+edM0HNQGzbIwkjy4DkR9mtuTQ==", + "dev": true, + "requires": { + "loader-utils": "2.0.0", + "source-map": "0.7.3", + "tslib": "1.11.1", + "typescript": "3.8.3", + "webpack-sources": "1.4.3" + } + }, + "@angular-devkit/build-webpack": { + "version": "0.901.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.0.tgz", + "integrity": "sha512-Oze0VzIvHnoW12C80fiNH4HBu/GWmhJPXdNA7nRkU/tBQlIKnfngf8rQ0QbgecN2qdEXQpZJsP/XclTi3zugsg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.901.0", + "@angular-devkit/core": "9.1.0", + "rxjs": "6.5.4" + } + }, + "@angular-devkit/core": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.0.tgz", + "integrity": "sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg==", + "dev": true, + "requires": { + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.0.tgz", + "integrity": "sha512-cb9PSvskMwWlL54fPfCcpJoyNDWAX6Wo7CzL5qpIB2cJCPLAuyfRUYYrkO77YUST+n2HvypHz0cZ5SNGMfaaBQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "ora": "4.0.3", + "rxjs": "6.5.4" + } + }, + "@angular-mdc/theme": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@angular-mdc/theme/-/theme-5.1.1.tgz", + "integrity": "sha512-uWEcNLSTLxKK4ify2Ro+MsLuHCLgSSrbjPKJMUEK3VuvZYHO5eaNbj7s+wtRvhisa32mSIEiiVBlqv/i5T6zpg==" + }, + "@angular-mdc/web": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@angular-mdc/web/-/web-5.1.1.tgz", + "integrity": "sha512-GTvE3D7/F+V5pRQJPs6t8YXnmLfHqG9MesSZoCXKkFutzfu16zgFjMxcfklhGHiqCnSZ0/OC+OgxfvIY5QoOmg==", + "requires": { + "@angular-mdc/theme": "5.1.1", + "@angular/cdk": "^9.1.0", + "material-components-web": "^5.1.0" + } + }, + "@angular/animations": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.0.tgz", + "integrity": "sha512-o7X3HM+eocoryw3VrDUtG6Wci2KwtzyBFo3KBJXjQ16X6fwdkjTG+hLb7pp2CBFBEJW4tPYEy7cSBmEfMRTqag==" + }, + "@angular/cdk": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.0.tgz", + "integrity": "sha512-jeeznvNDpR9POuxzz8Y0zFvMynG9HCJo3ZPTqOjlOq8Lj8876+rLsHDvKEMeLdwlkdi1EweYJW1CLQzI+TwqDA==", + "requires": { + "parse5": "^5.0.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + } + } + }, + "@angular/cli": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.0.tgz", + "integrity": "sha512-ofum4gPE/W3fKyzuJrpdHeOS0ZL8x0eYCgsrMyUoFodSpb5LWPqeW+56NgDTpIeny+Trx3pM9dr9QTUVTJ0vYg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.901.0", + "@angular-devkit/core": "9.1.0", + "@angular-devkit/schematics": "9.1.0", + "@schematics/angular": "9.1.0", + "@schematics/update": "0.901.0", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.1.1", + "ini": "1.3.5", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.0.0", + "open": "7.0.3", + "pacote": "11.1.4", + "read-package-tree": "5.3.1", + "rimraf": "3.0.2", + "semver": "7.1.3", + "symbol-observable": "1.2.0", + "universal-analytics": "0.4.20", + "uuid": "7.0.2" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "uuid": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "dev": true + } + } + }, + "@angular/common": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.0.tgz", + "integrity": "sha512-6JPLNtMhI03bGTVQJeSwc+dTjV6DtP7M/BAyzIV0InZP1D6XsOh2QahLFIaaN2sSxYA2ClKuwfX1v+rx9AbXQA==" + }, + "@angular/compiler": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.0.tgz", + "integrity": "sha512-QHw/JSeTXHiJQ2Ih0EtU7FGsYcOr+0hwZhqwSW3EEn8TtUgA3DS5lXeiDV66f+3DdvNZFPmgiZIvun3ypxn1HA==" + }, + "@angular/compiler-cli": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.0.tgz", + "integrity": "sha512-xZ8mVPmPporSTtvNA+cbFJQymLzuWfMX6HDDgztZ2eZ5WcQJYloRN4CcYMEzDhCxfV1Zw9Tfc2l14jZD8osi6g==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "yargs": "15.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.0" + } + }, + "yargs-parser": { + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.0.tgz", + "integrity": "sha512-RVlyegdIAij0P1wLY5ObIdsBAzvmHkHfElnmfiNKhaDftP6U/3zRtaKDu0bq0jvn1WCQ8zXxFQ8AWyKZwyFS+w==" + }, + "@angular/forms": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.0.tgz", + "integrity": "sha512-5GC8HQlPChPV+168zLlm4yj4syA6N9ChSKV0tmzj1zIfMcub1UAOaB9IYaXRHQsjPFh9OuQXwmkzScyAfhEVjA==" + }, + "@angular/language-service": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.0.tgz", + "integrity": "sha512-2f8ECoXrj40oS1rtIfi+F8T4WPzundcZDs8WMFNBuWYbk14v1S9sTgMEmZyePHGkPjt6IfYiLJKJCvVgrt1nxQ==", + "dev": true + }, + "@angular/platform-browser": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.0.tgz", + "integrity": "sha512-OsS/blUjl8ranmDaRADjFAmvnlmwbT6WNU7dVov7FhV0rqesbwaOJ5bR0LSYHYpej7Jaa6oYk0v0XWkaH9LTFg==" + }, + "@angular/platform-browser-dynamic": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.0.tgz", + "integrity": "sha512-sMtz/poQ3TYaWZzWjrn9apKUZ/WKql2MYCWbpax7pql3GgC9OoTslc7ZEe7/d3ynfFE/CQqWBBOuWGD71Z0LMQ==" + }, + "@angular/router": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.0.tgz", + "integrity": "sha512-cExO1nPnoPFiUJWZ28hTHozPLFoCmqr3xqcM57We0hhKE0esdrO+gRWKRH0EJERukLbU8coPKVhA8daGUpASiQ==" + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "dev": true, + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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/generator": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.3.tgz", + "integrity": "sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "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/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@firebase/analytics": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.3.0.tgz", + "integrity": "sha512-EEHuK+OcWH6UxufRLVU3lAJ4rmm7aVHmcgkhE9ZQJQy5c+w7QTLvVpGqtrpqD+cYyIBJkFBKJB8NziVyqKwQHw==", + "requires": { + "@firebase/analytics-types": "0.3.0", + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/analytics-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.3.0.tgz", + "integrity": "sha512-0AJ6xn53Qn0D/YOVHHvlWFfnzzRSdd98Lr8Oqe1PJ2HPIN+o7qf03YmOG7fLpR1uplcWd+7vGKmxUrN3jKUBwg==" + }, + "@firebase/app": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.0.tgz", + "integrity": "sha512-utFL07aO64ZVs9g79cv1KHomtLdKkkAeKN5e8G9NlXXuO6dZXhcHLbOmKY1AfwrkAvUzPEKkFFY3dytOIt+nlg==", + "requires": { + "@firebase/app-types": "0.6.0", + "@firebase/component": "0.1.8", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "dom-storage": "2.1.0", + "tslib": "1.11.1", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.0.tgz", + "integrity": "sha512-ld6rzjXk/SUauHiQZJkeuSJpxIZ5wdnWuF5fWBFQNPaxsaJ9kyYg9GqEvwZ1z2e6JP5cU9gwRBlfW1WkGtGDYA==" + }, + "@firebase/auth": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.14.1.tgz", + "integrity": "sha512-LE+QED10cjp28jJ7wwIY58HQBXoJioEWiQy7iQS8Fo2UxHGY5BvGjwnxX4yyszQPbcZZRLDSlBIUaYfog+rdEA==", + "requires": { + "@firebase/auth-types": "0.10.0" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.4.tgz", + "integrity": "sha512-CLKNS84KGAv5lRnHTQZFWoR11Ti7gIPFirDDXWek/fSU+TdYdnxJFR5XSD4OuGyzUYQ3Dq7aVj5teiRdyBl9hA==" + }, + "@firebase/auth-types": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.0.tgz", + "integrity": "sha512-VuW7c+RAk3AYPU0Hxmun3RzXn7fbJDdjQbxvvpRMnQ9zrhk8mH42cY466M0n4e/UGQ+0smlx5BqZII8aYQ5XPg==" + }, + "@firebase/component": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.8.tgz", + "integrity": "sha512-kzuCF+NVympQk3gcsHldOmDRVPVndECi6O9Wvd47HTEQYO9HsZWfOM1fHUvvHAijSzNi16p4NSM7UziuBQBL4w==", + "requires": { + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/database": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.5.24.tgz", + "integrity": "sha512-9whAQzU8cxDUKGBWCT/aHVmqfyzCP2RkGhbZi2oHpMrmvht7cuBtXtUbDD5R8WomniCOUP8rtQfmCFI7V9ehYw==", + "requires": { + "@firebase/auth-interop-types": "0.1.4", + "@firebase/component": "0.1.8", + "@firebase/database-types": "0.4.14", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "faye-websocket": "0.11.3", + "tslib": "1.11.1" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "@firebase/database-types": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.14.tgz", + "integrity": "sha512-+D41HWac0HcvwMi+0dezEdSOZHpVjPKPNmpQiW2GDuS5kk27/v1jxc9v7F4ALLtpxbVcn16UZl5PqEkcS9H2Xg==", + "requires": { + "@firebase/app-types": "0.6.0" + } + }, + "@firebase/firestore": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.13.0.tgz", + "integrity": "sha512-GctO+sxLqOnY8SkBN5Z5p1nUYRX+yWSc9Kcx9nIPbUZ0WqBM5BaSlBHZHTFtjmJxS+0j/Y8Mu7c6qm6q5rVnjA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/firestore-types": "1.10.1", + "@firebase/logger": "0.2.0", + "@firebase/util": "0.2.43", + "@firebase/webchannel-wrapper": "0.2.38", + "@grpc/proto-loader": "^0.5.0", + "grpc": "1.24.2", + "tslib": "1.11.1" + } + }, + "@firebase/firestore-types": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.10.1.tgz", + "integrity": "sha512-vyKdm+AYUFT8XeUX62IOqaqPFCs/mAMoSEsqIz9HnSVsqCw/IocNjtjSa+3M80kRw4V8fI7JI+Xz6Wg5VJXLqA==" + }, + "@firebase/functions": { + "version": "0.4.38", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.38.tgz", + "integrity": "sha512-t5QkJg251FmIEEi2mh3Xrf7Q3yonSLRaUW/vhgze7A3Xy3uTIUT3BVNWuKaRmg1n0PgKQaBHCjlDoLJAdSpujg==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/functions-types": "0.3.16", + "@firebase/messaging-types": "0.4.4", + "isomorphic-fetch": "2.2.1", + "tslib": "1.11.1" + } + }, + "@firebase/functions-types": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.16.tgz", + "integrity": "sha512-kHhBvSYiY2prY4vNQCALYs1+OruTdylvGemHG6G6Bs/rj3qw7ui3WysBsDU/rInJitHIcsZ35qrtanoJeQUIXQ==" + }, + "@firebase/installations": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.6.tgz", + "integrity": "sha512-ey8cE2ldRO4pYqg0lCWQ+XFLETHZWha3Hw1CnYJjLivk4FMM8u/es3Oa257wwtYXAUfr0UsPDfHFgYME9E9EhA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations-types": "0.3.3", + "@firebase/util": "0.2.43", + "idb": "3.0.2", + "tslib": "1.11.1" + } + }, + "@firebase/installations-types": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.3.tgz", + "integrity": "sha512-XvWhPPAGeZlc+CfCA8jTt2pv19Jovi/nUV73u30QbjBbk5xci9bp5I29aBZukHsR6YNBjFCLSkLPbno4m/bLUg==" + }, + "@firebase/logger": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.0.tgz", + "integrity": "sha512-qOMnAh1JY9NkYUEy3iFviiFq0dCvk6qN2DsRy2Y7eAhHR6RqwA47l1kI+0MIXmSzlJ9akXjWAXxV5ijzr68Big==" + }, + "@firebase/messaging": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.6.10.tgz", + "integrity": "sha512-WYnKEffG6m0EMHzib8KCWVUGno1cuBC13RrOfGWOCv/whdy9QCIZgMxH/NsY3BrYst8FnjuXEU16fi5AEf4qbg==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/messaging-types": "0.4.4", + "@firebase/util": "0.2.43", + "idb": "3.0.2", + "tslib": "1.11.1" + } + }, + "@firebase/messaging-types": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.4.4.tgz", + "integrity": "sha512-JGtkr+1A1Dw7+yCqQigqBfGKtq0gTCruFScBD4MVjqZHiqGIYpnQisWnpGbkzPR6aOt6iQxgwxUhHG1ulUQGeg==" + }, + "@firebase/performance": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.2.36.tgz", + "integrity": "sha512-nMx3gT+ZD86MV5n460XFA1o75YYMGcs2MXrJa462rfUQtqOrtOOvdUvVtmE6cLrHsL4Y83B+VBWKHzACIPghPw==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/logger": "0.2.0", + "@firebase/performance-types": "0.0.12", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/performance-types": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.12.tgz", + "integrity": "sha512-eIDF7CHetOE5sc+hCaUebEn/2Aiaju7UkgZDTl7lNQHz5fK9wJ/11HaE8WdnDr//ngS3lQAGC2RB4lAZeEWraA==" + }, + "@firebase/polyfill": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.33.tgz", + "integrity": "sha512-Arp9JViyD2i0K01NCCY0WZK5p16kQB/wddf44+Qboh+u3eIrFbVk0OO2IknjrkzIW392u73Ts7TkVxLPGPJF9g==", + "requires": { + "core-js": "3.6.4", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@firebase/remote-config": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.17.tgz", + "integrity": "sha512-jIRHXih0krVTNGYMewFVIaX8WPE1iS06fV4oMMHCCSSforGodv535uVZZ41Il29Q+22zOcyJvahoc990V0cFoA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/installations": "0.4.6", + "@firebase/logger": "0.2.0", + "@firebase/remote-config-types": "0.1.8", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/remote-config-types": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.8.tgz", + "integrity": "sha512-K12IBHO7OD4gCW0FEqZL9zMqVAfS4+joC4YIn3bHezZfu3RL+Bw1wCb0cAD7RfDPcQxWJjxOHpce4YhuqSxPFA==" + }, + "@firebase/storage": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.30.tgz", + "integrity": "sha512-wapt4+NiEqTiLKPpsy+XbdLTN99pkqjf46Z7zqeS+vh+61cJsUT8M7YBfBb0ZN+dY6gnI5QNzviiKpykhJQbVA==", + "requires": { + "@firebase/component": "0.1.8", + "@firebase/storage-types": "0.3.11", + "@firebase/util": "0.2.43", + "tslib": "1.11.1" + } + }, + "@firebase/storage-types": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.11.tgz", + "integrity": "sha512-EMOo5aeiJIa8eQ/VqjIa/DYlDcEJX1V84FOxmLfNWZIlmCSvcqx9E9mcNlOnoUB4iePqQjTMQRtKlIBvvEVhVg==" + }, + "@firebase/util": { + "version": "0.2.43", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.43.tgz", + "integrity": "sha512-4gGlvcoOJ48xO6PH59UOHLjvImdYXANF/1d0ao60fbiJDIKxJqMksXw3UF2zsUrRkyCOqIDLeiVuF18vffXP+g==", + "requires": { + "tslib": "1.11.1" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.2.38", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.38.tgz", + "integrity": "sha512-mp1XmAJsuqaSWm5WQYo7R0zfZWe9EmwMCxsxkKr+ubLOumyNy4NG5aV45hEpFTosQv4myXpiCiS4GFE9mNqLZQ==" + }, + "@grpc/proto-loader": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.3.tgz", + "integrity": "sha512-8qvUtGg77G2ZT2HqdqYoM/OY97gQd/0crSG34xNmZ4ZOsv3aQT/FQV9QfZPazTGna6MIoyUd+u6AxsoZjJ/VMQ==", + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz", + "integrity": "sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.1", + "loader-utils": "^1.4.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.4" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "@material/animation": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-5.1.0.tgz", + "integrity": "sha512-qZuPCZkTsCQCzx5EtY2eNBcmYOMGMbFVq6VTmvQztDCYDykT8JfP8Hpk55Y5bGORHvBbIasUXzoAhfQs6w/Bdg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "@material/auto-init": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-5.1.0.tgz", + "integrity": "sha512-yal8Bo1cxGclFmXqg9l77PE34g1B3JS+YLBeGeZGXMsKrMcFV4105aipRPYujdKJsUS5eBFeskinJtOIo+gtUw==", + "requires": { + "@material/base": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/base": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-5.1.0.tgz", + "integrity": "sha512-UxVFKpSNaoKqd7hHxy9hrvwANp0WJy/BZqu8Rj/aRvKnBZnuHehFuOysI9WqdeTqgveJaQoj6EEkVEqLurR5Sg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "@material/button": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-5.1.0.tgz", + "integrity": "sha512-umeuIEbeRRd0cY+5axhrBoM0dvJ4YfoTsUbKgz4ctFxHLBsgthFUIXSa3Ot15s284UP6kjslK0LCMqzhirZxeQ==", + "requires": { + "@material/density": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/touch-target": "^5.1.0", + "@material/typography": "^5.1.0" + } + }, + "@material/card": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-5.1.0.tgz", + "integrity": "sha512-/syao6oR/PAvzs04quybeCWHZVn4W2dNnxIOWIJTRQced0/o3gYrHgQSX+edC+6pEnSr3Drwbo2cye7nRdbixA==", + "requires": { + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0" + } + }, + "@material/checkbox": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-5.1.0.tgz", + "integrity": "sha512-NwpWxFdWrZNlSjcSEEcGz8UN7ZQ5k8VthExclJnawpYGPUnCPLTXWogREnA2Tyl22PJ6jOy8Ejb8tnpu2rSiaw==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/touch-target": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/chips": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-5.1.0.tgz", + "integrity": "sha512-eYWrobENtXbnGoEx5BEURqoCfoc9aHu1JWq64mF12a/JSk+c035KYMjD4oyhow7dYqobbfQlWWdLQeHoRpYCeA==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/checkbox": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/touch-target": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/data-table": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-5.1.0.tgz", + "integrity": "sha512-vjijTvCHM7sfyPzQ05026nSWT1Bn/3lfj1u0oeYRnym6Ke6Os36x+IF/jFhjsraXKb2we6cof7OdoMFHCU8cqQ==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/checkbox": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.10.0" + } + }, + "@material/density": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-5.1.0.tgz", + "integrity": "sha512-jmp6AgiNYosl+HicxWCa8vib9pg9tNxRcf+6f9LDkDYJ9jtO90PXuypyd0hO64JZ9Df7BywFj5hTWPERG1FBbw==" + }, + "@material/dialog": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-5.1.0.tgz", + "integrity": "sha512-CxA0W0uzXuwJNivB6Gbb7DvtJL3+J7ghsaSL1HfycXVXfdrT1nSidLyOIthRMVBUBJrAMfusvtzFDgXr0TWqDg==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/button": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/touch-target": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/dom": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-5.1.0.tgz", + "integrity": "sha512-tBbl3hG34Auv+2sboWhtstXeZ9rx3G7hb/jEXs5xZ5KIfZHwY4mbo0KqR/fSJZKaUsvk2Nc/UEOVcUx2mTNmYg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "@material/drawer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-5.1.0.tgz", + "integrity": "sha512-Xh/kYkT8QWWXkbCI25ys6av0wrc0wXRfvnRdH34Rz4sZvWC51D6apK2bxGr+AV/uR88zwn6U8pb9cccnr+2Eqw==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/list": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/elevation": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-5.1.0.tgz", + "integrity": "sha512-NsWIT+L6x3BLouCOh3H8x885/nCrNNmzCwHEodz/0PcYQsxx9RiIVFkagmJWw/w//jej/D4NotD0xHGKOWTrFA==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/theme": "^5.1.0" + } + }, + "@material/fab": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-5.1.0.tgz", + "integrity": "sha512-mq9I0l4hnsMS+Ko/W7e5A8epElIp3H0UFGJzMlZX5VJBWBpfnykj7fLYnVWtyJ+zFgdLv6rpO/307Kto7gi5Pg==", + "requires": { + "@material/animation": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/touch-target": "^5.1.0", + "@material/typography": "^5.1.0" + } + }, + "@material/feature-targeting": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-5.1.0.tgz", + "integrity": "sha512-z3JNWF7lP9WOzw1xBwul/HAOu4qC6EpK/8MkhjLNI9APvdYML82PWS1V0k0MiqA6Jk6uxm8DiVAk9VUqBa9/YA==" + }, + "@material/floating-label": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-5.1.0.tgz", + "integrity": "sha512-5EwPiBa5A4Q678tNWdkkBGDdSCDzudhVgBtRiA/7xRo4dHXiBxX5bhE+RHrF3ZQyEf6fsShspqwAFkTA1EaplQ==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/form-field": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-5.1.0.tgz", + "integrity": "sha512-gF2YoeCd41fIM7U1v3psEqiUdwbylbzb6BuvmcKmH0OQBP6lnRbLSbgKWldcHx2VyKTdqusu/bv6/NAe/98QiQ==", + "requires": { + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/icon-button": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-5.1.0.tgz", + "integrity": "sha512-HLdSkqDH1wx5YSBHz8dGEL2BKv8IDqhRul7wea9i9/3RcQz3hb5+OYpq8iiXqpxcVPVlWNud2w1oyvmEXRTdZQ==", + "requires": { + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/image-list": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-5.1.0.tgz", + "integrity": "sha512-LFl7W8AFp2baFY38BBGVX5C6c/zZoPOsHsRMhVP8jvIH5q1BfUg6SaXkleos6Yxmy+18hdPnVuWdAQ38hhje8Q==", + "requires": { + "@material/feature-targeting": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0" + } + }, + "@material/layout-grid": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-5.1.0.tgz", + "integrity": "sha512-6TvPVZE+UGVfmzttbRp0K6SOUvFmYI5W8p966Vztg8dYK122ondRJqMmyFf0SS0CdbrbO+bSW7/S3YkpPNrvAg==" + }, + "@material/line-ripple": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-5.1.0.tgz", + "integrity": "sha512-esf2/ROZl1eVpyGCWPvxMSGVkuIOG5Fm6qufOLp7XIx5IL1O0bsm+bV6cVC4JCCtmNOag4GOBgkKKbkOvp/R6g==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/linear-progress": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-5.1.0.tgz", + "integrity": "sha512-wuBH2Y7psdiG5ubsKCHFWriHv4IqLeUARCmHoHyFsAdW0snwMPzSgb2mbVDiGl5gjWbSDxBsqGjKo5kOl3Vaug==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/progress-indicator": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/list": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-5.1.0.tgz", + "integrity": "sha512-fcHMJLmmtFYeMU8CO9VsXoRRm3/2jhPVMWK3lpuARZxvkNyZqjQG0mGtpWgw4oekerM/B37TGGFmN3R5DSyGcg==", + "requires": { + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/menu": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-5.1.0.tgz", + "integrity": "sha512-ssJNcbdyLewgL7hnj4C7JeXO3GvV4G2i1//Ych2s+au7AcJ/6/YeTTKhiCkoSpS7pb7axB3dMKwQWor2glec5Q==", + "requires": { + "@material/base": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/list": "^5.1.0", + "@material/menu-surface": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/menu-surface": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-5.1.0.tgz", + "integrity": "sha512-8EqkrKP92O4xaPVItz2841OfmuH3zyCclU1iC0NSBa39MwmYt7ML3IEaOXwOzKlcNGOcC7qPeqcpYlUsfMYX3g==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/notched-outline": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-5.1.0.tgz", + "integrity": "sha512-mQ3NjJR1jLXnJi6jhs20ftTf0yU1gWpYlyx1GizU0f7pLEqcIrFnw6G+pavcnKqP+JXNkzAQeGbmZvYBQnxokA==", + "requires": { + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/floating-label": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/progress-indicator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-5.1.0.tgz", + "integrity": "sha512-+bsiQogKFu42Td8cXpsxX1u2BOyB4erR6NBWMrSWZJNmKM95EFQrQEnr9nxfU94bY47V3UqYtcAY9Y6GgfJyZQ==", + "requires": { + "tslib": "^1.9.3" + } + }, + "@material/radio": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-5.1.0.tgz", + "integrity": "sha512-srAchlY1TKkmQAdMHqbP9vLkN7gmiWX6FGzArgKomd6Es8OqF2P3jvPcQizqz4OFYZIMrxARdW6r8QvhG0lZEg==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/touch-target": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/ripple": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-5.1.0.tgz", + "integrity": "sha512-mluIf+HaaCplszp9/MAl178FpfIJWi5hSyQOpF7w8RTzRSaH8J0uwgmn8VeNnwe1TAWio0vQzHrz4iEg2r7Ngw==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/rtl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-5.1.0.tgz", + "integrity": "sha512-Hij4KJIfjK63HArdQ3K1INMo0MbigDgL0JhjO1VDk5c+iYmYpjDI7wgPLmV5ISCBtenXRWpo1xbBO3uEmtCd4Q==" + }, + "@material/select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-5.1.0.tgz", + "integrity": "sha512-AAXscWDMjpVfO91VYKhxdP8XTyZ6fJFNFEgL0lxccvRqU8qFt5cPQ+7W1IgMWYdrnvHhANa8DLTrpnepSq4irQ==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/floating-label": "^5.1.0", + "@material/line-ripple": "^5.1.0", + "@material/menu": "^5.1.0", + "@material/menu-surface": "^5.1.0", + "@material/notched-outline": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/shape": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-5.1.0.tgz", + "integrity": "sha512-/k27T9fhQ1zj7VCsS26nv0TzsOi142ncik2mycEXq8753PDBotob7Y19pbwivwt9QxkglhMGH0EaWdZPzBoQXw==", + "requires": { + "@material/feature-targeting": "^5.1.0", + "@material/rtl": "^5.1.0" + } + }, + "@material/slider": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-5.1.0.tgz", + "integrity": "sha512-3+0kIgqowmUK0AXOC0jvR+8fqFJobdWuthfbuYBV+PFGBa9+zUow6Txf/yrhtCeQ01FHXw2iNeEFXSws+MYP9w==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/snackbar": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-5.1.0.tgz", + "integrity": "sha512-bn6WydEGKZxq24aZ6BfnLGPbhCww2srOe+mn2W9VJFBfZEh9qnCcya2jHs295pPbzRtDM1b2oR2LiAKBfIBt3A==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/button": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/icon-button": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/switch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-5.1.0.tgz", + "integrity": "sha512-cHFzquY8NINZIIaDdA+T3gwBR5V0lRORh6BNq4EBD69GiGQamoz1S8APr5ea1Sodt7Dm1yzkDRbbDO+yoNgR9g==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/tab": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-5.1.0.tgz", + "integrity": "sha512-awur1Yv2QjJ8ghNyZ/oF6MThxczGDdGqimrzcgS0wI04sg2eTiU5Ed6KV3VILVsD9fA8kKR/e5XEh0CXjqhUYQ==", + "requires": { + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/tab-indicator": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/tab-bar": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-5.1.0.tgz", + "integrity": "sha512-zK1Fe+in5cjkNIQH3Z7NiKqz0hNWehgr5e8lO0MxAFoTRodxUw5OhM9rse18c42uW+fItTJeSpLdz7RceENpyw==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/tab": "^5.1.0", + "@material/tab-scroller": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/tab-indicator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-5.1.0.tgz", + "integrity": "sha512-vy/oBsvRQaQ2EscsgFp9xu7tZM6UBECmNxcC1k2eQGhNjy7olkoL9bX/ymiN4xAjQYqvP6BnC3LN3IywvKMTxQ==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/theme": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/tab-scroller": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-5.1.0.tgz", + "integrity": "sha512-7b1Ea5tLc0A0iQEWYHXj8jfdJgYFMaaWjs9BOJyPBw7m2PyDnVwPGngPC5RqmxjDdyEeXbtDHsnMLZmjdT5g6A==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/tab": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/textfield": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-5.1.0.tgz", + "integrity": "sha512-Vipvw75AXj4G/BGXv3DyrGozbvHxGtcNGig1e5pz1ERvcmZN5epLyGStznxEIZYNf0Q+6O/NwSRxZGgrdI2w8w==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/floating-label": "^5.1.0", + "@material/line-ripple": "^5.1.0", + "@material/notched-outline": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/theme": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-5.1.0.tgz", + "integrity": "sha512-VoaCYAubn/oEG1/fu/yP4nxAw8sLEphFOGGBJxcPGQoLgQ9qcvibsV3G5H9S6AtmhJxgSGU0JnO9TaiuhQq5zA==", + "requires": { + "@material/feature-targeting": "^5.1.0" + } + }, + "@material/top-app-bar": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-5.1.0.tgz", + "integrity": "sha512-ySCUpwIFnCmY/I9/XPs0IPBCvjWzc2NQ7mquG7qQoaUVUqWTNMyL15zG6CeDf2/Nk14mlSRNM4LRPFWenCdJoQ==", + "requires": { + "@material/animation": "^5.1.0", + "@material/base": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/typography": "^5.1.0", + "tslib": "^1.9.3" + } + }, + "@material/touch-target": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-5.1.0.tgz", + "integrity": "sha512-lR3eoL1D0I/hyEK6I7bMFDBy/pE0yYvjYUZtL1vC7+2i54A4FgQ2hwnpQJVaZQXzrHdj6xsXmODphmUsH5gqPA==", + "requires": { + "@material/base": "^5.1.0", + "@material/feature-targeting": "^5.1.0" + } + }, + "@material/typography": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-5.1.0.tgz", + "integrity": "sha512-yh02koa6JLyPT5u7Zb31kyqhoZoppL0n9FmZK+eHXZcfeDF7ROL0UmtRsEjQxfnCNZRR+FIhAgrzdYxClwH05g==", + "requires": { + "@material/feature-targeting": "^5.1.0", + "@material/theme": "^5.1.0" + } + }, + "@ngtools/webpack": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.0.tgz", + "integrity": "sha512-kQ+1N/F+5tuUXiiaoqJwhcOIM0I93EEvF3xwpTLRm91wl2i8R1261LvsD/uQPrgLrZNGR6eFhFF1Izn2PnIjQA==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "enhanced-resolve": "4.1.1", + "rxjs": "6.5.4", + "webpack-sources": "1.4.3" + } + }, + "@npmcli/ci-detect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz", + "integrity": "sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA==", + "dev": true + }, + "@npmcli/git": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.1.tgz", + "integrity": "sha512-hVatexiBtx71F01Ars38Hr5AFUGmJgHAfQtRlO5fJlnAawRGSXwEFgjB5i3XdUUmElZU/RXy7fefN02dZKxgPw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.1.0", + "mkdirp": "^1.0.3", + "npm-pick-manifest": "^6.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "unique-filename": "^1.1.1", + "which": "^2.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz", + "integrity": "sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1", + "read-package-json-fast": "^1.1.1", + "readdir-scoped-modules": "^1.1.0" + } + }, + "@npmcli/promise-spawn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.1.0.tgz", + "integrity": "sha512-FwbuYN9KXBkloLeIR3xRgI8dyOdfK/KzaJlChszNuwmUXD1lHXfLlSeo4n4KrKt2udIK9K9/TzlnyCA3ubM2fA==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@schematics/angular": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.0.tgz", + "integrity": "sha512-qkehaITQ1S1udfnnBY5CXGWnk1iVFI8cZayjLUlRfD5w+6v9if3VIuqPssX96MqvkbjyRu1N214+ieaawzLmuA==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "@angular-devkit/schematics": "9.1.0" + } + }, + "@schematics/update": { + "version": "0.901.0", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.0.tgz", + "integrity": "sha512-u2VESL1dgOSGZK/wcWEz0WcCU/yv764zhzCQerCwUtbV1CISSSDZ6x+prVYDXOdxWBGtDos2MbCF3GEJJI1T+w==", + "dev": true, + "requires": { + "@angular-devkit/core": "9.1.0", + "@angular-devkit/schematics": "9.1.0", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "npm-package-arg": "^8.0.0", + "pacote": "11.1.4", + "rxjs": "6.5.4", + "semver": "7.1.3", + "semver-intersect": "1.4.0" + } + }, + "@tootallnate/once": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz", + "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==", + "dev": true + }, + "@types/bytebuffer": { + "version": "5.0.40", + "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz", + "integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==", + "requires": { + "@types/long": "*", + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/google.visualization": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/@types/google.visualization/-/google.visualization-0.0.43.tgz", + "integrity": "sha512-SmQWGJ4UykOzChj+AVo5JB8vC0hDnI3hUT6auRD34mnyO/s9ll1i4cT1hSmng3ZXbxG7qAdOctNElOpD9xqJZQ==" + }, + "@types/jasmine": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.10.tgz", + "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.12.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.34.tgz", + "integrity": "sha512-BneGN0J9ke24lBRn44hVHNeDlrXRYF+VRp0HbSUNnEZahXGAysHZIqnf/hER6aabdBgzM4YOV4jrR8gj4Zfi0g==" + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "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.7", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", + "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==", + "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.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@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.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "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 + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "adm-zip": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", + "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": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.0.tgz", + "integrity": "sha512-CW/n1wxF8RpEuuiq6Vbn9S8m0VSYDMnZESqaJ6F2cWN9fY8rei2qaxweIaRgq+ek8TqfoFIsUjaGNKGGEHElSg==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.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.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "angular-google-charts": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/angular-google-charts/-/angular-google-charts-0.1.6.tgz", + "integrity": "sha512-ToY5kw72CQqy0nse70PkQlzQ72+XQBxaATxOtSyhvkgNaf/8H2eGoMVkh0ug931vVNgTNoisrjlzQ/mpdXC0yA==", + "requires": { + "@types/google.visualization": "0.0.43", + "tslib": "^1.9.0" + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "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": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "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 + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "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" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "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-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-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 + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "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 + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "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.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + } + }, + "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.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "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": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "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 + }, + "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" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "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.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.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" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "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.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "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" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "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 + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.0.tgz", + "integrity": "sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^8.0.0", + "tar": "^6.0.1", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "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" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001038", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz", + "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==", + "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" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "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.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "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-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "dev": true + }, + "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": "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": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "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=" + }, + "codelyzer": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.2.tgz", + "integrity": "sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "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": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "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=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "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.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "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.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "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.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.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.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "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" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "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": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "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.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "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": "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.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 + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "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 + } + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "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 + } + } + }, + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "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" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.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" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "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": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "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 + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "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 + }, + "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.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "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-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "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" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" + }, + "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 + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "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.392", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.392.tgz", + "integrity": "sha512-/hsgeVdReDsyTBE0aU9FRdh1wnNPrX3xlz3t61F+CJPOT+Umfi9DXHsCX85TEgWZQqlow0Rw44/4/jbU2Sqgkg==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "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" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "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=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "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": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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" + } + } + } + }, + "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": { + "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 + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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" + } + } + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.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 + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "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" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "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 + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "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 + }, + "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" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "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": "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" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "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": { + "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" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "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.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "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": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "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.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "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": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "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" + } + }, + "firebase": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.13.1.tgz", + "integrity": "sha512-v4Z7Wioy/7LMC8RJn1jNlOaUqLK7bUEva+Uf+qrbtFd7hM2rWLW+0IqHZBwPrQ5tI604uHj7IlhqAZEjm38AMw==", + "requires": { + "@firebase/analytics": "0.3.0", + "@firebase/app": "0.6.0", + "@firebase/app-types": "0.6.0", + "@firebase/auth": "0.14.1", + "@firebase/database": "0.5.24", + "@firebase/firestore": "1.13.0", + "@firebase/functions": "0.4.38", + "@firebase/installations": "0.4.6", + "@firebase/messaging": "0.6.10", + "@firebase/performance": "0.2.36", + "@firebase/polyfill": "0.3.33", + "@firebase/remote-config": "0.1.17", + "@firebase/storage": "0.3.30", + "@firebase/util": "0.2.43" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", + "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", + "dev": true, + "requires": { + "debug": "^3.0.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" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.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-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "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": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "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-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" + } + }, + "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.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "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" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "grpc": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.24.2.tgz", + "integrity": "sha512-EG3WH6AWMVvAiV15d+lr+K77HJ/KV/3FvMpjKjulXHbTwgDZkhkcWbwhxFAoTdxTkQvy0WFcO3Nog50QBbHZWw==", + "requires": { + "@types/bytebuffer": "^5.0.40", + "lodash.camelcase": "^4.3.0", + "lodash.clone": "^4.5.0", + "nan": "^2.13.2", + "node-pre-gyp": "^0.14.0", + "protobufjs": "^5.0.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "chownr": { + "version": "1.1.3", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": 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.4", + "bundled": 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 + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "ms": { + "version": "2.1.2", + "bundled": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": 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.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true + }, + "npm-packlist": { + "version": "1.4.6", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": 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 + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": 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.7.1", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.7.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "3.1.1", + "bundled": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "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": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.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-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": 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": { + "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" + } + } + } + }, + "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" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, + "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" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "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.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "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.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "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.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "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-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.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" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "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.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "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": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "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": "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 + }, + "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.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-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-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.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-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^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-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "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-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "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-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.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-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-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": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "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 + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", + "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "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" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "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": "3.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "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 + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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 + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "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-parse-even-better-errors": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz", + "integrity": "sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g==", + "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.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", + "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "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.14", + "log4js": "^4.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.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", + "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", + "dev": true, + "requires": { + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.0.3.tgz", + "integrity": "sha512-80iBR8/hLFY2Uw3S2GG6EndWtMCGMJjrCYNwYROWsJFVTjWrRSsLqcA2ye+U3ygW5sjOQo8f+78L8cGUxjC/+A==", + "dev": true, + "requires": { + "jasmine-core": "^3.5.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.3.tgz", + "integrity": "sha512-ci0VrjuCaFj+9d1tYlTE3KIPUCp0rz874zWWU3JgCMqGIyw5ke+BXWFPOAGAqUdCJcrMwneyvp1zFXA74MiPUA==", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "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.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "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" + } + }, + "less": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", + "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==", + "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", + "tslib": "^1.10.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": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "license-webpack-plugin": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz", + "integrity": "sha512-1Xq72fmPbTg5KofXs+yI5L4QqPFjQ6mZxoeI6D7gfiEDOtaEIk6PGrdLaej90bpDqKNHNxlQ/MW4tMAL6xMPJQ==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "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.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "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.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "loglevel": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "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" + } + }, + "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" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.4.tgz", + "integrity": "sha512-hIFoqGq1db0QMiy/Atr/pI1Rs4rDV+ZdGSey2SQyF3KK3u1z4aj9mS5UdNnZkdQpA+H3pGn0J3KlEwsi2x4EqA==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.0", + "cacache": "^15.0.0", + "http-cache-semantics": "^4.0.4", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.1.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "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-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-components-web": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/material-components-web/-/material-components-web-5.1.0.tgz", + "integrity": "sha512-02P8D749kXZBjnTb16ISwucD2TLiw3j7mbjVnAF4+jNlEuNv1cB1qtXSzsavGpATzgoDU0xvzufrfBUqHIaAVA==", + "requires": { + "@material/animation": "^5.1.0", + "@material/auto-init": "^5.1.0", + "@material/base": "^5.1.0", + "@material/button": "^5.1.0", + "@material/card": "^5.1.0", + "@material/checkbox": "^5.1.0", + "@material/chips": "^5.1.0", + "@material/data-table": "^5.1.0", + "@material/density": "^5.1.0", + "@material/dialog": "^5.1.0", + "@material/dom": "^5.1.0", + "@material/drawer": "^5.1.0", + "@material/elevation": "^5.1.0", + "@material/fab": "^5.1.0", + "@material/feature-targeting": "^5.1.0", + "@material/floating-label": "^5.1.0", + "@material/form-field": "^5.1.0", + "@material/icon-button": "^5.1.0", + "@material/image-list": "^5.1.0", + "@material/layout-grid": "^5.1.0", + "@material/line-ripple": "^5.1.0", + "@material/linear-progress": "^5.1.0", + "@material/list": "^5.1.0", + "@material/menu": "^5.1.0", + "@material/menu-surface": "^5.1.0", + "@material/notched-outline": "^5.1.0", + "@material/radio": "^5.1.0", + "@material/ripple": "^5.1.0", + "@material/rtl": "^5.1.0", + "@material/select": "^5.1.0", + "@material/shape": "^5.1.0", + "@material/slider": "^5.1.0", + "@material/snackbar": "^5.1.0", + "@material/switch": "^5.1.0", + "@material/tab": "^5.1.0", + "@material/tab-bar": "^5.1.0", + "@material/tab-indicator": "^5.1.0", + "@material/tab-scroller": "^5.1.0", + "@material/textfield": "^5.1.0", + "@material/theme": "^5.1.0", + "@material/top-app-bar": "^5.1.0", + "@material/touch-target": "^5.1.0", + "@material/typography": "^5.1.0" + } + }, + "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" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "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 + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "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" + } + } + } + }, + "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" + } + } + } + }, + "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 + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "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" + } + } + } + }, + "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": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.2.1.tgz", + "integrity": "sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-pipeline": "^1.2.2", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "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" + } + } + } + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "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" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "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.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "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": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "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.1", + "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": "^1.0.1" + }, + "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.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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 + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.1.tgz", + "integrity": "sha512-95TSDvGwujIhqfSpIiRRLodEF+y6mJMopuZdahoGzqtRDFZXGav46S0p6ngeWaiAkb5R72w6eVARhzej0HvZeQ==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", + "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + } + }, + "npm-registry-fetch": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-8.0.0.tgz", + "integrity": "sha512-975WwLvZjX97y9UWWQ8nAyr7bw02s9xKPHqvEm5T900LQsB1HXb8Gb9ebYtCBLSX+K8gSOrO5KS/9yV/naLZmQ==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^8.0.2", + "minipass": "^3.0.0", + "minipass-fetch": "^1.1.2", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.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" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "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-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "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.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "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" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "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": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, + "ora": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.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-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" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-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": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "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": "11.1.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.1.4.tgz", + "integrity": "sha512-eUGJvSSpWFZKn3z8gig/HgnBmUl6gIWByIIaHzSyEr3tOWX0w8tFEADXtpu8HGv5E0ShCeTP6enRq8iHKCHSvw==", + "dev": true, + "requires": { + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.5", + "@npmcli/promise-spawn": "^1.1.0", + "cacache": "^15.0.0", + "chownr": "^1.1.4", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.1", + "minipass-fetch": "^1.2.1", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^8.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "read-package-json-fast": "^1.1.3", + "rimraf": "^2.7.1", + "semver": "^7.1.3", + "ssri": "^8.0.0", + "tar": "^6.0.1", + "which": "^2.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "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": "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" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "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.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "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" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "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 + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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": "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" + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "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.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.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" + } + } + } + }, + "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.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", + "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 + }, + "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" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "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" + }, + "dependencies": { + "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 + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.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" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "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-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, + "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" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "protobufjs": { + "version": "6.8.9", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.9.tgz", + "integrity": "sha512-j2JlRdUeL/f4Z6x4aU4gj9I2LECglC+5qR2TrWb193Tla1qfdaNQTZ8I27Pt7K0Ajmvjjpft7O3KWTGciz4gpw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.17.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.18.tgz", + "integrity": "sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg==" + } + } + }, + "protractor": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", + "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "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": { + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "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.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "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.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "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": "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" + } + }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "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 + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.0.tgz", + "integrity": "sha512-iINUOYvl1cGEmfoaLjnZXt4bKfT2LJnZZib5N/LLyAphC+Dd11vNP9CNVb38j+SAJpFI1uo8j9frmih53ASy7Q==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "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-package-json": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz", + "integrity": "sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz", + "integrity": "sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "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 + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "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" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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 + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "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.3", + "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.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "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.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "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": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.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.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "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" + } + }, + "rollup": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.1.0.tgz", + "integrity": "sha512-gfE1455AEazVVTJoeQtcOq/U6GSxwoj4XPSWVsuWmgIxj7sBQNLDOSA82PbdMe+cP8ql8fR1jogPFe8Wg8g4SQ==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + } + }, + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "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.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "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==" + }, + "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==" + }, + "sass": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.3.tgz", + "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "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" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "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": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "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.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "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.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "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": { + "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" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "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": { + "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 + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "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": { + "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 + }, + "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 + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "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.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", + "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.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": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "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.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "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.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "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.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "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" + } + }, + "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": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "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.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "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": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "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" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "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" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", + "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", + "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "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=", + "requires": { + "ansi-regex": "^2.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 + }, + "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 + }, + "style-loader": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", + "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.6.4" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylus": { + "version": "0.54.7", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", + "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "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" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.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.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.1.tgz", + "integrity": "sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==", + "dev": true, + "requires": { + "chownr": "^1.1.3", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", + "dev": true + } + } + }, + "terser": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", + "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "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": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + } + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "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": "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 + }, + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "ts-node": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", + "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tslint": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.0.tgz", + "integrity": "sha512-fXjYd/61vU6da04E505OZQGb2VCN2Mq3doeWcOIryuG+eqdmFUXTYVwdhnbEu2k46LNLgUYt9bI5icQze/j0bQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.10.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": 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 + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.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" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "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.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "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.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "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" + }, + "dependencies": { + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "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": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" + }, + "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 + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "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": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "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" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "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.1" + } + }, + "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" + } + }, + "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" + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "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.4", + "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": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "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.6", + "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.3", + "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.4", + "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": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "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.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^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.1", + "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" + } + }, + "readable-stream": { + "version": "2.3.7", + "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.7.1", + "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.7.1", + "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.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "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.1.1", + "bundled": true, + "dev": true, + "optional": 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-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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "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" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "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.42.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", + "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "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.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + }, + "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" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", + "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "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" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "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.1" + } + }, + "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" + } + }, + "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" + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "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.4", + "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": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "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.6", + "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.3", + "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.4", + "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": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "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.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^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.1", + "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" + } + }, + "readable-stream": { + "version": "2.3.7", + "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.7.1", + "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.7.1", + "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.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "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.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "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-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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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" + } + }, + "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" + } + } + } + }, + "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" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "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.4.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.0.tgz", + "integrity": "sha512-GB1kB/LwAWC3CxwcedGhMkxGpNZxSheCe1q+KJP1bakuieAdX/rGHEcf5zsEzhKXpqsGqokgsDoD9dIkr61VDQ==", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.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==" + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.2.tgz", + "integrity": "sha512-V+1zSZMOOKk+uBzKyNIODLQLsx59zSIOaI75J1EMS0iR1qy+KQR3y/pQ3T0vIhvPfDFapGRMsoMvQNEL3okqSA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "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 + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.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": "^11.1.1" + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "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.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + } + } +} diff --git a/hosting/package.json b/hosting/package.json new file mode 100644 index 00000000..5261a3f1 --- /dev/null +++ b/hosting/package.json @@ -0,0 +1,53 @@ +{ + "name": "hibiscus", + "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-mdc/web": "^5.1.1", + "@angular/animations": "~9.1.0", + "@angular/common": "~9.1.0", + "@angular/compiler": "~9.1.0", + "@angular/core": "~9.1.0", + "@angular/forms": "~9.1.0", + "@angular/platform-browser": "~9.1.0", + "@angular/platform-browser-dynamic": "~9.1.0", + "@angular/router": "~9.1.0", + "@material/checkbox": "^5.1.0", + "@material/layout-grid": "^5.1.0", + "angular-google-charts": "^0.1.6", + "firebase": "^7.13.1", + "rxjs": "~6.5.4", + "tslib": "^1.10.0", + "uuid": "^7.0.3", + "zone.js": "~0.10.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.901.0", + "@angular/cli": "~9.1.0", + "@angular/compiler-cli": "~9.1.0", + "@angular/language-service": "~9.1.0", + "@types/node": "^12.11.1", + "@types/jasmine": "~3.5.0", + "@types/jasminewd2": "~2.0.3", + "codelyzer": "^5.1.2", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.4.1", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~2.1.0", + "karma-jasmine": "~3.0.1", + "karma-jasmine-html-reporter": "^1.4.2", + "protractor": "~5.4.3", + "ts-node": "~8.3.0", + "tslint": "~6.1.0", + "typescript": "~3.8.3" + } +} diff --git a/hosting/src/@core/MOCK.ts b/hosting/src/@core/MOCK.ts new file mode 100644 index 00000000..9ab2d898 --- /dev/null +++ b/hosting/src/@core/MOCK.ts @@ -0,0 +1,20 @@ +import {User} from "./firestore-interfaces/user"; + +export const USERS_AGENT: User[] = [ + { + address: '-', + email: 'salvationArmy@gmail.com', + imageUrl: 'salvation_army.png', + name: 'The Salvation Army Children\'s Home', + phone: '-', + roles: ['agency'], + }, + { + address: '-', + email: 'hospitalUmumSarawak@gmail.com', + imageUrl: 'hus.png', + name: 'Hospital Umum Sarawak', + phone: '-', + roles: ['agency'], + } +]; diff --git a/hosting/src/@core/firestore-collections.ts b/hosting/src/@core/firestore-collections.ts new file mode 100644 index 00000000..6264e3df --- /dev/null +++ b/hosting/src/@core/firestore-collections.ts @@ -0,0 +1,9 @@ +export const USERS = 'users'; +export const REQUESTS = 'requests'; +export const REQUESTS__ITEMS = `${REQUESTS}--items`; +export const REQUESTS__CONTRIBS = `${REQUESTS}--contribs`; +export const REQUESTS__MESSAGES = `${REQUESTS}--messages`; +export const __STATS__ = '--stats--'; +export const __STATS__ITEMS = `${__STATS__}--items`; +export const CONTRIBS = 'contribs'; +export const MESSAGES = 'messages'; diff --git a/hosting/src/@core/firestore-interfaces/global.ts b/hosting/src/@core/firestore-interfaces/global.ts new file mode 100644 index 00000000..bad7c9fa --- /dev/null +++ b/hosting/src/@core/firestore-interfaces/global.ts @@ -0,0 +1,6 @@ +import {RequestItem} from './request'; + +export interface Global { + otherItems: string[]; + requests: RequestItem[]; +} diff --git a/hosting/src/@core/firestore-interfaces/messages.ts b/hosting/src/@core/firestore-interfaces/messages.ts new file mode 100644 index 00000000..0cd5d019 --- /dev/null +++ b/hosting/src/@core/firestore-interfaces/messages.ts @@ -0,0 +1,15 @@ +import * as firebase from 'firebase'; +import {UserBase} from './user'; + +export type MessageStatus = 'unread' | 'read'; + +export interface MessageDocument { + id?: string; + subject: string; + content: string; + sender: UserBase; + requestId: string; + status: MessageStatus; + dateCrt: firebase.firestore.Timestamp; + receiverId?: string; +} diff --git a/hosting/src/@core/firestore-interfaces/request.ts b/hosting/src/@core/firestore-interfaces/request.ts new file mode 100644 index 00000000..497745d7 --- /dev/null +++ b/hosting/src/@core/firestore-interfaces/request.ts @@ -0,0 +1,84 @@ +import * as firebase from 'firebase/app'; +import {User, UserBase} from './user'; + +export interface ContributionItem { + name: string; + qty: number; +} + +export interface ContributionParams { + items: { + name: string; + qty: number; + }[]; + status?: ContributionStatus; +} + +export type ContributionStatus = 'waiting' | 'transporting' | 'received'; + +export interface ContributionDetails { + sender: UserBase; + contributionItems: ContributionItem[]; + remarks: string; + contributionItemsTransporting?: { + name: string; + qty: number; + }[]; + contributionItemsReceived?: { + name: string; + qty: number; + }[]; + senderId?: string; + dateCrt?: firebase.firestore.Timestamp; + status?: ContributionStatus; + requestId?: string; + receiverId?: string; + id?: string; +} + +export interface ContributionAcceptedParams { + itemReceived: ContributionItem[]; +} + +export interface RequestItem { + name: string; + qtyNeed: number; + qtyFilled: number; +} + +export type RequestStatus = 'active'|'complete'; + +export interface Request { + user: string; + status?: RequestStatus; + dateUpd?: firebase.firestore.Timestamp; + dateCrt?: firebase.firestore.Timestamp; + active?: string[]; + complete?: string[]; + userInfo?: { + name: string; + email: string; + }; +} + +export interface RequestObject extends Request { + id?: string; + requestItems?: RequestItem[]; + userInfo?: User; +} + +export const DEFAULT_REQUEST_ITEMS = [ +'Isolation Gowns', 'Level 2 Gowns', 'Level 3 Gowns', 'Level 4 Gowns', 'Coveralls (Full suit, with or without hood)', +'KN95 Masks', 'N95 Masks', 'Respirator', 'Respirator Filters', 'Disposable Filtering Face Pieces', 'Exam Mask Paediatric', +'Surgical Mask', 'Exam Mask (Ear loop)', 'FFP2 Masks', 'Procedure Masks', 'Surgical Gloves', 'Medical Examination Gloves - Rubber Latex', +'Nitrile Gloves (exam)', +'Viral Swabs', 'Disinfectants', 'Disinfectant Wipes', 'Hand Sanitizer', 'Hand Sanitizer Foam', +'Head Hood Covers (Balaclava)', 'Knee-high Shoe Covers (Impervious)', +'Safety/Protective Goggles', 'FIT Testing Supplies', +'Thermometer', 'Ventilators', 'Zip Lock Bags', 'Blanket']; + +export interface RequestStats { + itemsByUsers: string[]; + active: number; + complete: number; +} diff --git a/hosting/src/@core/firestore-interfaces/user.ts b/hosting/src/@core/firestore-interfaces/user.ts new file mode 100644 index 00000000..e525e0d1 --- /dev/null +++ b/hosting/src/@core/firestore-interfaces/user.ts @@ -0,0 +1,22 @@ +export interface UserBase { + name: string; + email: string; + phone: string; +} + +export type UserRoles = 'admin' | 'agency'; + +export interface User extends UserBase { + address: string; + userId?: string; + roles?: UserRoles[]; + imageUrl?: string; + verifiedByAdmin?: boolean; + rejectedByAdmin?: boolean; + _recentNeededItems?: string[]; +} + +export interface UserStats { + agencies?: number; + pendingMembers?: number; +} diff --git a/hosting/src/@core/leaveMessage.ts b/hosting/src/@core/leaveMessage.ts new file mode 100644 index 00000000..cc8d6ff8 --- /dev/null +++ b/hosting/src/@core/leaveMessage.ts @@ -0,0 +1,51 @@ +import {UserBase} from './firestore-interfaces/user'; + +import * as firebase from 'firebase/app'; +import Timestamp = firebase.firestore.Timestamp; +import {MessageDocument} from './firestore-interfaces/messages'; + +/** + * the user base should be automatically filled if user is not guest + */ +export class LeaveMessageBuilder { + private _requestId: string; + private _message: MessageDocument; + + /** + * + * @param requestId + * @param user string|UserBase, if string it must be a valid uid of the user + * @param message + */ + constructor(requestId: string, user: UserBase, subject: string, message: string) { + this.requestId = requestId; + + const newMessage: MessageDocument = { + sender: user, + requestId, + subject, + content: message, + dateCrt: Timestamp.now(), + status: 'unread' + }; + + this.requestId = requestId; + this.message = newMessage; + } + + get message(): MessageDocument { + return this._message; + } + + set message(value: MessageDocument) { + this._message = value; + } + + get requestId(): string { + return this._requestId; + } + + set requestId(value: string) { + this._requestId = value; + } +} diff --git a/hosting/src/@core/requestContribution.ts b/hosting/src/@core/requestContribution.ts new file mode 100644 index 00000000..5d0deb6e --- /dev/null +++ b/hosting/src/@core/requestContribution.ts @@ -0,0 +1,65 @@ +import {Request, RequestItem, RequestObject} from './firestore-interfaces/request'; + +export class RequestContribution { + _request: Request; + _requestItems: RequestItem[] = []; + _requestObject: RequestObject; + + constructor(params: RequestObject) { + this._requestObject = params; + this._requestItems = params.requestItems || []; + + this._request = params; + } + + need(name: string, qtyNeed: number = 0): void { + const index = this._requestItems.findIndex(value => { + return value.name === name; + }); + if (index >= 0) { + this._requestItems[index].qtyNeed = qtyNeed; + } else { + this._requestItems.push({ + name, + qtyNeed, + qtyFilled: 0 + }); + } + } + + deleteNeed(name: string): void { + const item = this._requestItems.find(value => { + return value.name === name; + }); + const index = this._requestItems.indexOf(item); + if (index >= 0) { + this._requestItems.splice(index, 1); + } + } + + getNeed(name: string): RequestItem { + const item = this._requestItems.find(value => { + return value.name === name; + }); + return item as RequestItem; + } + + get id(): string { + return this._requestObject.id; + } + + get request(): Request { + const _request = this._request; + return { + user: _request.user, + userInfo: { + name: '', + email: '' + } + }; + } + + get requestItems(): RequestItem[] { + return this._requestItems; + } +} diff --git a/hosting/src/app/@backend/admin-contrib.service.spec.ts b/hosting/src/app/@backend/admin-contrib.service.spec.ts new file mode 100644 index 00000000..0fdff3b3 --- /dev/null +++ b/hosting/src/app/@backend/admin-contrib.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AdminContribService } from './admin-contrib.service'; + +describe('AdminContribService', () => { + let service: AdminContribService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AdminContribService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/@backend/admin-contrib.service.ts b/hosting/src/app/@backend/admin-contrib.service.ts new file mode 100644 index 00000000..6762cc14 --- /dev/null +++ b/hosting/src/app/@backend/admin-contrib.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class AdminContribService { + + constructor() { } +} diff --git a/hosting/src/app/@backend/admin-request.service.spec.ts b/hosting/src/app/@backend/admin-request.service.spec.ts new file mode 100644 index 00000000..9d3e29ac --- /dev/null +++ b/hosting/src/app/@backend/admin-request.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AdminRequestService } from './admin-request.service'; + +describe('AdminRequestService', () => { + let service: AdminRequestService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AdminRequestService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/@backend/admin-request.service.ts b/hosting/src/app/@backend/admin-request.service.ts new file mode 100644 index 00000000..41954fe9 --- /dev/null +++ b/hosting/src/app/@backend/admin-request.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class AdminRequestService { + + constructor() { } +} diff --git a/hosting/src/app/@backend/admin-user.service.spec.ts b/hosting/src/app/@backend/admin-user.service.spec.ts new file mode 100644 index 00000000..c7243a29 --- /dev/null +++ b/hosting/src/app/@backend/admin-user.service.spec.ts @@ -0,0 +1,123 @@ +import { TestBed } from '@angular/core/testing'; + +import { AdminUserService } from './admin-user.service'; +import {UserAccount, UserService} from './user.service'; +import {AuthService} from '../auth/auth.service'; +import {User} from '../../@core/firestore-interfaces/user'; + +describe('AdminUserService', () => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000; + let service: AdminUserService; + let userService: UserService; + let authService: AuthService; + + beforeEach(async () => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AdminUserService); + userService = TestBed.inject(UserService); + authService = TestBed.inject(AuthService); + + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + + it('getAllUser()', async () => { + const users = await service.getAllUser(); + console.info(users); + expect(users.length).toBeGreaterThanOrEqual(2); + }); + + it('delegateAdminByEmail()', async () => { + const delegated = await service.delegateAdminByEmail('chan.tw97@gmail.com'); + expect(delegated).toBeTrue(); + }); + + it('chan.tw97@gmail.com is admin', async () => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + const userAccount: UserAccount = { + email: 'chan.tw97@gmail.com', + password: 'theinternet' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + const isAdmin = await userService.iamAdmin(); + expect(isAdmin).toBeTrue(); + }); + + it('getAllAgency()', async () => { + const agencies: User[] = await service.getAllAgency(); + expect(agencies.length).toBeGreaterThanOrEqual(2); + }); + + it('should get all unverified agencies', async () => { + const agencies = await service.getUnverifiedAgencies(); + expect(agencies.length).toBeGreaterThanOrEqual(3); + }); + + it('create user', async () => { + // login as admin + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + + const email = 'unsolvedrubiks1908@gmail.com'; + try { + await service.createAgency(email, { + address: '-', + phone: '-', + name: 'Danish', + email, + }); + } catch (error) { + const code = error.code; + const message = error.message; + const details = error.details; + console.info(code); + console.info(message); + console.info(details); + } + expect().nothing(); + }); + + it('verify account', async () => { + const email = 'unsolvedrubiks1908@gmail.com'; + const userId = await userService._findUserIdByEmail(email); + const verified = await service.verifyUser(userId); + expect(verified).toBeTrue(); + }); + + it('reject unverified agency', async () => { + try { + const userId = 'fvjZcb76tRWkXWTRkq61E6CR2N42'; + await service.rejectUserApplication(userId); + } catch (e) { + console.error(e); + } + expect().nothing(); + }); + + it('pendingMemberCount', () => { + service.pendingMemberCount.subscribe(value => { + console.info(value); + }); + expect().nothing(); + }); + + it('delete user', async () => { + try { + await service.deleteUser('4GnCbzKqp9XSAz4mj7O7qo6ywai1'); + } catch (e) { + console.error(e); + } + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/admin-user.service.ts b/hosting/src/app/@backend/admin-user.service.ts new file mode 100644 index 00000000..25e136cc --- /dev/null +++ b/hosting/src/app/@backend/admin-user.service.ts @@ -0,0 +1,204 @@ +import {Injectable} from '@angular/core'; +import {User, UserRoles, UserStats} from '../../@core/firestore-interfaces/user'; +import {__STATS__, USERS} from '../../@core/firestore-collections'; +import {RegisterUserResult, UserAccount, UserService} from './user.service'; +import {FirebaseService} from '../firebase.service'; + +import * as firebase from 'firebase/app'; +import FieldValue = firebase.firestore.FieldValue; +import {Observable} from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class AdminUserService { + + constructor( + private firebaseService: FirebaseService, + private userService: UserService + ) { + } + + /** + * @todo unsubscribe + */ + get pendingMemberCount() { + return new Observable(subscriber => { + this.firebaseService.firestore().collection(USERS).doc(__STATS__).onSnapshot(snapshot => { + const data = snapshot.data() as UserStats; + const pendingMember = data.pendingMembers; + subscriber.next(pendingMember); + }); + }); + } + + async getUserByEmail(userEmail: string): Promise { + const userId = await this.userService._findUserIdByEmail(userEmail); + return this.getUserById(userId); + } + + getUserById(userId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(USERS).doc(userId).get().then(snapshot => { + resolve(snapshot.data() as User); + }).catch(reason => { + reject(reason); + }); + }); + } + + createAdmin(email: string, user: User): Promise { + user.roles = ['admin']; + return this._createUser(email, user); + } + + createAgency(email: string, user: User): Promise { + user.roles = ['agency']; + return this._createUser(email, user); + } + + private _createUser(email: string, user: User): Promise { + user.verifiedByAdmin = true; + user.rejectedByAdmin = false; + return new Promise(async (resolve, reject) => { + try { + // create user through callable functions + const registerUser = this.firebaseService.functions().httpsCallable('registerUser'); + const data = { + email + }; + console.info(data); + const httpsCallableResult = await registerUser(data); + const userId = httpsCallableResult.data; + + // save in firestore + user.userId = userId; + await this.firebaseService.firestore().collection(USERS) + .doc(user.userId) + .set(user); + + resolve(); + } catch (e) { + reject(e); + } + }); + } + + getUnverifiedAgencies(): Promise { + const findRole: UserRoles = 'agency'; + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(USERS) + .where('roles', 'array-contains', findRole) + .where('verifiedByAdmin', '==', false) + .where('rejectedByAdmin', '==', false) + .get() + .then(value => { + const unverifiedAgencies = []; + value.docs.forEach(doc => { + unverifiedAgencies.push( doc.data()); + }); + resolve(unverifiedAgencies); + }) + .catch(e => { + reject(e); + }); + }); + } + + /** + * use this to verify user, updates 'verifiedByAdmin' to true + * @param userId + */ + verifyUser(userId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(USERS).doc(userId).set( {verifiedByAdmin: true}, {merge: true}) + .then(value => { + resolve(true); + }) + .catch(reason => { + reject(reason); + }); + }); + } + + rejectUserApplication(userId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(USERS).doc(userId).set( {rejectedByAdmin: true}, {merge: true}) + .then(value => { + resolve(); + }) + .catch(reason => { + reject(reason); + }); + }); + } + + async delegateAdminByEmail(email: string): Promise { + const userId = await this.userService._findUserIdByEmail(email); + return this.delegateAdmin(userId); + } + + delegateAdmin(userId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(USERS).doc(userId).set({roles: FieldValue.arrayUnion( 'admin')}, {merge: true}) + .then(value => { + resolve(true); + }) + .catch(reason => { + reject(reason); + }); + }); + } + + /** + * verified & unverified agencies + */ + getAllAgency(): Promise { + const findRole: UserRoles = 'agency'; + return new Promise(resolve => { + const agencies = []; + this.firebaseService.firestore().collection(USERS) + .where('roles', 'array-contains', findRole) + .get() + .then(value => { + value.docs.forEach(doc => { + agencies.push( doc.data()); + }); + resolve(agencies); + }); + }); + } + + /** + * get all types of users: admin, agency + */ + getAllUser(): Promise { + const users: User[] = []; + return new Promise(resolve => { + this.firebaseService.firestore().collection(USERS) + .get().then(value => { + value.docs.forEach(doc => { + if (doc.id !== __STATS__) { + users.push( doc.data()); + } + }); + resolve(users); + }); + }); + } + + deleteUser(userId: string): Promise { + return new Promise(async (resolve, reject) => { + const registerUser = this.firebaseService.functions().httpsCallable('deleteUser'); + const data = { + userId + }; + try { + await registerUser(data); + resolve(); + } catch (e) { + reject(e); + } + }); + } +} diff --git a/hosting/src/app/@backend/backend.module.ts b/hosting/src/app/@backend/backend.module.ts new file mode 100644 index 00000000..ab9d9831 --- /dev/null +++ b/hosting/src/app/@backend/backend.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + + + +@NgModule({ + declarations: [], + imports: [ + CommonModule + ] +}) +export class BackendModule { } diff --git a/hosting/src/app/@backend/contribs.service.spec.ts b/hosting/src/app/@backend/contribs.service.spec.ts new file mode 100644 index 00000000..0da78657 --- /dev/null +++ b/hosting/src/app/@backend/contribs.service.spec.ts @@ -0,0 +1,32 @@ +import { TestBed } from '@angular/core/testing'; + +import { ContribsService } from './contribs.service'; + +describe('ContribsService', () => { + let service: ContribsService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ContribsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('contributeToRequest', async () => { + const requestId = '6xy134uFCocoHmU5DYJh'; + await service.contributeToRequest(requestId, { + remarks: 'Heya', + sender: { + name: 'Danish', + email: 'mdanish1908@gmail.com', + phone: '-' + }, + contributionItems: [ + {name: 'Blanket', qty:90} + ] + }); + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/contribs.service.ts b/hosting/src/app/@backend/contribs.service.ts new file mode 100644 index 00000000..a67ce8f8 --- /dev/null +++ b/hosting/src/app/@backend/contribs.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import {ContributionDetails} from '../../@core/firestore-interfaces/request'; +import {CONTRIBS} from '../../@core/firestore-collections'; +import {FirebaseService} from '../firebase.service'; + +import * as firebase from 'firebase/app'; +import Timestamp = firebase.firestore.Timestamp; + +@Injectable({ + providedIn: 'root' +}) +export class ContribsService { + + constructor( + private firebaseService: FirebaseService, + ) { + } + + contributeToRequest(requestId: string, contributionDetails: ContributionDetails): Promise { + return new Promise(async (resolve, reject) => { + try { + contributionDetails.dateCrt = Timestamp.now(); + contributionDetails.status = 'waiting'; + contributionDetails.requestId = requestId; + await this.firebaseService.firestore() + .collection(CONTRIBS) + .add(contributionDetails); + resolve(); + } catch (e) { + reject(e); + } + }); + } +} diff --git a/hosting/src/app/@backend/message.service.spec.ts b/hosting/src/app/@backend/message.service.spec.ts new file mode 100644 index 00000000..be16ad61 --- /dev/null +++ b/hosting/src/app/@backend/message.service.spec.ts @@ -0,0 +1,47 @@ +import { TestBed } from '@angular/core/testing'; + +import { MessageService } from './message.service'; +import {LeaveMessageBuilder} from '../../@core/leaveMessage'; +import {AuthService} from '../auth/auth.service'; +import {UserAccount, UserService} from './user.service'; +import {UserBase} from '../../@core/firestore-interfaces/user'; + +describe('MessageService', () => { + let service: MessageService; + let userService: UserService; + let authService: AuthService; + + beforeEach(async () => { + TestBed.configureTestingModule({}); + service = TestBed.inject(MessageService); + userService = TestBed.inject(UserService); + authService = TestBed.inject(AuthService); + + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('sendMessage', async () => { + const userInfo = await userService.currentUserInfo(); + const user: UserBase = { + name: userInfo.name, + phone: userInfo.phone, + email: userInfo.email + }; + const lmb = new LeaveMessageBuilder( + 'EHClufIkf0p8n7iiOYs5', + user, + 'Hey!', + 'How you doin?' + ); + await service.sendMessage(lmb); + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/message.service.ts b/hosting/src/app/@backend/message.service.ts new file mode 100644 index 00000000..d4f8fb35 --- /dev/null +++ b/hosting/src/app/@backend/message.service.ts @@ -0,0 +1,118 @@ +import { Injectable } from '@angular/core'; +import {FirebaseService} from '../firebase.service'; +import {UserService} from './user.service'; +import {RequestService} from './request.service'; +import {Observable} from 'rxjs'; +import {CONTRIBS, MESSAGES, REQUESTS, REQUESTS__MESSAGES} from '../../@core/firestore-collections'; +import {ContributionStatus} from '../../@core/firestore-interfaces/request'; +import {LeaveMessageBuilder} from '../../@core/leaveMessage'; +import {MessageDocument, MessageStatus} from '../../@core/firestore-interfaces/messages'; + +@Injectable({ + providedIn: 'root' +}) +export class MessageService { + + constructor( + private firebaseService: FirebaseService, + private userService: UserService, + private requestService: RequestService + ) { + } + + getMessages(): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUser(); + const userId = user.uid; + + const messages: MessageDocument[] = []; + + this.firebaseService.firestore() + .collection(MESSAGES) + .where('receiverId', '==', userId) + .get() + .then(snaps => { + snaps.docs.forEach(doc => { + const messageData = doc.data() as MessageDocument; + messageData.id = doc.id; + messages.push(messageData); + }); + resolve(messages); + }) + .catch(e => { + reject(e); + }); + }); + } + + /** + * send message, userBase must be provided. Can get from user service if logged in + * or manually enter + * + * @example + * + * const userInfo = await userService.currentUserInfo(); + * const user: UserBase = { + * name: userInfo.name, + * phone: userInfo.phone, + * email: userInfo.email + * }; + * const leaveMessage = new LeaveMessageBuilder( + * '', + * user, + * 'Hey!', + * 'How you doin?' + * ); + * await service.sendMessage(leaveMessage); + * + * @param leaveMessageBuilder + */ + sendMessage( + leaveMessageBuilder: LeaveMessageBuilder + ): Promise { + return new Promise((resolve, reject) => { + const ref = this.firebaseService.firestore() + .collection(MESSAGES); + ref.add(leaveMessageBuilder.message).then(() => { + resolve(); + }).catch(e => { + reject(e); + }); + }); + } + + /** + * returns observable number of unread messages by this user + * @description get + */ + async unreadMessagesCount(): Promise> { + const user = await this.userService.currentUser(); + const userId = user.uid; + + return new Observable(subscriber => { + subscriber.next(0); + + this.firebaseService.firestore().collection(MESSAGES) + .where('receiverId', '==', userId) + .where('status', '==', 'unread') + .orderBy('dateCrt', 'asc') + .onSnapshot(snapshot => { + subscriber.next(snapshot.docs.length); + }); + }); + } + + markAsRead(id: string): Promise { + return this.firebaseService.firestore() + .collection(MESSAGES) + .doc(id) + .update({status: 'read'}) + .then(() => { + return; + }) + .catch(e => { + console.error(e); + return; + }); + } +} diff --git a/hosting/src/app/@backend/request.service.spec.ts b/hosting/src/app/@backend/request.service.spec.ts new file mode 100644 index 00000000..dd022ee7 --- /dev/null +++ b/hosting/src/app/@backend/request.service.spec.ts @@ -0,0 +1,38 @@ +import { TestBed } from '@angular/core/testing'; + +import { RequestService } from './request.service'; + +import {UserAccount, UserService} from './user.service'; +import {AuthService} from '../auth/auth.service'; +import {LeaveMessageBuilder} from '../../@core/leaveMessage'; +import {UserBase} from '../../@core/firestore-interfaces/user'; + +describe('RequestService', () => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000; + let service: RequestService; + let userService: UserService; + let authService: AuthService; + + beforeEach(async () => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RequestService); + authService = TestBed.inject(AuthService); + userService = TestBed.inject(UserService); + + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('getRequests()', async () => { + const requests = await service.getRequests(); + console.info(requests); + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/request.service.ts b/hosting/src/app/@backend/request.service.ts new file mode 100644 index 00000000..7dad02d6 --- /dev/null +++ b/hosting/src/app/@backend/request.service.ts @@ -0,0 +1,173 @@ +import {Injectable} from '@angular/core'; +import { + ContributionDetails, Request, + RequestItem, + RequestObject, + RequestStatus +} from '../../@core/firestore-interfaces/request'; +import {FirebaseService} from '../firebase.service'; +import {UserService} from './user.service'; +import {__STATS__, REQUESTS, REQUESTS__ITEMS, REQUESTS__MESSAGES} from '../../@core/firestore-collections'; + +import * as firebase from 'firebase/app'; +import QuerySnapshot = firebase.firestore.QuerySnapshot; +import DocumentData = firebase.firestore.DocumentData; +import {LeaveMessageBuilder} from '../../@core/leaveMessage'; +import {User} from '../../@core/firestore-interfaces/user'; + +@Injectable({ + providedIn: 'root' +}) +export class RequestService { + + constructor( + private firebaseService: FirebaseService, + private userService: UserService, + ) { + } + + topIncompleteRequests(count: number): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(REQUESTS) + .where('status', '==', 'active') + .orderBy('dateCrt', 'desc') + .limit(count).get().then(querySnapshot => { + this._queryToRequestObject(querySnapshot).then(requestObjects => { + requestObjects.sort((a, b) => { + return a.dateCrt < b.dateCrt ? 1 : 0; + }); + resolve(requestObjects); + }); + }).catch(e => { + reject(e); + }); + }); + } + + /** + * adds message to a request + * + * @param leaveMessageBuilder + */ + leaveMessage(leaveMessageBuilder: LeaveMessageBuilder): Promise { + return new Promise((resolve, reject) => { + const ref = this.firebaseService.firestore() + .collection(REQUESTS) + .doc(leaveMessageBuilder.requestId) + .collection(REQUESTS__MESSAGES); + ref.add(leaveMessageBuilder.message).then(() => { + resolve(); + }).catch(e => { + reject(e); + }); + }); + } + + /** + * get all request + */ + getRequests(): Promise { + // TODO: pagination + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(REQUESTS) + .orderBy('dateCrt', 'asc') + .get() + .then((querySnapshot) => { + this._queryToRequestObject(querySnapshot) + .then(requestObjects => { + resolve(requestObjects); + }); + }) + .catch(reason => { + reject(reason); + }); + }); + } + + /** + * get specific request + * + * @param requestId + */ + getRequest(requestId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(REQUESTS) + .doc(requestId) + .get().then(async doc => { + const data = doc.data() as Request; + const id = doc.id; + const requestItems: RequestItem[] = await this._getRequestItems(id); + const userInfo: User = await this.userService._getUserInfo(data.user); + const requestObject: RequestObject = { + id, + requestItems, + status: data.status, + user: data.user, + dateCrt: data.dateCrt, + userInfo + }; + resolve(requestObject); + }).catch(e => { + reject(e); + }); + }); + } + + _getRequestsByUserId(userId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(REQUESTS) + .where('user', '==', userId) + .get().then(async (querySnapshot) => { + const requestObjects = await this._queryToRequestObject(querySnapshot); + resolve(requestObjects); + }).catch(reason => { + reject(reason); + }); + }); + } + + async _queryToRequestObject(querySnapshot: QuerySnapshot): Promise { + if (querySnapshot.size > 0) { + const requestObjects: RequestObject[] = []; + for (const doc of querySnapshot.docs) { + const id = doc.id; + if (id !== __STATS__) { + const data = doc.data() as Request; + const requestItems: RequestItem[] = await this._getRequestItems(id); + const requestObject: RequestObject = { + id, + requestItems, + status: data.status, + user: data.user, + dateCrt: data.dateCrt, + userInfo: null + }; + + // requestObject.userInfo = data.userInfo; + if (!requestObject.userInfo) { + const userInfo: User = await this.userService._getUserInfo(data.user); + requestObject.userInfo = userInfo; + } + requestObjects.push(requestObject); + } + } + return requestObjects; + } else { + return []; + } + } + + _getRequestItems(requestId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(REQUESTS).doc(requestId).collection(REQUESTS__ITEMS).get().then(querySnapshot => { + const items: RequestItem[] = []; + querySnapshot.docs.forEach(doc => { + items.push(doc.data() as RequestItem); + }); + resolve(items); + }).catch(reason => { + reject(reason); + }); + }); + } +} diff --git a/hosting/src/app/@backend/stats.service.spec.ts b/hosting/src/app/@backend/stats.service.spec.ts new file mode 100644 index 00000000..ae87b9f1 --- /dev/null +++ b/hosting/src/app/@backend/stats.service.spec.ts @@ -0,0 +1,40 @@ +import { TestBed } from '@angular/core/testing'; + +import { StatsService } from './stats.service'; +import {GoogleChartsModule} from 'angular-google-charts'; + +describe('StatsService', () => { + let service: StatsService; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + GoogleChartsModule + ] + }); + service = TestBed.inject(StatsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('itemsSnapshot', () => { + service.requestItemsSnapshot.subscribe(value => { + console.info(value); + }); + expect().nothing(); + }); + + it('getAgenciesNeedItem', async () => { + const agencies = await service.getAgenciesNeedItem('Blanket'); + console.info(agencies); + expect().nothing(); + }); + + it('mostWantedItems', async() => { + const items = await service.mostWantedItems(); + console.info(items); + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/stats.service.ts b/hosting/src/app/@backend/stats.service.ts new file mode 100644 index 00000000..3d76baa0 --- /dev/null +++ b/hosting/src/app/@backend/stats.service.ts @@ -0,0 +1,120 @@ +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {RequestItem} from '../../@core/firestore-interfaces/request'; +import {FirebaseService} from '../firebase.service'; +import {__STATS__, __STATS__ITEMS, REQUESTS, REQUESTS__ITEMS, USERS} from '../../@core/firestore-collections'; + +import {RequestService} from './request.service'; +import {User, UserStats} from '../../@core/firestore-interfaces/user'; + +export interface AgenciesNeedItemResult { + id: string; + name: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class StatsService { + + constructor( + private firebaseService: FirebaseService, + private requestService: RequestService + ) { + } + + mostWantedItems(limit = 5): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore() + .collection(REQUESTS).doc(__STATS__) + .collection(__STATS__ITEMS) + .orderBy('qtyNeed', 'desc') + .limit(limit) + .get() + .then(snapshot => { + const items = []; + const docs = snapshot.docs; + docs.forEach(doc => { + items.push(doc.data() as RequestItem); + }); + resolve(items); + }) + .catch(e => { + reject(e); + }); + }); + } + + get agencyJoined(): Observable { + return new Observable(subscriber => { + this.firebaseService.firestore().collection(USERS).doc(__STATS__) + .onSnapshot(snapshot => { + const data = snapshot.data() as UserStats; + subscriber.next(data.agencies); + }); + }); + } + + get completeRequest(): Observable { + return new Observable(subscriber => { + this.firebaseService.firestore().collection(REQUESTS).doc(__STATS__) + .onSnapshot(snapshot => { + const data = snapshot.data(); + subscriber.next(data.complete); + }); + }); + } + + get activeRequest(): Observable { + return new Observable(subscriber => { + this.firebaseService.firestore().collection(REQUESTS).doc(__STATS__) + .onSnapshot(snapshot => { + const data = snapshot.data(); + subscriber.next(data.active); + }); + }); + } + + /** + * real-time data of overall request items + * + * @todo unsubscribe() on component destroy to avoid memory leaks + */ + get requestItemsSnapshot(): Observable { + return new Observable(subscriber => { + this.firebaseService.firestore().collection(REQUESTS).doc(__STATS__) + .collection(__STATS__ITEMS).onSnapshot(snapshot => { + const requestItems: RequestItem[] = []; + + snapshot.docs.forEach(doc => { + requestItems.push(doc.data() as RequestItem); + }); + + subscriber.next(requestItems); + }); + }); + } + + getAgenciesNeedItem(itemName: string): Promise { + const agencies: AgenciesNeedItemResult[] = []; + return this.firebaseService.firestore() + .collection(USERS) + .where(`_recentNeededItems.${itemName}`, '>', 0) + .get() + .then(snapshot => { + const docs = snapshot.docs; + docs.forEach(doc => { + const data = doc.data() as User; + const agencyResult: AgenciesNeedItemResult = { + id: doc.id, + name: data.name + }; + agencies.push(agencyResult); + }); + return agencies; + }).catch(e => { + console.error(e); + return agencies; + }); + } +} diff --git a/hosting/src/app/@backend/user-contribs.service.spec.ts b/hosting/src/app/@backend/user-contribs.service.spec.ts new file mode 100644 index 00000000..8c4a22f0 --- /dev/null +++ b/hosting/src/app/@backend/user-contribs.service.spec.ts @@ -0,0 +1,57 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserContributionService } from './user-contribution.service'; +import {AuthService} from '../auth/auth.service'; +import {UserAccount} from './user.service'; + +describe('UserContribsService', () => { + let service: UserContributionService; + let authService: AuthService; + + beforeEach(async () => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserContributionService); + authService = TestBed.inject(AuthService); + + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('waitingContributions', async () => { + const contribs = await service.waitingContributions; + console.info(contribs); + expect().nothing(); + }); + + it('receivedContributions', async () => { + const contribs = await service.receivedContributions; + console.info(contribs); + expect().nothing(); + }); + + it('receiveContribution', async () => { + const contribId = '7XP6UpbwVI9AtSoqJRkU'; + await service.receiveContribution(contribId, { + items: [ + { + name: 'Blanket', + qty: 10 + } + ] + }); + expect().nothing(); + }); + + it('getContributionsByRequestId', async () => { + const contribs = await service.getContributionsByRequestId('EHClufIkf0p8n7iiOYs5'); + console.info(contribs[0].sender); + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/user-contribution.service.ts b/hosting/src/app/@backend/user-contribution.service.ts new file mode 100644 index 00000000..4bc5f54a --- /dev/null +++ b/hosting/src/app/@backend/user-contribution.service.ts @@ -0,0 +1,189 @@ +import { Injectable } from '@angular/core'; +import {FirebaseService} from '../firebase.service'; +import {UserService} from './user.service'; +import {RequestService} from './request.service'; +import {CONTRIBS} from '../../@core/firestore-collections'; +import {ContributionDetails, ContributionParams, ContributionStatus} from '../../@core/firestore-interfaces/request'; + +import * as firebase from 'firebase/app'; +import Timestamp = firebase.firestore.Timestamp; + +@Injectable({ + providedIn: 'root' +}) +export class UserContributionService { + + constructor( + private firebaseService: FirebaseService, + private userService: UserService, + private requestService: RequestService + ) { + } + + getContributionsByRequestId(requestId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore() + .collection(CONTRIBS) + .where('requestId', '==', requestId) + .get() + .then(snaps => { + const contribs: ContributionDetails[] = []; + snaps.forEach(doc => { + contribs.push(doc.data() as ContributionDetails); + }); + resolve(contribs); + }) + .catch(e => { + reject(e); + }); + }); + } + + /** + * get current user's waiting contributions + */ + get waitingContributions(): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUser(); + const userId = user.uid; + + this.firebaseService.firestore() + .collection(CONTRIBS) + .where('receiverId', '==', userId) + .where('status', '==', 'waiting') + .get() + .then(snapshot => { + const items: ContributionDetails[] = []; + snapshot.docs.forEach(doc => { + const data = doc.data() as ContributionDetails; + data.id = doc.id; + items.push(data); + }); + resolve(items); + }).catch(e => { + reject(e); + }); + }); + } + + /** + * @description + * get() + */ + get transportingContributions(): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUser(); + const userId = user.uid; + + this.firebaseService.firestore() + .collection(CONTRIBS) + .where('receiverId', '==', userId) + .where('status', '==', 'transporting') + .get() + .then(snapshot => { + const items: ContributionDetails[] = []; + snapshot.docs.forEach(doc => { + const data = doc.data() as ContributionDetails; + data.id = doc.id; + items.push(data); + }); + resolve(items); + }).catch(e => { + reject(e); + }); + }); + } + + /** + * @description + * get() + */ + get receivedContributions(): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUser(); + const userId = user.uid; + + this.firebaseService.firestore() + .collection(CONTRIBS) + .where('receiverId', '==', userId) + .where('status', '==', 'received') + .get() + .then(snapshot => { + const items: ContributionDetails[] = []; + snapshot.docs.forEach(doc => { + const data = doc.data() as ContributionDetails; + data.id = doc.id; + items.push(data); + }); + resolve(items); + }).catch(e => { + reject(e); + }); + }); + } + + /** + * @description + * get() + */ + get myContributions(): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUser(); + const userEmail = user.email; + + this.firebaseService.firestore() + .collection(CONTRIBS) + .where('sender.email', '==', userEmail) + .get() + .then(snapshot => { + const items: ContributionDetails[] = []; + snapshot.docs.forEach(doc => { + const data = doc.data() as ContributionDetails; + data.id = doc.id; + items.push(data); + }); + resolve(items); + }).catch(e => { + reject(e); + }); + }); + } + + transportContribution(contribId: string, contributionParams: ContributionParams) { + return new Promise((resolve, reject) => { + this.firebaseService.firestore() + .collection(CONTRIBS) + .doc(contribId) + .update({ + contributionItemsTransporting: contributionParams.items, + dateTransport: Timestamp.now(), + status: 'transporting' + }) + .then(() => { + resolve(); + }) + .catch(e => { + reject(e); + }); + }); + } + + receiveContribution(contribId: string, contributionParams: ContributionParams) { + return new Promise((resolve, reject) => { + this.firebaseService.firestore() + .collection(CONTRIBS) + .doc(contribId) + .update({ + contributionItemsReceived: contributionParams.items, + dateRcvd: Timestamp.now(), + status: 'received' + }) + .then(() => { + resolve(); + }) + .catch(e => { + reject(e); + }); + }); + } +} diff --git a/hosting/src/app/@backend/user-request.service.spec.ts b/hosting/src/app/@backend/user-request.service.spec.ts new file mode 100644 index 00000000..c177948e --- /dev/null +++ b/hosting/src/app/@backend/user-request.service.spec.ts @@ -0,0 +1,111 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserRequestService } from './user-request.service'; +import {UserAccount, UserService} from './user.service'; +import {AuthService} from '../auth/auth.service'; +import {RequestService} from './request.service'; +import {RequestContribution} from '../../@core/requestContribution'; + +describe('UserRequestService', () => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + let service: UserRequestService; + let userService: UserService; + let authService: AuthService; + let requestService: RequestService; + + beforeEach(async () => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserRequestService); + userService = TestBed.inject(UserService); + authService = TestBed.inject(AuthService); + requestService = TestBed.inject(RequestService); + + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('create request', async () => { + const _user = await userService.currentUser(); + const user = _user.uid; + const requestContribution = new RequestContribution({user}); + requestContribution.need('Sterile Water', 2); + const id = await service.createRequest(requestContribution); + console.info(id); + expect(id).toBeTruthy(); + }); + + it('get request', async () => { + const requests = await service.getRequests(); + console.info(requests); + expect().nothing(); + }); + + it('delete request', async () => { + const requestId = 'xH3eVqsvO3AjOTxvha4n'; + await service.deleteRequest(requestId); + expect().nothing(); + }); + + it('create and update request items', async () => { + const _user = await userService.currentUser(); + const user = _user.uid; + const requestContribution = new RequestContribution({user}); + requestContribution.need('Surgical Mask', 10); + requestContribution.need('Ventilator', 20); + // requestContribution.changeNeed('Surgical Mask', 5); + const changedNeed = requestContribution.getNeed('Surgical Mask'); + console.info(requestContribution.request); + expect(changedNeed.qtyNeed).toBe(5); + }); + + it('find and update request items', async () => { + const requestId = 'ogjzwNEP0C3IyZCRUFc2'; + const request = await requestService.getRequest(requestId); + + const requestContribution = new RequestContribution(request); + + console.info(requestContribution.requestItems); + requestContribution.need('Surgical Mask', 200); + console.info(requestContribution.requestItems); + + try { + await service.updateRequest(requestContribution); + } catch (e) { + console.error(e); + } + + expect().nothing(); + }); + + it('defaultRequestItemNames()', () => { + console.info(service.defaultRequestItemNames); + expect().nothing(); + }); + + it('requestItemsOverview', async () => { + const requestItems = await service.requestItemsOverview; + console.info(requestItems); + expect().nothing(); + }); + + it('incomingContributionsCount', async () => { + const obs = await service.incomingContributionsCount(); + obs.subscribe(value => { + console.info(value); + }); + expect().nothing(); + }); + + it('itemsByOtherUsers', async () => { + const items = await service.itemsByOtherUsers; + console.info(items); + expect().nothing(); + }); +}); diff --git a/hosting/src/app/@backend/user-request.service.ts b/hosting/src/app/@backend/user-request.service.ts new file mode 100644 index 00000000..c81ddfda --- /dev/null +++ b/hosting/src/app/@backend/user-request.service.ts @@ -0,0 +1,306 @@ +import {Injectable} from '@angular/core'; +import {FirebaseService} from '../firebase.service'; +import {UserService} from './user.service'; +import { + ContributionStatus, + DEFAULT_REQUEST_ITEMS, + Request, + RequestItem, + RequestObject, + RequestStats, RequestStatus +} from '../../@core/firestore-interfaces/request'; + +import * as firebase from 'firebase/app'; +import Timestamp = firebase.firestore.Timestamp; +import {__STATS__, CONTRIBS, MESSAGES, REQUESTS, REQUESTS__ITEMS} from '../../@core/firestore-collections'; +import DocumentReference = firebase.firestore.DocumentReference; +import DocumentData = firebase.firestore.DocumentData; +import WriteBatch = firebase.firestore.WriteBatch; +import {RequestService} from './request.service'; +import {RequestContribution} from '../../@core/requestContribution'; +import {Observable} from 'rxjs'; +import {MessageStatus} from '../../@core/firestore-interfaces/messages'; + +@Injectable({ + providedIn: 'root' +}) +/** + * everything related to current user + */ +export class UserRequestService { + + constructor( + private firebaseService: FirebaseService, + private userService: UserService, + private requestService: RequestService + ) { + } + + async incomingContributionsCount(): Promise> { + const user = await this.userService.currentUser(); + const userId = user.uid; + + return new Observable(subscriber => { + subscriber.next(0); + + this.firebaseService.firestore().collection(CONTRIBS) + .where('receiverId', '==', userId) + .where('status', '==', 'waiting') + .onSnapshot(snapshot => { + subscriber.next(snapshot.docs.length); + }); + }); + } + + /** + * get aggregated count of user's request item + */ + get requestItemsOverview(): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUser(); + const userId = user.uid; + this.firebaseService.firestore() + .collection(REQUESTS).where('user', '==', userId) + .get().then(async snapshot => { + const requestItems: RequestItem[] = []; + for (const doc of snapshot.docs) { + const _requestItems = await this.requestService._getRequestItems(doc.id); + _requestItems.forEach(item => { + const index = requestItems.findIndex(value => { + return value.name === item.name; + }); + if (index >= 0) { + requestItems[index].qtyNeed += +item.qtyNeed; + requestItems[index].qtyFilled += +item.qtyFilled; + } else { + requestItems.push(item); + } + }); + } + resolve(requestItems); + }).catch(e => { + reject(e); + }); + }); + } + + get defaultRequestItemNames() { + return DEFAULT_REQUEST_ITEMS; + } + + get itemsByOtherUsers() { + return this.firebaseService.firestore() + .collection(REQUESTS).doc(__STATS__) + .get() + .then(snapshot => { + const data = snapshot.data() as RequestStats; + return data.itemsByUsers || []; + }) + .catch(e => { + console.error(e); + return []; + }); + } + + /** + * @return requests by current user + */ + async getRequests(): Promise { + const user = await this.userService.currentUser(); + const userId = user.uid; + return this.requestService._getRequestsByUserId(userId); + } + + /** + * delete specific request. For now, no firestore rules + * + * @param requestId + */ + deleteRequest(requestId: string): Promise { + return new Promise(async (resolve, reject) => { + try { + await this._deleteRequestItems(requestId); + await this.firebaseService.firestore().collection(REQUESTS).doc(requestId).delete(); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + /** + * change status to 'complete' + * @param requestId + */ + markRequestAsComplete(requestId: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore() + .collection(REQUESTS) + .doc(requestId) + .update({ + status: 'complete' + }) + .then(() => { + resolve(); + }) + .catch(e => { + reject(e); + }); + }); + } + + /** + * creates new request + * + * @return document id + * + * @param requestContribution + */ + createRequest(requestContribution: RequestContribution): Promise { + const request = requestContribution.request; + const requestItems = requestContribution.requestItems; + + return new Promise(async (resolve, reject) => { + const user = await this.userService.currentUserInfo(); + + request.dateCrt = Timestamp.now(); + request.status = 'active'; + request.userInfo.name = user.name; + request.userInfo.email = user.email; + + let batch = this.firebaseService.firestore().batch(); + const ref = await this.firebaseService.firestore().collection(REQUESTS).add(request); + + this._addRequestItems(requestItems, ref, batch); + + try { + await batch.commit(); + resolve(ref.id); + } catch (e) { + reject(e); + } + }); + } + + /** + * update specific request + * + * @example + * requestContrib = requestService.getRequest(requestId) // or any other way you can find + * userRequestService.updateRequest(requestContrib) + * + * @param requestContribution + */ + updateRequest(requestContribution: RequestContribution): Promise { + const id = requestContribution.id; + const request = requestContribution.request; + const requestItems = requestContribution.requestItems; + + request.dateUpd = Timestamp.now(); + + return new Promise(async (resolve, reject) => { + const ref = this.firebaseService.firestore().collection(REQUESTS).doc(id); + try { + await ref.set(request as Request, {merge: true}); + await this._updateRequestItems(id, requestItems); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + /** + * update request items of a specific request. This will update matching data and REMOVE missing data from requestItems + * e.g requestItems has only 2 items, but in the database it has 3, the missing item will be removed + * + * @param requestId + * @param requestItems + * + * @private + */ + private async _updateRequestItems(requestId: string, requestItems: RequestItem[]): Promise { + const requestItemNames: string[] = requestItems.map(value => { + return value.name; + }); + + const batch = this.firebaseService.firestore().batch(); + const ref = this.firebaseService.firestore().collection(REQUESTS).doc(requestId); + const itemsColRef = ref.collection(REQUESTS__ITEMS); + + const itemsRef = await itemsColRef.get(); + const currentItemNames: string[] = itemsRef.docs.map(value => { + return value.id; + }); + + // delete missing + currentItemNames.forEach(name => { + if (!requestItemNames.includes(name)) { + const deleteRef = itemsColRef.doc(name); + batch.delete(deleteRef); + } + }); + + // set data + requestItems.forEach(item => { + const setRef = itemsColRef.doc(item.name); + batch.set(setRef, { + name: item.name, + qtyFilled: +item.qtyFilled, + qtyNeed: +item.qtyNeed + } as RequestItem); + }); + + return new Promise(async (resolve, reject) => { + try { + await batch.commit(); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + private _addRequestItems( + requestItems: RequestItem[], + ref: DocumentReference, batch: WriteBatch): void { + requestItems.forEach(item => { + const itemRef = ref.collection(REQUESTS__ITEMS).doc(item.name); + batch.set(itemRef, { + name: item.name, + qtyFilled: +item.qtyFilled, + qtyNeed: +item.qtyNeed + } as RequestItem); + }); + } + + /** + * + * @param requestId + * @param requestItems, list of item id(name) + * @private + */ + private _deleteRequestItems(requestId: string, requestItems?: string[]): Promise { + const batch = this.firebaseService.firestore().batch(); + const ref = this.firebaseService.firestore().collection(REQUESTS).doc(requestId); + return new Promise(async (resolve, reject) => { + if (requestItems && requestItems.length > 0) { + for (const item of requestItems) { + const itemRef = ref.collection(REQUESTS__ITEMS).doc(item); + batch.delete(itemRef); + } + } else { + const itemRef = await ref.collection(REQUESTS__ITEMS).get(); + itemRef.forEach(doc => { + batch.delete(doc.ref); + }); + } + + batch.commit().then(() => { + resolve(); + }).catch(e => { + reject(e); + }); + }); + } +} diff --git a/hosting/src/app/@backend/user.service.spec.ts b/hosting/src/app/@backend/user.service.spec.ts new file mode 100644 index 00000000..89541039 --- /dev/null +++ b/hosting/src/app/@backend/user.service.spec.ts @@ -0,0 +1,81 @@ +import { TestBed } from '@angular/core/testing'; + +import {UserAccount, UserService, UserUpdateParams} from './user.service'; +import {AuthService} from '../auth/auth.service'; + +describe('UserService', () => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + let service: UserService; + let authService: AuthService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserService); + authService = TestBed.inject(AuthService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('login and check is admin', async () => { + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + const isAdmin = await service.iamAdmin(); + expect(isAdmin).toBeTrue(); + }); + + it('adminVerified and emailVerified', async () => { + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + const emailVerified = await service.iamEmailVerified(); + const adminVerified = await service.iamVerifiedByAdmin(); + console.info(adminVerified); + // expect(emailVerified && adminVerified).toBeTrue(); + expect().nothing(); + }); + + it('registerAsUser()', async () => { + const email = 'unsolvedrubiks1908@gmail.com'; + const registerUserResult = await service.registerAsUser({ + email, + password: '123123' + }, { + address: '-', + phone: '-', + name: 'Danish', + email, + }); + expect(registerUserResult.userCredential).toBeTruthy(); + }); + + it('currentUserInfo()', async () => { + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + const info = await service.currentUserInfo(); + console.info(info); + expect().nothing(); + }); + + it('updateProfile', async () => { + const userAccount: UserAccount = { + email: 'neuonbox@gmail.com', + password: '123123' + }; + await authService.signInWithEmailAndPassword(userAccount.email, userAccount.password); + const user: UserUpdateParams = { + phone: 'test123', + address: 'heyyy' + }; + await service.updateProfile(user); + }); +}); diff --git a/hosting/src/app/@backend/user.service.ts b/hosting/src/app/@backend/user.service.ts new file mode 100644 index 00000000..1f7c9f2a --- /dev/null +++ b/hosting/src/app/@backend/user.service.ts @@ -0,0 +1,267 @@ +import {Injectable} from '@angular/core'; +import {FirebaseService} from '../firebase.service'; +import {USERS} from '../../@core/firestore-collections'; +import {User} from '../../@core/firestore-interfaces/user'; +import {AuthService} from '../auth/auth.service'; + +import * as firebase from 'firebase/app'; +import UserCredential = firebase.auth.UserCredential; +import IdTokenResult = firebase.auth.IdTokenResult; + +export interface UserAccount { + email: string; + password: string; +} + +export interface RegisterUserResult { + userCredential: UserCredential +} + +export interface UserUpdateParams { + address?: string; + phone?: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + private agencies: User[] = []; + + constructor( + private firebaseService: FirebaseService, + private authService: AuthService, + ) { + } + + /** + * this does not update the user's profile. Only update data + * use uploadUserPhoto() instead + * @param userBase + */ + updateProfile(userBase: UserUpdateParams): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.currentUser(); + this.firebaseService.firestore().collection(USERS).doc(user.uid).set(userBase, {merge: true}) + .then(() => { + resolve(); + }) + .catch(e => { + reject(e); + }); + }); + } + + async currentUserInfo(): Promise { + const user = await this.currentUser(); + if (user) { + return this._getUserInfo(user.uid); + } else { + return null; + } + } + + _getUserInfo(userId: string): Promise { + return new Promise(async (resolve, reject) => { + return this.firebaseService.firestore().collection(USERS).doc(userId).get().then(snapshot => { + resolve(snapshot.data() as User); + }).catch(reason => { + reject(reason); + }); + }); + } + + currentUser(): Promise { + return this.authService.getCurrentUser(); + } + + iamVerifiedByAdmin(): Promise { + return this._firebaseIam('verifiedByAdmin'); + // return this._iam('verifiedByAdmin'); + } + + iamAdmin(): Promise { + return this._iam('admin'); + } + + iamEmailVerified(): Promise { + return new Promise(async (resolve) => { + const user = await this.currentUser(); + resolve(user.emailVerified); + }); + } + + private _firebaseIam(key: string): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.currentUserInfo(); + if (user && user[key]) { + resolve(user[key]); + } else { + resolve(false); + } + }); + } + + private _iam(key: string): Promise { + return this._currentClaims().then(claims => { + const hasKey = claims.hasOwnProperty(key); + if (hasKey) { + return claims[key]; + } else { + return false; + } + }).catch(reason => { + return false; + }); + } + + private async _currentClaims() { + return new Promise(async (resolve, reject) => { + try { + const idTokenResult = await this._currentIdTokenResult(); + resolve(idTokenResult.claims); + } catch (e) { + reject(e); + } + }); + } + + private async _currentIdTokenResult(): Promise { + const user = await this.currentUser(); + return new Promise(async (resolve, reject) => { + if (user) { + const idTokenResult = await user.getIdTokenResult(); + resolve(idTokenResult); + } else { + reject('Not logged in'); + } + }); + } + + /** + * has simple validation to check if MIME type is image or not, rejects if not + * + * will automatically update user's auth display image and user's data image url + * + * @param image + * @return Promise where string is the downloadUrl of the uploaded image + */ + uploadUserPhoto(image: File): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.currentUser(); + const userId = user.uid; + + const storageRef = this.firebaseService.storage().ref(); + const mime = image.type; + + if (mime.includes('image')) { + // const extension = image.name.split('.').pop(); + // const newFilename = `${userId.toString()}.${extension}`; + const newFilename = `${userId.toString()}`; + const uploadRef = storageRef.child(`userImages/${newFilename}`); + uploadRef.put(image).then(async a => { + const downloadUrl = await a.ref.getDownloadURL(); + + await Promise.all([ + this._updateUserPhotoUrl(downloadUrl), + this._updateUserDisplayURL(downloadUrl) + ]); + + resolve(); + }, b => { + reject(b); + }).catch(reason => { + reject(reason); + }); + } else { + reject('File is not an image'); + } + }); + } + + _updateUserPhotoUrl(downloadUrl: string): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.currentUser(); + this.firebaseService.firestore().collection(USERS).doc(user.uid).set({ + imageUrl: downloadUrl + }, {merge: true}) + .then(() => { + resolve(); + }) + .catch(e => { + reject(e); + }); + }); + } + + /** + * update current user's photoURL + * @param downloadUrl + * + * @TODO: update firestore as well + */ + _updateUserDisplayURL(downloadUrl: string): Promise { + return new Promise(async (resolve, reject) => { + const user = await this.currentUser(); + try { + await user.updateProfile({photoURL: downloadUrl}); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + registerAsUser(userAccount: UserAccount, user: User): Promise { + user.roles = ['agency']; + user.verifiedByAdmin = false; + user.rejectedByAdmin = false; + + return new Promise(async (resolve, reject) => { + try { + // create user + const userCredential = await this.firebaseService.auth().createUserWithEmailAndPassword(userAccount.email, userAccount.password); + user.userId = userCredential.user.uid; + + // save in firestore + await this.firebaseService.firestore().collection(USERS) + .doc(user.userId) + .set(user); + + resolve({ + userCredential + }); + } catch (e) { + reject(e); + } + }); + } + + requestEmailVerification(userCredential: UserCredential): Promise { + return new Promise((resolve, reject) => { + if (userCredential) { + userCredential.user.sendEmailVerification().then(() => { + resolve(); + }).catch(reason => { + reject(reason); + }); + } else { + reject('userCredential is null'); + } + }); + } + + _findUserIdByEmail(email: string): Promise { + return new Promise((resolve, reject) => { + this.firebaseService.firestore().collection(USERS).where('email', '==', email).get().then(querySnapshot => { + if (!querySnapshot.empty) { + const doc = querySnapshot.docs[0]; + resolve(doc.id); + } + reject(`No user found`); + }).catch(reason => { + resolve(reason); + }); + }); + } +} diff --git a/hosting/src/app/app-routing.module.ts b/hosting/src/app/app-routing.module.ts new file mode 100644 index 00000000..5a7dd0f5 --- /dev/null +++ b/hosting/src/app/app-routing.module.ts @@ -0,0 +1,10 @@ +import {NgModule} from '@angular/core'; +import {RouterModule} from '@angular/router'; + + +@NgModule({ + imports: [RouterModule.forRoot([])], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/hosting/src/app/app.component.html b/hosting/src/app/app.component.html new file mode 100644 index 00000000..0680b43f --- /dev/null +++ b/hosting/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/hosting/src/app/app.component.scss b/hosting/src/app/app.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/app.component.spec.ts b/hosting/src/app/app.component.spec.ts new file mode 100644 index 00000000..8af8379e --- /dev/null +++ b/hosting/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import {async, TestBed} from '@angular/core/testing'; +import {AppComponent} from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'hibiscus'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('hibiscus'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain('hibiscus app is running!'); + }); +}); diff --git a/hosting/src/app/app.component.ts b/hosting/src/app/app.component.ts new file mode 100644 index 00000000..04b9cb75 --- /dev/null +++ b/hosting/src/app/app.component.ts @@ -0,0 +1,10 @@ +import {Component} from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'hibiscus'; +} diff --git a/hosting/src/app/app.module.ts b/hosting/src/app/app.module.ts new file mode 100644 index 00000000..c9717162 --- /dev/null +++ b/hosting/src/app/app.module.ts @@ -0,0 +1,27 @@ +import {BrowserModule} from '@angular/platform-browser'; +import {NgModule} from '@angular/core'; + +import {AppComponent} from './app.component'; +import {MaterialModule} from './material.module'; +import {MainModule} from './main/main.module'; +import {AppRoutingModule} from './app-routing.module'; +import {AuthModule} from './auth/auth.module'; +import {GoogleChartsModule} from 'angular-google-charts'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + MaterialModule, + AppRoutingModule, + MainModule, + AuthModule, + GoogleChartsModule.forRoot() + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { +} diff --git a/hosting/src/app/auth/auth-content.guard.spec.ts b/hosting/src/app/auth/auth-content.guard.spec.ts new file mode 100644 index 00000000..f1179fbe --- /dev/null +++ b/hosting/src/app/auth/auth-content.guard.spec.ts @@ -0,0 +1,16 @@ +import {TestBed} from '@angular/core/testing'; + +import {AuthContentGuard} from './auth-content.guard'; + +describe('AuthContentGuard', () => { + let guard: AuthContentGuard; + + beforeEach(() => { + TestBed.configureTestingModule({}); + guard = TestBed.inject(AuthContentGuard); + }); + + it('should be created', () => { + expect(guard).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/auth/auth-content.guard.ts b/hosting/src/app/auth/auth-content.guard.ts new file mode 100644 index 00000000..48aba7f6 --- /dev/null +++ b/hosting/src/app/auth/auth-content.guard.ts @@ -0,0 +1,29 @@ +import {Injectable} from '@angular/core'; +import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router'; +import {Observable} from 'rxjs'; +import {AuthService} from './auth.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthContentGuard implements CanActivate { + constructor(private router: Router, private auth: AuthService) { + } + + canActivate( + next: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { + return this.isAuthenticated().then(value => !value); + } + + private async isAuthenticated(): Promise { + return this.auth.isSignedIn() + .then(value => { + if (value) { + return this.router.navigate(['/']) + .then(_ => value).catch(_ => value); + } + return value; + }); + } +} diff --git a/hosting/src/app/auth/auth-routing.module.ts b/hosting/src/app/auth/auth-routing.module.ts new file mode 100644 index 00000000..de536b7f --- /dev/null +++ b/hosting/src/app/auth/auth-routing.module.ts @@ -0,0 +1,37 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {RouterModule, Routes} from '@angular/router'; +import {SignInComponent} from './sign-in/sign-in.component'; +import {SignUpComponent} from './sign-up/sign-up.component'; +import {AuthComponent} from './auth.component'; +import {AuthContentGuard} from './auth-content.guard'; + +const routes: Routes = [ + { + path: 'auth', + component: AuthComponent, + canActivate: [AuthContentGuard], + children: [ + { + path: '', + children: [ + {path: '', component: SignInComponent}, + {path: 'sign-up', component: SignUpComponent}, + ] + } + ] + } +]; + +@NgModule({ + declarations: [], + imports: [ + CommonModule, + RouterModule.forChild(routes), + ], + exports: [ + RouterModule, + ] +}) +export class AuthRoutingModule { +} diff --git a/hosting/src/app/auth/auth.component.html b/hosting/src/app/auth/auth.component.html new file mode 100644 index 00000000..e5da352e --- /dev/null +++ b/hosting/src/app/auth/auth.component.html @@ -0,0 +1,22 @@ +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    diff --git a/hosting/src/app/auth/auth.component.scss b/hosting/src/app/auth/auth.component.scss new file mode 100644 index 00000000..c923e29a --- /dev/null +++ b/hosting/src/app/auth/auth.component.scss @@ -0,0 +1,59 @@ +@use '@material/card'; + +.container { + display: flex; + width: 100vw; + height: 100vh; + margin: auto; + flex-direction: column; +} + +main { + display: flex; + flex-direction: column; +} + +//noinspection SassScssUnresolvedMixin +main .content { + @include card.outline(rgba(0, 0, 0, 0.12), 0); +} + +main .content div { + margin: 80px 16px; +} + +footer { + display: flex; + justify-content: space-between; + flex-flow: wrap; + margin: auto 8px 24px; +} + +footer .options-1 { + margin: 8px 0 0; +} + +footer .options-2 { + margin: 8px 0 0; +} + +//noinspection SassScssUnresolvedMixin +@media only screen and (min-width: 600px) { + .container { + width: 640px; + } + .container::before, .container::after { + content: ''; + flex-grow: 1; + min-height: 24px; + } + main .content { + @include card.outline(rgba(0, 0, 0, 0.12), 1px); + } + main .content div { + margin: 80px 48px; + } + footer { + margin: 16px 0 0; + } +} diff --git a/hosting/src/app/auth/auth.component.spec.ts b/hosting/src/app/auth/auth.component.spec.ts new file mode 100644 index 00000000..233e8f46 --- /dev/null +++ b/hosting/src/app/auth/auth.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AuthComponent} from './auth.component'; + +describe('AuthShellComponent', () => { + let component: AuthComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AuthComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AuthComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/auth/auth.component.ts b/hosting/src/app/auth/auth.component.ts new file mode 100644 index 00000000..9c1cc24c --- /dev/null +++ b/hosting/src/app/auth/auth.component.ts @@ -0,0 +1,15 @@ +import {Component, OnInit} from '@angular/core'; + +@Component({ + selector: 'app-auth', + templateUrl: './auth.component.html', + styleUrls: ['./auth.component.scss'] +}) +export class AuthComponent implements OnInit { + + constructor() { + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/auth/auth.guard.spec.ts b/hosting/src/app/auth/auth.guard.spec.ts new file mode 100644 index 00000000..f40bf976 --- /dev/null +++ b/hosting/src/app/auth/auth.guard.spec.ts @@ -0,0 +1,16 @@ +import {TestBed} from '@angular/core/testing'; + +import {AuthGuard} from './auth.guard'; + +describe('AuthGuard', () => { + let guard: AuthGuard; + + beforeEach(() => { + TestBed.configureTestingModule({}); + guard = TestBed.inject(AuthGuard); + }); + + it('should be created', () => { + expect(guard).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/auth/auth.guard.ts b/hosting/src/app/auth/auth.guard.ts new file mode 100644 index 00000000..fce8b69c --- /dev/null +++ b/hosting/src/app/auth/auth.guard.ts @@ -0,0 +1,29 @@ +import {Injectable} from '@angular/core'; +import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router'; +import {Observable} from 'rxjs'; +import {AuthService} from './auth.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGuard implements CanActivate { + constructor(private router: Router, private auth: AuthService) { + } + + canActivate( + next: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { + return this.isAuthenticated(); + } + + private async isAuthenticated(): Promise { + return this.auth.isSignedIn() + .then(value => { + if (!value) { + return this.router.navigate(['/auth']) + .then(_ => value).catch(_ => value); + } + return value; + }); + } +} diff --git a/hosting/src/app/auth/auth.module.ts b/hosting/src/app/auth/auth.module.ts new file mode 100644 index 00000000..f63b05a4 --- /dev/null +++ b/hosting/src/app/auth/auth.module.ts @@ -0,0 +1,28 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {AuthComponent} from './auth.component'; +import {SignInComponent} from './sign-in/sign-in.component'; +import {AuthRoutingModule} from './auth-routing.module'; +import {SignUpComponent} from './sign-up/sign-up.component'; +import {MaterialModule} from '../material.module'; +import {ReactiveFormsModule} from '@angular/forms'; + + +@NgModule({ + declarations: [ + AuthComponent, + SignInComponent, + SignUpComponent, + ], + imports: [ + CommonModule, + ReactiveFormsModule, + MaterialModule, + AuthRoutingModule, + ], + exports: [ + AuthComponent, + ] +}) +export class AuthModule { +} diff --git a/hosting/src/app/auth/auth.service.spec.ts b/hosting/src/app/auth/auth.service.spec.ts new file mode 100644 index 00000000..ee124a68 --- /dev/null +++ b/hosting/src/app/auth/auth.service.spec.ts @@ -0,0 +1,16 @@ +import {TestBed} from '@angular/core/testing'; + +import {AuthService} from './auth.service'; + +describe('AuthService', () => { + let service: AuthService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AuthService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/auth/auth.service.ts b/hosting/src/app/auth/auth.service.ts new file mode 100644 index 00000000..e000ef3d --- /dev/null +++ b/hosting/src/app/auth/auth.service.ts @@ -0,0 +1,44 @@ +import {Injectable} from '@angular/core'; +import {FirebaseService} from '../firebase.service'; +import User = firebase.User; +import UserCredential = firebase.auth.UserCredential; + +@Injectable({ + providedIn: 'root' +}) +export class AuthService { + constructor(private firebase: FirebaseService) { + } + + public isSignedIn(): Promise { + return new Promise((resolve, _) => { + const unsubscribable = this.firebase.auth() + .onAuthStateChanged(user => { + resolve(!!user); + unsubscribable(); + }); + }); + } + + public createUserWithEmailAndPassword(email: string, password: string): Promise { + return this.firebase.auth().createUserWithEmailAndPassword(email, password); + } + + public getCurrentUser(): Promise { + return new Promise((resolve, _) => { + const unsubscribable = this.firebase.auth() + .onAuthStateChanged(user => { + resolve(user); + unsubscribable(); + }); + }); + } + + public signInWithEmailAndPassword(email: string, password: string): Promise { + return this.firebase.auth().signInWithEmailAndPassword(email, password); + } + + public signOut(): Promise { + return this.firebase.auth().signOut(); + } +} diff --git a/hosting/src/app/auth/sign-in/sign-in.component.html b/hosting/src/app/auth/sign-in/sign-in.component.html new file mode 100644 index 00000000..22aa18b4 --- /dev/null +++ b/hosting/src/app/auth/sign-in/sign-in.component.html @@ -0,0 +1,37 @@ +
    +
    + share +
    + Sign in + with your email +
    +
    + + + + Enter your email address + Enter a valid email address + + + + + + + + Enter your password + Password too weak + + +
    + + +
    +
    diff --git a/hosting/src/app/auth/sign-in/sign-in.component.scss b/hosting/src/app/auth/sign-in/sign-in.component.scss new file mode 100644 index 00000000..557b4b5e --- /dev/null +++ b/hosting/src/app/auth/sign-in/sign-in.component.scss @@ -0,0 +1,3 @@ +.mdc-text-field { + margin: 16px 0 0; +} diff --git a/hosting/src/app/auth/sign-in/sign-in.component.spec.ts b/hosting/src/app/auth/sign-in/sign-in.component.spec.ts new file mode 100644 index 00000000..afaaac35 --- /dev/null +++ b/hosting/src/app/auth/sign-in/sign-in.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {SignInComponent} from './sign-in.component'; + +describe('SignInComponent', () => { + let component: SignInComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SignInComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SignInComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/auth/sign-in/sign-in.component.ts b/hosting/src/app/auth/sign-in/sign-in.component.ts new file mode 100644 index 00000000..36626813 --- /dev/null +++ b/hosting/src/app/auth/sign-in/sign-in.component.ts @@ -0,0 +1,69 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {Router} from '@angular/router'; +import {AuthService} from '../auth.service'; +import {MdcSnackbar} from '@angular-mdc/web'; +import FirebaseError = firebase.FirebaseError; + +@Component({ + selector: 'app-sign-in', + templateUrl: './sign-in.component.html', + styleUrls: ['./sign-in.component.scss'] +}) +export class SignInComponent implements OnInit { + public formGroup = new FormGroup({ + email: new FormControl('', [Validators.required, Validators.email]), + password: new FormControl('', Validators.required) + }); + public showPassword = false; + + constructor(private router: Router, private auth: AuthService, private snackbar: MdcSnackbar) { + } + + ngOnInit(): void { + } + + public togglePasswordVisibility() { + this.showPassword = !this.showPassword; + } + + public signIn() { + const emailControl = this.formGroup.controls.email; + const passwordControl = this.formGroup.controls.password; + const email: string = emailControl.value; + const password: string = passwordControl.value; + emailControl.disable(); + passwordControl.disable(); + this.auth.signInWithEmailAndPassword(email, password) + .then(credential => { + if (credential.user) { + return this.router.navigate(['/']); + } + }) + .catch(reason => { + let message = 'Something went wrong.'; + if ('code' in reason) { + const code = (reason as FirebaseError).code; + switch (code) { + case 'auth/invalid-email': + message = 'Invalid email.'; + break; + case 'auth/user-disabled': + message = 'User not found.'; + break; + case 'auth/user-not-found': + message = 'User not found.'; + break; + case 'auth/wrong-password': + message = 'Wrong password'; + break; + } + } + this.snackbar.open(message); + }) + .finally(() => { + emailControl.enable(); + passwordControl.enable(); + }); + } +} diff --git a/hosting/src/app/auth/sign-up/sign-up.component.html b/hosting/src/app/auth/sign-up/sign-up.component.html new file mode 100644 index 00000000..bf3b5fc8 --- /dev/null +++ b/hosting/src/app/auth/sign-up/sign-up.component.html @@ -0,0 +1,68 @@ +
    +
    + share +
    + Register as an agency + with your email +
    +
    +
    +
    + + + + Enter the agency name + + + + + + Enter a contact number + + + + + + Enter your email address + Enter a valid email address + + + + + + + Enter your password + Password too weak + + + + + + + Repeat password + +
    +
    + + + +
    +
    +
    + + +
    +
    diff --git a/hosting/src/app/auth/sign-up/sign-up.component.scss b/hosting/src/app/auth/sign-up/sign-up.component.scss new file mode 100644 index 00000000..8b09740c --- /dev/null +++ b/hosting/src/app/auth/sign-up/sign-up.component.scss @@ -0,0 +1,3 @@ +.mdc-text-field { + margin: 8px 0 0; +} diff --git a/hosting/src/app/auth/sign-up/sign-up.component.spec.ts b/hosting/src/app/auth/sign-up/sign-up.component.spec.ts new file mode 100644 index 00000000..10dd95d4 --- /dev/null +++ b/hosting/src/app/auth/sign-up/sign-up.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {SignUpComponent} from './sign-up.component'; + +describe('SignUpComponent', () => { + let component: SignUpComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SignUpComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SignUpComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/auth/sign-up/sign-up.component.ts b/hosting/src/app/auth/sign-up/sign-up.component.ts new file mode 100644 index 00000000..281a5498 --- /dev/null +++ b/hosting/src/app/auth/sign-up/sign-up.component.ts @@ -0,0 +1,99 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl, FormGroup, ValidatorFn, Validators} from '@angular/forms'; +import {Router} from '@angular/router'; +import {MdcSnackbar} from '@angular-mdc/web'; +import {UserService} from '../../@backend/user.service'; +import FirebaseError = firebase.FirebaseError; + +function matchingPasswords(control1: string, control2: string): ValidatorFn { + return (group: FormGroup): { [key: string]: any } | null => { + const value1 = group.controls[control1].value; + const value2 = group.controls[control2].value; + return value1 !== value2 ? {mismatch: true} : null; + }; +} + +@Component({ + selector: 'app-sign-up', + templateUrl: './sign-up.component.html', + styleUrls: ['./sign-up.component.scss'] +}) +export class SignUpComponent implements OnInit { + public formGroup = new FormGroup({ + email: new FormControl('', [Validators.required, Validators.email]), + password: new FormControl('', [Validators.required, Validators.minLength(8)]), + confirmPassword: new FormControl('', [Validators.required]), + contact: new FormControl('', [Validators.required]), + name: new FormControl('', [Validators.required]), + address: new FormControl('', [Validators.required]), + }, matchingPasswords('password', 'confirmPassword') + ); + public showPassword = false; + + constructor(private router: Router, private userService: UserService, private snackbar: MdcSnackbar) { + } + + ngOnInit(): void { + } + + public togglePasswordVisibility() { + this.showPassword = !this.showPassword; + } + + // noinspection DuplicatedCode + public createUserAccount() { + const emailControl = this.formGroup.controls.email; + const passwordControl = this.formGroup.controls.password; + const confirmPasswordControl = this.formGroup.controls.confirmPassword; + const email = emailControl.value; + const password = passwordControl.value; + + const nameControl = this.formGroup.controls.name; + const contactControl = this.formGroup.controls.contact; + const addressControl = this.formGroup.controls.address; + const name = nameControl.value; + const contact = contactControl.value; + const address = addressControl.value; + + emailControl.disable(); + passwordControl.disable(); + confirmPasswordControl.disable(); + nameControl.disable(); + contactControl.disable(); + addressControl.disable(); + + this.userService.registerAsUser({email, password}, {name, email, address, phone: contact}) + .then(_ => { + return this.router.navigate(['/']); + }) + .catch(reason => { + let message = 'Something went wrong.'; + if ('code' in reason) { + const code = (reason as FirebaseError).code; + switch (code) { + case 'auth/email-already-in-use': + message = 'Email already in use.'; + break; + case 'auth/invalid-email': + message = 'Invalid email.'; + break; + case 'auth/operation-not-allowed': + message = 'Email-password authentication disabled.'; + break; + case 'auth/weak-password': + message = 'Password too weak.'; + break; + } + } + this.snackbar.open(message); + }) + .finally(() => { + emailControl.enable(); + passwordControl.enable(); + confirmPasswordControl.enable(); + nameControl.enable(); + contactControl.enable(); + addressControl.enable(); + }); + } +} diff --git a/hosting/src/app/firebase.service.spec.ts b/hosting/src/app/firebase.service.spec.ts new file mode 100644 index 00000000..7d048fdf --- /dev/null +++ b/hosting/src/app/firebase.service.spec.ts @@ -0,0 +1,16 @@ +import {TestBed} from '@angular/core/testing'; + +import {FirebaseService} from './firebase.service'; + +describe('FirebaseService', () => { + let service: FirebaseService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(FirebaseService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/firebase.service.ts b/hosting/src/app/firebase.service.ts new file mode 100644 index 00000000..ce25b9b9 --- /dev/null +++ b/hosting/src/app/firebase.service.ts @@ -0,0 +1,57 @@ +import {Injectable, isDevMode} from '@angular/core'; + +import * as firebase from 'firebase/app'; +import 'firebase/auth'; +import 'firebase/firestore'; +import 'firebase/storage'; +import 'firebase/functions'; + +import Auth = firebase.auth.Auth; +import Firestore = firebase.firestore.Firestore; +import Storage = firebase.storage.Storage; +import Functions = firebase.functions.Functions; + +@Injectable({ + providedIn: 'root' +}) +export class FirebaseService { + private app: firebase.app.App; + private firebaseConfig = { + apiKey: 'AIzaSyCn10WzwrGOpDLVdUP8DYkc3mFzOLsgFtA', + authDomain: 'neuon-hackathon-holmes.firebaseapp.com', + databaseURL: 'https://neuon-hackathon-holmes.firebaseio.com', + projectId: 'neuon-hackathon-holmes', + storageBucket: 'neuon-hackathon-holmes.appspot.com', + messagingSenderId: '891256246600', + appId: '1:891256246600:web:dac5e5a1e561b05b1c237d', + measurementId: 'G-BQGZZM60C0' + }; + + constructor() { + try { + this.app = firebase.initializeApp(this.firebaseConfig); + } catch (e) { + console.error(e); + } + } + + public auth(): Auth { + return firebase.auth(); + } + + public firestore(): Firestore { + return firebase.firestore(); + } + + public storage(): Storage { + return firebase.storage(); + } + + public functions(): Functions { + const functions = this.app.functions('asia-east2'); + if (isDevMode()) { + functions.useFunctionsEmulator('http://localhost:5001'); + } + return functions; + } +} diff --git a/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.html b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.html new file mode 100644 index 00000000..29b2f0b1 --- /dev/null +++ b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.html @@ -0,0 +1,45 @@ +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    + {{agency.name}} + {{agency.email}} +
    +
    +
    + Address + {{agency.address}} +
    +
    + + + +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.scss b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.scss new file mode 100644 index 00000000..6400622e --- /dev/null +++ b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.scss @@ -0,0 +1,32 @@ +main { + display: flex; + height: 100%; + flex-direction: column; +} + +.toolbar { + padding: 16px; +} + +.toolbar button { + border-radius: 18px; +} + +.content-area .item { + margin: 8px 16px 0; +} + +.content-area .item:first-child { + margin: 16px 16px 0; +} + +.content-area .item:last-child { + margin: 8px 16px 16px; +} + +.agency-photo { + width: 64px; + height: 64px; + border-radius: 32px; + background-color: grey; +} diff --git a/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.spec.ts b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.spec.ts new file mode 100644 index 00000000..54a3d40b --- /dev/null +++ b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminAgenciesComponent} from './admin-agencies.component'; + +describe('AdminAgenciesComponent', () => { + let component: AdminAgenciesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminAgenciesComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminAgenciesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.ts b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.ts new file mode 100644 index 00000000..cf1c12fe --- /dev/null +++ b/hosting/src/app/main/admin/admin-agencies/admin-agencies.component.ts @@ -0,0 +1,22 @@ +import {Component, OnInit} from '@angular/core'; +import {User} from '../../../../@core/firestore-interfaces/user'; +import {AdminUserService} from '../../../@backend/admin-user.service'; + +@Component({ + selector: 'app-admin-agencies', + templateUrl: './admin-agencies.component.html', + styleUrls: ['./admin-agencies.component.scss'] +}) +export class AdminAgenciesComponent implements OnInit { + public agencies: User[] = []; + public isLoading = true; + + constructor(private userService: AdminUserService) { + userService.getAllAgency() + .then(agencies => this.agencies = agencies) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.html b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.html new file mode 100644 index 00000000..d3474155 --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.html @@ -0,0 +1,30 @@ +
    +
    + +
    +
    + +
    +
    +
    + {{agency.name}} + {{agency.email}} +
    +
    +
    + Address + {{agency.address}} + Contact + {{agency.phone}} +
    +
    + + +
    +
    +
    +
    diff --git a/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.scss b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.scss new file mode 100644 index 00000000..aff2f3fa --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.scss @@ -0,0 +1,38 @@ +main { + display: flex; + height: 100%; + flex-direction: column; +} + +.toolbar { + padding: 16px; +} + +.toolbar button { + border-radius: 18px; +} + +.content { + height: 100%; + overflow-y: auto; +} + +.content .item { + max-width: 640px; + margin: 8px 16px 0; +} + +.content .item:last-child { + margin: 8px 16px 16px; +} + +.content .item:first-child, .content .item:only-child { + margin: 16px 16px 0; +} + +.agency-photo { + width: 64px; + height: 64px; + border-radius: 32px; + background-color: grey; +} diff --git a/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.spec.ts b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.spec.ts new file mode 100644 index 00000000..b595d2a2 --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminAgencyMemberRequestComponent} from './admin-agency-member-request.component'; + +describe('AdminAgencyMemberRequestComponent', () => { + let component: AdminAgencyMemberRequestComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminAgencyMemberRequestComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminAgencyMemberRequestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.ts b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.ts new file mode 100644 index 00000000..10acedc8 --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-request/admin-agency-member-request.component.ts @@ -0,0 +1,75 @@ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; +import {switchMap} from 'rxjs/operators'; +import {User} from '../../../../@core/firestore-interfaces/user'; +import {Observable, Subscription} from 'rxjs'; +import {MdcSnackbar} from '@angular-mdc/web'; +import {AdminUserService} from '../../../@backend/admin-user.service'; + +@Component({ + selector: 'app-admin-agency-member-request', + templateUrl: './admin-agency-member-request.component.html', + styleUrls: ['./admin-agency-member-request.component.scss'] +}) +export class AdminAgencyMemberRequestComponent implements OnInit, OnDestroy { + public isLoading = true; + public agency: User; + private userObservable: Observable; + private subscription: Subscription; + + constructor(private router: Router, + private route: ActivatedRoute, + private adminService: AdminUserService, + private snackbar: MdcSnackbar) { + this.userObservable = route.paramMap.pipe( + switchMap(params => { + const id = params.get('id'); + return adminService.getUnverifiedAgencies() + .then(agencies => agencies.find(item => item.userId === id)); + }) + ); + this.subscription = this.userObservable.subscribe(user => { + this.agency = user; + this.isLoading = false; + }); + } + + ngOnInit(): void { + } + + ngOnDestroy(): void { + this.subscription.unsubscribe(); + } + + public accept(id: string) { + if (this.isLoading) { + return; + } + this.isLoading = true; + return this.adminService.verifyUser(id) + .then(() => { + return this.router.navigate(['/admin/agency-member-requests']); + }) + .catch(reason => { + console.error(reason); + this.snackbar.open('Unknown error occurred'); + }) + .finally(() => this.isLoading = false); + } + + public reject(id: string) { + if (this.isLoading) { + return; + } + this.isLoading = true; + return this.adminService.rejectUserApplication(id) + .then(() => { + return this.router.navigate(['/admin/agency-member-requests']); + }) + .catch(reason => { + console.error(reason); + this.snackbar.open('Unknown error occurred'); + }) + .finally(() => this.isLoading = false); + } +} diff --git a/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.html b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.html new file mode 100644 index 00000000..a5a993f1 --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.html @@ -0,0 +1,31 @@ +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + {{agency.name}} + {{agency.email}} +
    + +
    +
    + Address + {{agency.address}} +
    +
    +
    +
    diff --git a/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.scss b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.scss new file mode 100644 index 00000000..aff2f3fa --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.scss @@ -0,0 +1,38 @@ +main { + display: flex; + height: 100%; + flex-direction: column; +} + +.toolbar { + padding: 16px; +} + +.toolbar button { + border-radius: 18px; +} + +.content { + height: 100%; + overflow-y: auto; +} + +.content .item { + max-width: 640px; + margin: 8px 16px 0; +} + +.content .item:last-child { + margin: 8px 16px 16px; +} + +.content .item:first-child, .content .item:only-child { + margin: 16px 16px 0; +} + +.agency-photo { + width: 64px; + height: 64px; + border-radius: 32px; + background-color: grey; +} diff --git a/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.spec.ts b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.spec.ts new file mode 100644 index 00000000..b22efbea --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminAgencyMemberRequestsComponent} from './admin-agency-member-requests.component'; + +describe('AdminAgencyMemberRequestsComponent', () => { + let component: AdminAgencyMemberRequestsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminAgencyMemberRequestsComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminAgencyMemberRequestsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.ts b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.ts new file mode 100644 index 00000000..8565119d --- /dev/null +++ b/hosting/src/app/main/admin/admin-agency-member-requests/admin-agency-member-requests.component.ts @@ -0,0 +1,22 @@ +import {Component, OnInit} from '@angular/core'; +import {User} from '../../../../@core/firestore-interfaces/user'; +import {AdminUserService} from '../../../@backend/admin-user.service'; + +@Component({ + selector: 'app-admin-agency-member-requests', + templateUrl: './admin-agency-member-requests.component.html', + styleUrls: ['./admin-agency-member-requests.component.scss'] +}) +export class AdminAgencyMemberRequestsComponent implements OnInit { + public agencies: User[] = []; + public isLoading = true; + + constructor(private adminService: AdminUserService) { + adminService.getUnverifiedAgencies() + .then(agencies => this.agencies = agencies) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.html b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.html new file mode 100644 index 00000000..4860fc5a --- /dev/null +++ b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.html @@ -0,0 +1,56 @@ +
    +
    + +
    +
    + share +
    + Register as an agency + with your email +
    +
    +
    + + + + Enter the agency name + + + + + + Enter a contact number + + + + + + Enter your email address + Enter a valid email address + + + + + +
    + +
    +
    +
    + Registration successful! + Agency's should receive an email containing password-less link +
    + +
    +
    +
    +
    diff --git a/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.scss b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.scss new file mode 100644 index 00000000..aff2f3fa --- /dev/null +++ b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.scss @@ -0,0 +1,38 @@ +main { + display: flex; + height: 100%; + flex-direction: column; +} + +.toolbar { + padding: 16px; +} + +.toolbar button { + border-radius: 18px; +} + +.content { + height: 100%; + overflow-y: auto; +} + +.content .item { + max-width: 640px; + margin: 8px 16px 0; +} + +.content .item:last-child { + margin: 8px 16px 16px; +} + +.content .item:first-child, .content .item:only-child { + margin: 16px 16px 0; +} + +.agency-photo { + width: 64px; + height: 64px; + border-radius: 32px; + background-color: grey; +} diff --git a/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.spec.ts b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.spec.ts new file mode 100644 index 00000000..8d3dc15c --- /dev/null +++ b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminCreateAgencyComponent} from './admin-create-agency.component'; + +describe('AdminCreateAgencyComponent', () => { + let component: AdminCreateAgencyComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminCreateAgencyComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminCreateAgencyComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.ts b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.ts new file mode 100644 index 00000000..b11fbcd1 --- /dev/null +++ b/hosting/src/app/main/admin/admin-create-agency/admin-create-agency.component.ts @@ -0,0 +1,62 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {Router} from '@angular/router'; +import {MdcSnackbar} from '@angular-mdc/web'; +import {AdminUserService} from '../../../@backend/admin-user.service'; + +@Component({ + selector: 'app-admin-create-agency', + templateUrl: './admin-create-agency.component.html', + styleUrls: ['./admin-create-agency.component.scss'] +}) +export class AdminCreateAgencyComponent implements OnInit { + // noinspection DuplicatedCode + public formGroup = new FormGroup({ + email: new FormControl('', [Validators.required, Validators.email]), + contact: new FormControl('', [Validators.required]), + name: new FormControl('', [Validators.required]), + address: new FormControl('', [Validators.required]), + } + ); + public created = false; + + constructor(private router: Router, + private userService: AdminUserService, + private snackbar: MdcSnackbar) { + } + + ngOnInit(): void { + } + + // noinspection DuplicatedCode + public createUserAccount() { + const emailControl = this.formGroup.controls.email; + const email = emailControl.value; + + const nameControl = this.formGroup.controls.name; + const contactControl = this.formGroup.controls.contact; + const addressControl = this.formGroup.controls.address; + const name = nameControl.value; + const contact = contactControl.value; + const address = addressControl.value; + + emailControl.disable(); + nameControl.disable(); + contactControl.disable(); + addressControl.disable(); + this.userService.createAgency(email, {name, email, address, phone: contact}) + .then(_ => { + this.created = true; + }) + .catch(_ => { + const message = 'Something went wrong.'; + this.snackbar.open(message); + }) + .finally(() => { + emailControl.enable(); + nameControl.enable(); + contactControl.enable(); + addressControl.enable(); + }); + } +} diff --git a/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.html b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.html new file mode 100644 index 00000000..cc65e946 --- /dev/null +++ b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.html @@ -0,0 +1 @@ +In-development diff --git a/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.scss b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.spec.ts b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.spec.ts new file mode 100644 index 00000000..d7236b7c --- /dev/null +++ b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminDashboardComponent} from './admin-dashboard.component'; + +describe('AdminDashboardComponent', () => { + let component: AdminDashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminDashboardComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminDashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.ts b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.ts new file mode 100644 index 00000000..86c664bb --- /dev/null +++ b/hosting/src/app/main/admin/admin-dashboard/admin-dashboard.component.ts @@ -0,0 +1,16 @@ +import {Component, OnInit} from '@angular/core'; + +@Component({ + selector: 'app-admin-dashboard', + templateUrl: './admin-dashboard.component.html', + styleUrls: ['./admin-dashboard.component.scss'] +}) +export class AdminDashboardComponent implements OnInit { + + constructor() { + } + + ngOnInit(): void { + } + +} diff --git a/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.html b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.html new file mode 100644 index 00000000..349c9303 --- /dev/null +++ b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.html @@ -0,0 +1,11 @@ + + + + Delete user? + + + + + + + diff --git a/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.scss b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.spec.ts b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.spec.ts new file mode 100644 index 00000000..832a8578 --- /dev/null +++ b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminDeleteUserDialogComponent} from './admin-delete-user-dialog.component'; + +describe('AdminDeleteUserDialogComponent', () => { + let component: AdminDeleteUserDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminDeleteUserDialogComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminDeleteUserDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.ts b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.ts new file mode 100644 index 00000000..5ee49e27 --- /dev/null +++ b/hosting/src/app/main/admin/admin-delete-user-dialog/admin-delete-user-dialog.component.ts @@ -0,0 +1,15 @@ +import {Component, OnInit} from '@angular/core'; +import {MdcDialogRef} from '@angular-mdc/web'; + +@Component({ + selector: 'app-admin-delete-user-dialog', + templateUrl: './admin-delete-user-dialog.component.html', + styleUrls: ['./admin-delete-user-dialog.component.scss'] +}) +export class AdminDeleteUserDialogComponent implements OnInit { + constructor(private _: MdcDialogRef) { + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/main/admin/admin-users/admin-users.component.html b/hosting/src/app/main/admin/admin-users/admin-users.component.html new file mode 100644 index 00000000..466c15ad --- /dev/null +++ b/hosting/src/app/main/admin/admin-users/admin-users.component.html @@ -0,0 +1,41 @@ +
    +
    + + Loading + + + + + + + + + + + + + + + + + + + + +
    EmailIdentifierRolesVerified
    + {{user.email}} + + {{user.userId}} + + {{parseRoles(user)}} + + {{user.verifiedByAdmin ? 'Yes' : 'No'}} + + +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/admin/admin-users/admin-users.component.scss b/hosting/src/app/main/admin/admin-users/admin-users.component.scss new file mode 100644 index 00000000..2a171521 --- /dev/null +++ b/hosting/src/app/main/admin/admin-users/admin-users.component.scss @@ -0,0 +1,10 @@ +main { + display: flex; + flex-direction: column; + align-items: center; +} + +main .user-item { + width: 100%; + max-width: 920px; +} diff --git a/hosting/src/app/main/admin/admin-users/admin-users.component.spec.ts b/hosting/src/app/main/admin/admin-users/admin-users.component.spec.ts new file mode 100644 index 00000000..dde4f3d4 --- /dev/null +++ b/hosting/src/app/main/admin/admin-users/admin-users.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AdminUsersComponent} from './admin-users.component'; + +describe('AdminUsersComponent', () => { + let component: AdminUsersComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdminUsersComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminUsersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin-users/admin-users.component.ts b/hosting/src/app/main/admin/admin-users/admin-users.component.ts new file mode 100644 index 00000000..83c1461a --- /dev/null +++ b/hosting/src/app/main/admin/admin-users/admin-users.component.ts @@ -0,0 +1,54 @@ +import {Component, OnInit} from '@angular/core'; +import {AdminUserService} from '../../../@backend/admin-user.service'; +import {User} from '../../../../@core/firestore-interfaces/user'; +import {MdcDialog, MdcSnackbar} from '@angular-mdc/web'; +import {AdminDeleteUserDialogComponent} from '../admin-delete-user-dialog/admin-delete-user-dialog.component'; + +@Component({ + selector: 'app-admin-users', + templateUrl: './admin-users.component.html', + styleUrls: ['./admin-users.component.scss'] +}) +export class AdminUsersComponent implements OnInit { + public users: User[] = []; + public isLoading = true; + + constructor(private admin: AdminUserService, private dialog: MdcDialog, private snackbar: MdcSnackbar) { + this.loadUsers(); + } + + ngOnInit(): void { + } + + public parseRoles(user: User): string { + if (!user.roles) { + return ''; + } + return user.roles.join(', '); + } + + public loadUsers() { + this.admin.getAllUser() + .then(users => this.users = users) + .finally(() => this.isLoading = false); + } + + public deleteUser(user: User) { + const ref = this.dialog.open(AdminDeleteUserDialogComponent, {autoFocus: false}); + ref.afterClosed() + .subscribe(result => { + if (result === 'accept') { + this.users.splice(this.users.indexOf(user), 1); + return this.admin.deleteUser(user.userId) + .then(_ => { + this.snackbar.open('User has been deleted'); + }) + .catch(reason => { + console.error(reason); + this.snackbar.open('Unknown error occurred'); + }) + .finally(() => this.loadUsers()); + } + }); + } +} diff --git a/hosting/src/app/main/admin/admin.component.html b/hosting/src/app/main/admin/admin.component.html new file mode 100644 index 00000000..dc8f7e5b --- /dev/null +++ b/hosting/src/app/main/admin/admin.component.html @@ -0,0 +1,28 @@ +
    + + + + + account_tree + Users + + + + + view_list + Agencies + + + group + Member requests {{memberRequestCount ? '(' + memberRequestCount + ')' : ''}} + + + + + +
    + +
    +
    diff --git a/hosting/src/app/main/admin/admin.component.scss b/hosting/src/app/main/admin/admin.component.scss new file mode 100644 index 00000000..c73af7ba --- /dev/null +++ b/hosting/src/app/main/admin/admin.component.scss @@ -0,0 +1,3 @@ +mdc-drawer { + z-index: 0; +} diff --git a/hosting/src/app/main/admin/admin.component.spec.ts b/hosting/src/app/main/admin/admin.component.spec.ts new file mode 100644 index 00000000..dc16ddf5 --- /dev/null +++ b/hosting/src/app/main/admin/admin.component.spec.ts @@ -0,0 +1,25 @@ +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/hosting/src/app/main/admin/admin.component.ts b/hosting/src/app/main/admin/admin.component.ts new file mode 100644 index 00000000..e6297772 --- /dev/null +++ b/hosting/src/app/main/admin/admin.component.ts @@ -0,0 +1,27 @@ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {AdminUserService} from '../../@backend/admin-user.service'; +import {Subscription} from 'rxjs'; + +@Component({ + selector: 'app-admin', + templateUrl: './admin.component.html', + styleUrls: ['./admin.component.scss'] +}) +export class AdminComponent implements OnInit, OnDestroy { + public memberRequestCount: number; + private subscription: Subscription; + + constructor(private adminService: AdminUserService) { + this.subscription = adminService.pendingMemberCount + .subscribe((count: number) => { + this.memberRequestCount = count; + }); + } + + ngOnInit(): void { + } + + ngOnDestroy(): void { + this.subscription.unsubscribe(); + } +} diff --git a/hosting/src/app/main/admin/admin.guard.spec.ts b/hosting/src/app/main/admin/admin.guard.spec.ts new file mode 100644 index 00000000..72af4789 --- /dev/null +++ b/hosting/src/app/main/admin/admin.guard.spec.ts @@ -0,0 +1,16 @@ +import {TestBed} from '@angular/core/testing'; + +import {AdminGuard} from './admin.guard'; + +describe('AdminGuard', () => { + let guard: AdminGuard; + + beforeEach(() => { + TestBed.configureTestingModule({}); + guard = TestBed.inject(AdminGuard); + }); + + it('should be created', () => { + expect(guard).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/admin/admin.guard.ts b/hosting/src/app/main/admin/admin.guard.ts new file mode 100644 index 00000000..2ee39b30 --- /dev/null +++ b/hosting/src/app/main/admin/admin.guard.ts @@ -0,0 +1,24 @@ +import {Injectable} from '@angular/core'; +import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router'; +import {Observable} from 'rxjs'; +import {UserService} from '../../@backend/user.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AdminGuard implements CanActivate { + constructor(private router: Router, private userService: UserService) { + } + + canActivate( + next: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { + return this.userService.iamAdmin() + .then(value => { + if (!value) { + return this.router.navigate(['/']).then(_ => value); + } + return value; + }); + } +} diff --git a/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.html b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.html new file mode 100644 index 00000000..0df6e9c0 --- /dev/null +++ b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.html @@ -0,0 +1,49 @@ +
    +
    +
    +
    + Contributions Received + + + +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    ContributorStatusCreated atItemsTotal units
    {{item.sender.name}} +
    + {{resolveStatusIcon(item)}} +
    +
    {{item.dateCrt.toDate().toLocaleDateString()}}{{summarizeRequiredItems(item)}}{{getCount(item)}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.scss b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.spec.ts b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.spec.ts new file mode 100644 index 00000000..cf088d20 --- /dev/null +++ b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AgencyCompletedContributionsComponent } from './agency-completed-contributions.component'; + +describe('AgencyCompletedContributionsComponent', () => { + let component: AgencyCompletedContributionsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AgencyCompletedContributionsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyCompletedContributionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.ts b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.ts new file mode 100644 index 00000000..4c0cadd7 --- /dev/null +++ b/hosting/src/app/main/agency/agency-completed-contributions/agency-completed-contributions.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit } from '@angular/core'; +import {ContributionDetails} from '../../../../@core/firestore-interfaces/request'; +import {UserContributionService} from '../../../@backend/user-contribution.service'; +import {MdcDialog} from '@angular-mdc/web'; +import {ContributionDialogComponent} from '../agency-incoming-contributions/contribution-dialog/contribution-dialog.component'; + +@Component({ + selector: 'app-agency-completed-contributions', + templateUrl: './agency-completed-contributions.component.html', + styleUrls: ['./agency-completed-contributions.component.scss'] +}) +export class AgencyCompletedContributionsComponent implements OnInit { + public contributions: ContributionDetails[] = []; + public isLoading = true; + + constructor( + private service: UserContributionService, + public dialog: MdcDialog + ) { + service.receivedContributions + .then(value => this.contributions = value) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } + + public summarizeRequiredItems(request: ContributionDetails): string { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.contributionItems.map(item => item.name); + let value: string; + if (itemNames.length === 0) { + value = 'nothing'; + } else if (itemNames.length === 1) { + value = itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + value = itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + value = itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + return value.replace(/^\w/, letter => letter.toUpperCase()); + } + + public resolveStatusIcon(request: ContributionDetails): string { + switch (request.status) { + case 'waiting': + return 'hourglass_empty'; + case 'received': + return 'done_all'; + case 'transporting': + return 'local_shipping'; + default: + return 'home'; + } + } + + public getCount(request: ContributionDetails): number { + let count = 0; + request.contributionItems.forEach(item => count += +item.qty); + return count; + } + + showContribution(item: ContributionDetails) { + const customItem = { + ...item, + readOnly: true + }; + this.dialog.open(ContributionDialogComponent, { + data: customItem + }); + } +} diff --git a/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.html b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.html new file mode 100644 index 00000000..cd762fd8 --- /dev/null +++ b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.html @@ -0,0 +1,48 @@ +
    +
    +
    +
    + Contributions by Me + + + +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + +
    StatusCreated atItemsTotal units
    {{item.sender.name}} +
    + {{resolveStatusIcon(item)}} +
    +
    {{item.dateCrt.toDate().toLocaleDateString()}}{{summarizeRequiredItems(item)}}{{getCount(item)}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.scss b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.spec.ts b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.spec.ts new file mode 100644 index 00000000..913ebced --- /dev/null +++ b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AgencyContributionsComponent } from './agency-contributions.component'; + +describe('AgencyContributionsComponent', () => { + let component: AgencyContributionsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AgencyContributionsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyContributionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.ts b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.ts new file mode 100644 index 00000000..1e198343 --- /dev/null +++ b/hosting/src/app/main/agency/agency-contributions/agency-contributions.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit } from '@angular/core'; +import {ContributionDetails} from '../../../../@core/firestore-interfaces/request'; +import {ContributionDialogComponent} from '../agency-incoming-contributions/contribution-dialog/contribution-dialog.component'; +import {UserContributionService} from '../../../@backend/user-contribution.service'; +import {MdcDialog} from '@angular-mdc/web'; + +@Component({ + selector: 'app-agency-contributions', + templateUrl: './agency-contributions.component.html', + styleUrls: ['./agency-contributions.component.scss'] +}) +export class AgencyContributionsComponent implements OnInit { + public contributions: ContributionDetails[] = []; + public isLoading = true; + + constructor( + private service: UserContributionService, + public dialog: MdcDialog + ) { + service.myContributions + .then(value => this.contributions = value) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } + + public summarizeRequiredItems(request: ContributionDetails): string { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.contributionItems.map(item => item.name); + let value: string; + if (itemNames.length === 0) { + value = 'nothing'; + } else if (itemNames.length === 1) { + value = itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + value = itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + value = itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + return value.replace(/^\w/, letter => letter.toUpperCase()); + } + + public resolveStatusIcon(request: ContributionDetails): string { + switch (request.status) { + case 'waiting': + return 'hourglass_empty'; + case 'received': + return 'done_all'; + case 'transporting': + return 'local_shipping'; + default: + return 'home'; + } + } + + public getCount(request: ContributionDetails): number { + let count = 0; + request.contributionItems.forEach(item => count += +item.qty); + return count; + } + + showContribution(item: ContributionDetails) { + const customItem = { + ...item, + readOnly: true + }; + this.dialog.open(ContributionDialogComponent, { + data: customItem + }); + } +} diff --git a/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.html b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.html new file mode 100644 index 00000000..4be4af81 --- /dev/null +++ b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.html @@ -0,0 +1,32 @@ +
    +
    + +
    +
    +
    + +
    +
    + + + + + + + + + + +
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.scss b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.spec.ts b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.spec.ts new file mode 100644 index 00000000..5d7c9e35 --- /dev/null +++ b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyDetailsEditComponent} from './agency-details-edit.component'; + +describe('AgencyDetailsEditComponent', () => { + let component: AgencyDetailsEditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyDetailsEditComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyDetailsEditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.ts b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.ts new file mode 100644 index 00000000..241aee25 --- /dev/null +++ b/hosting/src/app/main/agency/agency-details-edit/agency-details-edit.component.ts @@ -0,0 +1,63 @@ +import {Component, OnInit} from '@angular/core'; +import {UserService} from '../../../@backend/user.service'; +import {User} from '../../../../@core/firestore-interfaces/user'; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {Router} from '@angular/router'; +import {MdcSnackbar} from '@angular-mdc/web'; + +@Component({ + selector: 'app-agency-details-edit', + templateUrl: './agency-details-edit.component.html', + styleUrls: ['./agency-details-edit.component.scss'] +}) +export class AgencyDetailsEditComponent implements OnInit { + public isLoading = true; + public isUpdating = false; + public formGroup = new FormGroup({ + name: new FormControl(''), + phone: new FormControl('', Validators.required), + address: new FormControl('', Validators.required), + }); + public agency: User; + + constructor(private router: Router, private snackbar: MdcSnackbar, private userService: UserService) { + userService.currentUserInfo() + .then(user => { + this.agency = user; + this.formGroup.controls.name.setValue(user.name); + this.formGroup.controls.phone.setValue(user.phone); + this.formGroup.controls.address.setValue(user.address); + }) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } + + public save() { + if (this.isUpdating) { + return; + } + this.isUpdating = true; + const phoneControl = this.formGroup.controls.phone; + const addressControl = this.formGroup.controls.address; + const phone: string = phoneControl.value; + const address: string = addressControl.value; + phoneControl.disable(); + addressControl.disable(); + this.userService.updateProfile({phone, address}) + .then(_ => { + this.snackbar.open('Agency information updated'); + return this.router.navigate(['/agency/details']); + }) + .catch(reason => { + console.error(reason); + this.snackbar.open('Unknown error occurred'); + }) + .finally(() => { + phoneControl.enable(); + addressControl.enable(); + this.isUpdating = false; + }); + } +} diff --git a/hosting/src/app/main/agency/agency-details/agency-details.component.html b/hosting/src/app/main/agency/agency-details/agency-details.component.html new file mode 100644 index 00000000..eed1a909 --- /dev/null +++ b/hosting/src/app/main/agency/agency-details/agency-details.component.html @@ -0,0 +1,26 @@ + + +
    + + + +
    + {{agency.name}} +
    + email + {{agency.email}} + phone + {{agency.phone}} +
    +
    + +
    +
    +
    +
    + Address + {{agency.address}} +
    +
    diff --git a/hosting/src/app/main/agency/agency-details/agency-details.component.scss b/hosting/src/app/main/agency/agency-details/agency-details.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-details/agency-details.component.spec.ts b/hosting/src/app/main/agency/agency-details/agency-details.component.spec.ts new file mode 100644 index 00000000..addde999 --- /dev/null +++ b/hosting/src/app/main/agency/agency-details/agency-details.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyDetailsComponent} from './agency-details.component'; + +describe('AgencyDetailsComponent', () => { + let component: AgencyDetailsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyDetailsComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-details/agency-details.component.ts b/hosting/src/app/main/agency/agency-details/agency-details.component.ts new file mode 100644 index 00000000..a7b216d5 --- /dev/null +++ b/hosting/src/app/main/agency/agency-details/agency-details.component.ts @@ -0,0 +1,23 @@ +import {Component, OnInit} from '@angular/core'; +import {UserService} from '../../../@backend/user.service'; +import {User} from '../../../../@core/firestore-interfaces/user'; + +@Component({ + selector: 'app-agency-details', + templateUrl: './agency-details.component.html', + styleUrls: ['./agency-details.component.scss'] +}) +export class AgencyDetailsComponent implements OnInit { + public isLoading = true; + public agency: User; + + constructor(service: UserService) { + service.currentUserInfo() + .then(user => this.agency = user) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } + +} diff --git a/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.html b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.html new file mode 100644 index 00000000..06a0cdf7 --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.html @@ -0,0 +1,33 @@ +
    +
    +
    + +
    + Loading data… +
    + + + + + + + + + + + + + + + + +
    NameSubjectDate
    {{item.sender.name}}{{item.subject}}{{item.dateCrt.toDate().toLocaleDateString()}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.scss b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.scss new file mode 100644 index 00000000..a8d1bc73 --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.scss @@ -0,0 +1,6 @@ +td { + cursor: pointer; +} +.unread td { + font-weight: bold; +} diff --git a/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.spec.ts b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.spec.ts new file mode 100644 index 00000000..7da8e843 --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyInboxComponent} from './agency-inbox.component'; + +describe('AgencyInboxComponent', () => { + let component: AgencyInboxComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyInboxComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyInboxComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts new file mode 100644 index 00000000..4be072df --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts @@ -0,0 +1,37 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import {MessageService} from '../../../@backend/message.service'; +import {MessageDocument} from '../../../../@core/firestore-interfaces/messages'; +import {MdcDialog} from '@angular-mdc/web'; +import {MessageDialogComponent} from './message-dialog/message-dialog.component'; + +@Component({ + selector: 'app-agency-inbox', + templateUrl: './agency-inbox.component.html', + styleUrls: ['./agency-inbox.component.scss'] +}) +export class AgencyInboxComponent implements OnInit { + isLoading = false; + messages: MessageDocument[] = []; + + constructor( + private messageService: MessageService, + public dialog: MdcDialog + ) { + messageService.getMessages() + .then(value => { + this.messages = value; + }) + .catch(e => { + console.error(e); + }); + } + + ngOnInit(): void { + } + + showMessage(item: MessageDocument) { + this.dialog.open(MessageDialogComponent, { + data: item + }); + } +} diff --git a/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.html b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.html new file mode 100644 index 00000000..76404c7c --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.html @@ -0,0 +1,26 @@ + + + + + Message + +

    From: {{messageDocument.sender.name}} + + <{{messageDocument.sender.email}} / {{messageDocument.sender.phone}}> + +

    +

    + {{messageDocument.dateCrt.toDate()}} +

    +

    {{messageDocument.content}}

    +
    + + + +
    + + + +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.scss b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.spec.ts b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.spec.ts new file mode 100644 index 00000000..5d486317 --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MessageDialogComponent } from './message-dialog.component'; + +describe('MessageDialogComponent', () => { + let component: MessageDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MessageDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MessageDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.ts b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.ts new file mode 100644 index 00000000..6e56d55c --- /dev/null +++ b/hosting/src/app/main/agency/agency-inbox/message-dialog/message-dialog.component.ts @@ -0,0 +1,31 @@ +import {AfterViewInit, Component, Inject, OnInit} from '@angular/core'; +import {MDC_DIALOG_DATA, MdcDialogRef} from '@angular-mdc/web'; +import {MessageDocument} from '../../../../../@core/firestore-interfaces/messages'; +import {MessageService} from '../../../../@backend/message.service'; + +@Component({ + selector: 'app-message-dialog', + templateUrl: './message-dialog.component.html', + styleUrls: ['./message-dialog.component.scss'] +}) +export class MessageDialogComponent implements OnInit, AfterViewInit { + messageDocument: MessageDocument; + + constructor( + private messageService: MessageService, + public dialogRef: MdcDialogRef, + @Inject(MDC_DIALOG_DATA) public data + ) { + this.messageDocument = data; + } + + ngOnInit(): void { + } + + ngAfterViewInit(): void { + if (this.messageDocument.status === 'unread') { + this.messageService.markAsRead(this.messageDocument.id); + } + } + +} diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.html b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.html new file mode 100644 index 00000000..52f3c905 --- /dev/null +++ b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.html @@ -0,0 +1,49 @@ +
    +
    +
    +
    + Incoming Contributions + + + +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    ContributorStatusCreated atItemsTotal units
    {{item.sender.name}} +
    + {{resolveStatusIcon(item)}} +
    +
    {{item.dateCrt.toDate().toLocaleDateString()}}{{summarizeRequiredItems(item)}}{{getCount(item)}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.scss b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.spec.ts b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.spec.ts new file mode 100644 index 00000000..0c41f849 --- /dev/null +++ b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyIncomingContributionsComponent} from './agency-incoming-contributions.component'; + +describe('AgencyIncomingContributionsComponent', () => { + let component: AgencyIncomingContributionsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyIncomingContributionsComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyIncomingContributionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.ts b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.ts new file mode 100644 index 00000000..940b54fa --- /dev/null +++ b/hosting/src/app/main/agency/agency-incoming-contributions/agency-incoming-contributions.component.ts @@ -0,0 +1,69 @@ +import {Component, OnInit} from '@angular/core'; +import {ContributionDetails} from '../../../../@core/firestore-interfaces/request'; +import {UserContributionService} from '../../../@backend/user-contribution.service'; +import {MdcDialog} from '@angular-mdc/web'; +import {ContributionDialogComponent} from './contribution-dialog/contribution-dialog.component'; + +@Component({ + selector: 'app-agency-incoming-contributions', + templateUrl: './agency-incoming-contributions.component.html', + styleUrls: ['./agency-incoming-contributions.component.scss'] +}) +export class AgencyIncomingContributionsComponent implements OnInit { + public contributions: ContributionDetails[] = []; + public isLoading = true; + + constructor( + private service: UserContributionService, + public dialog: MdcDialog + ) { + service.waitingContributions + .then(value => this.contributions = value) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } + + public summarizeRequiredItems(request: ContributionDetails): string { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.contributionItems.map(item => item.name); + let value: string; + if (itemNames.length === 0) { + value = 'nothing'; + } else if (itemNames.length === 1) { + value = itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + value = itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + value = itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + return value.replace(/^\w/, letter => letter.toUpperCase()); + } + + public resolveStatusIcon(request: ContributionDetails): string { + switch (request.status) { + case 'waiting': + return 'hourglass_empty'; + case 'received': + return 'done_all'; + case 'transporting': + return 'local_shipping'; + default: + return 'home'; + } + } + + public getCount(request: ContributionDetails): number { + let count = 0; + request.contributionItems.forEach(item => count += +item.qty); + return count; + } + + showContribution(item: ContributionDetails) { + this.dialog.open(ContributionDialogComponent, { + data: item + }); + } +} diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.html b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.html new file mode 100644 index 00000000..177fd52c --- /dev/null +++ b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.html @@ -0,0 +1,108 @@ + + + + + Contribution + + +

    From: {{contributionDetails.sender.name}} + + <{{contributionDetails.sender.email}} / {{contributionDetails.sender.phone}}> + +

    +

    + {{contributionDetails.dateCrt.toDate()}} +

    +

    + Note: + {{contributionDetails.remarks}} +

    +

    + To: + + + + + + The request does not exist anymore + + +

    + +
    + + + + + + + + + + + + + compare_arrows + Items to {{readOnly ? 'transact' : 'receive'}} + + + + + + + + + + + + + + + + + + + + + + + +
    ItemContributedRequested + {{readOnly ? 'Received' : 'To Take'}} +
    {{item.value.name}}{{item.value.qtyContributed}}{{item.value.qtyNeed}}{{item.value.qtyReceived}} + +
    +
    + +
    +
    + + + + + + + + + + + + + +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.scss b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.spec.ts b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.spec.ts new file mode 100644 index 00000000..fd595695 --- /dev/null +++ b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ContributionDialogComponent } from './contribution-dialog.component'; + +describe('ContributionDialogComponent', () => { + let component: ContributionDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ContributionDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContributionDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts new file mode 100644 index 00000000..9c94363c --- /dev/null +++ b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts @@ -0,0 +1,156 @@ +import {Component, Inject, OnInit} from '@angular/core'; +import {MessageService} from '../../../../@backend/message.service'; +import {MDC_DIALOG_DATA, MdcDialogRef} from '@angular-mdc/web'; +import {ContributionDetails, ContributionStatus, RequestObject} from '../../../../../@core/firestore-interfaces/request'; +import {RequestService} from '../../../../@backend/request.service'; +import {AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms'; +import {UserContributionService} from '../../../../@backend/user-contribution.service'; + +interface ItemTransaction { + name: string; + qtyNeed: number; + qtyContributed: number; + qtyReceived: number; +}; + +interface ContributionDialogParams extends ContributionDetails{ + readOnly: boolean; +} + +@Component({ + selector: 'app-contribution-dialog', + templateUrl: './contribution-dialog.component.html', + styleUrls: ['./contribution-dialog.component.scss'] +}) +export class ContributionDialogComponent implements OnInit { + showMainContent = false; + loading = true; + request: RequestObject; + contributionDetails: ContributionDialogParams; + readOnly = false; + buttonText = 'Confirm'; + + contributionStatuses = [ + 'transporting', + 'received', + ]; + + contributionForm: FormGroup; + + constructor( + private fb: FormBuilder, + private messageService: MessageService, + private requestService: RequestService, + private userContributionService: UserContributionService, + @Inject(MDC_DIALOG_DATA) public data + ) { + this.contributionDetails = data; + if (this.contributionDetails.readOnly) { + this.readOnly = this.contributionDetails.readOnly; + } + + this.contributionForm = this.fb.group({ + status: this.contributionDetails.status, + items: this.fb.array( []), + }); + + requestService.getRequest(this.contributionDetails.requestId) + .then(value => { + const items = this.contributionDetails.contributionItems; + const itemsReceived = this.contributionDetails.contributionItemsReceived; + + value.requestItems.forEach(item => { + let qtyContributed = 0; + const itemContributed = items.find(itemContributed => { + return itemContributed.name === item.name; + }); + if (itemContributed) { + qtyContributed = itemContributed.qty; + } + + + let qtyReceived = 0; + if (itemsReceived) { + const itemReceived = itemsReceived.find(itemReceived => { + return itemReceived.name === item.name; + }); + if (itemReceived) { + qtyReceived = itemReceived.qty; + } + } + + const itemTransaction = { + name: item.name, + qtyNeed: item.qtyNeed, + qtyContributed, + qtyReceived: [qtyReceived, [Validators.min(0), Validators.max(qtyContributed)]] + }; + const formGroup = this.fb.group(itemTransaction); + if (this.readOnly) { + formGroup.disable(); + } + this.items.push(formGroup); + }); + + this.request = value; + }) + .catch(e => { + }) + .finally(() => { + this.loading = false; + this.showMainContent = true; + }); + } + + get items(): FormArray { + return this.contributionForm.get('items') as FormArray; + } + + ngOnInit(): void { + } + + submit() { + if (this.contributionForm.valid) { + const rawValues = this.contributionForm.getRawValue(); + + this.loading = true; + const itemsReceived = []; + rawValues.items.forEach(item => { + itemsReceived.push({ + name: item.name, + qty: item.qtyReceived + }); + }); + + if (rawValues.status === 'received') { + this.userContributionService.receiveContribution( + this.contributionDetails.id, + { + items: itemsReceived + } + ) + .then(() => { + alert('Item received'); + this.loading = false; + }); + } else if (rawValues.status === 'transporting') { + this.userContributionService.transportContribution( + this.contributionDetails.id, + { + items: itemsReceived + } + ) + .then(() => { + alert('Item in transport'); + this.loading = false; + }); + } + } + } + + onQtyReceivedChange($event: any, item: AbstractControl) { + if (!item.valid) { + item.get('qtyReceived').setValue(item.get('qtyContributed').value); + } + } +} diff --git a/hosting/src/app/main/agency/agency-overview/agency-overview.component.html b/hosting/src/app/main/agency/agency-overview/agency-overview.component.html new file mode 100644 index 00000000..9fbe9c98 --- /dev/null +++ b/hosting/src/app/main/agency/agency-overview/agency-overview.component.html @@ -0,0 +1,90 @@ +
    +
    + +
    +
    +
    + + +
    + + + + + +
    +
    + Request help + Let the community knows those in needs +
    +
    +
    +
    + + + + + +
    +
    + Contribute + Provide supports to our medical teams +
    +
    +
    +
    +
    + + +
    +
    +
    + Overall request progress + Completion: {{sum > 0 ? (progress + '%') : 'Unavailable'}} +
    +
    + Loading chart… +
    + + + +
    + No data + There's not much going on here right now. + +
    +
    + + +
    +
    +
    +
    + + No requested items + + + + query_builder + Getting ready + + + {{item.name}} + + +
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-overview/agency-overview.component.scss b/hosting/src/app/main/agency/agency-overview/agency-overview.component.scss new file mode 100644 index 00000000..0fcc9be2 --- /dev/null +++ b/hosting/src/app/main/agency/agency-overview/agency-overview.component.scss @@ -0,0 +1,23 @@ +@use '@material/theme'; + +@mixin rgba-background($hexcolor, $opacity) { + background-color: $hexcolor; + background-color: rgba($hexcolor, $opacity); +} + +$request-help--color: #03a9f4; + +.request-help--card { + flex: 1; + //background: #81d4fa; + @include rgba-background($request-help--color, 0.5); +} + +.request-help--text { + display: flex; + flex-direction: column; + padding: 16px 24px; + color: white; + //background: #03a9f4; + background: $request-help--color; +} diff --git a/hosting/src/app/main/agency/agency-overview/agency-overview.component.spec.ts b/hosting/src/app/main/agency/agency-overview/agency-overview.component.spec.ts new file mode 100644 index 00000000..d0a2d966 --- /dev/null +++ b/hosting/src/app/main/agency/agency-overview/agency-overview.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyOverviewComponent} from './agency-overview.component'; + +describe('AgencyOverviewComponent', () => { + let component: AgencyOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyOverviewComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-overview/agency-overview.component.ts b/hosting/src/app/main/agency/agency-overview/agency-overview.component.ts new file mode 100644 index 00000000..e872442a --- /dev/null +++ b/hosting/src/app/main/agency/agency-overview/agency-overview.component.ts @@ -0,0 +1,49 @@ +import {Component, OnInit} from '@angular/core'; +import {UserRequestService} from '../../../@backend/user-request.service'; +import {RequestItem} from '../../../../@core/firestore-interfaces/request'; + +@Component({ + selector: 'app-agency-overview', + templateUrl: './agency-overview.component.html', + styleUrls: ['./agency-overview.component.scss'] +}) +export class AgencyOverviewComponent implements OnInit { + public isLoading = true; + public isLoadingRequestItems = true; + public requestedItems: RequestItem[] = []; + public requestedItemsChart: Array> = []; + public requestedItemsChartColumns: string[] = ['Item type', 'Received', 'Demands']; + public chartOptions: google.visualization.BarChartOptions = { + legend: {position: 'bottom'}, + isStacked: 'absolute', + colors: ['#03a9f4', '#81d4fa'], + }; + public sum = 0; + public filled = 0; + public progress = 0; + + constructor(private requestService: UserRequestService) { + requestService.requestItemsOverview + .then(items => { + this.requestedItems = items.sort((first, second) => { + return (second.qtyNeed - second.qtyFilled) - (first.qtyNeed - first.qtyFilled); + }); + this.requestedItems.forEach(item => { + this.sum += +item.qtyNeed; + this.filled += +item.qtyFilled; + }); + if (this.sum > 0) { + this.progress = Math.floor((this.filled / this.sum) * 100); + } else { + this.progress = 0; + } + this.requestedItems.forEach(item => { + this.requestedItemsChart.push([item.name, +item.qtyFilled, (item.qtyNeed - item.qtyFilled)]); + }); + }) + .finally(() => this.isLoadingRequestItems = false); + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html new file mode 100644 index 00000000..4f30d6cb --- /dev/null +++ b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html @@ -0,0 +1,61 @@ +
    +
    + +
    +
    +
    +
    + +
    + Add new contribution request + +
    + +
    + + + + {{req.name}} + + + +
    +
    +
    + + Click on item to add + +
    + + + arrow_left + {{item}} + + + arrow_left + {{item}} + + + +
    + + + + + + Enter item and press 'Enter' to add your own item + + +
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.scss b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.spec.ts b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.spec.ts new file mode 100644 index 00000000..78dbb76f --- /dev/null +++ b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyRequestContributionComponent} from './agency-request-contribution.component'; + +describe('AgencyRequestContributionComponent', () => { + let component: AgencyRequestContributionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyRequestContributionComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyRequestContributionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts new file mode 100644 index 00000000..591879cf --- /dev/null +++ b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts @@ -0,0 +1,132 @@ +import {Component, OnInit} from '@angular/core'; +import {User} from '../../../../@core/firestore-interfaces/user'; +import {UserService} from '../../../@backend/user.service'; +import {RequestItem} from '../../../../@core/firestore-interfaces/request'; +import {UserRequestService} from '../../../@backend/user-request.service'; +import {RequestContribution} from '../../../../@core/requestContribution'; +import {MdcSnackbar} from '@angular-mdc/web'; +import {Router} from '@angular/router'; + +@Component({ + selector: 'app-agency-request-contribution', + templateUrl: './agency-request-contribution.component.html', + styleUrls: ['./agency-request-contribution.component.scss'] +}) +export class AgencyRequestContributionComponent implements OnInit { + public agency: User; + public isLoading = true; + public isPublishing = false; + public itemRequests: RequestItem[] = []; + + public availableItems: string[] = []; + public addedItems: string[] = []; + + public isLoadingCustomItems = true; + public customItems: string[] = []; + + public currentCustomInput = ''; + public isPublishAllowed = false; + + public newRequest: RequestContribution; + + constructor(private router: Router, + private userService: UserService, + private requestService: UserRequestService, + private snackbar: MdcSnackbar) { + userService.currentUserInfo() + .then(agency => { + this.agency = agency; + this.newRequest = new RequestContribution({user: agency.userId}); + }) + .finally(() => this.isLoading = false); + this.availableItems.push(...requestService.defaultRequestItemNames); + this.availableItems = this.availableItems.sort(); + + this.requestService.itemsByOtherUsers + .then(items => { + this.availableItems.push(...items); + this.availableItems = this.availableItems.sort(); + }) + .finally(() => this.isLoadingCustomItems = false); + } + + ngOnInit(): void { + } + + public add(item: string) { + item = item.trim(); + if (item === '') { + return; + } + if (this.addedItems.indexOf(item) > -1) { + return; + } + if (this.availableItems.indexOf(item) > -1) { + this.availableItems.splice(this.availableItems.indexOf(item), 1); + } + this.addedItems.push(item); + this.itemRequests.push({name: item, qtyFilled: 0, qtyNeed: 0}); + this.availableItems = this.availableItems.sort(); + } + + public remove(request: RequestItem) { + this.addedItems.splice(this.addedItems.indexOf(request.name), 1); + if (this.availableItems.indexOf(request.name) < 0) { + this.availableItems.push(request.name); + } + this.itemRequests.splice(this.itemRequests.indexOf(request), 1); + this.availableItems = this.availableItems.sort(); + this.resolvePublishIsAllowed(); + } + + public addCustom(item: string) { + this.add(item); + } + + public addFromInput(event: KeyboardEvent) { + if (event.key === 'Enter') { + this.addCustom(this.currentCustomInput); + } + } + + public onCustomInput(value: string) { + this.currentCustomInput = value; + } + + public updateItem(item: RequestItem, count: number) { + item.qtyNeed = count; + this.resolvePublishIsAllowed(); + } + + public resolvePublishIsAllowed() { + if (this.itemRequests.length === 0) { + return this.isPublishAllowed = false; + } + const summaryItem = this.itemRequests.reduce((previousValue, currentValue) => { + return {name: '', qtyNeed: previousValue.qtyNeed + currentValue.qtyNeed, qtyFilled: 0}; + }); + this.isPublishAllowed = summaryItem.qtyNeed > 0; + } + + public publish() { + if (this.isPublishing) { + return; + } + this.isPublishing = true; + this.itemRequests.forEach((req) => { + this.newRequest.need(req.name, req.qtyNeed); + }); + return this.requestService.createRequest(this.newRequest) + .then(_ => { + this.snackbar.open('Request published'); + return this.router.navigate(['/agency']); + }) + .catch(reason => { + console.error(reason); + return this.snackbar.open('Unknown error occurred'); + }) + .finally(() => { + this.isPublishing = false; + }); + } +} diff --git a/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.html b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.html new file mode 100644 index 00000000..712d5700 --- /dev/null +++ b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.html @@ -0,0 +1,12 @@ + + + + Delete this request? + This action cannot be undone. + + + + + + + diff --git a/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.scss b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.spec.ts b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.spec.ts new file mode 100644 index 00000000..4444da65 --- /dev/null +++ b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyRequestDeleteDialogComponent} from './agency-request-delete-dialog.component'; + +describe('AgencyRequestDeleteDialogComponent', () => { + let component: AgencyRequestDeleteDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyRequestDeleteDialogComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyRequestDeleteDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.ts b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.ts new file mode 100644 index 00000000..50f83ba3 --- /dev/null +++ b/hosting/src/app/main/agency/agency-request-delete-dialog/agency-request-delete-dialog.component.ts @@ -0,0 +1,16 @@ +import {Component, OnInit} from '@angular/core'; + +@Component({ + selector: 'app-agency-request-delete-dialog', + templateUrl: './agency-request-delete-dialog.component.html', + styleUrls: ['./agency-request-delete-dialog.component.scss'] +}) +export class AgencyRequestDeleteDialogComponent implements OnInit { + + constructor() { + } + + ngOnInit(): void { + } + +} diff --git a/hosting/src/app/main/agency/agency-request/agency-request.component.html b/hosting/src/app/main/agency/agency-request/agency-request.component.html new file mode 100644 index 00000000..3c090739 --- /dev/null +++ b/hosting/src/app/main/agency/agency-request/agency-request.component.html @@ -0,0 +1,141 @@ +
    +
    +
    + +
    +
    +
    +
    + Request progress + Completion: {{sum > 0 ? (progress + '%') : 'Unavailable'}} +
    + +
    + + + + + done_all + Mark as complete + + + delete_forever + Delete forever + + + +
    +
    +
    + Loading chart… +
    + + + +
    + No data + There's not much going on here right now. + +
    +
    + + +
    +
    +
    +
    +
    + + No requested items + + + + query_builder + Getting ready + + + + + {{item.name}} + + +
    + +
    +
    + Select requested item to view or update details +
    +
    +
    + + {{itemName}} +
    + + + + +
    +
    +
    +
    +
    + Contributions to this request + + + + + + + + + + + + + + + + + + + + + +
    ContributorStatusCreated atItemsTotal units
    {{item.sender.name}} +
    + {{resolveStatusIcon(item)}} +
    +
    {{item.dateCrt.toDate().toLocaleDateString()}}{{summarizeRequiredItems(item)}}{{getCount(item)}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-request/agency-request.component.scss b/hosting/src/app/main/agency/agency-request/agency-request.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-request/agency-request.component.spec.ts b/hosting/src/app/main/agency/agency-request/agency-request.component.spec.ts new file mode 100644 index 00000000..9e1b3a9a --- /dev/null +++ b/hosting/src/app/main/agency/agency-request/agency-request.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyRequestComponent} from './agency-request.component'; + +describe('AgencyRequestComponent', () => { + let component: AgencyRequestComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyRequestComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyRequestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-request/agency-request.component.ts b/hosting/src/app/main/agency/agency-request/agency-request.component.ts new file mode 100644 index 00000000..5f69186f --- /dev/null +++ b/hosting/src/app/main/agency/agency-request/agency-request.component.ts @@ -0,0 +1,191 @@ +import {Component, OnInit} from '@angular/core'; +import {ContributionDetails, RequestItem, RequestObject} from '../../../../@core/firestore-interfaces/request'; +import {RequestService} from '../../../@backend/request.service'; +import {ActivatedRoute, Router} from '@angular/router'; +import {UserRequestService} from '../../../@backend/user-request.service'; +import {RequestContribution} from '../../../../@core/requestContribution'; +import {MdcDialog, MdcSnackbar} from '@angular-mdc/web'; +import {AgencyRequestDeleteDialogComponent} from '../agency-request-delete-dialog/agency-request-delete-dialog.component'; +import {UserContributionService} from '../../../@backend/user-contribution.service'; + +@Component({ + selector: 'app-agency-request', + templateUrl: './agency-request.component.html', + styleUrls: ['./agency-request.component.scss'] +}) +export class AgencyRequestComponent implements OnInit { + public isLoading = true; + public isLoadingRequestItems = true; + public requestedItems: RequestItem[] = []; + public requestedItemsChart: Array> = []; + public requestedItemsChartColumns: string[] = ['Item type', 'Received', 'Demands']; + public chartOptions: google.visualization.BarChartOptions = { + legend: {position: 'bottom'}, + isStacked: 'absolute', + colors: ['#03a9f4', '#81d4fa'], + }; + public sum = 0; + public filled = 0; + public progress = 0; + public isUpdating = false; + + public itemName?: string; + public itemReceivedCount = 0; + public itemRequiredCount = 0; + + public itemChart: Array> = []; + public itemChartColumns: string[] = ['Completed', 'Not completed']; + public itemOptions: google.visualization.PieChartOptions = { + legend: 'none', + colors: ['#03a9f4', '#81d4fa'], + }; + public currentId: string; + public currentReq: RequestObject; + public isDeleting = false; + public contributions: ContributionDetails[] = []; + public isLoadingContributions = true; + + constructor(private reqService: RequestService, + private requestService: UserRequestService, + private contrib: UserContributionService, + private snackbar: MdcSnackbar, + private dialog: MdcDialog, + private router: Router, + private route: ActivatedRoute) { + route.paramMap.subscribe(params => { + this.currentId = params.get('id'); + this.load(); + }); + } + + ngOnInit(): void { + } + + public getItem(name: string): RequestItem { + return this.requestedItems.find(item => { + return item.name === name; + }); + } + + public showSpecificItem(name: string) { + this.clearSpecific(); + const item = this.getItem(name); + this.itemReceivedCount = item.qtyFilled; + this.itemRequiredCount = item.qtyNeed; + this.itemChart.push(['Received', +item.qtyFilled]); + this.itemChart.push(['Demands', (+item.qtyNeed - item.qtyFilled)]); + this.itemName = name; + } + + public update() { + this.isUpdating = true; + this.currentReq.requestItems = this.requestedItems; + this.requestService + .updateRequest(new RequestContribution(this.currentReq)) + .finally(() => this.reloadData()); + } + + public clearSpecific() { + this.itemName = null; + this.itemChart = []; + this.isUpdating = false; + } + + public reloadData() { + this.clearSpecific(); + this.load(); + } + + public summarizeRequiredItems(request: ContributionDetails): string { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.contributionItems.map(item => item.name); + let value: string; + if (itemNames.length === 0) { + value = 'nothing'; + } else if (itemNames.length === 1) { + value = itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + value = itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + value = itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + return value.replace(/^\w/, letter => letter.toUpperCase()); + } + + public resolveStatusIcon(request: ContributionDetails): string { + switch (request.status) { + case 'waiting': + return 'hourglass_empty'; + case 'received': + return 'done_all'; + case 'transporting': + return 'local_shipping'; + default: + return 'home'; + } + } + + public delete() { + const dialogRef = this.dialog.open(AgencyRequestDeleteDialogComponent, {autoFocus: false}); + dialogRef.afterClosed() + .subscribe(response => { + if (response === 'accept') { + this.clearSpecific(); + if (this.isDeleting) { + return; + } + this.isDeleting = true; + this.requestService.deleteRequest(this.currentId) + .then(_ => { + this.snackbar.open('Request deleted'); + return this.router.navigate(['/agency/requests']); + }) + .catch(reason => { + console.error(reason); + this.snackbar.open('Delete failed'); + }) + .finally(() => this.isDeleting = false); + } + }); + } + + public getCount(request: ContributionDetails): number { + let count = 0; + request.contributionItems.forEach(item => count += +item.qty); + return count; + } + + private load() { + this.isLoadingRequestItems = true; + this.requestedItemsChart = []; + this.loadContributions(); + this.reqService.getRequest(this.currentId) + .then(request => { + this.currentReq = request; + this.requestedItems = request.requestItems.sort((first, second) => { + return (second.qtyNeed - second.qtyFilled) - (first.qtyNeed - first.qtyFilled); + }); + this.requestedItems.forEach(item => { + this.sum += +item.qtyNeed; + this.filled += +item.qtyFilled; + }); + if (this.sum > 0) { + this.progress = Math.floor((this.filled / this.sum) * 100); + } else { + this.progress = 0; + } + this.requestedItems.forEach(item => { + this.requestedItemsChart.push([item.name, +item.qtyFilled, (item.qtyNeed - item.qtyFilled)]); + }); + }) + .finally(() => this.isLoadingRequestItems = false); + } + + private loadContributions() { + this.isLoadingContributions = true; + this.contrib.getContributionsByRequestId(this.currentId) + .then(value => this.contributions = value) + .finally(() => this.isLoadingContributions = false); + } +} diff --git a/hosting/src/app/main/agency/agency-requests/agency-requests.component.html b/hosting/src/app/main/agency/agency-requests/agency-requests.component.html new file mode 100644 index 00000000..7e5e29e6 --- /dev/null +++ b/hosting/src/app/main/agency/agency-requests/agency-requests.component.html @@ -0,0 +1,55 @@ +
    +
    +
    +
    + My Requests + + + + +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + +
    StatusCreated atItemsNeed / Fulfilled
    +
    + {{item.meta.icon}} +
    +
    {{item.request.dateCrt.toDate().toLocaleDateString()}}{{item.meta.summary}}{{item.meta.qtyNeed}} / {{item.meta.qtyFilled}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-requests/agency-requests.component.scss b/hosting/src/app/main/agency/agency-requests/agency-requests.component.scss new file mode 100644 index 00000000..5975b987 --- /dev/null +++ b/hosting/src/app/main/agency/agency-requests/agency-requests.component.scss @@ -0,0 +1,32 @@ +.toolbar { + padding: 16px; +} + +.toolbar button { + border-radius: 18px; +} + +.content { + height: 100%; + overflow-y: auto; +} + +.content .item { + max-width: 640px; + margin: 8px 16px 0; +} + +.content .item:last-child { + margin: 8px 16px 16px; +} + +.content .item:first-child, .content .item:only-child { + margin: 16px 16px 0; +} + +.agency-photo { + width: 64px; + height: 64px; + border-radius: 32px; + background-color: grey; +} diff --git a/hosting/src/app/main/agency/agency-requests/agency-requests.component.spec.ts b/hosting/src/app/main/agency/agency-requests/agency-requests.component.spec.ts new file mode 100644 index 00000000..f4d1a718 --- /dev/null +++ b/hosting/src/app/main/agency/agency-requests/agency-requests.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyRequestsComponent} from './agency-requests.component'; + +describe('AgencyRequestsComponent', () => { + let component: AgencyRequestsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyRequestsComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyRequestsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-requests/agency-requests.component.ts b/hosting/src/app/main/agency/agency-requests/agency-requests.component.ts new file mode 100644 index 00000000..63fb2cb3 --- /dev/null +++ b/hosting/src/app/main/agency/agency-requests/agency-requests.component.ts @@ -0,0 +1,96 @@ +import {Component, OnInit} from '@angular/core'; +import {RequestItem, RequestObject} from '../../../../@core/firestore-interfaces/request'; +import {UserRequestService} from '../../../@backend/user-request.service'; + +@Component({ + selector: 'app-agency-requests', + templateUrl: './agency-requests.component.html', + styleUrls: ['./agency-requests.component.scss'] +}) +export class AgencyRequestsComponent implements OnInit { + public requests: RequestObject[] = []; + public isLoading = true; + requestsPrecomputed = []; + + constructor(private requestService: UserRequestService) { + this.refreshContent(); + } + + ngOnInit(): void { + } + + public asListString(items: RequestItem[]): string { + return items.map(value => { + return `${value.qtyNeed - value.qtyFilled} ${value.name}`; + }).join(', '); + } + + public delete(request: RequestObject) { + this.requests.splice(this.requests.indexOf(request), 1); + return this.requestService.deleteRequest(request.id) + .finally(() => this.refreshContent()); + } + + public refreshContent() { + this.requestService.getRequests() + .then(reqs => { + this.requestsPrecomputed = []; + reqs.forEach(request => { + const icon = this.resolveStatusIcon(request); + const summary = this.summarizeRequiredItems(request); + const qtyNeed = this.getCountNeeded(request); + const qtyFilled = this.getCountFilled(request); + this.requestsPrecomputed.push({ + request, + meta: { + icon, + summary, + qtyNeed, + qtyFilled + } + }); + }); + }) + .finally(() => this.isLoading = false); + } + + resolveStatusIcon(request: RequestObject) { + switch (request.status) { + case 'active': + return 'hourglass_empty'; + case 'complete': + return 'done_all'; + default: + return 'home'; + } + } + + summarizeRequiredItems(request: RequestObject) { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.requestItems.map(item => item.name); + let value: string; + if (itemNames.length === 0) { + value = 'nothing'; + } else if (itemNames.length === 1) { + value = itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + value = itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + value = itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + return value.replace(/^\w/, letter => letter.toUpperCase()); + } + + getCountNeeded(request: RequestObject) { + let count = 0; + request.requestItems.forEach(item => count += +item.qtyNeed); + return count; + } + + getCountFilled(request: RequestObject) { + let count = 0; + request.requestItems.forEach(item => count += +item.qtyFilled); + return count; + } +} diff --git a/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.html b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.html new file mode 100644 index 00000000..a0354084 --- /dev/null +++ b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.html @@ -0,0 +1,49 @@ +
    +
    +
    +
    + Contributions in Transport + + + +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    ContributorStatusCreated atItemsTotal units
    {{item.sender.name}} +
    + {{resolveStatusIcon(item)}} +
    +
    {{item.dateCrt.toDate().toLocaleDateString()}}{{summarizeRequiredItems(item)}}{{getCount(item)}}
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.scss b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.spec.ts b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.spec.ts new file mode 100644 index 00000000..d88ae347 --- /dev/null +++ b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AgencyTransportingContributionsComponent } from './agency-transporting-contributions.component'; + +describe('AgencyTransportingContributionsComponent', () => { + let component: AgencyTransportingContributionsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AgencyTransportingContributionsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyTransportingContributionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.ts b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.ts new file mode 100644 index 00000000..973d147c --- /dev/null +++ b/hosting/src/app/main/agency/agency-transporting-contributions/agency-transporting-contributions.component.ts @@ -0,0 +1,69 @@ +import { Component, OnInit } from '@angular/core'; +import {ContributionDetails} from '../../../../@core/firestore-interfaces/request'; +import {UserContributionService} from '../../../@backend/user-contribution.service'; +import {MdcDialog} from '@angular-mdc/web'; +import {ContributionDialogComponent} from '../agency-incoming-contributions/contribution-dialog/contribution-dialog.component'; + +@Component({ + selector: 'app-agency-transporting-contributions', + templateUrl: './agency-transporting-contributions.component.html', + styleUrls: ['./agency-transporting-contributions.component.scss'] +}) +export class AgencyTransportingContributionsComponent implements OnInit { + public contributions: ContributionDetails[] = []; + public isLoading = true; + + constructor( + private service: UserContributionService, + public dialog: MdcDialog + ) { + service.transportingContributions + .then(value => this.contributions = value) + .finally(() => this.isLoading = false); + } + + ngOnInit(): void { + } + + public summarizeRequiredItems(request: ContributionDetails): string { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.contributionItems.map(item => item.name); + let value: string; + if (itemNames.length === 0) { + value = 'nothing'; + } else if (itemNames.length === 1) { + value = itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + value = itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + value = itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + return value.replace(/^\w/, letter => letter.toUpperCase()); + } + + public resolveStatusIcon(request: ContributionDetails): string { + switch (request.status) { + case 'waiting': + return 'hourglass_empty'; + case 'received': + return 'done_all'; + case 'transporting': + return 'local_shipping'; + default: + return 'home'; + } + } + + public getCount(request: ContributionDetails): number { + let count = 0; + request.contributionItems.forEach(item => count += +item.qty); + return count; + } + + showContribution(item: ContributionDetails) { + this.dialog.open(ContributionDialogComponent, { + data: item + }); + } +} diff --git a/hosting/src/app/main/agency/agency.component.html b/hosting/src/app/main/agency/agency.component.html new file mode 100644 index 00000000..1b59cbe4 --- /dev/null +++ b/hosting/src/app/main/agency/agency.component.html @@ -0,0 +1,58 @@ +
    + + + + + view_quilt + Overview + + + inbox + Inbox {{inboxUnreadCount > 0 ? '(' + inboxUnreadCount + ')' : ''}} + + + + + + + + + Requests + + + assignment + All requests + + + Contributions + + + assignment_returned + Incoming {{incomingContributionCount > 0 ? '(' + incomingContributionCount + ')' : ''}} + + + rv_hookup + In Transport + + + assignment_turned_in + Received + + + assignment + My Contributions + + + + +
    + +
    +
    diff --git a/hosting/src/app/main/agency/agency.component.scss b/hosting/src/app/main/agency/agency.component.scss new file mode 100644 index 00000000..c73af7ba --- /dev/null +++ b/hosting/src/app/main/agency/agency.component.scss @@ -0,0 +1,3 @@ +mdc-drawer { + z-index: 0; +} diff --git a/hosting/src/app/main/agency/agency.component.spec.ts b/hosting/src/app/main/agency/agency.component.spec.ts new file mode 100644 index 00000000..5e2b29c3 --- /dev/null +++ b/hosting/src/app/main/agency/agency.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyComponent} from './agency.component'; + +describe('AgencyComponent', () => { + let component: AgencyComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency.component.ts b/hosting/src/app/main/agency/agency.component.ts new file mode 100644 index 00000000..d1182969 --- /dev/null +++ b/hosting/src/app/main/agency/agency.component.ts @@ -0,0 +1,29 @@ +import {Component, OnInit} from '@angular/core'; +import {UserRequestService} from '../../@backend/user-request.service'; +import {MessageService} from '../../@backend/message.service'; + +@Component({ + selector: 'app-agency', + templateUrl: './agency.component.html', + styleUrls: ['./agency.component.scss'] +}) +export class AgencyComponent implements OnInit { + public inboxUnreadCount = 0; + public incomingContributionCount = 0; + + constructor( + private requestService: UserRequestService, + private messageService: MessageService + ) { + messageService.unreadMessagesCount().then(observable => { + observable.subscribe(count => this.inboxUnreadCount = count); + }); + requestService.incomingContributionsCount() + .then(observable => { + observable.subscribe(count => this.incomingContributionCount = count); + }); + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/main/home/contribute/contribute.component.html b/hosting/src/app/main/home/contribute/contribute.component.html new file mode 100644 index 00000000..557f749c --- /dev/null +++ b/hosting/src/app/main/home/contribute/contribute.component.html @@ -0,0 +1,57 @@ +
    +
    + +
    +
    +
    +
    + +
    + Receiver + {{request.userInfo.name}} + Address +
    {{request.userInfo.address}}
    +
    + +
    + Contributor +
    + + + + + + + + + + + + + +
    +
    +
    + + + + {{item.name}} + + + + +
    +
    +
    +
    diff --git a/hosting/src/app/main/home/contribute/contribute.component.scss b/hosting/src/app/main/home/contribute/contribute.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/home/contribute/contribute.component.spec.ts b/hosting/src/app/main/home/contribute/contribute.component.spec.ts new file mode 100644 index 00000000..e6a384e9 --- /dev/null +++ b/hosting/src/app/main/home/contribute/contribute.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {ContributeComponent} from './contribute.component'; + +describe('ContributeComponent', () => { + let component: ContributeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ContributeComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContributeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/home/contribute/contribute.component.ts b/hosting/src/app/main/home/contribute/contribute.component.ts new file mode 100644 index 00000000..e4d6f899 --- /dev/null +++ b/hosting/src/app/main/home/contribute/contribute.component.ts @@ -0,0 +1,112 @@ +import {Component, OnInit} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; +import {RequestService} from '../../../@backend/request.service'; +import {ContributionItem, RequestObject} from '../../../../@core/firestore-interfaces/request'; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {ContribsService} from '../../../@backend/contribs.service'; +import {UserService} from '../../../@backend/user.service'; + +@Component({ + selector: 'app-contribute', + templateUrl: './contribute.component.html', + styleUrls: ['./contribute.component.scss'] +}) +export class ContributeComponent implements OnInit { + public request: RequestObject; + public isLoadingRequest = true; + public formGroup = new FormGroup({ + name: new FormControl('', Validators.required), + email: new FormControl('', [Validators.required, Validators.email]), + phone: new FormControl('', Validators.required), + note: new FormControl(''), + }); + public items: ContributionItem[] = []; + public isPublishing = false; + private currentId: string; + public isAutoFilled = true; + + constructor(private router: Router, + private route: ActivatedRoute, + private reqService: RequestService, + private userService: UserService, + private contrib: ContribsService) { + route.queryParamMap.subscribe(params => { + this.currentId = params.get('reqId'); + this.load(); + }); + } + + ngOnInit(): void { + } + + public load() { + const nameControl = this.formGroup.controls.name; + const emailControl = this.formGroup.controls.email; + const phoneControl = this.formGroup.controls.phone; + this.userService.currentUserInfo() + .then(user => { + if (user) { + nameControl.setValue(user.name); + emailControl.setValue(user.email); + phoneControl.setValue(user.phone); + nameControl.disable(); + emailControl.disable(); + phoneControl.disable(); + this.isAutoFilled = true; + } else { + nameControl.enable(); + emailControl.enable(); + phoneControl.enable(); + this.isAutoFilled = false; + } + }); + this.reqService.getRequest(this.currentId) + .then(request => this.request = request) + .finally(() => this.isLoadingRequest = false); + } + + public publish() { + if (this.isPublishing) { + return; + } + this.isPublishing = true; + const nameControl = this.formGroup.controls.name; + const emailControl = this.formGroup.controls.email; + const phoneControl = this.formGroup.controls.phone; + const noteControl = this.formGroup.controls.note; + const name: string = nameControl.value; + const email: string = emailControl.value; + const phone: string = phoneControl.value; + const note: string = noteControl.value; + + nameControl.disable(); + emailControl.disable(); + phoneControl.disable(); + noteControl.disable(); + + return this.contrib.contributeToRequest(this.currentId, { + sender: {name, phone, email}, + contributionItems: this.items, + remarks: note, + }) + .then(_ => { + return this.router.navigate(['/']); + }) + .finally(() => { + nameControl.enable(); + emailControl.enable(); + phoneControl.enable(); + noteControl.enable(); + this.isPublishing = false; + }); + } + + public updateItem(itemName: string, count: number) { + const item = this.items.find(selected => selected.name === itemName); + if (item) { + item.qty = +count; + } else { + this.items.push({name: itemName, qty: count}); + } + } +} diff --git a/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.html b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.html new file mode 100644 index 00000000..bb7df1fe --- /dev/null +++ b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.html @@ -0,0 +1,36 @@ +
    + +
    + + + + + + + + Enter your password + Password too weak + + + + + + + Repeat password + + +
    +
    +
    diff --git a/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.scss b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.scss new file mode 100644 index 00000000..a7d5cae3 --- /dev/null +++ b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.scss @@ -0,0 +1,5 @@ +main { + display: flex; + height: 100%; + flex-direction: column; +} diff --git a/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.spec.ts b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.spec.ts new file mode 100644 index 00000000..5fab7888 --- /dev/null +++ b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {FinishEmailAuthComponent} from './finish-email-auth.component'; + +describe('FinishEmailAuthComponent', () => { + let component: FinishEmailAuthComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [FinishEmailAuthComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FinishEmailAuthComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.ts b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.ts new file mode 100644 index 00000000..2422a60c --- /dev/null +++ b/hosting/src/app/main/home/finish-email-auth/finish-email-auth.component.ts @@ -0,0 +1,72 @@ +import {Component, Inject, OnInit} from '@angular/core'; +import {FormControl, FormGroup, ValidatorFn, Validators} from '@angular/forms'; +import {FirebaseService} from '../../../firebase.service'; +import {Router} from '@angular/router'; +import {DOCUMENT} from '@angular/common'; +import {MdcSnackbar} from '@angular-mdc/web'; + +function matchingPasswords(control1: string, control2: string): ValidatorFn { + return (group: FormGroup): { [key: string]: any } | null => { + const value1 = group.controls[control1].value; + const value2 = group.controls[control2].value; + return value1 !== value2 ? {mismatch: true} : null; + }; +} + +@Component({ + selector: 'app-finish-email-auth', + templateUrl: './finish-email-auth.component.html', + styleUrls: ['./finish-email-auth.component.scss'] +}) +export class FinishEmailAuthComponent implements OnInit { + public formGroup = new FormGroup({ + email: new FormControl('', [Validators.required, Validators.email]), + password: new FormControl('', [Validators.required, Validators.minLength(8)]), + confirmPassword: new FormControl('', [Validators.required]), + }, matchingPasswords('password', 'confirmPassword')); + public showPassword = false; + private fullUrl: string; + + constructor(private router: Router, private firebase: FirebaseService, @Inject(DOCUMENT) private document: Document, + private snackbar: MdcSnackbar) { + this.fullUrl = document.location.protocol + '//' + document.location.hostname + router.url; + } + + ngOnInit(): void { + } + + public togglePasswordVisibility() { + this.showPassword = !this.showPassword; + } + + public next() { + const emailControl = this.formGroup.controls.email; + const passwordControl = this.formGroup.controls.password; + const confirmPasswordControl = this.formGroup.controls.confirmPassword; + + const email: string = emailControl.value; + const password = passwordControl.value; + + emailControl.disable(); + passwordControl.disable(); + confirmPasswordControl.disable(); + + return this.firebase.auth() + .signInWithEmailLink(email, this.fullUrl) + .then(credential => { + return credential.user.updatePassword(password); + }) + .then(_ => { + return this.router.navigate(['/']); + }) + .catch(reason => { + console.error(reason); + this.snackbar.open('Unknown error occurred'); + }) + .finally(() => { + emailControl.enable(); + passwordControl.enable(); + confirmPasswordControl.enable(); + }); + } +} diff --git a/hosting/src/app/main/home/home.component.html b/hosting/src/app/main/home/home.component.html new file mode 100644 index 00000000..0680b43f --- /dev/null +++ b/hosting/src/app/main/home/home.component.html @@ -0,0 +1 @@ + diff --git a/hosting/src/app/main/home/home.component.scss b/hosting/src/app/main/home/home.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/home/home.component.spec.ts b/hosting/src/app/main/home/home.component.spec.ts new file mode 100644 index 00000000..482c23cf --- /dev/null +++ b/hosting/src/app/main/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {HomeComponent} from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [HomeComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/home/home.component.ts b/hosting/src/app/main/home/home.component.ts new file mode 100644 index 00000000..eaa9e903 --- /dev/null +++ b/hosting/src/app/main/home/home.component.ts @@ -0,0 +1,16 @@ +import {Component, OnInit} from '@angular/core'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent implements OnInit { + + constructor() { + } + + ngOnInit(): void { + } + +} diff --git a/hosting/src/app/main/home/overview/overview.component.html b/hosting/src/app/main/home/overview/overview.component.html new file mode 100644 index 00000000..404eaa48 --- /dev/null +++ b/hosting/src/app/main/home/overview/overview.component.html @@ -0,0 +1,107 @@ +
    +
    +
    +
    +
    +
    +
    +
    +
    + {{joinedAgencies}} + Agencies joined +
    +
    + {{activeRequests}} + Active requests +
    +
    + {{completedRequests}} + Completed requests +
    +
    + Contribute to help one another + COVID-19 – our common enemy + + With the rising need of medical supplies amidst this COVID-19 pandemic, + we understand the challenge in providing our front-liners the critical items they lack. + We want to enable them to publish their needs easily so we can work together to supply + their needs as soon as possible. + +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    + Overview +
    +
    +
    +
    +
    + {{item.name}} + +
    + + + + + {{agency.name}} + + +

    No Result

    +
    + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + Recent requests +
    +
    +
    +
    +
    +
    + +
    +
    + + +

    + add See all requests +

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/home/overview/overview.component.scss b/hosting/src/app/main/home/overview/overview.component.scss new file mode 100644 index 00000000..75392bcc --- /dev/null +++ b/hosting/src/app/main/home/overview/overview.component.scss @@ -0,0 +1,67 @@ +@use '@material/button'; + +.demo-card__media { + background-image: url(https://material-components-web.appspot.com/images/1-1.jpg); +} + +.demo-card__media--16-9 { + background-image: url(https://material-components-web.appspot.com/images/16-9.jpg); +} + + +.curr-page { + max-width: 70vw; + width: 70vw; + //overflow-y: auto; + //height: 100vh; + color: #37474f; + //padding:10vw; +} + +.pg-landing { + text-align: center; + //height: 30vh; + //height: 15vh; +} + +.pg-landing-content-container { + text-align: center; + +} + +.overview-container { + //padding-top: 20vh; + align-items: center; +} + +.line-divider { + //padding-top:30vh; + padding-top: 5vh; +} + +.see-more--card { + background-color: transparent; + //background-color: rgba(0, 0, 0, 0.04); + box-shadow: none; +} + +.see-more--card-action { + height: 200px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.request-item--info { + cursor: pointer; +} + +//noinspection SassScssUnresolvedMixin +.mdc-button.intro { + @include button.ink-color(white); + @include button.outline-color(white); + @include button.outline-width(2px, 24px); + @include button.height(56px); + @include button.shape-radius(28px); +} diff --git a/hosting/src/app/main/home/overview/overview.component.spec.ts b/hosting/src/app/main/home/overview/overview.component.spec.ts new file mode 100644 index 00000000..6638f2e6 --- /dev/null +++ b/hosting/src/app/main/home/overview/overview.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {OverviewComponent} from './overview.component'; + +describe('OverviewComponent', () => { + let component: OverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [OverviewComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/home/overview/overview.component.ts b/hosting/src/app/main/home/overview/overview.component.ts new file mode 100644 index 00000000..c98295db --- /dev/null +++ b/hosting/src/app/main/home/overview/overview.component.ts @@ -0,0 +1,73 @@ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {RequestItem, RequestObject} from '../../../../@core/firestore-interfaces/request'; +import {AgenciesNeedItemResult, StatsService} from '../../../@backend/stats.service'; +import {RequestService} from '../../../@backend/request.service'; +import {MdcMenu} from '@angular-mdc/web'; + +@Component({ + selector: 'app-overview', + templateUrl: './overview.component.html', + styleUrls: ['./overview.component.scss'] +}) +export class OverviewComponent implements OnInit, OnDestroy { + joinedAgencies = '—'; + completedRequests = '—'; + activeRequests = '—'; + + isLoading = true; + topRequests: RequestObject[] = [ + {user: null}, {user: null}, {user: null}, {user: null}, {user: null} + ]; + public requestItems: RequestItem[] = []; + + loadingAgencies = true; + agencies: AgenciesNeedItemResult[] = []; + + constructor( + private requestService: RequestService, + public stats: StatsService, + ) { + stats.requestItemsSnapshot.subscribe(items => this.requestItems = items); + + this.requestService.topIncompleteRequests(5).then(value => { + this.topRequests = value; + this.isLoading = false; + }).catch(e => { + console.error(e); + }); + + stats.agencyJoined.subscribe(value => { + this.joinedAgencies = value.toString(); + }); + + stats.completeRequest.subscribe(value => { + this.completedRequests = value.toString(); + }); + + stats.activeRequest.subscribe(value => { + this.activeRequests = value.toString(); + }); + } + + ngOnInit(): void { + } + + ngOnDestroy(): void { + } + + displayAgency(name: string, cardMenu: MdcMenu) { + cardMenu.open = !cardMenu.open; + this.loadingAgencies = true; + this.agencies = []; + this.stats.getAgenciesNeedItem(name) + .then(agencies => { + this.agencies = agencies; + }) + .catch(e => { + console.error(e); + }) + .finally(() => { + this.loadingAgencies = false; + }); + } +} diff --git a/hosting/src/app/main/home/public-requests/public-requests.component.html b/hosting/src/app/main/home/public-requests/public-requests.component.html new file mode 100644 index 00000000..b96d9053 --- /dev/null +++ b/hosting/src/app/main/home/public-requests/public-requests.component.html @@ -0,0 +1,79 @@ +
    +
    +
    +
    +
    + + Loading agencies… + + + + + + + + + + + + + + + +
    + + + +
    + +
    + How do you help? + You can aid those who are relentlessly fighting the COVID-19 pandemic by contributing some of your supplies. +
    + +
    + How do you deliver your items? + You are advised to contact the receiver or agency of your choice to negotiate transportation. +
    +
    + +
    + Register an account + + If you are representing your agency or organisation, + especially those in the medical institutions such as hospitals, clinics, + and nursing homes, you may express your needs by joining us. + + +
    +
    +
    +
    +
    +
    +
    diff --git a/hosting/src/app/main/home/public-requests/public-requests.component.scss b/hosting/src/app/main/home/public-requests/public-requests.component.scss new file mode 100644 index 00000000..a793f794 --- /dev/null +++ b/hosting/src/app/main/home/public-requests/public-requests.component.scss @@ -0,0 +1,7 @@ +.item { + margin-top: 8px; +} + +.item:first-child { + margin-top: 0; +} diff --git a/hosting/src/app/main/home/public-requests/public-requests.component.spec.ts b/hosting/src/app/main/home/public-requests/public-requests.component.spec.ts new file mode 100644 index 00000000..c41ee71b --- /dev/null +++ b/hosting/src/app/main/home/public-requests/public-requests.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {PublicRequestsComponent} from './public-requests.component'; + +describe('AgenciesComponent', () => { + let component: PublicRequestsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [PublicRequestsComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PublicRequestsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/home/public-requests/public-requests.component.ts b/hosting/src/app/main/home/public-requests/public-requests.component.ts new file mode 100644 index 00000000..ff198e3a --- /dev/null +++ b/hosting/src/app/main/home/public-requests/public-requests.component.ts @@ -0,0 +1,47 @@ +import {Component, OnInit} from '@angular/core'; +import {RequestService} from '../../../@backend/request.service'; +import {RequestObject} from '../../../../@core/firestore-interfaces/request'; + +@Component({ + selector: 'app-agencies', + templateUrl: './public-requests.component.html', + styleUrls: ['./public-requests.component.scss'] +}) +export class PublicRequestsComponent implements OnInit { + public isLoadingRequests = true; + public requests: RequestObject[] = []; + + constructor(service: RequestService) { + service.getRequests() + .then(requests => this.requests = requests) + .finally(() => this.isLoadingRequests = false); + } + + ngOnInit(): void { + } + + public summarizeRequiredItems(request: RequestObject): string { + const maxCount = 2; + const upperMaxCount = 3; + const itemNames = request.requestItems.map(item => item.name); + if (itemNames.length === 0) { + return 'nothing'; + } else if (itemNames.length === 1) { + return itemNames.join(', ').toLowerCase(); + } else if (itemNames.length <= upperMaxCount) { + return itemNames.slice(0, itemNames.length - 1).join(', ').toLowerCase() + ` and ${itemNames[itemNames.length - 1].toLowerCase()}`; + } else { + return itemNames.slice(0, maxCount).join(', ').toLowerCase() + `, and ${itemNames.length - maxCount} more`; + } + } + + public getProgress(request: RequestObject): string { + let received = 0; + let required = 0; + request.requestItems.forEach(item => { + received += +item.qtyFilled; + required += +item.qtyNeed; + }); + return Math.floor(received / required * 100).toString() + '%'; + } +} diff --git a/hosting/src/app/main/main-routing.module.ts b/hosting/src/app/main/main-routing.module.ts new file mode 100644 index 00000000..51428b0f --- /dev/null +++ b/hosting/src/app/main/main-routing.module.ts @@ -0,0 +1,125 @@ +import {NgModule} from '@angular/core'; +import {RouterModule, Routes} from '@angular/router'; +import {MainComponent} from './main.component'; +import {HomeComponent} from './home/home.component'; +import {OverviewComponent} from './home/overview/overview.component'; +import {AdminComponent} from './admin/admin.component'; +import {AdminDashboardComponent} from './admin/admin-dashboard/admin-dashboard.component'; +import {AdminAgenciesComponent} from './admin/admin-agencies/admin-agencies.component'; +import {AdminUsersComponent} from './admin/admin-users/admin-users.component'; +import {AdminAgencyMemberRequestsComponent} from './admin/admin-agency-member-requests/admin-agency-member-requests.component'; +import {AdminGuard} from './admin/admin.guard'; +import {AdminAgencyMemberRequestComponent} from './admin/admin-agency-member-request/admin-agency-member-request.component'; +import {AgencyComponent} from './agency/agency.component'; +import {AgencyOverviewComponent} from './agency/agency-overview/agency-overview.component'; +import {AgencyRequestsComponent} from './agency/agency-requests/agency-requests.component'; +import {AgencyDetailsComponent} from './agency/agency-details/agency-details.component'; +import {AgencyRequestContributionComponent} from './agency/agency-request-contribution/agency-request-contribution.component'; +import {AdminCreateAgencyComponent} from './admin/admin-create-agency/admin-create-agency.component'; +import {FinishEmailAuthComponent} from './home/finish-email-auth/finish-email-auth.component'; +import {AgencyRequestComponent} from './agency/agency-request/agency-request.component'; +import {AgencyDetailsEditComponent} from './agency/agency-details-edit/agency-details-edit.component'; +import {ContributeComponent} from './home/contribute/contribute.component'; +import {PublicRequestsComponent} from './home/public-requests/public-requests.component'; +import {AgencyIncomingContributionsComponent} from './agency/agency-incoming-contributions/agency-incoming-contributions.component'; +import {AgencyInboxComponent} from './agency/agency-inbox/agency-inbox.component'; +import {AgencyCompletedContributionsComponent} from './agency/agency-completed-contributions/agency-completed-contributions.component'; +import {AgencyTransportingContributionsComponent} from './agency/agency-transporting-contributions/agency-transporting-contributions.component'; +import {AgencyContributionsComponent} from './agency/agency-contributions/agency-contributions.component'; +import {LearnMoreComponent} from '../my-components/learn-more/learn-more.component'; + + +const routes: Routes = [ + { + path: '', + component: MainComponent, + children: [ + { + path: '', + component: HomeComponent, + children: [ + {path: '', component: OverviewComponent}, + {path: 'finish-sign-up', component: FinishEmailAuthComponent}, + {path: 'contribute', component: ContributeComponent}, + {path: 'comm-requests', component: PublicRequestsComponent}, + ] + }, + { + path: 'learn-more', + component: LearnMoreComponent + }, + { + path: 'admin', + canActivate: [AdminGuard], + component: AdminComponent, + children: [ + {path: '', component: AdminDashboardComponent}, + {path: 'users', component: AdminUsersComponent}, + {path: 'agencies', component: AdminAgenciesComponent}, + {path: 'create-agency', component: AdminCreateAgencyComponent}, + { + path: 'agency-member-requests', + children: [ + {path: '', component: AdminAgencyMemberRequestsComponent}, + {path: ':id', component: AdminAgencyMemberRequestComponent}, + ] + }, + ] + }, + { + path: 'agency', + component: AgencyComponent, + children: [ + {path: '', component: AgencyOverviewComponent}, + { + path: 'details', + children: [ + {path: '', component: AgencyDetailsComponent}, + {path: 'edit', component: AgencyDetailsEditComponent}, + ] + }, + { + path: 'requests', + children: [ + {path: '', component: AgencyRequestsComponent}, + {path: ':id', component: AgencyRequestComponent}, + ] + }, + { + path: 'in-contributions', + children: [ + {path: '', component: AgencyIncomingContributionsComponent}, + ] + }, + { + path: 'transporting-contributions', + children: [ + {path: '', component: AgencyTransportingContributionsComponent}, + ] + }, + { + path: 'done-contributions', + children: [ + {path: '', component: AgencyCompletedContributionsComponent}, + ] + }, + { + path: 'inbox', + children: [ + {path: '', component: AgencyInboxComponent}, + ] + }, + {path: 'request-contribution', component: AgencyRequestContributionComponent}, + {path: 'my-contributions', component: AgencyContributionsComponent}, + ] + }, + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class MainRoutingModule { +} diff --git a/hosting/src/app/main/main.component.html b/hosting/src/app/main/main.component.html new file mode 100644 index 00000000..1ef54f26 --- /dev/null +++ b/hosting/src/app/main/main.component.html @@ -0,0 +1,57 @@ +
    + + + + + + + + + + + + + + + +
    + + + Profile details + Sign out + + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    diff --git a/hosting/src/app/main/main.component.scss b/hosting/src/app/main/main.component.scss new file mode 100644 index 00000000..4427f936 --- /dev/null +++ b/hosting/src/app/main/main.component.scss @@ -0,0 +1,33 @@ +@use '@material/top-app-bar/_index' as top-app-bar; +@use '@material/tab/_index' as tab; +@use '@material/tab-indicator/_index' as tab-indicator; +@use '@material/ripple/_index' as ripple; + +mdc-drawer { + z-index: 0; +} + +//noinspection SassScssUnresolvedMixin +mdc-top-app-bar { + @include top-app-bar.fill-color-accessible(white); + @include top-app-bar.icon-ink-color(rgba(0, 0, 0, 0.87)); +} + +.mdc-top-app-bar__section--align-end button { + margin-left: 8px; +} + +.mdc-top-app-bar__section button, .mdc-top-app-bar__section--align-start button { + margin-right: 8px; +} + +.drawer { + display: none; +} + +//noinspection SassScssUnresolvedMixin +@media only screen and (min-width: 960px) { + .drawer { + display: block; + } +} diff --git a/hosting/src/app/main/main.component.spec.ts b/hosting/src/app/main/main.component.spec.ts new file mode 100644 index 00000000..49da7783 --- /dev/null +++ b/hosting/src/app/main/main.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {MainComponent} from './main.component'; + +describe('MainComponent', () => { + let component: MainComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [MainComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MainComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/main.component.ts b/hosting/src/app/main/main.component.ts new file mode 100644 index 00000000..c41bb083 --- /dev/null +++ b/hosting/src/app/main/main.component.ts @@ -0,0 +1,58 @@ +import {Component, OnInit} from '@angular/core'; +import {AuthService} from '../auth/auth.service'; +import {UserService} from '../@backend/user.service'; +import {Router} from '@angular/router'; +import {User} from '../../@core/firestore-interfaces/user'; +import {UserRequestService} from '../@backend/user-request.service'; +import {MessageService} from '../@backend/message.service'; +import FirebaseUser = firebase.User; + +@Component({ + selector: 'app-main', + templateUrl: './main.component.html', + styleUrls: ['./main.component.scss'] +}) +export class MainComponent implements OnInit { + public isLoading = true; + public isAdmin = false; + public user: FirebaseUser; + public isAdminVerified = false; + public agency: User; + public contributionCount = 0; + public inboxCount = 0; + + constructor(private router: Router, + private auth: AuthService, + private userService: UserService, + private userRequestService: UserRequestService, + private messageService: MessageService) { + messageService.unreadMessagesCount() + .then(observable => { + observable.subscribe(count => this.inboxCount = count); + }); + userRequestService.incomingContributionsCount() + .then(observable => { + observable.subscribe(count => this.contributionCount = count); + }); + auth.getCurrentUser() + .then(user => this.user = user) + .finally(() => this.isLoading = false); + userService.iamAdmin() + .then(value => this.isAdmin = value); + userService.iamVerifiedByAdmin() + .then(isVerified => this.isAdminVerified = isVerified); + userService.currentUserInfo() + .then(agency => this.agency = agency); + } + + ngOnInit(): void { + } + + public signOut() { + return this.auth.signOut() + .then(_ => { + return this.router.navigate(['/']); + }) + .finally(() => this.user = null); + } +} diff --git a/hosting/src/app/main/main.module.ts b/hosting/src/app/main/main.module.ts new file mode 100644 index 00000000..8d7fbdc6 --- /dev/null +++ b/hosting/src/app/main/main.module.ts @@ -0,0 +1,82 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; + +import {MainRoutingModule} from './main-routing.module'; +import {MainComponent} from './main.component'; +import {HomeComponent} from './home/home.component'; +import {MaterialModule} from '../material.module'; +import {OverviewComponent} from './home/overview/overview.component'; +import {AdminComponent} from './admin/admin.component'; +import {AdminDashboardComponent} from './admin/admin-dashboard/admin-dashboard.component'; +import {AdminAgenciesComponent} from './admin/admin-agencies/admin-agencies.component'; +import {AdminUsersComponent} from './admin/admin-users/admin-users.component'; +import {AdminAgencyMemberRequestsComponent} from './admin/admin-agency-member-requests/admin-agency-member-requests.component'; +import {AdminAgencyMemberRequestComponent} from './admin/admin-agency-member-request/admin-agency-member-request.component'; +import {AgencyComponent} from './agency/agency.component'; +import {AgencyOverviewComponent} from './agency/agency-overview/agency-overview.component'; +import {AgencyDetailsComponent} from './agency/agency-details/agency-details.component'; +import {AgencyRequestsComponent} from './agency/agency-requests/agency-requests.component'; +import {AgencyRequestContributionComponent} from './agency/agency-request-contribution/agency-request-contribution.component'; +import {AdminCreateAgencyComponent} from './admin/admin-create-agency/admin-create-agency.component'; +import {ReactiveFormsModule} from '@angular/forms'; +import {FinishEmailAuthComponent} from './home/finish-email-auth/finish-email-auth.component'; +import {MyComponentsModule} from '../my-components/my-components.module'; +import {GoogleChartsModule} from 'angular-google-charts'; +import {AdminDeleteUserDialogComponent} from './admin/admin-delete-user-dialog/admin-delete-user-dialog.component'; +import {AgencyRequestComponent} from './agency/agency-request/agency-request.component'; +import {AgencyDetailsEditComponent} from './agency/agency-details-edit/agency-details-edit.component'; +import {AgencyRequestDeleteDialogComponent} from './agency/agency-request-delete-dialog/agency-request-delete-dialog.component'; +import {ContributeComponent} from './home/contribute/contribute.component'; +import {PublicRequestsComponent} from './home/public-requests/public-requests.component'; +import {AgencyIncomingContributionsComponent} from './agency/agency-incoming-contributions/agency-incoming-contributions.component'; +import {AgencyInboxComponent} from './agency/agency-inbox/agency-inbox.component'; +import {MessageDialogComponent} from './agency/agency-inbox/message-dialog/message-dialog.component'; +import {ContributionDialogComponent} from './agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component'; +import {AgencyTransportingContributionsComponent} from './agency/agency-transporting-contributions/agency-transporting-contributions.component'; +import {AgencyCompletedContributionsComponent} from './agency/agency-completed-contributions/agency-completed-contributions.component'; +import { AgencyContributionsComponent } from './agency/agency-contributions/agency-contributions.component'; + + +@NgModule({ + declarations: [ + MainComponent, + HomeComponent, + OverviewComponent, + AdminComponent, + AdminDashboardComponent, + AdminAgenciesComponent, + AdminUsersComponent, + AdminAgencyMemberRequestsComponent, + AdminAgencyMemberRequestComponent, + AgencyComponent, + AgencyOverviewComponent, + AgencyDetailsComponent, + AgencyRequestsComponent, + AgencyRequestContributionComponent, + AdminCreateAgencyComponent, + FinishEmailAuthComponent, + AdminDeleteUserDialogComponent, + AgencyRequestComponent, + AgencyDetailsEditComponent, + AgencyRequestDeleteDialogComponent, + ContributeComponent, + PublicRequestsComponent, + AgencyIncomingContributionsComponent, + AgencyInboxComponent, + MessageDialogComponent, + ContributionDialogComponent, + AgencyTransportingContributionsComponent, + AgencyCompletedContributionsComponent, + AgencyContributionsComponent, + ], + imports: [ + CommonModule, + MaterialModule, + MainRoutingModule, + ReactiveFormsModule, + MyComponentsModule, + GoogleChartsModule, + ] +}) +export class MainModule { +} diff --git a/hosting/src/app/material.module.ts b/hosting/src/app/material.module.ts new file mode 100644 index 00000000..016e034b --- /dev/null +++ b/hosting/src/app/material.module.ts @@ -0,0 +1,49 @@ +import {NgModule} from '@angular/core'; +import { + MdcButtonModule, + MdcCardModule, MdcCheckboxModule, MdcChipsModule, + MDCDataTableModule, + MdcDialogModule, + MdcDrawerModule, + MdcElevationModule, + MdcFabModule, + MdcFormFieldModule, + MdcIconButtonModule, + MdcIconModule, + MdcLinearProgressModule, + MdcListModule, + MdcMenuModule, + MdcMenuSurfaceModule, MdcRadioModule, MdcSliderModule, + MdcSnackbarModule, MdcTextFieldModule, + MdcTopAppBarModule, + MdcTypographyModule, +} from '@angular-mdc/web'; + + +@NgModule({ + exports: [ + MdcButtonModule, + MdcCardModule, + MDCDataTableModule, + MdcDialogModule, + MdcDrawerModule, + MdcElevationModule, + MdcFormFieldModule, + MdcIconButtonModule, + MdcIconModule, + MdcLinearProgressModule, + MdcListModule, + MdcMenuModule, + MdcMenuSurfaceModule, + MdcSnackbarModule, + MdcTextFieldModule, + MdcTopAppBarModule, + MdcTypographyModule, + MdcFabModule, + MdcRadioModule, + MdcSliderModule, + MdcChipsModule + ] +}) +export class MaterialModule { +} diff --git a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html new file mode 100644 index 00000000..bb9897a0 --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html @@ -0,0 +1,71 @@ + + +
    +
    + +
    +
    +
    +

    {{requestObject.userInfo.name}}

    + {{requestObject.dateCrt.toDate().toLocaleString()}} +
    + + + + + + +
    + +
    + +
    + {{progressBarValue >= 1 ? 'Completed' : (itemProgress) + '% complete'}} + +
    +
    + + +
    + +
    + + + No item + +
    +
    +
    + +
    +

    Loading

    +
    + +
    +
    + +
    +
    + + + diff --git a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.scss b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.scss new file mode 100644 index 00000000..4ef2de7b --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.scss @@ -0,0 +1,7 @@ +.demo-card__title { + margin: 0; +} + +.demo-card__left { + text-align: right; +} diff --git a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.spec.ts b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.spec.ts new file mode 100644 index 00000000..a03ef00c --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardRequestContribComponent } from './card-request-contrib.component'; + +describe('CardRequestContribComponent', () => { + let component: CardRequestContribComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CardRequestContribComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CardRequestContribComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts new file mode 100644 index 00000000..c6522c97 --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts @@ -0,0 +1,77 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {RequestItem, RequestObject} from '../../../@core/firestore-interfaces/request'; +import {MdcDialog} from '@angular-mdc/web'; +import {LeaveMessageDialogComponent} from '../leave-message-dialog/leave-message-dialog.component'; + +@Component({ + selector: 'app-card-request-contrib', + templateUrl: './card-request-contrib.component.html', + styleUrls: ['./card-request-contrib.component.scss'] +}) +export class CardRequestContribComponent implements OnInit { + @Input() mini = false; + @Input() requestObject: RequestObject; + emptyRequestItem: RequestItem = { + name: '—', + qtyFilled: 0, + qtyNeed: 0 + }; + + private _viewAll = false; + itemProgress = '0'; + imgUrl = ''; + + imgUrls = { + 'Ra2HX9HXLNQhg62ciBhQXO17IsD3': './assets/dummy-images/1200px-Kuala_Lumpur_Hospital.jpg', + 'zjNFhfMvM9h2SsLPazwius5YWGS2': './assets/dummy-images/120319 CaroMont Regional Medical Center 712.jpg', + 'uFkBX9ZaHwQFER9zFIrSNbCc9xf2': './assets/dummy-images/cleveland-clinic-florida-wellington.jpg', + 'zO8pqEXZTKNO0Qo8RFfBHALrPQM2': './assets/dummy-images/photo-1519494026892-80bbd2d6fd0d.jpg', + '46x8Ydl8uYf4VMCVtvIaKQzvrSO2': './assets/dummy-images/ming.jpg' + }; + progressBarValue = 0; + + constructor( + private mdcDialog: MdcDialog + ) { + } + + get viewAll(): boolean { + return this._viewAll; + } + + set viewAll(value: boolean) { + this._viewAll = value; + } + + toggleViewAll() { + this.viewAll = !this.viewAll; + } + + ngOnInit(): void { + const progress = this.getProgress(this.requestObject); + this.itemProgress = (progress * 100).toFixed(2) || '0'; + this.progressBarValue = progress; + console.info(this.itemProgress); + this.imgUrl = this.imgUrls[this.requestObject.user] || ''; + } + + + public getProgress(request: RequestObject): number { + let received = 0; + let required = 0; + if (request && request.requestItems){ + request.requestItems.forEach(item => { + received += +item.qtyFilled; + required += +item.qtyNeed; + }); + } + return received / required; + } + + + leaveMessageDialog(requestObject: RequestObject) { + this.mdcDialog.open(LeaveMessageDialogComponent, { + data: requestObject + }); + } +} diff --git a/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.html b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.html new file mode 100644 index 00000000..0b3f0fbd --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.html @@ -0,0 +1,4 @@ +
    + {{requestItem.name}} + {{requestItem.qtyFilled}} / {{requestItem.qtyNeed}} +
    diff --git a/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.scss b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.spec.ts b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.spec.ts new file mode 100644 index 00000000..69a5901e --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RequestItemComponent } from './request-item.component'; + +describe('RequestItemComponent', () => { + let component: RequestItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RequestItemComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RequestItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.ts b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.ts new file mode 100644 index 00000000..da6d9d52 --- /dev/null +++ b/hosting/src/app/my-components/card-request-contrib/request-item/request-item.component.ts @@ -0,0 +1,17 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {RequestItem} from '../../../../@core/firestore-interfaces/request'; + +@Component({ + selector: 'app-request-item', + templateUrl: './request-item.component.html', + styleUrls: ['./request-item.component.scss'] +}) +export class RequestItemComponent implements OnInit { + @Input() requestItem: RequestItem; + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/hosting/src/app/my-components/learn-more/learn-more.component.html b/hosting/src/app/my-components/learn-more/learn-more.component.html new file mode 100644 index 00000000..9ecca01d --- /dev/null +++ b/hosting/src/app/my-components/learn-more/learn-more.component.html @@ -0,0 +1,46 @@ +
    +
    +
    +
    + Contribute to help one another + How it works +
    + + +
    +
    +
    + + + Medical institutions + + +
    +
    + +
    +
    + Request items +
    +
    + + + +
    + +
    + +
    + + + Supplier / Donor + + + +
    +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/hosting/src/app/my-components/learn-more/learn-more.component.scss b/hosting/src/app/my-components/learn-more/learn-more.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/my-components/learn-more/learn-more.component.spec.ts b/hosting/src/app/my-components/learn-more/learn-more.component.spec.ts new file mode 100644 index 00000000..974db01a --- /dev/null +++ b/hosting/src/app/my-components/learn-more/learn-more.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LearnMoreComponent } from './learn-more.component'; + +describe('LearnMoreComponent', () => { + let component: LearnMoreComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LearnMoreComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LearnMoreComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/my-components/learn-more/learn-more.component.ts b/hosting/src/app/my-components/learn-more/learn-more.component.ts new file mode 100644 index 00000000..3843d546 --- /dev/null +++ b/hosting/src/app/my-components/learn-more/learn-more.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-learn-more', + templateUrl: './learn-more.component.html', + styleUrls: ['./learn-more.component.scss'] +}) +export class LearnMoreComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.html b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.html new file mode 100644 index 00000000..05181473 --- /dev/null +++ b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.html @@ -0,0 +1,54 @@ + + + + Leave Message + + +

    {{request.userInfo.name}}

    +

    {{request.userInfo.address}}

    +

    {{request.userInfo.phone}} / {{request.userInfo.email}}

    +
    + +
    + + + *Required + + + + *Required + + + + *Required + + + + *Required + + + + *Required + +
    +
    + +

    Message sent

    +
    + + + + + + + +
    + + + + + +
    +
    +
    diff --git a/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.scss b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.spec.ts b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.spec.ts new file mode 100644 index 00000000..ab407bec --- /dev/null +++ b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LeaveMessageDialogComponent } from './leave-message-dialog.component'; + +describe('LeaveMessageDialogComponent', () => { + let component: LeaveMessageDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LeaveMessageDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LeaveMessageDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.ts b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.ts new file mode 100644 index 00000000..46c58d06 --- /dev/null +++ b/hosting/src/app/my-components/leave-message-dialog/leave-message-dialog.component.ts @@ -0,0 +1,87 @@ +import {Component, Inject, OnInit} from '@angular/core'; +import {MessageService} from '../../@backend/message.service'; +import {MDC_DIALOG_DATA, MdcDialogRef} from '@angular-mdc/web'; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {UserService} from '../../@backend/user.service'; +import {LeaveMessageBuilder} from '../../../@core/leaveMessage'; +import {RequestObject} from '../../../@core/firestore-interfaces/request'; +import {UserBase} from '../../../@core/firestore-interfaces/user'; + +@Component({ + selector: 'app-leave-message-dialog', + templateUrl: './leave-message-dialog.component.html', + styleUrls: ['./leave-message-dialog.component.scss'] +}) +export class LeaveMessageDialogComponent implements OnInit { + messageSent = false; + loading = true; + request: RequestObject; + + messageForm = new FormGroup({ + name: new FormControl('', Validators.required), + contact: new FormControl('', Validators.required), + email: new FormControl('', [Validators.email, Validators.required]), + subject: new FormControl('', Validators.required), + message: new FormControl('', Validators.required), + }); + + constructor( + private userService: UserService, + private messageService: MessageService, + public dialogRef: MdcDialogRef, + @Inject(MDC_DIALOG_DATA) public data + ) { + this.request = data; + + this.userService.currentUserInfo() + .then(user => { + if (user) { + this.messageForm.controls.name.setValue(user.name); + this.messageForm.controls.name.disable(); + + this.messageForm.controls.contact.setValue(user.phone); + this.messageForm.controls.contact.disable(); + + this.messageForm.controls.email.setValue(user.email); + this.messageForm.controls.email.disable(); + } + }) + .catch(e => { + }) + .finally(() => { + this.loading = false; + }); + } + + ngOnInit(): void { + } + + submit() { + const valid = this.messageForm.valid; + const c = confirm('Send message?'); + if (valid && c) { + const user: UserBase = { + name: this.messageForm.controls.name.value, + email: this.messageForm.controls.email.value, + phone: this.messageForm.controls.contact.value, + }; + const leaveMessageBuilder = new LeaveMessageBuilder( + this.request.id, + user, + this.messageForm.controls.subject.value, + this.messageForm.controls.message.value + ); + this.loading = true; + this.messageService.sendMessage(leaveMessageBuilder) + .then(() => { + this.messageSent = true; + }) + .catch(e => { + alert('An error has occured'); + }) + .finally(() => { + this.loading = false; + }); + } + } +} diff --git a/hosting/src/app/my-components/my-components.module.ts b/hosting/src/app/my-components/my-components.module.ts new file mode 100644 index 00000000..98e736de --- /dev/null +++ b/hosting/src/app/my-components/my-components.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CardRequestContribComponent } from './card-request-contrib/card-request-contrib.component'; +import {MaterialModule} from '../material.module'; +import { RequestItemComponent } from './card-request-contrib/request-item/request-item.component'; +import {RouterModule} from '@angular/router'; +import { LeaveMessageDialogComponent } from './leave-message-dialog/leave-message-dialog.component'; +import {ReactiveFormsModule} from '@angular/forms'; +import { LearnMoreComponent } from './learn-more/learn-more.component'; + + + +@NgModule({ + declarations: [CardRequestContribComponent, RequestItemComponent, LeaveMessageDialogComponent, LearnMoreComponent], + exports: [ + CardRequestContribComponent + ], + imports: [ + CommonModule, + MaterialModule, + RouterModule, + ReactiveFormsModule, + ] +}) +export class MyComponentsModule { } diff --git a/hosting/src/assets/.gitkeep b/hosting/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/assets/completed-stamp-3.png b/hosting/src/assets/completed-stamp-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6469c6e7dde6b837ea00870925967e0ff7d228a7 GIT binary patch literal 247857 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

    $tYMJ6EKODlWWEWVv_^;! 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 D9VR@rIF{ljRM3ClB<_sFV{3 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 z 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

    $hQw?Ni?r~P}awD6Wxk-~f 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%0AgC|}nu>PU1I|2C5w$)%HOI0gy;gQRw zn%0qW=c?_57-1nnc~x0WgO&_)4D&ja65MrbKAn29aj^LjY_OJR$^D4oHNh{&Lqr?X z=Q=5ZFz4E1DY6>l#hNm=$99XUyuR$&We}-zWJ2brrR>-XH=UShRYtn>(o*FehkCaA z5D346i$KnlvkO1J<)>${HF%l?e+_u$Wd2^hN~LN(i+c3#Ct+xRF&2K{-pKjMw`GXW zJevzOyzac)b12J1&ok`L3D3&PYakBNX<&IUy+x)ri!nu3Kpx|iooU3-in@afZ*+cL z$6-T4qS?iA^x;W?>Puy1L$gcW1YOhRSBckA^E;?h=Y81ywtGX7^PmU z5$5CtDp(-Za;wMMhvCa?yX1+AU9>B zsg@<^I`_R{Y?tIo1_T49sPYW{1WX_sqBg74X?Et>u!ppQ*Me4(na0V`%iP2$5Gn zhd+Rbri=a!3>CHfhGm}SjP~VIt5yDDB;OCy{{HLyvczPr8;VhT8OF~~lKJ%O_qR_T zyzS6@a_xp_CR%-j=~f@^EkT&S2kbWa;@<|Lp4(#|S(u~5H-J5Wh%~JqxJK?uw#_o% z((99wj*I0NwiS*)98m$sD=YRt)mmw8;nW#t_o^;!cnBUlqW$UH0V>F8);BCXiL)b1 z9XI7i{kGx!82_xF`Iy@6hH&fGeeLgPnFBfMbQ;UH@5>?YZiEOYr*Lp4vL_Y-KRpT$ zW^E(@ta8%cj+G9^F7}rJ(rtZ-cakWMkctUK#?vq5Y-9u6bv$;RE_dRN0;eAxyxbc@ zW_ih-3Ue9Od?Qv*Ld{*jVc8sl#HL=hPo?f3Z)*)rzJI>9%V0l0rwjUJCIWGY0XBN2 zW$im1!+QAMAI_#VO~82>>0Gnt>>rZW)55tZRjC#kelk&~akk@~Ur&8P*}>en6(H%t55eo07AL*>a5k7M_=o*cL2N3_Cksucau8&JoMU>ZtX@bpJb09c%@X ztWwpq{N54Qm^Y?syQ-fH7`uIURQy$F0-~1l^lI+bHm8r@Q-zydT_Aeqw7F zL>>tG9nk?QHeMW=8l)H6{oFSJbKDM~M8fo;Ju#J_n-cSj&Cu0424ysz9+^)ufw+@|QsKfF0}4Px;3e|Xh`nf^(pO^{=HaL#)) zy2k&SxA4N_uC%uz;N=F9e=tLn*%^n>t7~deG<(9mhMgn%XkP4+=}w5#)(Wacx$;F}rkj)c_VA2XTSL{^4#Nynoe3 z*|g;B#VEACCFy$c%^P5rIX6HCj&9VVwa2(aQbgfagx}~9#%7PgS&Wxk@t94CM*$Y!;s@#Gqlo4_nIL=(a=H!9`0{Mjw< z20oJN@&@JLtz&Jo^ujD~;s{{UB*zU-U-5X=R^#CU>;7+K1eZ+;v=>e4nu)39@Wyq` zt(JUCb?YzBWH-jwGd@o>&(|HM;S(Je2(_s1MT4odv2+%_B8k1;<-(b@Q`Eln2VZ!G zMOL9Jd|x*&o~Z|SWT&!uNXoM)D^2d1)@}kQKVcy zoL@65Kju56Y=BukwOFd#E&YICW*U1^(yr{jO=#uwe2r{fD1 zx*JP%(yP8oF{k0fxH+`1tpV-GgB4-4Xgd{mV>nEkWr$cq;}HgZmL z@9A+Czk=;6TD+5m|A|&PdRtxpJ=Lq;ylm@o*sFhvN)s62jq0yP_?FX5yn!$&Qj}}@ zne=v(nZ)d99@SJj4sYCUH_teiPrn?|GGS2!x?`6558k4S+U9HvD}UY>2Yw7K6`hVR zy)bwMQR{C*%2iR+&!6Tvd7l4f!AffgF_Ty6zigEBC zo}+uStfk_VwG;)2#)9jq-7?+HlbahWd4^lB3O`p0i~OySNd(a?i=29tdATvP7W{ql z;2pYx6nG4h{B|W~=;Qui(=v)l{$RQ#ulgvJZ~o7On^7G3 z>zB3a@uEuNrHzY-6{FRMX#YqT<$J*d%WFE|(LmiGVNI_qrvR~&Hto%Ksktl!Cf}>k zfL5f)%e>G*&T;@|AVXGYiHnC4V#MFIOj-Ttm{>}=KQi#4kdL0rYxZt2(*of=tNCj#>^045>#96Hm%pau3n%KL69#EQ#uTMZM%fTW+>?rTw zAw>9e9N9-YM!bv~9hN$(gk;Xm!7ujB$--sC^NmJZYe(fb?(X{h2Z&FAMGK9}=U1if zY44dPrNxVL15vt$GY=tF#{D^_>ivtAz@Hv(j^0WFqBfWG>6r-?ip(;~9z< z=5fnJ9i?6rs$0}Lg6AG*=todj$AuqzOwX5}Px99D4A#_`k7qBo%9RJ7nk88}a%yNu zdeKLg<)Q*n$Wem$5Cw|ms ze7=bB==dJY{sUKTR-W3qnF$1}k04Syny2m3(FTWn-I;+xzWskTvI;QO8Uo7Uw4O!V z)8yVQlVWU~&94U~#%-YGR*qPf8Mrbt!ou^9aPao~4#f)=CfKQ6xvD3t+vNG&aL#lV zO;;*_8=+WaR!MNA9Y(0^`o@MiJFrx4^PRYEIQ+a8_l1$M`aTAn9w6I$_aU3*G z|3ZJtmFVfU+hzF=mgpJpZn_@80u?E@vRZ8U{P{Z0c+hDLwH>Leeye;_`r`|54j($% z$Ol5Z{`Jc0I_+w5`WA1}+Y%BuX#Oo7&1cg?=N;-|KkaH&1FcHw82{@92>Wscqn*>T z3+*=1yD7_(n_xNn#dIwL!-ZLTrVzJ$`E~*K8^8r%H)>TCpVHA!CMzW}QO-a1EAal( zEW8~lVD$HBk`K^_zKLFJ_) zUfhCW6#n7K(%G=#ppr`f6ID5eWydeqhVm<>0g%$>NCqqe?(bOAvG=wH0^4!8&ylac z?W3j$+-S7Ks=E&0Y93wfwY6@`3XHvV8O0QGdhtr|AXuN-a{}D(oY-DV8d~IR$$HSG z_ic1XDa!4M)?0QN+lT;9tc@@TR>L1!dLoQ*AN+CN)Tclyixh)SwzQkyCm->8y{$`+ zFU%d11E;@zr3X0LbUiO`g_~A9VMg zxzlf_JTCvp<8b2kJ=B-^)lJgk&TcKEd@ra)f3XjAcaD;UqJ?sulYm7*zfbS}k*g)Z#8ht`a?FwIw_M~%fa(z-5>anDu>#9(!L&FCY2Zbdq1yty(enNLzzMr7Wty14aVIsLib+o&i}?9Lilk5hTHydI~Mkpb2zb zK|EIjXOpmQvbXhu8NI1dPI7Gl?leDH(}yqQb}AISo@bHDLaCHLcNTKT)w(B_2>-&> z_*?m|Og{`rSGX4y}4{k~tvfaQa1D3Cq@Dw$o674 z=OMCU^>K@W`n28DqWjQvfXNFO{|U!_6z=lG846vy-hGp!=`AnX2=((|s$V771q z?*G0AnRnc~OIAR;A+(%9N#=Tn%BQ^;Q9}Cov0EbE7*Mp`@~@ta#8hb@&e3QFL8 zO25v~Y!grSx1e~}l4?4Bd&{Omu+`N{do=#DlHX|0txW=H0V`P;nfuWY_q>WGGVNjT z!P=iY5-%^kN?IDh72P$5G=8nV<;;cdki zN>&zM(Dv3r?O+!p%;V`uXhfa0ENk!Eoe%9h{WsRFmqyBTMGUY1t7PDF^Fa!0|w((w(2b737son`GPosZa3*;DSvcjbuAb_ zt%KB8ACL_xswAMKA+WR1Hn)DgGFwx%q(GBK!GfiFcv0wF>;PXky7?`2U4xFqT&-6| zv`OO*o{g-G{XN4V+rp|y|FgAooGIlZDbuhUQVZ=FXWU<<7v&R{pQ&&b0S6?L55>It zV?#$hV9S=+eQ2KHdpug}qa~wRDCu6XwbTc6jFhEk5 zMThp9s1q=A10_D3$H&EAZcszWWeh9IQhiJe!@V-XC<3mUUKLaP(Rph?Ufd}|0rcDC zz@+7y@iia9h*|`>`Moab*HGN-(O)RQwa`cWiU%*X`Y0Yh-k0j{NPU1yh@~ zv1%N(v+U4UUnPlnU8MYWT7A}?vY#h)$+5SDPZ`(2LATP+YE+5Od6Zp7)V>$ty$lEA zr|;!|%P`cz73lkQl2W4%#O?Rz7X%$nTL2rNTo`1=Hhk%_TY zf2{@^ksgSb$CYxsN!l@j^GCZaimAq0+-5j^q-f2)=Mo~NRq1`q0*U#luWBJ{jg!eYpP zqp3d1xwm%+@^NvwpB}H=p5^=CSqO0Gcqsv+S7e<7|B=x-gGsuD?RyM)!k$=+GG|ou z-KHhvJ8ad6wdYER9_j6YpP zWFP6HZhn;@F^6jD4!=@o&sJ2bT7(2%;Orawi`)#VmNn{*#Z)RjOpty2fk}^v8T|?4 zrg;bBz!w06ewKiG<4i78Ymqdm06p!>cD;&iED&0?+_mWRC;>wZzV&{=T3;@T*1W;K z*N4<#ystCGazHYrXUsx@Wm1eS-<9#*E^-g`*>XeQD?gAoDT%t9=rRQvqzg;!3raNf z%}rN6@sGGfNU@;*D+l{q&=~R>Bj1>)GHk)zfhGs^>-`axcD_0AZ%a~P!ipR_{e|q& zeXb#h0IBcI3O*8ja>H(tZDU6C^ZiGhQU&c?@H;uVnHf(J_M zn^bnQ=bay8H=u{E>yIlH?2|26a|MvpA9&GO9>3U_CydIeZFyLh$Zc~Nwh(>n34t2k z)I17(AEV8KtyVGq6%Eiak0Cp>P$gPRRtKXGuI=)w|9 z&`n5d>ln<7G5M2IJv^2jk4%vP*3Xev)jh8GEH1!Yz|TD>1E!#i>V6M`a+^BPZtf(` z>L)z7SX%VJ*wq5otug94Z|&1n!okKiyku(`VF9h{%L0ZdifRWmWhb4af(N+Zb^jC_ zE&%`FaVxVt24wr0T0>1~#=f72rAGn#U=@oGoUBPDO!M|se$%6R$Gu`-*;$4G_B?Y9 zL3iyi_9{?3|K!E6nV##m&P*mc?ZNAIZB;MSEBRyz@{A-z4jwAH93S)9uB9QoZ&EOB ztn>K;M16p?eIX`6%C560;uME)Y6F$4v zH0&%3HHp7s?@zTSThclK6fMSi=J4!{pt+c4z$bWh>~{#l`U!K~dxzOx<#alMH^tGp zp)mGS2;1JWhaM(uGm?&HVNSWK?=j4J#bk3LqxfFYBXxzQ6}e~K^r4S5XAyI=GHz|y(mt@WgiX(wQ(Lb3(ssGAaHwm-3Z^FccDOw@TLJaMwZYOQ| zUUDo+V2^AbK;8s;=y|rsraN!B`pQLl*}8Od?2kB><3!A4&a=|LcUnl7a`IcSFa@3R$0P4MgmBaowDot~_n3HC?cs z6#=QI^ij)7z4?S2Qymq;2o?cxwtG#5A+F_!l|JlDIc2Cz;ZT(DdHzxqY^C8o9bcIY4=|z>uW6>IpvCTdIm;;+sfex((mZP z^C>hCE5bW!z=E0G{{u2X&A#)j8eLCTHfx&ZRK5Y!<8$R*T3s(<;o&3y07I%ehlB6o zvzf16-qr;|%{s}w1_pfr$KhCd-^Nc7Y7sa5BfcGLc)MKcY!%PAk2(C!b6N~{J~r2y z9~SBwmefuAZ=@FXhuK7JkHDH-sjUpQC!R%&5|7^IKDd*E~t$OZeQGWBWco)LS`(57VE-*K6Sm4JP+Z zfuVBbC@&8SwD-a5u)U~@EAp>4rMQjg1>@t3XsjnKm z_<^qK5QLKZ$XsBHRPyuhoR<8EtOl4nGqK$4a?Zyrey6>4#|tO%G0PCX$~|9G_^oFS z<*>Gr>4!-q{n~$z=qtv&Y4MB1SKd2a0j7oxK20!Q0R&iYFiKF3#GWy?^Q%T;qlT_K z#&=B({ga1eW=37gaCji&KaFnaLNPOqSxM?@td|!Jy}Zd-^=8TaX>J?Lw|K+G81x0l z_|{&VD$N)#`_}&eZ0`Pbu?qk&00Ze&%B){ITOK9xOW+o%@hbaGn%Bfq=nrV_{$-?Y z(lB5KG796Tt##fB_#a`S_;_jh-1i*m5n znOoAdNhM^ArBZby%D&1I*vdg*Lw%@#4pVGOt)U^#gw_Dz^#{p(Q%a6kc^{&28 znipSCYlpgQvCT}hS`Is!Q2apDt+=?dhUGi7E>(}wPamyzI$VbKIBo;Tiz){Zuw0Cc z;NX8+^G~z+i;>p73&S#h#IDmlRd)VFikQop*ty2Y+EtgIy5FU8dY8oS59nIQ_Fk)a zG~434);a$GjdwEc7|$72>yDMu-rY}YZt`2iCXq%&WcBv1J=DG+>DSEGn)ilv58bg0 z9>P1g27YXiOJlEUsY=UD%%jTRymtCeh;+?%HkVG+E$hWp*_cChX37-uihiB@#^|ZE^rCab1P0d61)esINNG?eFa#b<`yDrxLf%uqHq_ z91me#rLLxJt!(#OO)5;nFES;{t7iZoN*uJi8d})d+mY#0!Sc7^Q(4%_c?X+r7UDne zLc&4+0FIMM_DN&;iXZD)DMni}Zdpa@iBd+7=2j|4Ada;AiCW>j$r!u0Rwt8H#(RuY zmvg94GD#Q|pL0u?9x~E(Eptk1Z9e$eVl%o$W4nW#1p}Onj!zzjyo2Gd#qSW`c*-q4 z{{X|UZ>P-dZ!N{Ov+PMhI3@X0j4(JoFnR)O-wq?VNLi4~-1%FE>}MT1*N^;m_;cb< z7&<40u54^zu_jS&BqYqt#YRzqQbz1x{{VcDMsr`0XZVU4K4FKrFo12|4yj|fNdmk70kVSWIc{4+CZz^0# z=74fl0WF@H831H=%}wD8RPh#rX{282AKE@Rw!C5X>#g>(a!%hQC`JGzVfS<5p>M+m-(SS6-(_{{RT>mXG1sue?z-cKXeY z*@4+^QC69=%wHWR+@GZ+*&LM*C>DUaeTlb8rIc#(%j1f=q{{X}I zd_0;DhF1RKEj5E$v@+c+O?4uL`8T;cLt!z;$&rNs}VH;FW;^*A*1e{c5b)69+y<8v>rKLho_sb$pdA)4M9E}=#;8yf;P`SZvM z04Js|g8V_NUS7&IYpacB+fS33ZFLW_$s9rO+cE=$U^9#X!sj@}e@FiSYF4LFQ>{Uy z?Pj%GUtKS~`g+*;$yRZbO&_3bOltD4fqxh8J}rN2&e~(x>DI1--P`6kVfPDXk^l!d z{w}rZ&0h67kgXLsJEn9md0i2;6g3s79tGpi702N(2x^+Hp{M4`-V$U>Yt}L_JYjN! z<|N>A*1VCm?*v&{#RF)bCWbhXQGUrayqExBedY$cpBa23*F0gNwv#W2q!w*7QpmCZ z+r)AQ2y(dql^N!+?!E)-Y@j9Wte(6PS^Z{(w3}af<(gF-S{w8OO`%pU$J( zQ@)iyuehpoWUb9g$FF!_!g_6sS;q#yV=_V&cCdKK+C9g$dIysmf2+N-ll|G&yxT|6 z_3bZGR+C7XqEK@oJZBxS4u4AMX1~0*UC*c7W4-|XxT=j+(rE4Ff68@V+4mADD61g< z0AbYs09yE~_TKno(>@>lnEnv>$3*zsp^CJG6%cmTshzUOq1T+MSdV=yg=q?@nQgYZ~(TPen2btMYH-*TpSc{udXFn$uHd zg*AJq)p#RnJ189X`D^u>Ol@QBUo-fd_E-34;;l;V`t!mjE1RcjWs=uakqa{%vtw>D zPxG%!0~dKdTb^Dz9?~&a>VAC1@q@&XoUQC_f%mqJ-8%71xA?`ZM3KiTL3ELTph}q- z1KS_1eZO`4416cLVq&uKC4`^eiuM^3{{S8tu6q0a3ESXXhGw<#HoamG{PwkuU_S+5 zYuRmESiiXOzN)XM=6tJb@yhNsD)te^oFCk?0B|r4Gupj_{uY(Tf&K;fOHcwsHovW3 z-MA06f}+HLl0oU3>aTy`oH}WI>Hh!_QcWD)(3!?po~agFhrF~QG1XJK6KmHPyIOwsj2a3;|87`(P! zw%UT^XAGF6asfj0rof`8r1Or0K}~Z>91sx<6})ZaI8@0 zfH?WT*{=%LKV`p*+HJgoUjb^8FG6jj66f$jb6o7-4E`W^ayAz}5b+I{CoI-8Cx2bE z1`>vv%IvChb=TDH|9n~M`PkmOHbU(G|0`?MjM#_0KmG|zgU-B zea2DB+;oiOzGvvQuf)H#WShMz_m8_JowGORvv=!Nbng(`-A{hfcz;HlHv}^XrABNj zjQ;LL=Zt<8@El(dwRq-@P3(nPmpjWhe^$+E=>Gr|HLEz>rO<88&GU81IqO-xQ;OI> zv#V;orTtaUw7h+-=-PjR^~<@uK2>3~mB_Kak|*I$-DeN9`{3fePvCBsYkA?DCzcr+ zGhuGZE+sNbGa8?nz#E&?;AX!(H4lp#?zyAh>GRIbZ*Yb-RguUb_3w|;ze;`-L-r33 z#}U9W!yJG2$Rqkv_KLo(9-d!DbT1h{!pBu7g|x{ILQ5Ned1rs*NfqQeuCQ(OtLtby zQ>Q9LaOkjJTFe0JxKC36lbT}># zK-Rj1Qs?ko*UNf0?H%EXwFaJeq=h`7fHqtBj(>!ES4j`YZv)*(9O^A>N$Dhb6#bqX zr|NkB09nSx>lXg+@;-uZ7HR$;v2&_8)0#FRp_lK14MbKGtRMfd zy5;4o&2XqK-tB;O!6XIF7;r0|5azmawU0)oE7@|%LA(AB(CD);;^K@>3A#Kt>YIMopskCbtW=j~smcU}bl09|x@ZC~bV<|@uj zJx{Hp7`ZEp<4=YGz_;yQuHVtWX+Zh*n zL#IFySwY4hJfF8DZoxf>qO3KSz(nZQ@A^e5JmKTB?11>om4te(+X1B|oM^o8B z=+1o3G+{~BsU2017N6m!r5)sF`&JQRKKjLJnUAL4cK&s7JS%&nklG%XXXhWidwnpP zGbH+0A8Ur?yl zj{2V;^^6?0)8@a-!5$CskBD_y7U?2|K<4`5>&*NWK+oZTJ?pm6eiZ3;46|xeO{`pZ z`$5E6_Ced~O=W+=Y&<^4?H5a{2N_1Ow~;~h2YRnPJ9n&45`0YY2-P&33s|fyBh-s+ zWz=n+;xz*~^2_c&@Dw=jid^=(Yg4Kicuvxb(f2)uOU*w)vmR`=_7I^p1lol`ftM}zJ}LQ)UICcS;1h_NM&vb2RQ%^oMOEX z!}?9Gin4u<6@baNcFs3rIR0k5+W3XDJxVxcozbb|`#aqSz{gaxxxSc&L^hUq4071( z#~nJ?k!c<<)^z*7IxFjaBXQ<95pJ#@jNrR`i|#AxDD*ok%_aygAWMjuRm#c(Wbk|Y zoHPYJM%F&%X+%SNAxd1MDaCok4C2De$r#R}_t~(D_DOIN{ zB(*{x+80u`x)4DmI+Wjc?CEdkId5{CLj6Bl>a-7v-XPS7lT+~JqzTnCa8dsN5r)D1 zYm3uYPtl=Rtzv@GGk_HU8T9(sO{eJkrlW?2#zc(&0Lx3S-7n-u@BDVXd12^3vUwD$ zVy~o|J7oBQ6w&OTOJ-C2F-WiaFk0L2f5eM_4k%S|WopgEytq-x=m0p+(zzQS2R;G3 zy=MOargqEauh6l}AE?_}(P?&idgk8UBW?kc8FSBeJfFnZFV$mzcSG2xDz?1dr>sr! zipi~&tt@VCB_sY?42hgq8fh9?8KjlI^o~n2eM#ihEZq826^7nvtljfnDk&HaX(^2*M9x!#{BfU3$JEzzQa0($SdFTLa#h&lk>P1Vrl8K?Vsma&tl^2 z!rnqh2j07{2;6y^XvxV*2>wU<*A*U{HMXB^cOb-91%d(yJY$?5qn@K8uzmt~nBI85 z;zoqh% zfY#5+&fAtXDEz;S?i0g36@*F{M4MWdRWxn!Bk zX?_dS-^W+CGTX-~xK~!(py!ZB@~+|^g*qkYhBawzB9~6pBZ@|X>dt44l!VIg4%5%I zb3P5#F14{|saU8ML`O6u3qSjBbwv}uV7#|I-n zLtK?1YJAIdb<%0ov)SDF`o`U`KosKc#nm0mPR2ovGI&fbUesqZ{Ld8ukitS+r^jTC4eF&g8`3(79trv%}MB#)PY z+<2MRF18B?Id#uhb?Jo8`s(_NlSA4o(r7fd{rRfIWqI4~(?k8^!)AlT`5jqaL$$5}6Z2`wyMv zl0Xe68FC0_elfI@j+h_JR3TEeM=JMGY3uqsY5IOfwd*LmQ?=7Rk<&>8R|3W34Nc$t6vUBacQl}kjWgfOK&SES6G#>P^jR6 z^Apd?Nd#BScit7(JXhk)Pf(KQey4A19I{QP>2bBWD8Tt{!PP>qmYHI~n3IKW`nvxB zjqE-s3pCfPuGhv8+(;yATV)Vlg8u-!g&7MlJ4-1!BZ1Fq?*7fG8hr7oq?V~_*Ka?l)|8^xN59C{@b0_fSJX6nTNq=yLnxbV@^)0e^#U)_C{(pf&*E-j*EMaCmlm6vh(Sd1P%P)ANZEq*c|6J1N9-p;XjW+-Bw z+SYjt@>-af6kgD zA)8du^!r9xHo#Tv~h!s zTEscrKzpD3B9d2I=KhL&k9`s0ITsflEj`r(_SOU%k1)(yy@aE$?(R_k03%Z_ zrv=ygnd6jyu;BjyDo+_*tz>8QSanB(dsj{ITGIOSz&;_0$|j!XOBth%H0sRAKm*^J_`6T| zdEyIrS9X(djhwbqKgzu7*!e?O8=qB@@ctJtmGKy*N;kH){aQamVDT28bU?S(tta&I z=Z)({WSeMU;fG>WWAv}iX*?sXD8p%&UYx|=;Y^Q5)%5T@yL-E1{>rld04nDG)Lm(R zUvc*@fO7f&00%XP%`g5;{TaBG{Fw}~!78efLq>7a>s+^rY9Vp*Vm? z9fVSqVx@~V;rB+KoFqF1`nR3Dm4~iLX2b1(4PX{g6i-k+T*cFWi5ZJJ+rUHS?{P z#*ZB7_ic3+y>a%Eq%`tGj^rJ=1(`|bV*dc&BhXdY{{Uz&8%G_g&8l0>mSIJ@OQ+j` z7SgPtcE&M+i}?!I`&JuW{{UYx{{X}+#?7ut(~{EmlfCTk_B-3;dsWBmgYYWj?arEY z=9Tsc)_bEJ^N+KuDPYaHn;Z=O743RQhx{p|+uOr$tjND=c1T3bq{zUWh51HsbJD&u z(*FQxj}v{K?dOY4mGuZjS8Udp^VbK4+D37b2cS6VTDni|HLmFY0NJY!nWUsTd~Xy< z8cey3nOLblZzCwD@bn}em}bz6vXea8-WcX|Z_5a`x&p+(?Lz8wIV{_F>5_Wpy4e2!Y=OHIcu;@69-;jVU)H+TZ3$@Vejo4;4-w(! zc?o;CZe{)`{{Zqwf!u$=F#Ka~xYPV=pxrR(=LuuaKFHP0Yk%-g--^0QtfK3~_b{sf zU2lwI^K@GJ!r%71(dEFn@a^IQ{{TGZNB&?}SK%LvdQZk1iS&&c&hE5O`%}VoD5j>IY6fQ}(=`3Dnz< zD%xS(ZvOxgQ6B;7R`9b$rQ7bo+R?fK4R*Xl8u-5ke7eEgqbS3sUt0m^S=>Ya09_(s z{Kas}<}o3cF` zacQQ`x=*?*<^KTMv*z(8k`Dku4^F(?SJUp_yRSX*?Yvidj4M5rt>OrQA84_Td>zE~ zWh8!e*@2(3uBOg>%MS5acTGELkC2QYusI}WzZE`}5dP1RvCp43{*7w-E?p}`nXxW~ zqW=Kk510P{ps=V@!TuAGOlL%~0f}NEo^<4#lm4*xHT8d7O>Oxf3oMGPUXovl^P!Sh z?;ucfAD1H(JqZk$IR5}WYoFG%uMX=!6TBNe#-}EguGKpi2aCz&~ z74;n73%nz6>nHY9v9f}z^1_u87s8c_2hM0Y_UnA>Cwj`xs6;hgUX%6^Y~Vsoi$1gxFtNe1r5Fe)|zIzofeY5H*#oEWNSfBWp+ke+3 z{zAE*h+Z4A@m85_YkaO^j&UmaZdBv~I*(#&qOfoHm)idT*CqZ!sq0N2lAdIXAI-sI z?NNn~@1oAC-@|E~hLhpFGebYS-3m&^qqzHqtiuajHrSNEKYO)oS?Dn^26MapkyuK!B2tTIIklwWRI&CI zv8DJMS=J+2E$wj;{wHw1rgQpNMQ>>YBMBOSJw-krh+1EV<|!txXB#ixgU(Xl_sBW@ zE1FoD{gi7Oaazrl?S2mGa%0cCw}<`R%zu!nFTM`XZwHwb{{Y$;bw!J5{61q_6MSy) zyfLYJshUIl3vVa&0;@^!f*WHBCm5>VePv6&RBdt8?e_b4}Jw~ z>E8;p{X#H5v}THK>cLKal?DF*#-9u7DqSq~1e^Q9IQjaG^_ssIv`G1Q?;!sGX^}tp zs;_NP{i7~w5qqX?&+s>?hgZj-cn9+hTyKuQXT5h<(u5XwHght{vJWwtI%n99{G6qbJe(3~fpGwMjsncHk zv^o@NNnR(P+58moc81$!(ppdkcS9mLKas7*@SXjRfU?bDIJon61@gw=JMcLpf&NWg zxBa0tJR@A&Tip3)B1QRM++=V+D#X?PDOl^ehxUxNvcmF88sQ>!kQE#S1mhST{{Twj zt&LLUifcxn$qo*jZ*IB_jv1kmeAt>i5&p4A71%bMm-e1&$@0j`&SJ?0wx5(K#yjKJ znv+NI6_&H7M;4hTpdBU2+~*lN7$sED-6WeLmiDPkdyr2imTXvavINWeC z*F2HyUS12-$sOK(Uj)yv^nVQ%q?{Ta#UxBTnu~v06|(u zPuuo6C4sz|AuaNdv$eWkt*-hTVQ`VF%%4qv z6OxM0Ys#~e3j{2@bv=jUT)o$a*5g;Wp6%KQqX{yvlv{daZel;W06$z}y%Aa0SZgPM z&uP087;ej|KRjb+UUAfOnz?bN#irQF13kx{@of?)4$I#Q^A4QggX`^6nQ24tiG+ z@IKMM;iSBCXR)!WX_hxRMdNZSMlyb<`Pa~zKZEqmP~KjIS@*Dk1;jpEi~zVLSmz@h zfj^yc{t@_XH-~;JUFvClrpaafp0FqpGTk)3VRa0~Je1qmFc~K_@Y&reG@cQAvx1I} z*VStL?A_jo+O`F`D!00o{{YP|xa*?Is8-;w2k@?2;)jPP@n?hY^vhjN<43r-iPbNy z7>OYvONJOA^-K1-gt?kQPTek6&x@n&TcEY@3x4u1S7d|WaL$27`+Rb%%@W%1M6l~7SuB<=< zslYYZqos(t<}#twH7kof5^ZBmx3IsG60*Z=3WsL+$KkDF5zX2w^CQW+~*muhrE68ms`~}jV|Ip32GChmi}9+ z>CV{LS|OY-{W1sf_phbDWJwkMJuHpW=3=7f++Ki&*ZLgx#U>TneJuZzA9U+6JiYnn`#)>>Yq zktDEvpMA_R5=>|rf@Rcw=0V0sTKdOZvrR9=Hk$8<&XsKJxVQUNjBI1LRVQjl-!p*9 z#1EIK!3BV>bHyJNd?_4md{w61#}(r|K1qGivmnOchbq|51hF7wbBtH>%}h>N8l1Rj z%A42So!nmU?5TCu`gGREMOs(ZcDeIE?8l_GrQ$7DLe!G#;vXVuVYzA48(EYRvUz3l z=u|g6jIim9)cWSF;;)51H`1l><;A|Zv3ZF-{BWUrWRbSWrH1dD<>Ag)ZNNAfuFq8X zXP{`lDgN5<4yUTzrpA`)7^i?w3=NzJ*svofZ%{VpAd)a6lg7HA!ykY@+LqF37gAno zFZQ`S$2THC%mOisYKBl(IcCqx*w>LduC^oVG!l2R<$YVeueX)HW^jijEiE~2?ua~L z@pDG;)|qi*q+VNDOJtJ0v^QIUSIU-rh|XR^z}>ePCxO873-61z_C6W5v%awZ0Ewo+ zB)X9!o@2Fk6CCZi;y6*z_8?vq8J@&~lgfZ5=<%H7l0vt9kEMM+U6%VewC=BM_tVW^PcOk7 zbE_%Ixia|hcZ)o2r``CH109x_v54jJ>R%JIJww4ZH*sk;b~k!;#KJum=5HY)A=QyqHQF7B z$YAT7`uFkgiXI@=^%-N-HGOjK;(duC+07$JB2YGf+kiX5s{F^&uMr7iD^Cwf-pyGj zZoiw?u7(qYG?Lu2s`%2^L`%s7Joi$S^QH4Jxm+rR$>X3Wf_)EM@mg-Hsq1q+(*4cY zJC^}@&N=7t6`5*Iy?7eou5Y58?s(&b@Yv*Wo}S&gWSOMJ{p{{VOj-P5Chi}sJ+x6P!sU((RePqbO^&WC+suY11hPAo=aSg?|u=Lp&C zM}FY*MO@TxrM{9#qq$gR$$6K`3={#zFhC;%r>zyoM;ThAd7PAdz32HBwAr69r|lKu zsQzg6?QRf1gZn_b{V+hQ@&41ED}nY&tlU2Uk2=;Vdi$F5dyfw3TZh@aQ>R>W#$uU2 znp9GFZ6s!N*0hjM8zi|Z+ zYv`}pr^H&1jJ!X8sJmO+LT-G8SRrhkstGw_f4}Kp8tMKS0tPR0V>x5NOO+$@&3(c9 zE_i?Y8{v+YrBxp0NoQcJ2Yi!XRkCVbR^||FL9fW^1~=N)_3%*p#*_~IqOgTt3C*Y|gEALTWAukF7kr>b}dQPK2^JB#_Qt}UQ2 z+Qwb5q{vPOZ;)5SJ{b5;vRg`gL8bVn#`ws=VuMI#j~E+r=aG}wjw&iiCvIa}cICTA z>L0@!yT227H$~O;D58q?_SP$jBZuxOWetJJ>_>X_y(L6Cd}A2ue_G+ZC!?o_{5_@V zv5(!^+eL1_L_ojNyUT2)ykpTtay8V}>!C9>M(@QVHaV!IdYcO8fqvSaC|?fz6}T_I z7gzT1VK^t2fBmOl0>kkt#?^jZK51XR>@I8UANVK}-fA8d@Q#IJZ#C`B_Mt4vZEqV% zB%WMY;a8J^C45mQ!+#gUo&FZqQy<^3m;V5Xt}4#WBlKL2s#rwslWo7#^e)_dUb$u> z-%N%-d04;l#b-_NGgy;_k|>A!F%CZyROIkah@xysqG~CQ&1oS1m0n#BQiuI*h0K1< z6A$TGIiExACns)lU#c9Fu%f;}?wYA?U4y^av zhvXQOUQaA2$L`{wYjEGgimp{9sXtJr_liBb-}aL6EEy8`l}hIyDl@VAWik5H_n);c zz2zXb@eT2tKQjLSXFwE>_lqCpUJ%x5-Ld%9y+1{c;^7uXWm0*;rR=HoLRoxntps~> ze%4+px3QAoTczScGUDZ;+I=`kf&FWim-f=}bdobRk)bj+NJh4Ef$5#~=3X+m{{Vz# z;tDjbrf$>FgOaEhWf3Uf4JD&2>`3QgP`}Sr1YI1 z#M;_MTj55bZM+QbSt0}e`cm7S%#Z7we!#@vv zORHIKYug<<;^GBR7?~C}Wf(njK;ph0i}vpLg<~WT+~_Q1l$Ax3PC0T0NC8`(Ij)D6 z(QBDS*eUTAXBjGS#K}qQxt-tQeFx#++2w66-0P2bcWxKuTX&2$?_A`6D)pa-J{9n% z!yQ6v{W{B5H*>?}NYhChjk|&12K55II*0b`@xIUA_&hN6Z8GEfJq`Z=1p(D<*h4me4q0oi8pF7Ppt4G;-m&R`eqO5J=8$@|NRapxu zW9Tv~Tfp}zHJt8;E0r1iE9Px4!O$5ZxSc%NqdSz5!1`CvpA2OG0Es=uc*BAESC-fB zG&N4~PpRk)C+@!r%#!LqKVfwbjO{0yux9Sw8i=E%iWa;+Q{be}zn= z6G;gF0BX^Hp*5!m?LF|iMJ08wBaDB?q>K8h*JssN^P>-J-`PIHI!2!)XEtzW{<(ov zC-B~taIBJ9#>m429OAxPw*9BR8SVi*aW%e90<4#b`T<*Zf3&y5*1%sKGxPjc7dicE zmKCk0zVdyg{>%H1dXvCf3r4a1fl@X5sEj}v^ck#uSHt#N8$i~G(GA;n?#SqC%Y04o zKT?*@O26>VwLG?0isfbH!{C9CBnQ4~r-nR9;|)twk@f9quPnO7Z}xbT2h_5lC-d)I zc#3j{johe8GT9$T*f4E6*#7|2HOJ&DAH}jd>G6~xA2b7y4`WklcX`t74tm7D$W}j$ zHH%9PIyo-xVz!N?3L0k!GlRxYe!rD<;eU%0I@;4_Ik=U1*#n$^6o37CYhE{(^TL=Q zkKE->arLa>;teuo`7iCCK9ec_wP4-BBCgp{`Ru^g)7eQ_@pd|Bd~0E)>GtrnQeJ8T zBrk1dfb3!hL1TqpeNA!N@5HYdPa~y{g4%RF7C`Y&As)YY0r?u!X%v8RDXhv|VB}XX z)gspH+uFW|mh0NCxvV*lQj=biM&oFTNhA8~MJf7LR-d~?j#GJgaHtM{(*TRh9+=v= z_2hT2V3k+SA4seOaO;;KfP1$ek*qasLh4fUUrQrr zjD_QpeLd@|@Z5LPYH9wItqL#A9LcygLG8z-c#^KCH5IX}aPBv3<=gv4e3K-1evB?8 zU(rTCN~<29dvS0D#+7U3ca}LfwtH|;SESu)UKX2An)3cFHY+rdp=oZGEsV-}!8{&@ zskW!!sI<9n8XYbRILm`0TcBT%{KRq4dixX7y}02j#c4ml$Bn~e01n69ejEL!v_BY2 z3QKY2Nb_uhdEzHykf&E zI{v49HU6s;K(hE+*2q}GjglDfYD>?fmSI zW|lG(Z3xLXWvTX(d{EQ1%Xfm#YZrt^x+fPoNOvArcTK**&y>b<*s#Jr#(sHLGIO|_5+;}&{{{RGS&ZVnfYThZb zlGpoMRf<14-rHl5ks(s6fxyOc93D-1$HdRu4t-8IwC@hax=N~tmg%Q{$70KA!F9X9>8jcmWI55F089Y#+w^X%|Ol6h)f zflM=i06gH}@TUjYfy)j4o8fIgP}F=!Wv8NvL@`3e4%Hw4%u8{WILh?F&3qm3)Ap0T zncq!2q|-dqEW{DWQ-YxMZcYJQ0(~pk(^RC9E?zXjC7iBVNEzoF zMma6beXdNiEG0^LRHW2i>2B8U*J&pDob$#|m+zD>F7N&U=z7oX2V&Pr3^7|x3@E7_ zmRD_S^5Z0MxyU4p`&4%S035Wra3p<28`NqdZ~X|@&EIRaTck;E3rf$0jaV-~MgFyR z^i5`IJdaD>Mn=a)*llfy^NRf1%%`|0e`e4x5x*BlbXN(011O#Mt;pK zG7-~evey~>Hzj;DXDm;;$$}dWv7QcCvs0JyYG&F@1Udgub6K>HCgDb zoJ}+IIE7dB;-|O$pfBHPf=yP;V*|*#bOZ3+N48I9E?(&O{{Rtq`{FhK0EbcUwCHqA zPS!6iE$kFLGbv`sCFCr-M?4-*D+^8dr>5B4e`0HX9clcivXk1O`$S4eaPg~#3yrG9 zM1*Cy9Fbg4fZ5UiFC~uOYKWLSNs>0OIU{b;7YsAV75qct8;^<_ zvCuq4d7|i6`XrJ|bFCk`;XW{dkRrg&tGa{G5H5U8NB zEZE?XNamTN_zzU^10r~Cf9-4e(mj?I`^C`x;;zgU`SFxI9Cbg#T~4v^?&m{}_E@wl zIUtC+Hb@R)c7x!zhi)!(j}P0=t4kup_j4dJTP`yDUk8TT zI&d@4*Vj~`jlH_j`u_lcyif4|09ezY*7U23$>xY% zL2kb~w0Q-Yb~mna0R#|pgPNbmv)#kutGIO-HI&q&j2M$!EG2<3HjSs{#(DvsIOeyT zc?Ge8c41#RHd@E=867exMLYB$@xJTBh!k>Xmy_&>z5b$)z6V|%C7fXmU&fd z1yRocboLy2S2QY3VBreS_pRPZXuUklDnY7^rKdx;@C~1b{2ymM$B2AUZGK)AXf&%> zr2Y4b;fEaKkUi^w@o&VtT|>n;3u10qR`h)u{0mV4R+o z=!MM}1q$A)doLo4cS;%zS8JEJR-sP25k>yC5C$ME&7@7mV!_1}(O7|}!j0HWGy z#_Hqc$l;`rj-A9{el^#A$~sBZG(QYVKoH&duI_NGIc2xC46XDJkz7?2xs-3%IiGXw z%T?X9S4q1H0O%_Q&3}5IQCsOBnF}!LE2Wx8Vm4}tq`)&MSZR z*wmx{0EGL*?%b`elVPR-&kZEzwoZ;_>k#ZX<2S!ndOx? zNc&L)W%*yd-;4_Ri%+zkHDnT7lPAr(LU#ahj=x&%w0W;|--iAoxwch`Yn@ik(oS=Dyv`y9#a?1as4xj!%j|1t#KMQ%%otCXp{6 z`3}BZ@l12+KL`980yEr6sNP*VwsJy?;1;%RYj2f)m#jYxE0k;4;eop zPZd%-Gwx{oW$+5=u`Tz9$vphpbFco%UQhAX&%-}%(k}ch1(NC0Z)mP8V)E8i+ZhL- zCzd^Hc_of3gpmz)KM=Jkq}7_=e&{0$g&<@$GJl`zTz{BZ zfFp|ZFv+ShZ1S^-Ic7Eg0L0ha>^d8#g?6Y?I`S*3@J^v|F14jv1Va?p(FW_DT}4Z# zd_HUI7_JM*1Fq~UX1h-Z04qV%zWg_jP1U?Vde<^DHQK+FQv>C1U&64KWkxTPn^&RZ zIx3@AN7Q~7j5Wk;!=d!At2`Nbai_uI`9-VGY9J+XzWT*#DSZ)5b`ERRQ>Y9w&b+n0t zx=9h1;fOc@9!TS@ex3f&YS$kH{8t=K5#+Z-Q;hOuLDTWC&hHZVe)B=P(X(+3=2&NS zD-lwkGUq=r&oz}?!mTQc2~JA$Pfq$j@-nAS2Nm_4PVm|J9E6@0m_ErZWRlaqCN|q8#iz|o3%aFl{ zBN@+7Yt+AHy)Jzd<7b8pwi3qAB=F`*fnH#6PCDcRTwCh8tN3ljq=^7yB(BjCB;}Zp zPv=_y0J2Ob@Aii9uKA{wmP?2Ene(fIul{F^Pa7K3lqt1j?0%P9 z+iZmc4o!ML!=IB$xfsXqzo4!XIL_4cuIs?;Q%Rc#{#zgY1XrCEt}git&Cm6& z{2wp2w7UwoI)&h_d~Y-_8w{xj-kPTa?&huEUI~~GrGFgNh;)mGiCt9~GVTL+Kgzut zl7x3;DKwLkJ70!+Xw+oV<0?OSGYpaGlV3o1U%>FqeHhu54f8P^n(~i=wqi!ml&{Wi zWf>pvD*Btl+Im~axB~#!6k+XZc?DXY&NoN4=~`MRg#0%eAPXFFDC4KjYomtQVO82O zfmJ*HO0QTa&X9IOV8R{`#OZ94fk1yNQ{$s~az#S2P z)kiEoo?NUytuy`lmsk{v=-)3n_(>eG#~Twc6Rcp1uw zn05E2={laVHmN11tESmmfd`tcYk1RVkT63=nCsV?pR3Z^!&Rz1T#q)N;Qh=oe&fX& z<)eYQOn37!YA>dG{qujypiE%5iw}p8HrPoxNh_~ zCl%}8A3Sq?;jJFp*Gq`YHSXxrfZqI&r123Q+uO(pPDxwI=a&SENWJoq?5Lmb!p7@_VThbFPwKGoSnOh zfKOZj&2C!w`u5MpkZHP=?Yy2Czqs?`wZ1LoqV5N4Y~3OpVRv)8)PtJgzARfdlks21 z+YuU1?OU~t+_JJUorq<}amW4jQ21xXm)F<&P`|gf@eG=N=pfVX?cQSO`^yXr6Savu6F?u%JT_UdcLH;U&PN#S_|`AMIW8{zKDW0TCZplo>x)?Ow@|6JaJ+_$ zhC54c$=*Rcbpo(HDe3Q}+CBWU$9p>r?IQ^vCp&uf7{@jFR(UK}G-=h1yX$@S{{SNj zjyHUa@sAXEfxJ)Rt7`^|YuI;;+S;m^(Fwucf4hwH>G{=Pvs>xM>qz<2_0CG_MxWfHg^!sV;$I#!z@Q@07)W1K4w$gcdonQedd$m zFA*4Q?e3%0ZV{%{+TJDGxEwO7D*UCJt`0jB>FuQ~J|$DDE^RhjE%#o3pt)o0?w+Zb z7J9#jE;Ku3EvZ4`54CyMTD_|)D&XWfLKL1zBjz0swQKl4N6~M!sr3z4#IdZaGZvdw z$Cor}NK#KHaU-S=UbV!mhgsF2vB^M^A)eTyqQvCmX&hwZ9l++Sd`ylgh3&ny#e)Zu zFWttBCC0)52OT&W8S8>Qww4|;m$8hRa{1Xm)3-t{<)cTU>3WUDpNK5mLDttuO9^IKg>Br~AossN-9;s-r>uX-778kDBH+f}5O&2GQpwlJ%RomQ{V?c~<1 zWY#RM{67W8i0df@R_n|zppA#1!QkZQ89V?uuf4tq{6ULe_;YDtez4{V0gmxzQ!&8X zi4{gj#&~j1KSN&!ct=IJx4O2D-(}2-;|NeQr@QFi6Ot5M#=H;N4pos+K+^);v1q^21QLwVi*CHzV65ckAg~wXUHB_w5hj ziz%)yKGxR2#RIWuys{&ca_6Dk@&Y<^J#$`#ZKHps2$*C(MlqWE96V}Kr^?&E_0=VR zTNzhysZlhKFuc+9xxO*!R~IO^DX+~u*9r3NhF8f8j-YO3#%t)Ad^4xqTG|+GZCYDs ze31;xgpoG}+qhwrf};c8C-_4XCW_=?1Mf=Kt= zOKW<>Vn}3VRs#bCbB>;s>0T|f8jaz&9OMpug0W!Ge%YpK(d^8NZskroe5d~atz5OY z1#Ql6T=4acw}I|%r(g7&6k_)SaX3cFIL|*QuP@U4No}f5&1HOUOn5At3IXYyiuI2M z+Mf`37h2PsC8QF?lj!l|`R2So;og>a-!m{)iM*zd7&-O*4Po%Nb~9*`Fhk%Q=&hL{xwvo{ zVE}>`)SceB?O!+iH;~)k+$Y^}wb$wo{{UXQ@7jvRTT}4<6z=Sv@`c9Vz9+=DO9+SGU7Aa8QaHRLFt+L-U3+v0Jf4zT~Sd< z%N!1s^{Di!&z79#k9znv(ChyI6trZF6Xnj+Hdg=$(U^Xqes%Y!gX6)K{{Y#=d{g@_ zX*Sm$IJ~|_68)aZ`2-v@x`FyDSKA&L%2<=0t^F!yyBri+io# zAD1L!zf)T_cTqZ9jF*$i~>Pp7hEIkh# zW9#W&(eeAl5$aPUhGGT&t*dH7=Eg(Hh=ls%%WQr%;}({G@R4eg+uH6@u?Ky*`LY0E zjN=DB+*cHC+rG!CnoUCyD8I6j`;uRw4vTrG>elV%yo+-hWxT`kwX#NNA z1&nR6hMRGC`#{g{Zl4FA_E1*ti+ZEZ=03mw0D^waYbS<0V=MrylHFS&Up&Ug<&%xx z+5Ku?+XKKiem(e=;q|e(w70o~MDtnhr}>U%lWGPZd+DCyyx;a2_~GFX0_h$pu<;hQ z+D4^)cMP_1vdjegRfA=sQ`0>UuO8Xowr9q#1pGfX6IbJe=d4n(zKOSgbnchi~OA!GlAyM2*e@m)|KT{`()Dd578Lk!{(P zQ)eXJEL1%Bb zCVP~R^KdKOelcBrqv9T;hR9vG^Z;4mxzM_rN!ox85c2@wn7y zxr;9TRGW5>mCs>b7Y)VKjHr@1JpkQahw!gnhePp2jn1p6i+gCJkY-tOpp_sDel^bU z3jWb0_ZhrZ8**~$eS4=!LaqlLtLr@)V{fL~NB!7QfAP^@BxoxpucW4-V+^-;TSI-K zDA}U`fI%b-4hTPueOC>~l&GNe7~-_EJlfJ)9&P(tYm;eT0(?U>GBi?_wnbn8BR3J} zjCuoKoR@ws)-|ikNbYq5FWJ?V8KVHIvl87p=NYfPe{8F=ehS>i&GO58Zl|1dV&D5M zd}j`&;Hz>(`aQ%~DW}9Cp4w8u?mWgW@0J)Fco@zx)0)xIf~N57WFYe~Jk%1$jKQ?kcwS%pAt4`G?JFPavIohn} zpI%Al72;tYC)-AKV&0un{U7zG&uQUswzO%lxgDm1;Ry9F2iaW7e{lz$ZM~EQ+B2S< zXCLETf9#Xt$SuEUEdofv{n}j~{{ZvtDE_tN-U+zWyi=)Z`WBilt}kReBDab{H*uT{ zkUJXo{{Y!{MAdvZ`%1;8YO%eo<(wBLTX`RGOvT4@*@x#_LY^))Dtk(oi`LfZ*wzrG z2ku7KK9Iin#o}0gGam}Yr|F;A%X1uld+rmMi==GB_kd(G@r67J`fI`DE|V|3$N4RM z-FfgBOYt!Hxa$!VZAEn-vi*$j1Of8-o@e_b_;Kx?Yv`{CI2t=+{(86a73$(Wi{$n_ zwe=kzXq>&LeLW4vlWRA)uggF9D1?IJ_JX+Fa#u~ZANc7t`hzszH>G}9f5AYe4f{iC z8Ej(0)OG&=Vxtcq-e1Vpq?(S0%a_nBY%pqQbxWw@RE}+`1_0VW!nQn9;4ct(Z$;Ae zjZaCrvePv&y3Xol!cH&`%6^1bD7j()$tR_DN->t|q5U*8= zpTLgONxDe%xYdadwMw6*9wgQyy3_o%2X^3VF4AHwp&0%e%+_vbm#ETl=VOt|Eg`)n?sxv2Q@EcWwhYJ3_fU z_5cp%zrp_ifEv}miXgdFYuyQ4`I^3$Dv9BdTN|Sexo|#KC{&zsImUjJ@xP86!haC8 z{bx~Fq|$UuT0v`!G}jYCkDcU^_Zt|-eq;2m%i-UM^zRaA;{MM}k4t$G43NY_Aa9!( zDmFF;@ef=cmF?1}O{Amo7*7!>`=?y7+&#D#Z5`CHBQnjf;jl6ZPhY3y+PFUycp~e? zJ7al{#YJ{xP$7*neqFf9e39rm$31Ij#eWp6ybq<_&*ikYcB-<-5r|+Iowz*)aCtSK z;BSdT$BiY$ourXjEGs0pp_QYCMh9w0-4(Jr9ONAKuZYd^Y7(t1ReFs@Ys$XU?Y_5Z zTd&}0PNmX}R;QTV$9r+%yWIlHIP5grVDA=K#Uz`F&gVUk%yFC?;=X_QoutboHd=MG zzD#qVMM;=>Ayz^I0!Bgm-1o1uHOtL6`!43v_;z9F(2>ai8j|cdTerJTm&ku{8O3+mGx>sND4yu%{)UR`r z(BXdw=_wY8s;gXs=U(c8wtbzD6%a;F1A(09x#V%lT|V$3{ zKZPBT*ztx?eBl3no1z(FndwfD)kjhi^Mi1D?3YH9o(8{{RV8^WEG_b@rKK8>GFM$t0n3 zlqB(xLC1c7Ht2B0;oU-8*`~8e+2u%lz^%6+0>dB;!*RjK9Y<==&~&?h7DuR9{h(aU zXD^tG2@RNt1(B##?>#OmQ?#C)^|epNhXuY- zkHebvXs21;&9=Vo{{SO7+ADLS_%ra%+r_>W)vshvBI4ROq=sA^;|?SP{sgPYKf-gt z#d{{3XBx(l%an`&HxK7rAHhG1dLEDP#!Wu=%@>a>$%rBZ9m9@E9<=>0<3)rqt-Mg) z$>v-IE}Jlzh!xCxf0j>t3Ab@>=fZDyKfZkCguaZ2Q^URJ6Zn(h2Sdm{KqR$`|Bg>OVU5h;^0J zw3|!BJCj54xD!xfX^$%U%T z_LdPNsM=iPI6wV*>2w<#t$N}~^m|L4N9=zz!p#~|naEN?@&T?In9M&lxzl~FQ=?Y) zwF4 zB=_syyn30g7E-cp{F%IHRgK$QmwYd$-d$>98yQ;O?saJ5l~|@2jISe+$Q7Sq;nSt+ z8ikXfLv4E`TR`K6AY!{O0qxcAA(Ke5y}Opm%|rXpBk-10L6{3;Jziq58YhFU&jN;s-qG!r-Se+}ymzIS{@-AeLr%kQL z@~?F9^{Mec!Oa6vymf(*qJ@05CB|E67|%a-PhQ8`y|cnP)E^9dK+iwJ`&+lvh?U{J zv&6FQUI=DZ8-{rp^&PqPi_Kf%pTy6H^Zx*A+G!S0M;UvV?c)hOv0}l#;2h+hMtYN9 zJ&EHASW1yop(h5_q^$n{1J|RLLlV@zvQ2K9{ZG#gbKzaDgzU8M5ZYeCAev(Uvkpvy zXkhHzb;wh}$ILNN+*@w6Xr%qeoQoKr^{=OS zq-s-D6dj(c@czC>rB5fr)ml#M@=uPw8`3;U;LnDd`(89Q5@<_imy#hQ%>y($2vdyW zFT;xAwVUXy{5NB*Y5pOSd&V0kvAc`|y+Iq1x)nJ*5WToPzLxm0@Rvxq{hsV>^lGWybN*4h9s?LOb-8{q4ay);k4?BJxYGgqU!CZOWgBw9KV`!loq;mUB2_gyf@>GNGXd_G$5Qa#~G>T8;03!!J{q|cvAU) zcO!XWw);6!I{yG#WO^Q<;t3MM<|d9=Oq&r@Jgmq_b;-s8;Qs*i_^YW(nw{w_A7kdd zl|-*7vzn4S+soyGC_;%2(QMNF(mIt3jPuhJSEl?6@ccUG#M@hKO2YNzfqu}&OI^zm ziH9GIeJ+6*Ty~}()7K0?@!Y-t2@m) z(n%qKuMvv{4te2+`88Wh@eFTkEQ3eWVFQnnHs|wd#@DUh8Jt}qOSO=RTdw2lNpEo# zwTi+?4Cg&7?V~PZ#*}@_BkV8P4j(&5*027}1O{2+fEZT;3Y+oC{{W_y_3n-PojM?U z^ItIj%T^-G;k}fqIJ}-)jQeibKSUMutWq>qu_5Gy!ThU9MB&;@(URbDO=EbgUri6g z+Mc3z;?B}rgS)55g}RX7PpdE&Yge`+Ym$d~?GG zlQre^(n#fr^D(tUdvLhG^v`#yv~Z7sjSKM9#t z5?Sp{%PJsI`^RS-4`vnUOH37)Sue?iqW-X-M2}*%``vNIDAq2Gj+J?EgcpVvkY}bs zll>`>##^}v+WkP(oRodwM&0W;QkcCTTzj}=ib6G{{Vj-zxdTl`$Fp9 z*k1+wXLY!#I%Lp;=wx3keyk~5Lu@@iZCVujw7&L!e(SzGz3{G=;mtbVPSGyP>ArKz zsaT}$8cC&)46x~jQ;&08-~2Am6kD--Z8yU9{G9oEJV5pOb631=rQ6=?P^{Y3oxhP` zX9Gs;cOxadYQT^8fv!$}4(RK-+r)OxM;jGo+<)>JAFX*_(s6cQk=c&@_9m@G)=mB; zom1n_ier(R?79?a<8tlNAmnEU_u90TJYWGiKoG3qtE2%_HxbkjXD=??+}&1 zET;o6z#I(M3#xc~MV`#EYVC1!6o}(k+m`GyRCldUi@IEQe;0L|b2MH}r;~0so(PUK zk8juI>0XT{r3yYlqQa?dj{C!L=z)MOlYt|vf-3kl?mM6yjI9kN3SDyy_)ZXkLZJU^pe zTx(in2THwFS+=yz2?@-Z-JhUQ_*JXQ+6i)|dhh%!uN40P!$oNx4Y#&v7O!c?TYJvYafZ4*Telw!}k6jmfuThY~`9^4WvhZ&xOwAJurG#HQ_G` z>K7liCH}89gx_R)`Mj%-CBmY{Nm5B%au5N7Q2y868}T2CJ|J7irD$4~rv<*79A0Ie zq>`Xw%*1X`MsUNAdfp3t3>#NRocufZ>*L=Nc>BY;ZO*#SZFPSPQ${VJP{>?v94Dq~ zPaj}SKB1`iYgNlsiLbzddWO z@h`&v0I=A_e2{ImFXe_W&hJBBdExmak5;v4TBD2-+J2lZ+m4Dbt&&8?B0!7YAlql6JV6nVb#T!5#Uk*DI8Za4nA-Wm*2-dtm_GIwA z#+mWUMRwfK$8R|s;&{${htCW>b6(B+I@|f*wm-x>zcEWVzEwa&90}tYK7yS|^F_&a zDJ#ib`!~(`NXAI(U5|xZ8a_bAWN+zQSXV~p8S7oAhS;u-nHVLQ{<2*(xq zar<~&!8h#(tfAZIMQv-#bpHTSrysBDU#J%nx#t!6Yx`+vch}#v*NAVD&|X?bmVu*@ z*#Z9mMvI{s$6mSXTWJkjv7DNHO+VTi-qQ2n55j?PO2)A>FP3mW)knb3t$f!EHdb;+ zG;5uW@^4@ZWO1LN{#EpM?G-%Qr@-Ha(8mG^WR611fIPe;XXX5TE9boz`&&u65B3{N z)Z4dh)w;+Odt`8Z$2D`4alC%(n8Gqq)t-;=gTzqjy2h1m%^F0K$@5$|K%nj?Kb?Ii zrTCf~tEnK1EQ*TaVahNhjt_p7@;`{KuRKjM-8^>iT(Qf{kuYL=4C9_V_2RmJ4|wZU z(KIopwZ`+v7fru-=iPBj4~UdudWz4r%;gt7ZhnGzM*Hm_4d+!q^6xPt@p{tme5dRz z0pk(>0O+Xe*ufEl;Rh(k3dS#r)`#KDscH(%Y4e6fVSh$WH^>pDvmQ#`#Zz zwU3M1^nx2}twU0j?NvT>>~oHo8OKg5*1u;>YWKvN2aZzJ= z8W|GR8pp()Sb;GLMk>*T>4w#FT??O0{ z1GhM?*5l)Ef;4MiCi}$F>h}?;N0nM>OXPEczb`}Dz4~~RqwgFt!#;1_``;#e_5Q65 zq%uuBk;fEZvq>QUARS33pszHC_KomN-XOQrqt?~udxeP#Lm@_D*uY@8^yjA{zGwKs z@q0n>g{{4Yg4&IwO3cztB#fxT2j$vNIpeAPJJ*)zr%kogwEMX3)m<(lW@C;STpkw# zui`6?zGT$7V82pc9m7cAlBoUsNns5CY^xqgU9s}2j z;_@F0+6ZoPG7qB(Yje@OYw$Vq&^C6+ishE2h+dFKRo{dd2atm}>CO)ZsA?Y*H8|o{ zctDJ>0a9cDQ_t($uSF@mCoW= z;GB$}mGdUA<4NzWS`%RmQ7Op#=REhxq=#6REg>}JDArR*w~?=ljj!){@AI=>gQ(*kTUh-xZ4Mnu84c45(>=5@$vo@>oPwc- zPpJML=BjwV;W_a)hVOM-d7ArNNt;nwCc$T9>k9m*hFpLTax?9X;oWXsLqzb!#Imz_ znmxM=o&g|}kHqw^T=0F`TxlgGAV$TJk9-h1d)KF11sTwnEN<-Vm-V^j%6zg~pAzZu z$7`r1gtw`yY4b@WcI|YfVP<&vBrqg0m0WY5z#8Oj?zB7ILf=KUxrRMY?8PLBP~flx z?%V-VG6CT9HS2#DJ{rfOc(YlwvQ3dmF&Ma%N#=AVyOH0oU&j^VdVYhbLF0%uhd@=N zjy;Uuy%}dxdU7y-UTfkqx-rB-*H_x>{Pfe*_G2sCv5TvCX7b|tC5Ag`-V}}VAs9a> z^&=y%>0Jka?zJrqwXH$z?IXGSIz<#vlCiXb^1F_6*z`PsgTbxquZH@>_m_7t7?Rlv z#2aI?s;Ys40O{1{>*-C0!SdYcYiIqX9jh4(vP=*V*x_)bk5>Gv>L$LkMNyPfPT%G~ zWnK-wO*$V__zzSXzNO*I>&RkznLIlM#K8&MyLj9H^v>?}>faaiwU$p3X^|h2TS=k^ zuTdfo z*;3N6=cwZ~TS3vZ_0;cHRE#ydsf4f@QIo*P_7zg9>A1>GXnIsr`ko>(+ueVO>snul zwItD^g687h31K0V$w?(LD1E??SOp{!I&odDt?^RY;v|t_HiU7Rm~I~6e~oyav98T% z^2uofO71>sBa;n}Odge!aF@D;xMl{~oq1C!Id5Jo;&EA~VOmZ+){m9H;m;gjKI)7^mq!2<4SfU0mWt#_h$U^di7gx%;=S9 z#U&df*Dd^MV9LcJYr~v{ep|2ia4(MWX_1j3H@>=suk;5usWb)*Uf)07= z-%9w#>%lsfp5`lkSzQ^1y0tQXE?ivNd`R&@v5;Hd*=gV60G2M3Zm z8t%Lw;oS$v@!0AfG#2(Z%+x zBztRHH{(by$E5 zCBmrtxyC@qQ`Z@>UGi>|W;Ba~Sxvv^;iRWFq@ip%KLtoMvmS3|&WMDSMh&%k{+*KAy zN`P^@1McJs($M@td!pYiyQg@9!rJRi32SR*s$8@;YUGj`;vz)~2_TH9IRpWdk4CjD zPqX$=sbsc9(5X(Fe7gDheoXr#;g^W4*H*pIBhx0ZY2cYt0nM|rfZ(BE0XT`d>VFF2 z{vcXgTlj+ES}80dnpJZptI3I!09mkvfY=}q+fa*U`$gSU|(`A=QTjGmpZ#?4~i!QL{{^$WMXySBK5+W!D%SVTPe86_EX zav5`m`>l-a7$osrv!hq)QHpkyUw-A(s~>N8>2<9-Db*V;|Uto=vp( zvMc=Ie6#bZTt3|J!1ILyyx&;0(}#D+wzQamM4>*^v!d{ zx3TKdXd1=M*M%)FmnBt^OmMRn4JSa&xQwRU@%$#KN2qvnRPhv-acW{K32#M>n2t7g zmtuk+%5q6k+f;6FazV!j4-4&Jl<)eX)Treo;?mb!+jH3LYu9JDE z>MsrDwAS*g6x(ox2***+di9BZD0q`vx^ea-mRr55(Zd)fPI`sO%Mp-HIjXl_GVx}m z{)=&ECB_>9D~LmM1ORs_$Qe9Wvqq*e>zWa__`l#DS1fun-h4IU7VvMvT?ybziAAbf ziQ%;3XF|)lP>zI?jyb_N=Cw6%+L9|3zl}U4ty;}yBlDxYySPVPz?1}F1tbDSNY8B7 z&h|ba@s*0rrd#Q4wMWfv%PfI%ayY>QkUDY4r9-KBlf~X5@h#1^p)M|DxsLMgD8MC} z2*$v}9*vH3$>zQ2R8K>X*wWwGy* zUU&OKUwlQI!%)fN0i@b#_pU8I%?#dTpLk2o)dLxcd!B>VwynH%u3TG3GB1oae z*H8!}{o2X8ivIw_cgAgU88xMh{{W+{+{CPF-;54P>U;6&TXM_D!AV8l$IaIEFh!_B zkuu5~l2bU(r$0*loA`60od?0*9@4^)Z1ngbAP??Fs(+PyBjKM1>H61;JUwcj7qEez z`Xq8bZOX@K7$Ee>J$qN^v??KxusAr!6sphnYMr~Vzcjg#W-`lMuf+?NkHap6;bnb? z{`qDfs*38@r~d$6xDSgG2D7raErn(;_=Z9JnX86d7axfs{{Rc3`E^@?+2XeU0KQ`n z{{Xd3aX+?I#lrjy)h!@acfPr{xA_4$9%{KK+X!pXJ{Uq5!?R0_8Sdsk_rrOA`%bvO z+HMc+4+?2k0FWiT^IILlqYwRg;*M(T`7N6XBXZ$Qrg_fT*z8{Y2d;s%* zWX8_q3}lnZKUzcav*E3%9#4j58e2h4r93l#B!F_tu?(NC>ZUve zrpCY)QakNhusj!`#@PAu=prBEQT2w0^=eN`7~VAfqph{?4eDBCJ{rBX`%FeZK37ny z(Dtf+ApNEvTC;0a@Z^vyG8Wx&oPfZQ_j}_XjY;G057^oGZtd;kZ00o#_y^{7AJ(>8 z!#Y@n{M3tfaq}|btLqvj(3TpSk+<;w0OORu5&S_Ol_rV(pAtsXG`@cG@{9qEqq!9i zk3Kff;V&3!nmw(A6U7V1`{{RQCM3wf_p2TS(lp&WS!rz{g(op>EQ|@kbmNbuV0gPs z(lvh)YL_!evCh|0hHgnXat9dn0++V?R%Lq_bMpBany1CBSHzZ5S_ISWBb7>)2;|`X zTD+M)1Iei@%r%u|lR5ID2O0cp(QZaAK6DtEDV~R!;b6as3-BSN`q3@j{*yT zquI~&sm{HxLz33aJqyHnto^lBqGYNudYlEX?31IV!b+F-sLFBzlpoAiqkhS{Yp{0I zbrQ;Q4)p8)0DRYHZ{rPVa2g1R2fDU@ooUD8ZASoonjk^<{{R}O;<0gDv3e0I6kFzY zxzyV5=GDcJS*2@)i0*w`)18Yp$+|N%y8Up*D&;e^vOx##vwe84rz5e~G5-J|W7GIy6pyCr(l^g~@@LWzDYT@mG`|vg zt)e_v;O~UahvWS^f9=gfQDCzJ4c`hg85^xg7NrdpJg#QC2hO_nPuPh?3hlIj)mNZJJa{eNXeRo8i_q%T@VxE7l!@$nE^= zL40xIkF)s^U(BhW;YH8pR<0U!B2it>p(JqJ3ix~WnD8Eru6$0`E@jm92(K=#tznfR zapgr2iZJbfx%+_Qo}^c(U25JiywChkbx5=Q-JpJeS1G7?M^?JHn(}QxU0lD+?{yM9 zkH>OOPXe@*RYhiJ7NY&+ndiPF(R3&9zk%%UT6fazXPyNSvj%9k?NUhRf)M>PRW3XS z@V-_OHI?Me(Ej#w{{XXBswaVNWYBbkhWg4&g;r@IxWWYAh9j>~MmVR(@b^$w#Ftu9 z40TI}$LOY%s5{=;mkQLr(qD1o-|&R^1~vZxL-5_j!0YqFD}OesllW&tQhv|i$WA(W zwm;RHz4G6{3mT6*ScWtI08Clm`Jk!)0O1a>Lx#p|cM@B~;o=HMD}o3l zdJoQ$@4(tr*3OH6BQq%UHplG^{+Da{MB8_8M#Bjf*T1AADqA5_odwPq5N&AeKf#Cb-#v1A=%AdkVcD zhI~GxZ?(TX_nCj7smFzUHM@G+UH<^UrF?!=Aet-N+Zn^TxWBp(G{43SZhkP^+Udln+mvQ}R_L_f(wAQ%$JWmgw8Hv=n zU{~nb$KhLY%3Gs3Rf1YG${OCr<%zg^S)2ZvCQU|sJD@+z*4k@-dvdLM&k5TIKC7mS!dvg~`FkBLmi{{U>XSqU;QC#eTHu876O-5iclYRw)I@%n8G;vb2uZ>==A^$#Wpqic(pU0Vw) zxj-?{gZi4_C-9b;dkBfN3kXmWKoQ6>p8W@93rI z`fbHT)>>h@T)_j|wgD^#SMbFwlIDDCyR7C%vRZpT}-#w*LSK zd^rPek4Lu*4nf*JU#F+xUtX_={5vi;>GqC4+O~}U0PM9V{35;@+s2V%evvBw03lQC z-*Nq6_B;b#(M|V-d@QIkV1ih_QPXSfAIh?0@b%)x0(r!LbQ6!~Ur(-&qf29LXD*v> zaRsp38neDeGu=qfT2J^!{5^sOj|yk|w=)m@nukgBWk$7?nm%{2@Xn#EYGEfyrMkOt zf?3@E0IY5mi+Tb<{3=fyX|`HQE~|FlWu5JcY7$|0KOl*jln?po9NhX~*U)R>KMDy1 zucowQ5tfea$;Z&xL*acJ#8(fb{gG~7@++^it@5y6E!icEg}}*EHPG9E!YMe- zc$MW&g?L3fT{Zsz40d6vDJG*YZ@&VkZ40$V@_8oYy zE%=$Noi6z$x7`}FA{gbHDobxWnL+BigJF+a_qMbi3;1Vq4ZWL0V3O+2TXv8!ltm<0 z1IuzgT$z-WJvQ|<^46u{`>X9HO>N9i3r*$!0B69Znljl5l6V6@C>x33bvvBnZVpzk&gRtN40*3L-60>kBA|RE|qUQ zEQ-p}xsNJA!(m7rk8i@GZ`r5ebeByZ_F0XvC0{P$P)cJt``m+{*1i^=ca_$H7=5`p>ItrMQ2m3vB_v^%^Hhvr?F)K`fIZWtdl-0OvFiAGiJo2~3hBL5 zN6J?>`d9AdlJ;jn0i_aJ?Z4{503X0{RsIq9vr6!X$8QE+2ql&Yb!%mgNT$b-T66`R zGMui`!yI+ac)|K2`}Q>OL6pHJyQxDgPD4cUCg4HjboZjq_Brt0kEmNuVd6Ppnh6#} z^KH@FAmn831lL9$G;s3PY5dJ_v|SmgUqj6Q0B$c1{g2|-g*1gDOWPN-aU<+g<<9&b zFnDC++P;3i)TXt%)-@RAk4(AKrt_h)utpG<#}W|CeMrw`l5myNL=%Zdh!|!nQ^jo(6H8SJHBR!8(n*1{WG=olaD^nMgnP%`(^a9oIDL&$Y;! zUaDgsyM?Y9dyX*C;P5emYpPUvVB;9O8OmusWjnK))<0;Ay;9!qNxahGZwp*PV!BzS zX>9j0kS2y686-K~lFfq5M;HUbbx#*+-X=?JHrD1zbo&s((%q!YaVcQL0LP4<&c2n^ zKV*L#-u=GX+fC9^&hjLW7czok+mE}no<=dyj2eqU{eb*)xER*PDF^(v`$$CnRCN4v zp55`IMN^AzHYwGqh>t9#spGc(Jn<#LfiE>%`>6bZ6p_djBSfWk#@HET%8oKHdFo9r zz42Q1?X_DgJvto<&s7n9uF}Pwt>kF%Lv3Q%JBDyD0Vf#gUh6OX6Su}?OEu1$JCl-; z>SOxj)|EftpMF2HlXaDaq`R?`CG;)Zk&VZ_Y0FOcE0(RbmZyk#SK_vz8~eE~>?A8K z%G=4gUt?iWm0Wb&!2}Q+BE2(E{g8eo`Hkmj@@~%vXN&>gBbuV$vOmO@UoCX6E;4r! z=fqBP{`FNnFD!X_96ZuZHqSGgShcwEbefdF+gda3D>h%R@g6xm=aI=A(O!#n`y_lr zk%LX7ODAGl;vU^Uj*7plxh1WRs&eI8NgbG5C~@|9?O{*$V*;G4jMxka=Kv=)#zM0r ze7lJ6hCkz0qn78);N>_&^B-=N<(~|+=ZnP;d8pc$ zueA$%i_3_vBF~myf0al+imP4ha?36YdVc|}2yRPZK~miYR+^k+bzxd>c3m;EKqHDM zb`FY>s^i;%Roh3MvPHN--)}W?&9Cg_5~L2wf7r;axI96sNEa4a=dYG%jZR&KDsEe| zE5P>mdIyZO%~9-RxVE&EN@Gj{a1Jr};=ZBNJ}l_EoLH0X7BX@2+(Jj{xfS4+GwWBX zPuL~{{fHYisTYTJE0xdK?z8U$1N^GpS<9h|qX_jq!t3J)g{?snYDxl*O2Z=$(QAb9 zM~^hW8(&(TD&X8(!03hcG7ZhRk@Erl)%@#*m%w_Z#|8z6hj-C ziyli3=DhRb=f=xl8sBNDraaab)}l@CcM6ilv5Wvu7$2=gWAHask~JQDaj44X;DtOA zGx&j@#;mvO`*S8l+RcKmeX8t#L0ufNk<8@NISV~f`uRe`sY5aJMNmietKZrBtle*M z_*X)ov$cxMJkJm|M_(q?{{W3`*!(24(o}!NL8~&4?nZzg&a;&}d@t}djb7;B{{Z0| zzndGcrvCtdoK}B`G}|u=={Gv2t$j2$cI&!X7?X^U2Lqm@3iepE4I$Dtk*1C@id}8n)i#$PPq*_OR_N%D`Q5hovGmbNcIQ**g zpRvz@)tsBHb8dPy)JOS5D}TWM0JHCbdbBO`R~Po}x+yMaX4-ifz`#9wirLdm zXxP2gNaI9>rdA$IboLPVD@^`{y;a9=WI4 zT+49{j4)kD7tEd*g1dph1%S!G_o?Ujp(UIP6mqml$xy7R)bsk*PK%UM)D?TlvnoFb zo;zNx2uA}Qt{rueg-1_3Rvof;2r%5C}8n^qpdpYgC<-esu*P1%7 z?zFpbf7@nn>sSq@%E}2WPks$Obhj#a{Dx^+vFXs=kHm4<;9A;RMcd_!ez~Gg9cnh~ znBEx2qQ<|^6@?a-TP?M*oQ^SrQVkwfZU;Y=E>9s{>}WTPHCu^{#&$2aVPFP!^~X+? zEPgQ5#Csljg8u-#KvQXL+3IpF<9}hHM+a6 zD$SN7=t(tW>`FfN;r{>u2l`UHO5~BmE}L>A%S7sN{onq*J_{+`_K2ANIIi4j>w&gs zU&vAYl=5@En?LQEjS5uR$_*~-aLjC;>~m5LCUxtN^Z3_PG=030&(@y0SndJzrOb-< zZJd|(EyHA;i}V78@cgo8bexYx727VBHjmv8&Zb>69V6O4gZwD=gZ4)bz7|x@@z9-EBgk6tR=dS2xjZ>3AEVX7$Mlfta6f~>z#Ds$n|xfo0jP%Ey~ zVvkOQyS6|FpKvR}yiMZIh?<9pCbrSE*`u?K*K4$D0}c<~$Qa`%o(6Npcv$@R4VT$g zp0B2#skg9Jx<{hN;gxQxzxTq`xcn;{NsyzD_CnxA zCp`~dmFa&E?L0~Li%DhF9U?c(rDY2FQIH7ZJf3iP;B~K>smAyyyG1wYW@!vJHptV5 z!X>Z-Xa4yHq;Cp^`Fyo325`U%>n-)Sx02#HEtXBKfXtX}#~lx*PbUMR{3&W$^F!x1 zn5_6dTyew$XP)Gdj0}&*(!7ekA>m-X%2IF6$hU<^=A`i3LhF=N+(Pq=RtBl!O&3Fw z;v2O4L&BlmVgL=ky!Im)KU%Hgj~w1Kaeb~NouX}~20{VH_lJBEGmbd#n#A~huW5IX z>)KVr!D)A?NdacmBEb=+Lm()mt&#N{VY2~gXQe6hzF zAEjZlJnn+$oozq9lk3*je~Gm^ajh#xCqt+Ba?bv6sdH>p9#~49Gml!_Zv)sOk@m|+ zF)0s*?i-$dgnm_jQ}}hFX?o-8@XfYa7nqeouJAU7!01YyzL*2J2D2l+wza*uj5@O? zCOih<_vCu|^sWB@*34|(moKWn`JG=>gjc+ZcJcUgPrRKq672$}^?Q7tqrc>TFKNzgF zcF}x4pwFgUSn9G#B#nP*aprliK2csIOl*v*sOkUOkF75s&t`b>}DL`b-XENm6PXt(W!N z@j5D2_I(ct@n6Gsv$D}88k}?GO?-T zf3x1oYdh%w0M;eMB?$+ReqcTE^sleOVm+i)`uE(%a*U&Rqaju`k~ZHW2l;n#xAV^) z_3EDjH3;ndZEZAnEgY8r062_99L==ksU-ZMfPP_|W79R|`fabAvrBU+4H}lt-Oan{ z_~-Dg4L48J}yEap4m9Z9ed)QGLpp5og3SkHTRJQ(4bjeeoMx@K&j8x+U-0!$%dA_c5zHyNat2 zx%sw$8-bi;bmG2b@Xo*Ei#t8P@QlejOCOgc(jf*x#sL`s5uAGS?^V1(@lV7yI&2zU z#iiAa)KhtqT^RN=J~rjL?l{0bxEKPzCa1$VigmeFr3KSYy<6YY{v6fRtIK;deIcj* z)7t)zdG-rWw9N+g+V_Q+Fz0IH8OAcio`0QtPK)C0V&mc57kAU#TT62>lF^?5nl=F7 z9DUQ4?b5yh)4m|fb+w*&;4%EJy!niBNn#Hil6@=f{{Vw}R*mCNgE}^%*Vm9mYO^$g zX_V!|vk`^>08VkpBXJoyu3XZb@@guiBW+T9lSXr`HyJVwW5#;4H#Y+3?KbjxC}q4V zh`wPt8FnBZI63vMF5}{-is7-;ZX&k1Hxb+zAi6P!7YJJ`AW(7B(0}!^z9vnfXg_4X zx7BR!Y;L7?jtM0bEO{GMN+CEs@tmp021d;N-otq9jj~p6ORfze)H^My;^re`qzg3&;B^mw7&@BT)vM^ zwPpzn^IgXbY~41gc3hL!11FmAbYF{}6Y(|XuW4a_bhkQF545GsMFzv2vMFvJHrm)> zka1t8Wv;F#2^!8V_kYp}w3*-Ac%Q=(wqlyiU$I-&&+4_M7O|sD++4eREyQp75nfrU zYl3z@Lcu6JW@wcE0PK~@>Ox!7^F^nD+sla*{$*>>R9v?(_K9qdp$+z%jQRH{zesWX z>W#*~;ro1vHGPff(4&7LUpvR)T|)LyEy7{C4>>^ob+2de!&;LColtr!?*2lXqfQ?b zkiDd(@Wl2xd{Lwm{*9ayei0A;JN_;!6PgB9KMB!73xar)G!N-sj~CTrOEe(zJaNggzUMqIpa zIufVTAoE)me-B;o(-dL-)pAehE0&W|)@^VTR=CHcmT2Gl4OO`D#;vCe$*S3r+)ZO3 zKci9146MFAOML@cOfOHkQE+8N^^eP}d zp#}oUjnDhN&;MI@t-IED@4AzmbAIfzXV2ajww~U; z06<`eqjLuMdj7?4arl-uPC*>b`HLO@gTMX7Hvhpr|M2MRD&lx%0DzRz+S=O@04RRr z=y&{W9dU9f332$5yB)+GhedH%-qy()R}Lla9l+=2=J6MQ!r=!t|C=1g{|#GP+x#oj z+S>77{2yCzIdKI)h4^^7S_l2}$N!%8vGaA`Y7V+@;`a)te&d*jgm;(_?8>Himdd+7cv z-`(~3U;p?=2Pb>Af3dxflHPym4iIIv|KeaLeWU+ke~97p|6(5(y?=EGc2fM8?(L`h zug(tM%KzHv=7Y=mzsj|>{-3gZo%C`3{vUnpeT@Ir$Ikw#(!X?fgMW4N^nLQLOi$N; zeElC=>|Is^fl++Q95IG*{ZFX1te{twM(5&)#RaP8~XdIpVqF`Qe4) zMdHQdrQl`Zea0)rtHx`_>%<$t8^fE$TgBVPJHorfC%~t~zlG0+&xJ3DFNv>!uYs?R zZ-MWK?}Z`Ry zu?ev=aR_k&aV{~G_&f0!@jCG-2?+@k2``Bpi57`9i7!bsNhV1J35;Z%WP=1nN?>Id*(lit8Je7yoSR&Z zT%X*T{1y2}@+$IP@&)o^3JMAi3MmR53JAqZijNfED1K0^Qe05pq~xJgq%^1WqfDYK zrul&YI*i3&wcM=e0DMr}tOL7h$AKs`=4b0dy>uJ5h;MPh}2Ub4C`%$Bg!jag0#LDaK2t zJ4{MUE==#48krWE37L7Ab(jN~^O$>?_gHSR$gtS5#Ie+{%(3FL^04Z%hOic}{$xF6 zV`o!g^JL3p>t@?yXJCKK?#%vyy@P!lLb8vGQaJ=S#ax8L^b4qeLaDL$I;zZm7-P61mdawN6+ zqrCXM;=B;vT;4H0B0ecTcfK!taDGaD1%7}2a{g5T27zY+uLT+f4g~KBnhL%b>=(p5 z5_{zO=_fA2o*7v5S8z$M5-F9?^WSy zY-+Y@rD_Ou3H31b9t}zjJ&i1lwP!rfyq~pb;%lmFrfM!czyI9*d7~DfrKXjtwW!Ul z?WNtSL#(5%ldZF+Gg19+C8@WV7F~AXP;uf!n1w`TX7?k?^<9_${09%G)op3$BwUeaD^ zUI=du?;;;O9}Ax*-&?rg=BM8SzbL;|e|i6Ge^h{BKy4sxpnKrYAfBMupsir#;KC5X z5ZjQh(7U0pLRZ5S!aj%Nh1-O8MQ}#EiP(6l^0MR=`74)K!>=E`PI-M2X%yM=hV9ME zH|tReRe{JtcGHYGS^JykQc;lrH|aUV|7tkMS3Mbq;$$TR#hRz5!a*pzuM z^IhgumQ&VL_LFRA4r@+q&Uvm~?s(qgysCV*{P_IKPmoVDpH)6LeBt_%UO-&nU$FVr z@N0jeWMOF$b5VTJb+LQ#N{MbsPpL#{X&Gx-ayfpvU-@>0dBv~Frs{^(Qg>+V~-6Md6vlS5O_ zr^coYrf1;h@Rb?6nLo3xv&cFBIrRL?1)_zx#T$$1ORP&@mLD!dSHxG^SD&u_T+>^d zU$?_9)?)>A3hr^rY)l`*i8d?F@Y$hhjpNTu5H@Um9I*p#!c+u0CEryl%m0U>2}$ zSgfbDxAi}<00Hif@8AFcN5ud@WrB+xegObE^?zdGe>nce{QpURpZ^c|KXLOvY~lb= z{2c)PhGrTs0pJtvi3?KzO5COW7y$Gi1Nb5$|6Vxi-{j*UBK!})qiDp1Ch1u0F)kJ) zc?ba4a4Z(xh{awP;bQkW0Qi3PpIH1aH}MSss3M^D5sM#vp7ipc{QuhxI}a!V_;`4K zzyB){5E1-M#Ds(dL?pzxpJd!cN=89ON=i;jLPAbOPEJ9IOC)5}G*pz-fAL=-f3yG1 zh5J&Hl92x8_Azaz;S&%N5#v-M zr@%4P-@vI)K!A@^mWU7+v*Cr|-UEcRL^tmWDG<}?Sd(yg-4cHF{xd1(lj=@--7&;H z5gYHxb8$a-$RjEyE+Hu;t@u<)Sw&S%T~FV@&~C;_Sl5wE-c?U%T+| z18^4sEg{ieA>x|~IwaO!bR5F3NN+uP|GB!8j8jAxL2u(dM$T|gboD;+uWA2S_J3yB z>;F%d{cG6&*fj@G65!z)kAM~c0~a1W5roh-DX+7T_@I!zMRp1r=YkM~hxWu?`sTV; zbMzu+FOlK)F%-UNw$d1V_%#a3_aaO6`Jdl`op$n5Kd)3#j-MfOgfV*>J~S!{>=>cz zrPEXW+FrXHfj}|gm~vh4gNin$`xS9Nn&*f8mzc)v;Gb^L&r3spsLe5=;bm9PQ4vKD zdCts=yG|z;#uv7%pAV#dhf&!=7#{s;j2ABZQBYQM%AR&|vvZJo|CY8 zWs7K#Q|#`{V@h8WLHEe%ql1$RgMM03ab^5G+P6z}@Tn*Jehw`WqoFnptma@2JI@fZ zLY;pMkb6}*N{M1veljuVg4Sc}s_OG>!^qcj@{HK zojm^NRc%o|fCZ{Ajq24_L%gn}FdzP03E`RVU+rp@d@Dn}umB(Ys95mToP4b1 z7%0kZR?WVDRXvZc0o)BQrWYijGl-Kl4ir|!0vjJ)eG&{RWx69AsXihqw=J8w->mAL zd-Jq)&^H>Q>l12FVm1W{A$cy`-JKz>qpViiN{(}ZqBDb^dOZ8x0jS5fZ_zVP#-cnj zT<%!HOdHEkPkPj=%Hk=i)|t>hmeK|h&Vp$L9+egr?24<)6m>q~NdK}1;zRXAl2_By z!5)qn8p-xQ5+br-@_IG8D2Ma}BBzjZAM zVy1efU0~U`Zf>AKNrtpPxEUHM5#rTudtuf@4_i&fZ^)-j1&fHUefO<88<|_e0#5?% zt(NHT+~nPKc`<1pxEJ!l>$&!MqkI4o99?x%2@bhn5hnP3gjeA=Ub&9MpWUP4EapSZYzUOGQ>&4dp?m`x$-+i zc2=3pEy=N1fTAu}b zpA4I#-mh$72GiX3j|PQ>X5cLgp${hZxSJ+kEVJ?q372y{5}82wYxQO5o!sNk64QGW2Bu~Iv?yHBS;t+ zTeN%@ADc=NeBC?h0aZsHt4|^jkShxs4Z&jRajnlsj`3K)QT*5H%V7_6Z1i}aFjL@e zUfQeAp*O}Y4_HDl{`pTZbdIYw zNm;eW>1VSf2-9*A7gYZlV!74KN3`J^Dz^%o-9_6N|E@lk|54!50mud$ZX|aaHfCR& zc<_(9Po2fQm1lsoC>3WwXwsVpNZVb~nh^ZCAD;hgwP>+360X{j$z>l_QQV?K6fI4- z3^1~UsnCz2*1H+TOv<|JZEcSqv4-)^cW^2eZ!^2W=NR4MxZZz1Wdooz?eM~>eauK% zDMeT>#WDG*r-|!s$Tbc4c2X2S`xaRhipssJp~Ch4yO*lwFFQ^L17lYAgrj95rb5d| z^tLVcS0kd~n1^TuVX>AyKE@=LZS$&vRjt}3X|#V@rWK}tXupfUj^H^dewFaPo7FzE zdp=NHPR>xwM$r%O%8D^S?EKh^Z+^KSck)nHhB7w6XMlV94WdWt&jM11wd!`OX!?tN z+d;GMOO8u=C%2YSPb8901EE&QUEger!kmrUc-<=}PAbETZ`q&L_F;ilyn#*W_o2jI z80f}Hzv-DhqPGb{d!d)wg<#me)H&4`tQ6^AMVR)rJ;5u2y$Z-b)i{MZ$TQVbbVZ)t z0#VI>Ll+#CUgo%i%>8A}0}1mlY%jILL97wwS3;I!Sb%i61-f|sfSvJG46msQ$xKFE znASwQqH)R+f6Bpv6jT?xu&7bA&{xX?N_p}mzrQ|M8R|&=DV{sCzB;+mbLq~+ z^!SsqB=kl>s((s;`QN)^%N$iaC`qnmXOQ1 z%Pgr=N!<;d+AEr@@|3AuOGjR4Pd6fC@9@jq6M^(a&ZfYOyVO(OB)T%7Le26(-5(~y zglFrUx~kAQg)_HRq2EZw)N zPXnJYs9qHJ%7aq7TI$Y%-w3lXxPI?Pw@2w9?_IiL7}0XAM6N643E$+tx%`s#`7*p7 zn|?pjAxYT8m|btKEyMEHVO?wAZSg~<5j>BzOQYG9d*wbw1c)xtAE4?{SvQ%*& zMt{$9g>sB*Pv2rt#Pnr;K&4JwW9P|vRgw%%9ouJ<%#J@gDO%$#XpdR$KK2KQ{f^S& zxw!!kPrR99xA)YZ3XCgBO}pmx)xM<>3~Ir-q9v0hSinD97N(UhCwY;%u>0$*Xg2^0 z%;{CcAD!8sRJHblYN7ER>=4Zo=U|O^#?et(fqTYSV2R+J+>fezJr)!^$mEZ&#_I}r z#3F*oxRjK1Y0@E3J=-qn9Owathn4l(M_ql?hX)Y@RLN#^y5Vt$h$Ah+{tE!bF0V5;y*+U;#pNRH9f}*AmABq4OgNQ+%VN zrY~R=hhs9F32B(!Pr?ueJ3RHicHwEC&%odhwRhaP`U346ch6frPszva&W^CNN}To*y$idyk;`R|IRk8oZS#6>-7wB?84!RY4-pBee&v#no?$%S>_4N6BKRAzahF z4w@Jc5}6tVM_duC`oCpsh24}f>bMd`d3ypDIw4Q4JR8&Jg=J za){E9aQj1@o`02Q!5s}-$>?~5@XtRpv!WyW!e`~0r5{L$1?E?(SchZ_Ov!XNpI;~C zQ0o~c%$GW}YsL8G6PaLvE~O9`57D^!*#h16cChR;*|_DLk~s!Bxf;fM7#4vcGg$-O zSPCn1bF*$HAV)%k9)d0;gQvk)(iDc|=r%PG5!M4~b2AvY{-n|gNiW$qp^Hw~u}k%C zb34y7LGxZc_!g-ZcXTzZahanFgS%{BdzHyg8{z0U36zCjOd6Knhh@s2oh3oVkNl|D7!+Y6a7eN?EaVD_Z9 zZmc3SzpM5%1odTc5aTBjK9YY+euTCjMD4B{?l*4reja1xBB67gCeN$o!zoa|GHde= zzx;mGPkT8Px`wb|ICbM}E=8K3RnW+8@Nc1~`%N^vmR3m6no{0-+LRZ)dZm_LmW^fM zJyy5GVr^}qfy(se8#f16Dl)eRGC0|nI;KWltPq+sZ`rvL3!0I{QLOHdmJDzW9yN=dHkt1dJt61KK5!hJ9uhLJ z|2d8xJA%DzQ}FXDys0#A zau2iS^v`{himz|IW%kobv#`L`O_DW+c5vo3Y&FnU_HDK2BOkborX$}W@$Rwmw%=Hm z3SUo%yom`+Kh(@?V?ZRxWuu&(q!6Eyx(z;Kh1j$L(Oi6NldjCm(;Onc@;4YJ!H}M> zYtot2x3)DQu)tf_RgdNEH_N7Bg{qt!f$Mxxf!0w{eKe-~8Mj`1>X^U+jS(aLG-t#D zT3;@(zsf9)H#TSKlYc!hOr|-ZXa+ny{z35@M_(0pr z$XMq26o3{NOFVd3?^2n!6))K|&?_?&|D*3AvNuwXwDnRi&C^9hve-t5f#-2kF<$!i zb0OruQrw1}OjBW^8pyxUIB-R8dReS6Eym7>$9(*P-ku*h3?A4lTbEz_hRWxHel2l( z?XhORLU&T)E_hov@he2$cHoqLa|v|pi>68$*c3jI+RVS5U^-}c@zG7}VgZqNtUY;& zTFcFl`t#8L^OT`h>jhl%^T;^Q)lU{S1*qtltdC2u@}|yizxtji?8a9i-mmfI^^ien zG25cVr>D;j_SE;fB}R9gW#)~C{C2mEFC*R-G!ghvJD+wGQVs1NKXPGr-_lKS%)fey zpvi^Y@5@VoYae)*eKu8qLn}kKkR-h~cN?qc8W$TSWs-l=c)INI8$9DP75;ik2p_@% z?BT4qQ9!6ltyDy%Q9JYPj8`O_Fd`}pM6-5h*L(5;B$KO?Qanu6lIIhG-&=3=eyJdR zTy@Q2tfri@l(SMzbbfxRU2s+6HEdOEJgQr{MwA4Pg}47m>`bz3CkhPVPtNFGU4$I< z{J!EwETAI0&oe4Lt&il__J8>@r|jpNZK9EPcmPUbVX3DkNX*Bes*d* z?Wu+e<@k!_t|i}sbTGoN(qeV)a*t?!Ht2`K$J=o13zhtcOMxUKQW$4q_s;&0vK?9ZV|5*F* z$uprD1@kk{I-rjBC3BjTh;A=84*E1EMc&dKsvygDv`pZ0csE?5cw0Q&9QpC*W9yf@ z3Fu(B5TbQ$y58=7wrN{qt~(>&qn^&Vq!{i6c**Ran$V}O!FvOyj2m|ap5$yq#FG@c zbeBG_VmI7G=fzYrPgc{S{EkiY?+3dg^kLS{X zP2(j9u|1+z=FLR;pv?m3JLeMfV`P2Sp-dJkL3bimkq_Zj>+#yQ=WYitQ*SJsQFW=! zQ*~bYte;=ewQ9EfI`H!#91xZMVa;o7K7@`{mVZ&9tjJ!#&DPGler=|p@lnvXQg?tW zYRGJHZh@PGgvdBJa=An{ZokjYS0s+Qh`pHK9`16X#(ku9cy#QvnRYZdm>Y=M-{082 zgl?mcLzUt2HN$I%EOwqMSNAe-ZdmX9JA&bK$O(niiqD1(uTkKp0CV+6Me*xldS{`J zW_NEJwZLC8_4v=_v=+4?{>btfF%lIvvJt|9NT}XVko1BPI?$MK(3C($M1vqzZ|&X- zSFZla(6-1)_BS__!gUh5);*{4*lSW!PB9f>Be&_*+vwH#MMvUs1tIik;=r|s`);L9 zmZC_8>e5iz7BaE;`JLN3mZl1K7&E+w(7zJcOtkI^sK|wvj)lue#QOda8V!FI-S2)qO3@;c|-~wj!24NlNCZ6n#}ipUepRIbK*I!xwxrusl+ zpYN3;J^I)Qkm=Pc^Feuhg(l9de{aY zG5I5A0eyQs|g&W3v7YdwJOc7C;VGV*#>TDFS~^D_x2e%PnZGORbolK)2iMwvSaj z`b)s;W?)2%tTiJR&~x^bamND88-b<#B+NYP5l*mqkG0$1!SfOdV~6$gvEfX+hF+>j zx&5w%o}ZT7UUyQxDDD_?{>r-a9_n4!tyjBk0GGGM0t(r+IDc|kv6>swg?DhFnz_|1=hNL?#gW<@!W?jc=iV@2lWoVN5ANr?IQI zm@D>R;&*(~wN|48lCm{v(aaJHbPg|L0oIE7!`l|7%DsLbH+X3-6D@F-&Rw)!nIa=g zWZXoO0>SJ0haLQZ)jlmU7VQ{4jA$6-Bl?yxDg^Brs+w`Oh_rg;mweMwB5I!_VEl{5 z{D)jp;~e+Y;i1rqYnSc#h_`czYY*KbdYI(1dVlp}o zIW)yFI1zK&$z*@Jhc|g?)D8jPZZm(!wHu=MYC+6snup(vr;rgcFpre4W#{YgCPRYa zBB+895&P;IP_~^cS1OLcj9znp>HS$;PfI(-4|PK7MhsO#pNHF;bwKnqk7#0c_HrEP{4!RzL&Aha$_5@rWwMwNG4&FiTYj=G&?zoVI33mkfJ(?2pv zxIgPW3N^a6c_%D=)MM&Z!LFW`5h~lTyE}V9y?;`3onK8#{sGcs9lH3}u~s9TpmUD; zD1JmpkNllRBsew?3ux8)*Q)u=*Rm|oHr!FkoCq>ceg==T3bjWX$6(~#!Z5a0;^A{v zjG-!PAZo~^#R^)kvUfJ^r>l4GjeXE7R}6lcWbE*)Fl2S@cd7~;R4uq4grr*scd~@} z^t1C$&+E6eH9Zw)Zl7uk*L`HLqOKrCH5^aWGTIyGQ>bQrSq!N*%nvrL_J&l%JNW=ER zZT|pX>YS|b#^4(3Mj`5bUSghB5``2sXh`I`RovG|jJib6tEM9u;@!yi<@BhUBZ24D9}@a= zR(?{2zk> z?zxVI>rAkt28c0yq{S`0vS=Iar=jfkW}f$1Sr0Ij$!$wz8L?<)9!<-G{?D(6 zHY_!{T{u@5zYLy~8nSgCAT1-2-7Cb+2&>+VfuO<#Gl+Z$h1w8_BKultbBwa&$ixVh zm(C|nM(C47Cxh3eB)%iklZ9lG114X-HH;!A^KJTg*0@Lrke{klf~Qn_iqbPh*WHc{ zU=Ngq5+-_^WX~(`DR5BfIkn4U5H9 zMp9L_mcQ1=>I z*~a0%d3s{ie5YM$y+M1Ji~59-QJUwF<#X$(>}+>w_9TY7AilifuvM<6DUYk1{dFlh z-WE+U*8*jo*5r0ev(_ZW4sqp6PpC=Q)7Yg&uWo`l*62yeul~wE)x_^yf*X2 z20IqbyB5aGUd8uyWs0ohQgh7NfBu%GTV3QfnfQ$vua0qzp?K5D2?wuQ=B~DrcXzeC zh}U|bE&=jvcwEJ4A-;J(X-TP(vGd-G{6c|@k_9K}5Y_RpvPbgftTyd@`p$+%x)6y* z#puXHi5i$s)pVQVb);=;xw6-UB>f7E-a|l)hF)%}C!TXbK*8|G{9HS2n*ueAxiNjO zGR=24ztVg8MhD0(owr;~e7@yX{eYw5{=P-?Gsv$>=PZ#7p%1&dZDJ}^jJpP>53qpe zV!Mm(u2xFl3g62HX{1>`&1y{pQa4w5*v?7&NA;kD@`9)8p_Pv5mp82A%_|ed!vbnf z#wZpGkAL5wmc}$e+dF7b%Ddf$su>K(p4Qv!=4QenDbfVy zR(n{WqH-kdtk>!BVzn)Sa|yvq-WkzrgTp%LX?D>7OEMGvMG+(^Ex2;{zU^VnPv!!x z#en8-eol89t?yV$O3@!{?Tev#0yX*=f}>kmy&%%j(|H;nQO9y7G0L3uhr_lWA=Vrt z_QxOW2qpV*b3Ldf0W#nTGA8z9zLiaU79Ks<_>`mNT-RqIfYrxbQhg%IfX917ruxIG z^mCD9iTB7`UJufhbW@cBxPQX<$|v51(9Xa|^VwiF`_wM+iH@3M8?f=O$`ZkTpRvHR z2^#KETo{lSN5k*lPv{8Iv(gNl=z?QtkbKj@>3P1b31mbK-t<~esI`bo=ZAjhfpfzn zGk?#xPEe;=?0-$)-I@w=#R7CIo>J+YcqT0#Q*!xNpq>j}4B08dtUGu)u}$++H&O3& zsn@5af}L33Bh$rs+4qF=bT7wLlZ<$R7(0O^cg)}tN!t__aFTODKk1V^0N1?rQ!`W| zGzWro!^k>+JHV8%z)EU6Z`qvnhs@^VxxmQR+Q*9OQx-#8-_CI}?o>Pq z34ssgR~L6{R7#w^oZLJ3l+Y#}iYTQ9d1}0|^vVI*j*6i-m#fdaRGxu|=IOVw0H_f+ zhy1O6gau-(5NfbUFqOO%D!-rMEO-MQ_@2#ntm-i0m+0$}s$q9M*S562d;W~J`<8Cc z8VU>(JC0#A@!AO=TA;n4+uKWoW={G+6ceDWxZF0@Y}ope?3ol6*fsj&nqMQ>&3e^w zTW1~vF2(|DJ8gd{+7Z7^K#6--5$h*>NyQnbM_f{GLUGQOd9e0*9>snl>w4E_pOz~dMfPxzTy%~Gtkf-Y`vU5Sxl0aQ!jyV0S` z3;OHNAn@*HD4YFCR7YCDk#(~3mgHhqmereK@D(m2%-|dr4RZj+bb#7YR71rmhk2sF z&UtE+fX{b_^-FjUZc#(9E6jFfxj(idl)HSczhK7@Qg*)`+3ZjsWS8OVr2AO5eoj2W zj+&Qw*6Le~?4G8qZK=HR!lqVdXya8a_-rIEpJa~qN`ASu%2s_m)GKUd-$&ccOyTCX zx5-yX_F@fLo|27L_WX-JIZZVLtTRs-6^jIS&vAXOg!uah_Z3p5^-R}TGTFq=Q)-KT zT-?s%O&5iTr)XG#QN&e+&l|6(5{A5 zSjT=AxVeY2fnHi0{&>YR7$`4^M1Q!#?WIqhi(vX;)W#7%IJMc=bu+FYLw|)(V1YX! z>!*`NI3ZRuK1Y}iMa+0|{^_wi?W8OtS7P-|3LL zC4W+JGqY}H?cs-g74}@?9cN$xEZ`pT`jYz9>T*Jjxl5jZ>`KmS^+%Pg?fS6g>8J6}StMpGhR=wb?fuxDyU*k4 zzQI`c#V&CJ4N>oPmORTgvqv|-5pI`FIiKb%_lpy*p|L>Ev=Le`l}sl71?{gF?8UF* z)?s!uG0fn-)79Df$|o{{D2;k2LzXuU+TWZS%D@5k?%=3fVS9d3JKoPHYj)~+u1#;( zx%oFp?bv=MSFgyc+VCI<@5@*s8n>A^aOc!dGE6ye!`L-?O9+Zc_}iwAKIe^@ym}bm zwkAHIOIFkj`FW!+zInsO^Ap}=9`6oW2k*>ox^=qJ-1pUwaerWrf^W_)`+F)ydTvyZ zUxsg2F0PMQ)U-AR?6{n`65GqN2|7NQ6Ealeb;E>N{Y14nm{C5vSm!ru4Z#AIDg*4? z2=>YqHmyDB&5W?GOTuKblu>hf|jfh>Gx`%w|9xUV_V2>ENCAX4X62@TmG&GozC9Y(B z#OZWl;H>KXXl=IIfnyD?mr{h(QtWB7m>R_y3ur{6R@;UNWttiH!TC;5}1`?19%k{o>XGYP(h;R{J%HTu)PFNM6s`O|F|nOtEkpr3ciaJ2I3 zvEF>TYyi`DZsHCp#B!&c;u>kkRAHkgdB2aaXaQ|xPSnD4t>zQ@6BG8kI)&VNs>@nd zKQFF!V(QC5jun-qn^4HNho{>rvqP*#Wr2ccA(LWnrt)@%W&X!A_%hpcIlUQm{{d?_k-s-z3akMW_7!0@A6% zRE^%7IB>Hg3uS;7{euCG6{PAJpYpc8O`Cn&Rkg>8w?84a&JG|nHw(Pj;3=VL@6}VN zt#Ve3Ccj&YTLHvs!HFxcowdJwIEc>im3>@j5JQ zH*HFA>0q^`3<@~3cjC??Kx5(D!hzyF45w53xE|bJR*o46m(TVA5p5TKbRU?0anT+# zJe>fdd$H{zDRV*0&DpDuGFk02F& z;sfu_3>>fmYE*7Nut__rLs(Z*l!R_;C9 zbx!t(RW`(2@vcd3Lnwk0DB&{nwOPc2kJHN4jx(=EJRm$YE3L{MWqc$}k zIgfJ5GuKLMjIiguFuNM&e7`=Ovx}7FIqa>K#pxOJR;5@ySsQ5wH_X!&5g@4ynGf%m z7tl*aDalgoVu8DQqfn3OY|vijT4rr+Cx+1G(@pBCS*Gp&4k|ZxzM)i2-SoWt&1X#! z%<#VYQ(2L2_6O3kROnvrUzZae@|=rWKCP~f5XK*)Y$&KdsD?XUoEQtdkyyPfJ@9kv zKf?ViMXMlnJB+%p0M%H`dA$iW7&$nMG&JAb;?eckz}T8lizz8-nr#M&;Tj*(|&$0NwmRS6t%y}>Q*(vlz{FxWBFONdy%aw$sR9~flCwS#nI;?gy zsp6Eti#-xidT%vdu}s|u<=Ri*gG!}bdY9JX?8leaVp<>Zr1-ViCMw90YU8YwIKS`# z%hHZPH2=)1ch3Xc$X7WzzPpx*tNC*g-M1U#-ME@v?8a#pDbgOr28WH$P)&N%cv;%6 zN6a>^NhGvs6z&+kyOK?D6B}EJt&e^7D9ZC-M?AFV5nkwsswFX=*jCHd9&-KfBL9Uv z`>#-$;w7v3XK<_8xm05XH@DG4L3j1oTk4ARdUt~e?b7sh@;~-FICbj-ROQbs!VcqGV^S5LjjUrofMmE6-} z4UjGzPvJ^5=KUOxt`RtBg0ftfbg%~&d=IA1_7cxWz}2GFmhOm>Z8T-+8U-8@Jm^Yb zwQYvh4g{7(k+Y9{@ir@JWoLk-j?#fW)C!9lbSyxiTBX!J&k zk_3yqjnGT4OQXm<2mR`q;&TC|4KEKf~b}2eL6|or8i0Fr3ADvnp`lm)U zVSx_jibd6e!exwfy>UYj+6D_ObF^IsRPTtt9Vx)QFK@<$sBWqP6f~{E=o?DB1IZWR zR_IkoB}eM91@Rf4l5fAh;~#M~&xrU+MZV=jy$#v??6}u@qn1-`>~E5zM$r}_@PP<~ zwj7Jz&u3Ia7@XjUBX1ybEH8QAtGwba$|0fhfPVUaQ-E z$is=BDQpbCgRDAIS^cEAS$)evgrX5NvsccDNHbIoOZnT=YzNioR3A`IXlK+yH$`5i zEP3JT=$np5k*mw`mGfPB_te~BwO3!IT|2+d%B0VUAHRC-^-DjWsN+^(tvYIU1zirM zK*cRh!%gZ_Aodf5s%tttDL;EXfm5+#-}UPep$Dn_1T0qMsve3{^0T{3T}MIGGM zzH^jp*iObG8>xQ~hNsp=FoWf41orR>w>$QztzLun!q|Na(!XKAn6eQ@gNHi_kckRW zo2pxmk>30&vFH>avDPhjQ_UtuF!_+^IgM-9g-yTd#JYnOmjlg!quVT4{jvZ}Y* z6^WQrvG)gpf}cbf9R5f=0zxRgEE>|*h6Obc>iv!$5D)i~0ZLk)iWdRjS#9&ueq6~S zd%_7C)0egCUylzL1`+BAOj7zL{fIr)lOEtf9u@zF?%ba!v1ta>)7v)4oN0`l=`};b-ur zkr{n9B$$aD%>otkT2Of(J`X3uMbOkH11{vaofV0+TV#xm59_uzF|>VQNGtJe>7>fF zL%ceP%YymY`o2!q`P_Hw$=%7tre}h&!Ca;5hs=1=)6ry6TYjg4=UxT}py?jO#T z24;7+gf+zS*Xb#_-FY1O!xAumA9Z@Z;{xxVj*@&ZZ?<%u45EGR$F(s&A0WH@4Eeki zQD9y@K5e`?(Lp7|C{i`2?E2Ec9ePKFnpr&kfYWes9XAHAG@A zfn0Er>_B0&MMIO$Jjp;KzQiV4X-Jx`S*uuVHttJWG1Gls7pPt;jY(^tTGPp|rS^I> z|7ChplBE7oX&*@;#2B@+tU)YUvvlq9^VA@)%9Oh;W#wQsrmcUARzXXsbtOH+_OQ;>hN!)r=t%3zZiVSRqIiPsa_7Kl(a8O21BC`)Z+}5w;`M z_G%U+&b@cny%YoMub}a$-;TufUv1boi|pi!d@0#YET92G3qijQUtVH?)9tPk+Vhf4 zPQ|r|#0Z2|GCgEWEokL!UvAzBcBJ-$Q(VQY)f%Z{x{t z<$nAQt#ORF%W^HKkIGq#a5ivgbtE2A;>=w97Q?b@SUa~2K`cOy=hey~)sL=Evs!z3 z?_B@pTC{TiS?0zg6gjpC{ys98Jz=|F3SP;}3j9Dk9_qOcK4BY=!3>#PdR)Iv zzWaj_U+7JH3$Ob`pB9%VzEvW&g9X0j?}rp(X7X#7lGikX#9e5g^84{Z$YYrU3*Kl* zM@b$nel;ZYB!E6!Ygc)kG1NA7XX`v5@xj?mo&hZIS;WxU$b85)5G^HO7upxGk}EB0 zIH4t;y6)t*qIj=HW6gp?a$Q@>!KO)DPD>qiewK*5-HocF7?9<5sk8`;Q14&}XlxlN z^bo7u?!hrH ziju-pq^In^w?fDgdx!jL7PX8P`4hYp`?*svvCfU*xJPr-1aeL*);=kIP#V9@58sS4 zdHpbnOg*=v;`fcRj&R7622Sd2ow2&J<%Zn0<)PBixA89NB*}rb{YzZqzQ@HoS#Etf zzG3X^+WF6&XnWsyz5e=8mA*ztw<$gld*YBQFBK1wwcTkS4p(eK5m$O=Djk{aCgB_|Lr&Z!AC)#|VU%{(kstfp;InRiJAcRVa-9`fatw?exBaZad+qWV8C4`J zRg9f4Ju4cX%6R+OIe1J8bs+TL*65U}eOB>-TQt z%5V4wm5oInA5so8t7em@v!*7zK*g_n#Nnb{{z=(~CC+obTQMi|wSGl^YR%iy(}(!f z^_3G;AIAzMdL^0X1pBGbQ_@SKB^&nz?F-ZM)0P))O4bUVi#K3_S0~(8ENdBA#rvJ> zAX;+;r|KPf(q=8`JB-a}zXD)1=Y$(b?ynE8wX{@gZ>Y0Pon*ek&6HmAEzT~6T1*L4 zx}`7wL}c?s;zd8z@p2beEspY3CM6+ENUFc2k_oC2Ix=XM&GE5PiYgdTrU=9JsRrVm z^a8FFLvDT=*7K71AB(Hk&P)ZkMK=Lt4muf8@{1BTTfo?~e(;sHEKG;oZUb97KV-Jk zJMNs2-AsPS7&={=w-ARoL_N3?=H636l6_8+3A#DLu)uAcMD$Y%FP7k*SHkf`yYGwb zEov_9KT)qj>G$LiR*R3w`F~d_8)1S&xAh8((^noVu#7-Hu6`@ z)t+ax9YBlS42$2t9Ip1OrY(5ejTU?0v#60>W?t!C=?D9P#{a)4y3TmEzCNy{)mBxP z+O(y#HZ^Octy)E?)*i7}jM_mYMeUKIs9m*Zs7=IPRkXI4iM$nKFSChYA~cr&Zx}fufCQD#>4-a|?GGDT_ojR*zic<_YScHzSs{+QvR82h#Dmah4lmLVFYPTbmb9(90dR5 z9!b?CfIQpnI721bZWQMP*;*h{no*_ugY&s!hC|x@ubr?f!-MTCuQg2?T8d|IGPDyu z^t>e#u;rrjt7+xii?C4S#}?6Cd!=4f`TE>h;1|5foW(^7??Rj1GvC|uOHTz#_ms!~ z{5jW`FY@z{yu`jz@(lpczTq!@^nxzJy=Q#4O#JC-S^+t#7KSpQ!TDAaA;#ZjYmX z4;@jkh7r<#v^8V2HE0m>*97p%jbyg zZPL47ZY%|@=-`+FhNcU&-=gxKa}Sl9 z%A4!CoRHvuW0m)~*f8z5_pKfPjO-WqsjolzxjSgpaGX#y))r_q%hPz#l!;-9Xd<;x zhl+npz^82qm@!oMqm=6M$z1tNHDctU5(fb~xi7WAn6{Vn$Mi#k%-7tfKD>0NJC-$| z(g9{jmtRhnQ5^Zf7-hDqvchpF$-NNH2-htPqK~R*$8a|{hQq~fdl}S*jnnxda)+P& zM^iU+pd`$wJ70b*wI_n!KT_N~sp@}KZL(lsRJ>)L8);sk#p~!%>5~MGP`bM)4HxnJ zbn6pr5{^g67|n9wlG;X+)=w#SNWOmkikCqt#OxIkCQqZ`ki*f=iu+O12HQagcTwdQ z%0Jp(e`N9P#fBg0XDPUagTqWFbX7%4TVkySgUVN=D1PiL6j9gTSKgwITXg&Nx={^{ zUX}q^nXln~9C}%YETkDi)rt{O$X9IG6-RG%Il}caw5dGR^dvr64Y#Wwb3dH*ngY|? z9VuNlG-}Erp0r#|H&tI=<FMA?mPbUpqe4g-m5!d)Z!n&HWf1pSbN~4g z^9O9&?ySA<9TGRf)1BrCP9;=4&`1YcsqbcrNzYJ<3^(8n*)s3Nq}bRcsH!U7$%wKk zWb;<{DvS(+3n{zf>A(0gF@Wxx{P~4>$LrRslEK zj&hbO{#Jw(d{U7ZSpBN8(a7~oZp&_0D(lGYgF>z`2GW8Lg;M!+d12{vpaXO>1WC=cYSQJDDGqAECT;r5h?jUNE zv^{UTz9B%5PysSQT!=bunAkz-1LCVyTzp~PJW3KzDJMk8(;S3|8Y2^4J@V^h+kM~J znembTXa1fjsjgkieE35WT6d##9r){@|KKKc5KxyBi~sPJ#0jOtPsWdAR}$U1)Y#l1 zlJ0!!W}6~;t}1lnD(v5UZ-#I%)DGF6H~S4zF(9jD-65Z0BfFhZ4ruk^M}PgrCiE6C z8E{Ye4&(`bJr;x&i$K@sWLNbaDd!hx(dF7sG(KWACWLsniQd@z)XHY?^@{L=_U=*Q zGhmNyc!t|lG)pY3{-DU;Zi0c?94M0?QL<$?*`}Y+ zz6NSPRP!un_g{Bev>45YDuL^vFQDV>!|TodWkmS@xlA|Z1^YZzo2hdz^JZ?{fu2EM zp_UNmHxk{0V;$9oat)FTnVeqG7S?w34v{Wc)Dv?qa#Cer% zu(+z#4>g3hS1VR7g+^}n!vQY9&w%@iJB;4_mUmi6b~;XDZ%4TDZDiGv#q(C5)IO=) znV;Tp>_^OC``@(V)#H%ND@>697G)vG%ZZJDiqf{qmF|DRP@#GWt-!Am=xOLH`}l$$ znMBcDWab-aVKJpQ_a@~MnGR=JkH6!~=-p!}FkyDo&mBZgMejG&Qe*a?Ho%wIe!9*Xm4uuU1vNcG>r!pppUt*Qs{!p6f zCFb!iyYZJ-i(mazJn(#?CBA9Lwvd`Gytl$LyU}g=xC!^?MR7dR>}Sz;G^MG;XOE>z zb>Fu2tC`wN(*)ZWaT&rLCXoUw@qe_#uueq^57@y2-PpT$g$T#^;rZcBTMuf~ZKiqb zkS1*KjLe=GTZM*S2Xu5#beFg{a6eaoM8}nQ5eiQ|;tNF9<44uE468|j_Sz`{_+XMc zGQq&kFVO6n7Qa_<;uvf9>(N34w~Gw8~CpD z#xs>JiQdvJo<`)yb;mQm`eV#vPLH?0wN zT7&NVG&0JYh}?JJxEJ54_KqcMx(0keNW>XYqoI{9f5EL?wZlcTI-YlB3hx*teoUcf z%yRGZ91;2#uk`KRz;;za*_Mi^-|#5)&}IKjBR40u4vN9)?#V7^Ya(A2ZRaTBe9(~* zzJ_BP%~~^iE69tU=M`n)3Cbo7S$AdCW|YGFF7lLl>Y9L@M9p8H09X(cfOrCWI_Pv~ z-}f`()Ls4*uwv;?GKa9DF7g15y7!2(TF8d+dPXnS{7~$%#$UBTDKAK;*UY191N4<1 z>iC@wL1hn4@Eh2?DOF(DjsPZ5ZltvPVyPz6KT03;qa&bsCEtw1gb8+rMP*$di>fl5 z&!4Yqv@hqtxGO2wWW%Oc_%o`53*Iyg`N9aQ$ztciU2C! z!2d@RZwFrbKn%i*PHRV+O)1Kkm~F9tV{b!BE_VH`?@>Vh+SD|9kIXKx%Hp2Pe&O>B zD;TRK!qY|di??~G?R zNIp zzI$nVa?2d0Taz9@=*A$r1)w`S`V5uyA0v&%r-00<5mVq_dV-SRRX#ArG1u4zRrJ`)wNw^k}J^x6<3>%F?+*wE3kOwHDKU2812mQ7YKLOii z*1RV6>8)(m6GzF4kVIq2>W6U&MS1@KHV5Gpj_PqYR|qc%bSo+GNwrq`p<;Ptv!M-8 zl;V@HHlJ!UpCnH2Lq!G<(c;{@P5`2K?0+;dC8NDO47q3N5bE6zyGHdwq&@XS*eLm7 zhIN@5j~%DvXeG1c@*M~x;tv&*o-5RJ#np1(zxCN58E@3JOeNHYF(>ESx8WBVDNqrj z9_-IQ%qW@d)qga-`WvC!VYABpFJD|t6_<=wdaq#n!;KKpNC2F4jp~Bx{g?fJCphu1GQ8QW+Z{Zj@__2 z^^SNktzYFty^&T8SJfo1Gan+lm}saS7v6XQAg(>|^iK#=T$nTG-yeov~a z%EM)8fS`Mgh|u}x1A5P?#hDtU>7dx^4;V{5!qzQ5#rwp~88UygSPnkgGLLA*5aQXF zHEPO2-+^qGAymq^map-(JYQUB_&JmARAbM-Rd@Y~47qTrd@iPZDL9j9V^`XQyJ&n| z;<|B&ZjKi{L)eINN@p%-oe@Z8X~}Q?dE<0UEB3+xc3+P1lbyXDvp-Fl(iH>T!53+k zv|(c?@Bk%4@m=4nS15cYyPxr#NN^Szdc(IQKDvM|##I50$E7VC9C9>IH5Nih^>Zc` z#&e7Pj3*PKHJra5(bD);wVF;tWUAE&@3%+`;s(Ddj?(bwx^J9!CsHeL-*C`8ZoNS- z#6;O6Ky=AIS*T*x1za@?Z57*M{PZ(ZkgiW5t&lmcYX*QSY7P;cI;S&|0D~Hk*~NyUX@7~9-jv{ z$J}-!H%;7nb?x2#9I~C!M@tSwd?}NdV^%Qwz}ug?M3Bf?t)xXjL5;D zNONq>YSJu!OUbx-T85GQw#>%9tnIPUz{>QFURyJBAAC-08PX(#55o*GeW>heCJ)O| zW`I|UfN9vJ?$rNinoipPqhSUrZjJ^$U-~xpqCb+WOa`8@3M6z8Md`^Y2x`WMDyHvH zKWYsE+Ff%)oljAs5Cv*%VIHueHKSWg3jZ@QoE#IMCf#WPodeQZ(fjvOU3<1%o)v1a z6lb#3#ZMF`*>hUVr=5>+|bEOBd6a_bN+X8*k!!hn@h=- zc&aujt$WLY@fKDg*hZtr@R#`jbkxN-+_}Lj!sm7GtL>LtQ;mx^Qm1v3_FtA%{OPB; zl%(_am7f>vx*J3XgvpGBF{|1#Pgc%a^BDFOIQ1njzCqcQ4vDb%l^H( z_rCFht4Kjpj%viU+k<=wpGtn%B_A{60p$CLm4w0-;FVV(9HDPSp&{eBaX>*xF;$n;w(A_|3A5fPYd-k!k5m`VuSvW3GG0c$o>w<$8VF84%Z zkyULfRb5E%UR`p8+$QKdPCc5!1#!RuqRHy`?v=K@amb5CZzt~i(j-=UN_wDSvmZ8@AQ`=4=@h(HQwY9KWhTVoq=1 z!i1HJJruo0b1I`p->Wp zxi@68a_F%hF-V0fG?@hfTUtJyOTp7LDKwdps!=$%B>J&lK&<+ zO=bXImp@QwXH#>pE^UzYB4|<(P`CrV-`qIyD7-Fn=W-gKzCYNji#C7xliu83eegX#ya$=jU7_yCU39np}$`qy%WNm7Hit}jXhZz^s>3Bu!6~1(VhR|8x(xmx8 z##)`o(CfBy-(p^IT-K5#chH((B_=oLa=z5>IiBvoI={7MliROXDc{>f|5`K+@aN|G zSGl*(x6`VZ!qaJ+I!fyS3ErGZyEK zQ+G9)p4b&GeMR|*kG=w*W}Eo;>CKNO{5lRS6RCRuEzxb|Kbi#C<$AznB9DqmrfDiq z!_p9>TKFrkhj`JS-*F=~WMbd_xZAT;-UP0iNolcIOTJ0Bx`7I$=-&e{_OKvfY~Kmv zd!ys39)9Dq#NpR~|GS+V=&4)g9SAegFe5U;)f9V9SlLActfr^wy#8_)u8zOgmE572 zg%c`Wl+-uNck%OFQ}(0o2S$|9r8`I_(o2XnzBnOi3M9sE*5T$MB1+!Ttjce)&oMn>`|N-BJfnCQ*|STLads%``O* z!X|1TZ{{!o%a1SG(L!5I4n+m?OH#2hYliAc;AFx$kz-l+Hqa^Kv=?@1vt=qx0ljFv zxK#0c?rrhSxB|zA6XLK=6__Jf?H|4s^9{N*Cs7G?re0f93f&fa-=7&5#5E*qI;WAS#v4Gj*X+sN?Nn_lKhsyXx{@IO{Qj=b^#HI(U z8X8r+Z-F4+S0{iWJVZ+X!$obSx)GHH3k|1?x^W*6EtVJvRHfftkj#L$Omkcw<(``j z$?s_?L}q-M8(T1u;r(Ht-z;?KKCtq*mFX&2d2Ho%UCW`5N$;wrcl&NNd2T|2$G?WZ zrpHEb+#!3o@em6GsEg6Ktr5C3ubpVfc4E0w> zK;QpI^Q0UDqi<-v-oFEk9wX}a;f)@=kb;_B2iHcf^ENIV7*vrNYy+hHb=(T_jgt%> zjBp{4ZVD*N1@$&<@3)BEpM_ze+t3+v$`YV#}?hO2C={V(K(mTqvwS%>hjKx}ZiwzFYEQ|WvMV<1+`N}8I9L8G zk+zxC+_x@w!djLp>F4!LPo3%NSStmkzE4FDp)r(^O*4v^V|UUIyTr1aOk-_9or{8F zl!st-o#{HI*GqzXwm0`$UA98U`8UCHi{9S0iV9<4 zYg|dtQ^X>0#!TBxcjm(~8PvDLU`nH;e8Ot3Qpum?N_F)xz`mD{e;ljbn>c1mF@e56 zZF7Fu_=Ms#o$FFB3=>s&wujF2=vjfM?O6PZ^YBSHv@-;dnd{KK%dkjEOBIhNWiI{|!%8iGLXb_DO9vEGE-#7q-H7`t zkH}Qy!f*Fucw#HvAY8$=r7F&s&0J*uJxh>hcir{ZgOc6qy{=xedEwAhy0N6+)8f^Z zd^onH^nl_48#tu)c?cW?_m5FA;xWSx$QI-QlA2q(Hqdcc*G zw|ir~1s=h}I@gQhu5X<9kH)*KD}Th%iZ1_&Cfxbq=Z-4xx#VfC$Vg1E*Z3c^fqiQS z!JqP9z7q!I5dXx9gGMnajmlo{i|?QD1>~f8V9Ou)#oNWHUl2wP3Vo*h*(vpoH?~bv z*6Jh&5cehNrwley)GA%TQ3#-buK+pX3 zUenno&Ex3#+c}Ze%fKj0MJgM&;N88*MvO0W34~=jgPcoD%%vosh8G+zJFCf*(RbZU zx}9ZZWEQ;46OA@3%Q%Rw6Jy_G&qb^Dwr=0Dif@1n)C>ylEgD<C2=DB@DnoSJC>*j-KHY+e^LJ-gRSi5k$17OarPAuMZ{fD#&z!0BM zsracEK@2?%vH-lX`Yyz$(LF3ct9V-`WDjTozPBO}P7xc`D= z$FXWwO;O<-5d?-*n|H4cj6x7MCOMMP)Vw@^wya)L5K_uLm`@IhR3Gyf>YKhE&Lhiq zQbIOci3eeU5t+K4?y0}HdTWmEomAZa2VpKWSrFW6@LsH*yPf3F6_}XX=kjA>Rpy_` z>=uDgGw`3BA6aHUQ*G{DVc3c#0=OX0urg^rV}8zA;DA!xh^PbGwg znfu!E=H}I2Yt;Ucz5G#pdv>#f^0=ka5={-OWTB>Ff?3DF83-%xhkNxf|9j&j_IZoiKkfA>0bC}(}sHAlFIB1P@?HvrW4;QcRKC4 zYa^!up~m>czwhOrf+lzma?XO?N-PFf(dc3JoZ1(#hp!nL$lol0-*Gh`Z(s$YOt(_Db+^foF&CvBe$|V4)N6QCravu&9NNFxGG1-Cg zHYO;^?p^uv;#LYrso~l@g}Y^2cGZzH#k%KZ>533-9_}B?5L6`Nlk~jR0jd+ew0~)a>Nh3Y$U{b z*~A)dj$?^CHW9rC0l^AJUG2?R1i7xNfd{H&dviI3$&Xyyof-}|zTU0T`t-GiW<}0A z%Q1o8QfOw}-uAjPo~v>sLo82XFbOfuwas(6(_C5Dt3e3{yV|fB;Hjd8+ zE4}372A>5CgQ0~aHFI#WLBfYJ#X(@%OOr~kk} z1Svi*>D6->Og+>vxwq@|D;`wy0xiUi(MARaimUssS2{)krfnqC*?F?kMIkZ(vn9NL zQ<n1U?_vH|l__m5TXQuePj7)I-=S8A$`y`Mw?=-9QM`4Xj<)urEYOp%iRXd$tmO)xZ(n9_L=gq8J`TOwj_FsS)<)=Hb z&c$yAI)f&7R(1{YlB=4 zJ#x(W^hfSX0Q$5fR%m~I7Rsi~))QH9tzG{A1|5sd7eI|U+RvX03*J`^ZF_y0^c`Pk zH{DLwzlb5f#}&ERtelRSZYCG#_|^PUf9T_&d4D5M@W+aRcI-4gr+*LN%MvbW7Hrvf zKI#5&+;w7*IlF!(S2)LA9ZN94WGL zEw2_Ne|P1LB=4nWwz}_)&mJzXeQR9FIoT?He>htm7-xetB0R=(t=D3f*i?KK7K0Nk zxaaon$^~4H>CLlrR}&F;ok5nphAj^88R z6vrc~S5-wY{2})>fiaXhZarF-P}t)ze?4D>qaw@I>XZ7i`W6rdaU9Pe^{^NAWMi@x};GoawkT$#i5{-Iw7hX^2l_IhWA9u_Qgp z6Id+La{E|4jTpPEoV;S8wU^P5SiGcN6Ci;MIZVu2lPusW7T{ehs>9{PF1Lc~j(qc+ z@LjR1W;&46RW&&dgE<9oKUXJ0Jxo`j291)SZf=>*u`GR+^gb?2_{S}f9-8Fe{X-HTJ#U}7C9nj@-th-e_htQC=)@E}ez;{f zP6jN;+oH`Yp#U6HC4KmccG>Vf&ym^0YNfz2+3?rARqOW2G%5B1G#gVW0~})af+xH# z7vWp9ZOS;@)W0A1>O12>>cdOb8#~iQ0cO+?0T5R~c}V;y+H74OTWNUzKN?l{ zd#*KJP}|Oh{&x~PAv`nqEwOIObs(DYm<(Iyag+^Nm0&jZV0|!P&06-NJ$$nA!IYB+ zFR!QmHMI?{DCHEqV=v?DZKhc6rv^wQ+`SeYqK}zo&A!;7>JKwaqf->F?J-?XPanL? z%@~Ko0znzIPuB$!0zVFkd|VlZb(80$isJ~$YyKpv2aLCY7>wi4nUr#~nbsfM^(}!Y zVA8AZoW#35YB6AW&yumge1Aw>vMgorvgB~%T9tnv_tk%O9x)XDG4~&nQ%4%9Q&S%N z>(3ss)<^x&O?&8SKOj&A`iBw)yX?Fp26$sZK@3L8T}PeX9;K>~Dbu2Gzdx#N3;EPC zY*5~jweRCMn+Bh)S^7c$(L^ghyC@)=c;a2UyU$@gPxtD+OKTj<{fy~TWry%zPq8_p z)w~ovFM9RVo&FU#s(+jOkJwU`xw$v4wQH{?wqvNP#i@!2ty|C{0e3+##*tEx;-d|F zI~9RyHpPsKiHpd&!HWpgy?*{BNuFCOY`l5s5kMhSl<2Q|+v2MG51V#}|7dLZkEkE* z5kZ+0t4`RnLgqpB%+iIYKTr3RNGjB2@oTAL!M2}0J}#pm5YjM(H_1P9ST|YMNO{%S z!7;>n6T_&B`_N-4gKsD=wE*X9{XMpjSzP3KJT)c+SA4fN#H;y;=FH`XI76tNIrlY0 z8eqAR=XTyW>asutc__tMgn#nL9b+n=n5y6h*ez!>OYpi9$h2#Zzf1yN{H!-Ki~sNu z8R2oc(_c|mHtAi&rVEGmoJrKJfsO~9D>1uq9=AMp^46z%ybM>j_9-INQc9uGC|+Dz z=fRc51(i=|<4Mt^eWzd0-$j?|XY3%&2P5NQz$|5sX4s8QKPtOcn*gqK&jIya%vp3K zH6I#poMuV%vDz|?uhCunqs|i8R1kc2uA}sRa@B$haW?@Vu1ksd6hF|Xv3wpwUc+&r zXTh~b#zuco_$z;$e6M@)Ml3!ZJT#Q%Bmc?g%aQ1N-rv8$8W{UvN6pZE&@a$rsnLvc zCaUklDs0+z_h3dBvq2UHogI*Mv0Ba%$+XB8rc~9QKH5X7b%v0`-@#ug?rR-zla@Pv z>br>{sh;M%?fGRY{6+qyU#Qo2n$?!%DWpe_%!|lah-&_I%haSR9q~7A3-_cb$ z2Ck&-wPJEFkzf6#{HrtvC+qz+4c0$4qkUK(Wj1){1@Of1OwBJ#_akA_K-jaGgAlLnszJ*!YMP?mgsf~@2G1KfAi%N}F` zE*sZqbp@ga70)L$*{@iw2sI{!d_1|*ypBW|6UT3rVn1+I*lMA^tKal%)L9q&q{6j( z`_@%2HF?_0b%-q6vY@}t0_6>8XH<*Xxw=i)Se(t8Q0+py<3Y?FvJ8HqvX>J1lNhTN z%k5i7D9wyY|GwvcLza2ra7B>Sk-p^o_cY~(7=}xzTUlovUaA>L*LSVr0jr3ODxf9d z^$fZv82h6{zW)dLJj~$1KeM);MbqxblFWv`Hz=lx;(V#69rtk|@Ze1? zrISjONBZP82z#seStXqVEbCgHO;_3JD@Cv;R1i~*OT<>FjQ-Xmp zq4v6wdso6xd=HuOU4TmhsMxs@tbbsbtZQL2rCSsF5X^fR+aoJ<6?*lS#@r0eHGzyR z#XI){QSCB0_=V?E+*YdJ+-L`HWvbnhl-cVC$o0LLl9re`Z!9*gK&~@(u^OuZ1*nG9S^s$jjbBiTn$>73-JW-+K%P7&ETP?%F~|rn zGF9pJAQz(*+m<-b9|@{{H`KbG=C|%BpcsLsp`{O1jK%hqUwpT!g=Y)sAKi2*N-jAI z_9gAxDhl6kZZ<6Dz#9>)h+$O_BRtn+WT>KrufuuV*egX-^GeR0B!h3^tK8!1rZX2w z0DB-e*s;H5Jr6;ZYuF8tP>zYai&||jj8nBDh4G0P!3Q?zYFPw55^(+P^K<*C=c&eyz7j&S$D9-jrQL} zwa@B{9V4iNuO>0fjdc4z8r%M5;C(<;71HF%_*S>Bw^zfCE3@6RxLx5-OjV$+6EQSP z|J6gQMG3rrI%izEn}c5m9koObK89)`wk|I*gLx^}l5yVHulTBJG$LNnt@7m#p)_^p zcdP{BpmFWn{gLs{vWDd9hJt>y^iK+EWn+nvGStp?EF=)IgNaPwt3iX^1l1&h;5fwA z5Wx)R7=>bnbxKosoLZE!D;whhnCs)%2sXRJmFlLXsizaIzCBM>zRC-KxupYpCPB8w zN0cb0BQ3CgONSvB2=75^^b-%9Q4jYSC8|U3fMs=u9@OCWv)y|WjK9@I2Plm)4-1R1 z4o?)f&hHgRmkL^rm?6fx7CQHIs)+tNH7#&hx&$%`nRaVeQrrY5 z9-sh+OgCux$bL*aNWZ1z5*MFr@~?Zm@Ro*CT=VkPrBZ+Q*{nsbkZ=Eu-)0yFW7SQg^C-&@n zN>`SQ+*y-=l3ZCa>%wo~RLO^S(a0z=)t(+23^5-=JtG?K=o39EOtuJtZ3WY5`sS|< zS(EG>ZGNhB=;_i*8?C7C(&FL0xet)?sw=%M0a13s3A7s520B-1 zsnH&sj>nbuUJv3^V5bKY(8ZtNXWAd-JM|wUUZS(VcZ|R` zDxu+IL)=AfZ!S?*tP3TMY;ih)-vnDu^(~|rT|8B-xX9||y};C~Evp5vN}m~F;seJu z8c;`jyiGxECE;C-Nlo%-bD1&SPuI^4<-o7A>C*^=3zYS zE#CJ;;d_<12F=xFhjt0rGF zKhu7q__BSjg}3Fpr})45(olHgys3XfKi{hWVvQ|yRs@#WuJw{P;OE;DOQAf~Q(^el zt{j=ET%8H!1*TZH<0#SHdVna%E{P$4&9)&C5-mPfbGG)biM3-Gai{9w{`Pl9YQa-7 z1%PxpfzS9aha(ac@2rTp0B#d&Ri@k^riN2)3h(V3qx0+P?H%h~yPplNwj{lz<-J_< z^MXKb|0psEPk~B6`=C#WD%h(H5o{1mkJTYB#_ZZcss`|Far!|eX(04KH*;Mjhx0Rt zDg(`BF1x4Wd9jPh!LSv?Rid`pCcaCg-Y>i8d%#$(gdv}G-3FI;iZp4ViideK_l_c< z3_Pa+?`h!LgV%Cyo=%6knHKmwjtwdqE6V>tN8j zd5I`+6MDa4N~9elHGc49;<(gji=9K78X|H#8$Ecz*oHr; z$h}4N5R-Wdi3n{EqA9y}+ECEVzjH5B=Zbx;3~25qd8xm=UIxTz18(gRL-2PUZVbsr z3~nv`0fYzW?!t;KO(DTVf36-0R|}Uv?sK8};5=0Yu^=qB#4RsSqr__+^``hG9r-!T5Pu#dEPAvmNlkYAq|xRg_!Es-kW09hdB|8)60vu#dosINR#JnbB93kFaVB>iK2bwqzGT}t|_ zFKvW98aCN$G68RyKKa`s>Ef?+2%sY?;H$!dFb6S#YtxbBM-{p*c1;b@IYv3M{1S)x z>Ms-1HK^ zCLK$9N&G@I)Bd~H!@vug_HsUx{Qi6Y<@{|X{rvg>L?q?OJlT?%jE#381c)NOp=aJ5 znpH5ipdZm(xleP=c*3!?PnREQIuk|Gv_7*q_TL<7@rA)WL`IIfE$N%46uBxvF*4{) zebfGD{f13ne~M9F^iyboU z>07n)URC8)ZBY~_QrQDLJkQ8ySL zhLwV{;Vw{lrQon0c14*bdqd$0?YR4DG`~NW?f2&t5D?{14(K3-?IIT$EEesfq}5|I zosk-qp;DFSd;eem-QT~mTX|o{;V9@MD4I|r{yE2Ny%n3gfIJNb{+9ec{v9b zCsW@~arcetO|SQ_!>`e6hfI}FjW|CQ?SDRSgLMO$T;1HQBMwEl=QK$U)zvzbGR=H{ zZhct=ldjb5`*G}8U#e7h++qXV1khVgJ#e0SppIMprFqZp?#IUxH(0WlS9nN9H8l3cHw6sT#mT0HM zDou!4Tj<6hCB&$UINbDG1_W^9L_>*H`;JvPI{AuKYtot42}#5|!o4s<@XWZ&&qG0hbA(_b0B>fhCFi41uCT>g zW;V*$o0c&n;Ihxbx_s}m?z@xG4^JxcpH8$3O_B~l&{82-;-pHFw~o-6OLj|+&`+W+ zmJ*AVTOA`m!>Rsku1Q_gbUT@G{af*GFSuj0-@Jt8P8{bQiyQ=rAAE#m2|3<8rWP|$ zMk=u$^)(X$lP9aF1j2lFCojYLwV9f=SiilDV})Fzz-d?oJl%tFRr1-uz2El0fl_8m z-Px;CJqNXoIOIZuZc%_0RN^!2?OLk3P7}(YXpu@o@fN3Apw>q(5oJlYiRVl=w+I^@ zz-yDHhg!j+zLT8^do~#soil^Yd?t<5cg_ExvuPXc&c$g`i-r84T;ugjY%0rKfS$OU z(+&N`6IFXyNDghpqcm1IdN%1b^y%(Byxh)_pwn4WFkFD9$+***pA2n z`KJPgGyM5C*nDS@5A$g*joRiTARxyqoXdE%@IaRGOtP)Q>cFF$49|ynl4!|NvW7An z*o`hTW1Z1UkoUf9v3Ht{76@^O1zNaykP!E${}Rq!VDHrm4>vLFW9TSmp$%0N=wRr< zIwut1n49jIMRGt@T!g`v6LMMF9du_-30XMzW}Yx=T9ubrpSRUw8Tu6*!}ic2!r%Ez z(yhmO@n3a6^ad-*G7H^ftsCu`Lxg9Tr`0~6w|H>Gda=eeS`Q7Q%qd?TKZX+@B6dM} zgPwe!EL^B<9#`!dT4h7j-PQjD8OTsA{0;!8^)qC9cu;LNVugCZ661`fcp7y7-!OFA z&qNeh+8x3ny7zE<_3d9W)biXAl}pigIl%j(qK0~pf+PP}qoK1*CpoTRD4y8fBNLcf>dEIXLosW%zt}z= zo%&`v|8`r(fqBli>n%cdKODVCKr|It{e6UY6mtvj1bAKEY) z$u@*hzlI%9+a2OH(i(Qc2$?Vv@#$Y-pBJ31wqG}X-a9usn*EQ4{`Gu)Kly&w?*)Fn z7FbA~hRiCtc$YLv2?zdVMwNPS)h%sNubz}PVCvTL^tvvYIhk^;a0NCOOQ@Ju7ILDz zAb!XLL!8jT8AYun<|>Ln$A$#{MZ*WGS0+~0_h0B0<3|^L|JdfFPgUQjk@mj1vyHu!PtcnWG#GcpV5+CqT!K6Tb5v--_wBk<)E8* zU;(T;l6-fx7kCBc4vaiM2iIZ{F(MGLvJ2EY7yEetJ9tWl=Mnh5hQp^ze0JXBZ2QvG z+bqL_EsjEdC|wlj^$2Sy4e}T1>T(xbbxO(lS`Z7dbEN0m&ekZIb$2NFJtYU6rSy5k zP;sc+DI6*DyN`Ne2Sya&dULZ_tE^CLG(HkTVvBMs=yvhPIFX}11}QIHNfa60gV=)* z7#$zJC=Z{HvDo_}F?Xid=~fbucGWG9M%nOE=b%7Hm`RY9(u?f7h2WxKD#JtPb&)7s z4M?1a7$9ckhDl&HlpTi*}E+Q!$DkO1e4~&7r z;lfTxE_dN(`fFR;gsfQ<+2<+O&gc4Dx@Ax_Q;ygOf?cd;Ojiixd;r*%w+#jX=>FdX>Z$e9*rQ7_25Sxyt=d9@rcK-nB z4Jax(^3#L->+NsaW8htng#Q5GiyyP^jvwVJ&x$nbD}S^dk?(0#4b9F6 zy*SC*Hx5;6re^$VA|H&NFI8ypHOtU3jAPGyV!nd?fqYf}00_Ust$JpM?H+cgq=Eq)5J)1uv-TI&Ewyii z8pM{ZxmR1-c*j3yN{WrB%FFt>bYQ)rZJoF6d+`rZe++nY#133Sk!fig@&&)F}s~fOFbGOTrB;&U==>GulLoWq3z47Zv(k`P$p5IoE01 zRO5n1GHCv{d)mHaXvx+UUhFPUsoHC*Q zA~re4Tq*RgLjM4QeZo` zhFm!q+(92B_(#Rx5Va43-aPot@c!%J=fc(aODu^OhmVGBAvZBZK4WkvPdjv{m2gPp zebbEn_4`M7l79?*G_|<5xl2})RkucGTJniQ!)v z!n0@|AMmxSF!`*md_80uCLh6+U@H;N=%-e_x5!zg#H}yFHxSs)$*9d8we;%}NTNGc z5Au(_xT`S0$5LyR_)VgGZTOe*4;M?M%?E`1Qr4GVA%WwH&rtg<&K}|rTX1icfj|k| z2)UUiJ;Y-b0F~!{46|&ta>BQj!o;c3z_N|RSM2o{Vt8b>;Sm}1F zfFicDjx_Z9r~u$qPY~_Oi={zDsV&je-*|x@>PB0wp^3oGFg}$FYOLcvVn5+nH$P~R zwu$WIz|LL*fS<%wK|RLaRbgd6!ZzdST)G`R%;{v*mHzsl!l5@1$^QT?89xfek5s%= z{{UI$eL$$rvo`a-22tuL&^0#;EB^q?eZ$a_DvjQWV>FqT86Q55dHriV>k7xy@TUzy zS-5r2S~Lz)uBG733gmwCPgn2EVTt^~tX)UJ-Vu&}-$^x#e{|ZigY?2;x?_CUV~7pW^aLoxt|m$9HbzX={JBUxW19 z18}Q&V>ZTdB+-cCRsfM3H#j)toNWN)n)o-wpBOHDcj8Si!@e21S+1>gdv=Mg5?HNt z#)Z_pf>mQQvk+uc5-K8u8(8O^Z9>lL!rmXgxYe~A9ZJhdl|&KCc4u3IBtex{(Sb5Z zP91~r%DZ-{b9@+wh38~#yI3#EB;Xyzn3AD#{{UF?4r{4x~Fbns0=kFfauabNTr{8!};;y5pY5LZQduxB9Lidp*GfyN^B!nbEM2vw4 zE3_&Q%s@hN$Gp4vjjl(bT}fwquWP!8h&)9s`dx%tm)R|}>ozE?j9`m&D5_jC6%P5p z3y@7NAjivJX`;7C{o612Bzu;-K8TO@zwo}Omgh%}wRW00Bz3pUtq@bOG7(vUcQ_nl z0G#k~t84pV_%6!Q6}-H&T}nw3BVz^POvubK0Xz-Ff&y~PdIQcrNcexIc=At;8s~|% ztt&=``ucNiY>LgLTj}=Js>IBaoS5VD9gq4*-oZ;EvD(!H-yF2NxitIh88vNVNzmTs zRC|YvNox$Th|9{%$>vVV+kB{S3vOTCx`3yr{b9@@J!Zb-{{XMZUd}BaR?GW(_-6A* z)aS9&Zl)FzwUG=NWH$lTOnz8jGmN%=QGzknx&Htk{?(Sh6}}!ekNt+$@$1k@9I(qc z7dFxJwqn0@qitXYLEJIZBz(1_YZ@nqZmeO4NRHmhd#GlXU0(KhV~R_KQ?gl6cEvH3 zq)`z0htHA=3fGp%alMJjAoQ<}weJw< z9s<=go9!-75o)*B7t-jOeycq4ve?FD3bRP;cF85fF)NIOSK4;6F+Fyn@heT2Ro3)* zblarUV6^h%wy-ik+FTZBqAj#6(hZHj%LNdVyN$rl*Ru#}r7y$!{J&DFMcDUW8~)Ud z@xJ=s!z-oRh;3%`@aq(MB)jwywLqmmT zn@_g>&DB!y2_{1@D8@D$RK!t%C9qU<&tDDje~fhf4$AiLP0=iL9YEPxU))&Ou?{6t z5%)qE4f!eq83`hH=y(zT0KrQS1Z8!*aZ8_W= zfJhm`k=)n4fy}Gd!PHWlQcX1U+p1U5ktsntw!ZW0tt+Rp!+FqYxPNxKFe7Uzqk`~;` zG85(>DLEkfXXC$wdOv{t1@OunKL_hqTJ83&soF_*eSL1i?@OK-6h~y!lyzHkG^8*Q zH<}ax1{tff{jR<-x5E#IPiB*8^WDOWtLm#GZnJ_jBw$Ch90-h$8Y->TLmU#|J;7+?xA=*L8?ZF;xY||H3{{FY={{RE^8`|jo z6#bk0dnd&EZC_CPKiTZ8#CDm-%{YDG`!z9TpK~0^$)r_bBC{f4f(-cp*!r%QF&2IPX;MGLiH=nzf~`n{gi}hEjWXuSQ!6$HKoG ze0~1_3V*_WAl0lbBfYxP46;i#z~Mr_%uzkMjFQdUX|I*^Puh0x;ufK;>lXelyoF=D z`+eQLkB6nWX(ATS2r~JNv<0~k3<5q=AtVrh{a5jSLx;t1c!N*4jitBL8tx`Q+jj%M zzhj(N=f8%vt641NXVn%p@>yA$-+YHAUyz05wpAx zmd^S;uC1-C`=6oz0Psxz0NRsS{ibep`v~6tPY(Dd%GS~4)U6DIng{{VvSd^3yUH|?dN$tBFtwU2_V<5fgf3{B190asabH)Dv4Sptg?mrT0p9*|4;;nug zRI-Cm@g>yLM;r*u%7WTC1Y8$$mdQK4tH{hCp^2O+yL`P5tjH%)wgQz}-u2bqzwp{0 zjoNSQ*KMrbt+lPy<<;W=Jd1l(o zj{;v@Yge-Bx;ZxzD>dvwF$Ap_mT@Y$XE-WH9M;y0`$BlbO0#QE3q|421KFTBw(!oC zYo=j+nluhZJC@CII{vk-c$)fF)HMx5R=9th$tmTIQ#9sp|LIrG?(FCH&VdBgl4K&hbVAzUA0}uF;C({8jrTSoo_*xV5&t zk3|__6KUJ+($ITEq#+z&@G?91uU50Pl1rVtn{0Wl!YSL){{X?c`P=bd;QqDnU&ZFfTZN=~0egF}#z=1?{_-*W zGN+N=u=LyMw5!#)wrh)Pm`G%jDGEGi)Dg(9(fK5;xN6N(S&hP>C&3?K5!FptR zC+uJF{@=`!Wtz%cpzNR#=G;p7KTP92>+w(Esu=zuvYo+x$sp&cKQDUywf%^LkJ!uM z*3}LF01}LTQ%EZskxH$XV>*&<7jLQ7c!a=%=2mUqhoy5DvO*=sBwP&h-nxxu*@E(; z41H^vzqiDPDt>H=nOw>dJlFQ0v$fW~30_Xl%l(^qZ*{X~?f(EjmxJlVnfxonv`hA} zfHl3rjeCZVa)bE&-@w5LUxJ<@Nuio#5kz)E;bcF*kD>J)dGxQHZ9FX^w&<>> zkTw8g@|OPqWt8-9ZvBa_dEK4#Wo2S*Ye=`&pUyJ~ZioD~w~&TEhC%!RH65hd=8r6Y z@i4H~VUMI2;!AlHdIwRA{Z)lt`y95isPf%*_r^0;1UOdQrIm-wq<>D8nw6c_his=R zi`mU{FU$2Ivhk!kZInXuMb*)>mzo6oL_<8B6glHK`=g~xYvRi-cJ-sPzl!OP-L?nI zkq2z4`HB5Ks?;+5n%~I@9B`n@6v$ERF~wBXVYk&n$8~FGAmavP4nOas(z_|+q^|67 zRLW_}$}RlXg{9Hjb#FE~t=M$*Kh~i>50+>1Bf9fge+J@<{(iM%Pq`L0-cK^FK0+Af zK7{8YsOp|8)HGeq_Ex&L$KSRq=C9T>*B;IIS41(9YRga0^Ehi|^&sx`Ux(yPH;3*m z(EQTx^dvI=hc!~uM7-Xa4{I#CvOjxlA8G&Ba4$pr+D80?UbpZ1Bjyw;bh**pc#W*3^CZ-!x0g_~R=P=i#hcG8 zLCcm0<`_H9Ps~8)ZDia>CXZ=(YjCSIy3Wx&D|sX&oulRi~a$9#8>9OGrT5V1lG`KYj`)gaNB!SJ<L#%ce>hGCy=k3x@eiFfx`Z8y%`Y5LkGFP|-A78?7$x*H2j! z?C?hsUpsq=NR`e$VhXcAU87+kP|}_ zM!13@_n0pQRf@(#1D)Qv#5(4+XW_pQTwO2rmBew~BylyozC%fK^7(E^JS!;4Y@BW! z^P0_zLz=@=)h$iDh%c?)X(x)w&edF`Nf$sL=N{NQut^59{8ixw@r{JA$)xI5D?Q3f zGy=j^g<}UMRtxiGRH!(?!P+^_H05&TjFZ33zQoF$w6)EtJZopFP5zxEc2{k1f@8JX zIcFtwcj{kcPVtnHps7l&Aa$cG6IHf-0r1p z(DY;10YymygV+y%Ie6v|o+>9|AySn<@8(>WEO@@v+@NbPi8dIh?Pl5*Ny zvMR^8%ERYF z%2Oxol1P4O9|eFUaCZ!xDDFuYyjSrXR=)7?x4PCO`$l}zX{j){h_=>Mk(J*hI)KVl zob2Fj0M{i{duRm7T;Lk8${%fC6;&Ot>2HBhP;lgI=HB=j{`Pw=OS z^$|Aj3;6AR#~k>PbX&!ZrceZBeof4ZQ_BjVDaLx8)p5huQM4f^@_*(3005t3SF`(> z(ZTTxOSpn<9vc?3;iWAS1v{0n51LL!q_R}J!P-o@8<%aAx3ft4J@IPZUQGmR3uscuKbabUxG^j3!FC0kjFNHk=BgN6O_k|8EjDfc0Koga z+A1_Fzp(z}M?|}^y3#MK)_K0qB#j~}+roRY+J2DGNT(%SCg&hJpR z*BOi}_IcnEKoZ?R^8nqpHBwlwP1!tgSUPWp{6`+C9h^P~@l)E`&*e9j;oFspJhKq0 zS}+*y#^%8XspE>!e+c-ZZ?H*o;eQ)xklzPcqqFeU?Z=aaU9E(VV=}mqZ(=ioas$?j z2aIc$F?RXu{dxW!U$d{$FYYzt@s;Aoro(Hf-de{Z5G9{fF*TjPmzGpT!!MY<6-IDW zFc=xi*L+!R4XjP5UQK%(aL=)vJ8X#~9$YM>m=V8z;MG>McYlo*y41&W#zg09sd9XXu7qz{gid6Z0upM zx3cjZ(5Q+fiDu2b59V!L08ajR&U)vqeN7`4EAw%V_3*#^6aN6>nEi?V2^Tg8431Jb6t`dj%XY_HRxkW2zXi*z$#n;W{5=)(JG8{aC0Q8qSmc#0o_GVb zc4auo;b$i_-Ph!Jd{M)7Gb&X5jN+VI-u-RabhrEy<-hnRr-mfdwJ#BBpV^Y#EHJrA67g9)I1Vo|$%0L_qym9Ybc*pH(N}}rSd)YM=gu+w9 zPgezN?R{=@^J(|iSH{*zZRC%FAxTDY>y5jK$4}>0f(`CPecW0zt?p@u?#5B+|O?46LVf z7RDPia>sEhlD)hC0AJR|wXT-Va@M?O%`uF^54-xoE+r=6!#*wL8wZ@yNDTd)B zOcp{p!R?Nq^#lScC_GDotFlQLj1IWsraHyc&dBK?+%k3&*d4m{`ijrpznRe*vWnAG zd|UfLe#?4??3d#keQ{=+RPepanB%<>{PxP^0F&c|BaA=YY<4_X>fh`ki9ce`hkrih z{>*$H*!x7-ub#C%P91kgpHI~+{?Vu0#$lOck8<2bMhZF{f(>{700llf{{X_2_*bNO zLq*c;+epx1cx=VXNYX52*}|6H&eFsK$-o_Y){3%z^t~=~SEFqq*IR#Ik@PmFrunD+ zn#9y}R_TwXYs+r`0Bg;1@VAqt=x9OC7)ydXb#A`(M*jfzrSTHZtSoePg^mdFB_(~b zAD;D2vOGEYzVTPb z4R6L;P41I%Z=?%5=)`i#1Tu*gat{Q#$4;ag^3BPxc-iP{DqgyQ7q+;RvhR;z^M=XZp zfBMB$+qXR9`Bd+qD8*U5zY-6zs;8K!7BiEEI4AI`w-ZA;s;`*u82hp@$odhQ(Y(6e zyLL9_9E=dGKgay$s!KG2BN|%C9BMg`kClDuJdW8Uqs+ehlm)7+YR$_wNL{(--~RyB zRPIy=w=8liDZ?-G!RuD$Pn0yl+A+u{jMFta87%iivJCvcH_iNyKU#fE<561d$kudi zFU1;q+UhnoTAU!9!*Kw8pF(g{`;1nPf-HPH;Mf)$TPbZLZi)7rhm0Rhk0USTii*wR zlI=XtmmheQ1pZYHp=}7b3Zh8ZlHYW)H?{}rYe>|R(K8B|dQ#R)?$GNb@XfD`9E)8_ z^G}(%QD-`aAMgiOtp5NL_y@%w4!l2cs<(;!JAI?rsB43-SetVik_JrCa5{mK0Iny* z8cnvjXEn9Skt3IZG$gA<{?a#9BeCmVEAi*xC&Z5w_zLSw@Q=hB{Xr%L1)jBaGP5gi zP{^Xvm)k(j5H0>4zJ|FN!oRH0MO`XN<#^$)T+tx%z%yNdu0J4=}b6=ew z54;0{aUom>-SWCCZf19UG4qzLaK7YH5p;) zk`6xsUroys*s~^%!p6(y5!%L7U=>iLdenkOx?Cd5A`XS03;NVH){47!#>Ig9%u6x+ zO<#&KPs~94X~rv|BnhM3T<*)FM#JU`N!&g2{uLq9mNq!s(*)x+BiyWG8-~$Q8^G*# z{n5uxwE0kU8TJ4qEx2{gK<2D1k&zA=m0PY4T8VD)FUub0?buN}Ib2P+j>8;L%MjF( z2UKPeyE6_xQ=ENIK~lJqSb34YW6CQQ{LfF)tH*rMe5$Rt(-;P%Te%iJ&9!LdMC;US zNcM#6-5&l}kCeaE_o-7+xQU2nl;hRU@~FJlnoQ@O*zZrXw3ASO^mX$}ovcF*tMxzR z)uq^x_d3PZ$=W1vxab(-s-^wJ-z;r$bjopsm*r2ZX9MZi+P7lx$aURyGPfAoqY;m< zId8|0YOj5$$7KFpx}=LALPpR&fOeHnHuC=9=SjjudBsS1ff| ztyAQdZ}vkm-B`N!jkLcFY3AbU_BU4LT(J3$G5{ILKEk{&;(zTsb*~96Y+F*(?Rq=g zsQXl)_Q=nczfYL@_M%dZ70oHql}Biv!SNIJmbCbPB-XIWCZVgS{{T@N;bQ*)efbOY z>+N0}Qw$e!kxaxY=JTEk}NSmFeW0!Ye zy*r;zV^cwID#~MGvjzmPeZz12Ss$UJUWT6PT9=~mwwCj+k#^s^KRDTvey6!UqmOY~ zsiH$AyENCAK3seP2Tw)of&O`{s|`3s6m4rVOwGYe{m*mhp1B7Vps>vq&ywr%u;(}h zeQ8Ff2Wdb!)8z0^{IQGq2)BeV=9nr{TQH96= z=kxynK9!#yo-QWZzv%v00Rpab_5T3tRH=Bems!7g20$;?$+r@42l3v)jHnWI*{<#A+BHZ~p*YO`Rqf+s=mSMvQ}&by9yy$JQCN zxFZqEGHz^e3vT>6f1Z_9FXFuNWzVKT=CQ7$jka!m-dP0ULgUy{sVVyN=yrK2w0YPL~aZjRpHa}E|#NKPr1SCK_B?pBgE=W4dlPq)+3vo79C zi6=$yIm8I3a)zpk_@XN=T z%kzGDrDML}dDAOKy*L1o_|;^QZQ}Bw^7al!26BDq({7{HF22uju&XCd4qx%4_1JXd z$tz2#TK@o2k>v9ccMd}_8ONnIEnZ2G4=&Z0oy^$|exLnnmhq#SZ?i-5GPVX^8-K>A z-apu#{{YeB-xZ{J5uIMyqVh zg}lhWi5qc$Y;>gbCZwY5pk>|(0v!xYy405p??*l#yA5Tg-p3IqYw{4l3J3|D>5q#MjpE4Fa z=c19o$of-(P_5=Hh1Z1#qd%|UDr<>NrOx>m=8usiXR9Co09`&kMmfH1uChWpkC@8% z&(ptbb*Cvl!-u;0lPg_I7OQV1t;7+}6vN3eylTqBzXyZI@~;#4jsE}y>iARfCsY2? zZ3=BF^_hf*!e1d}9mzrn&UwhkTK0(JnIvtj#Ks8~%_f6rQTU45G2V`<~JXrmoe zjllc&=~FE>&{C&PtY1E>vp%j}O`HB$zvWIkg~2>R$@N@uUWjxBw2Lw6_tG5Uf;4?U z6HSxD(a5WvI_X`w%(6$1rw94hv&zq#=0}{(tW6l??foj%gcIKFZOw-7+PkLkwTdoo zt!^EZl|%|3pHav1s|(?cHcLS>Pj;b>(em@@(w{Gwa~x0hZrA(A>zO9`e{erf;H=wa07iPwV5>+A!3tKl0HhqC`gykGoC*M+k zw3|vRZ5)WL&?p@~g0Fb0>%+Pxoq2sGsU(YQ6G&D&waZ`=wLtzOj1O~I{ua@6T@_-U z<5M$gR|ul=SGf|DIL_7Vst!O4fN%-P=8KBO>2EHsQ*4qJRpf)kLhv+!w(VbKt!wWQ zXgVQ{q`A$j4aQG7Lk~{<>n?ALo)z51E@hQt;3D0`8$B@G@y=+!a5L^5VU$Kr=lL8KM)OT=sYxQ| zVUJId{Ixwo3=9t0#!u^99sdBs-x5zQ*fdWPM6t=aU9BaL4gKJ8`IGdouP%NmX*x*6 zcitFY82_U-(4#MIV@VYGsH3k)F87=bYxO-uz_HV!zoYrQs`S)MY``j?W_Ydd?DgV%Yj60M=(mk= zG=!9v;Wi>;gZH}TtzG`jdh{zN*>wA#Ih8@(c^(UY5gg|p)#}pxWYg|nZ}yy0M#pfB zY1cb&J-`IikMY+{68V2rB&7c0A`ODPY?PYnQpjp5WU=E<;Q+=*1fvp_K4BL75@N$klxXC1`r%auiFc%=UTvmc8r<6p69*6jNb=3A)n9R2S7 z1wub%-yTX1>m5IK(m?xcd>+QV?%U(r*1-74X zx>=d+{?{NkTXL%5TmrnGyr&iP2A%s<_-f^Mv)@8k6#=XqF$43gy>s@F(B<(xh2pNS zEwnIPLm^8thc3|-!D0{a8i`Sfajhioc}!ojuZW&WzjvpiDPb0Fn36h!z&v)rs}1`n z_>x;4s+LyQ0!)b`x@?rkL-P99q+fp0Ivu>B?PT#fmIL>4K&5f-m&QNFv>^Sev|Xj9 zv(~p~l?fRC0NR+N*v48rl^jIlvEz&TD){or6;^FNNci0!o<{5*Pu%a;r@j4_JYA?= zuIrsOI;%gKCR}lhjhN&4SFBzB)fz9_nMR$je8W4BlY{>Nk!mRa0BZdog>5@p>NAlW zWAWcf(57h&U0A+j%q{-_WKR?{46T}UHL=0h35QFIP} z98q`sRa;v}x<3!Hwm9E^`eZ4ju+(>dsefF=FNg9+lwbbDz9NpwMUMS1B#BE$5wLi~ zp4r`j`1CmB3aO-i#agzzYPWWp?aX2~E0d?XNeihe%D}e_tOz66_3K`%{{Rh4vro8q zf6Lv$#-vMrURdvr{br;B9Bu`_;9reb)#)eK z@d;zG4O;8&M-2Y}uzs+Ib8B~B?QXCqC)e-QS-)YMiKbR}f5GWr@T~ceclx>OZkX z?9;A1MfnOqg7C7DhK|$>WBvz<^kMs0HOjj_hhrn> z3oPvMid`p(g%~_GMNd zj_>DDpV)@h-ap=WgHw~75jCt#0sQNwZ`!)~;mYWGTyk{V_P1aMuiX`wd;3*uilfQW zv@@0@@0Lacc06O>tuJQ|!S#yQx{-r(e{($2Gu&zp`TNG<_Z)QZRSfrXO6})fFHS_S z+wrcRNbTW2Fd1Wk-lQ)H+NT9asK#q+nev>{t>l55%(^?2DgE30?Yc|LR_ z9I87i{W{l0b9^LitFgGi9YseS$cZq-H>h5wi;I-aXl^$E4aZ#P%x=G(GHo(zwOp*y zE^-u)ylZW*qeI6Yht`;H!p6Tg)?>S_aqUIepOJ+phArRslSP(22KU_f3 zS^@=)sAd@d08*r$=e2IMSPXXifk-0U-!}}Sw_0}S9LGNX5w(h3!>8%$$~LL{I@Dvr zP?7$o0h9bF0{%Q#N#zwkGUwOYo{>i@s)c?5EZx8Tbkswd$36c52vw`6&l0!%1Yp#$ z_%7Y#v&{mOtJ^tf$@Rkrv<9v^4u=o%wZFPK)bWMK?#mEIMTS)mr4-%eL^Xlxm+O zdBpC@c_ z`FhhHHA%O5Yo0$Jtw{qcc*AaE*nX7raR5JfZt8Q|s>ljWYDB@duI!fOc+Wod9C~Xx zZU-#3`Sm$B%5YBqTD^2zQo`tw;bibl=0ZD_&A@f>kd+Ud$yYkcgzIN;`_H!%z= zbjCR8_zG%WAaK7nFa;qI-dG*X3~Jx)4%zmq^JrHM{{Sr&fZ&11#a=g2VR>W5IqgXI z(aPNXqp`us1FZuyWbo6@K2Ib%nVHYKiAm3hyv(xaPFimjt$ z3~cGgVm}IzG!~w|vaKG1PSL{uIW(jganRk=F;lXwi(RK8lRZmfFXG z%|djwgym#Y+yhq)>}uOvCS3RN~cMWCpasPrlM^&HDmIg zy>Z&5n^FD|wL$e9{(sh>msi7OTRV6oJc0gyl>%{O6WK#D5)70z3h@R4cOe+;8e>yIc7YOMHQhv28*`=m;0%a zRph*q9&@`b-ijzBo9!-}n|DSaREv2gcW3VO7~`!JQtAWV?nGhx#=spj!RC?XVG6eH zSm4n`FfHkp$5Dz+@<_g1O(5Hjp-IP1l~&yDWnRoiXrhm@W-!d&LpSj+BlE>M$!It3 zZP^r2N}k{m49~aR4E<_2F5Ioh{WIzB_57%!wE}YGr)2&V8;9w~)0%?9_3pJ+fw8eb z!5w>ljTBHK#-cvPt0ZS@Z^nJAN*UTn)sIu#9XZ7mR*@NK7F~yPH<+c4dl8@T6zd6E zd6X7q^D+((Ob*mhS`#8gVr7q$^EgBFJ!zXfy+YzVmJyNxJ$g|^43Y52#B$7bfTNm@ zIoY6%yRw!vQA9wI9I{8r{op&f{3?5-`!X?K;gF^eOmRgOFJ@FpQ8!2i=Ic~m<%FSl z!-1dk_|ZjYAbW_+R`9M^s=fdxrxgVAG)2B+zyxH`MLmGzb!(=p8+1qOmqZzTG4X8;0CjaCZ&B^N#gAc@i(o z+yFBR_W+9pXK{BYSa8>%!3i$Gb#ZqI5JGT=EH1$%ILEuH zS9O1{XKJRazn<>?H!aT#&wl{;@=!S_00{{IKzdn#=Vd@B;1wD=5g{Q7At4bdDG3Nf zMgk%Mk%7T42Pp^)A|ZVdQL@mGff;E?NNKs~7~imQa&m&Gx%s&{_*ghN*^n?XF>!Hl z!T9)K4oYf9j{i43_W%em0DVY6AQBw_nE(k$fb={7pm>Q973n{r{+Cbz$S7#&KqQP8 zR0SV^jD!pXqNBZfg@y`5eNjdR0tiqDX;IO*i0C9#O`H?ns|Dr5C(()NKd2`r^-htH za%-5n6!ama%!2EtPZ=a#lj{r5&Os2Kkp35oWJmzu|Mm9b^~EI03qnuuB1irY0sk8f z5;6fHEs#q>mFPX4Nf65O5&-)JLnZ(c0K@>BZTC>QEqla=^0keBt-PuSPM96`{9P(d z9ka}a^?BDB<;PukNs)~YO`Z23iJq&SisB#owe45;pl5)q?!W`vvK>j(w!$!2&UEBk zT`&@D@WEj~CITjMu%sO)5&HYXw@Pjnfog#zD%J2-hyLp5qt22P4N|yI<1@fB5pQ-3 zmVNQXED<6%_etDTYXt3qKXXsSt$E=FaojTwIFJ+u*i+N%GjO|EW#Zn3R|jcd5zsMp0G5tqJo4w zJt5Ch*j1wzpY*74dMtNC?0VYP@DrCN5lcJXeQ{4}1;#FfO-GFLhl!C@ou zitoEEETrvst%rZaa`KN1w%Uld#9L~Oc}T>Zkv?M98;vG39;i7y1ELxlCt}n-wJ;5C zY{Be+^l&>OWBr`CB>#+76Fx_FF3zxM7YjKvpVibm96=VxosB87LP`6-IxAO==kc)e z;i#c-Ifr7{WpuF2t&P0FN=j#GQ@AP4k6=}k(%0VrzE(*bm}dsIP-OV)3m0n%1_bmA6~NTp_zi}PA5C``K&l`ip*ywzuar8G5F z?TGxBvax*;_jLiAwy#&3B|*5#_(brz@M%Ik#^6T7$(Q8pIHFVEw5fsNv@mD*ITnt+S3xD2fReL|S7q}79A|Qkv@-%b zaw6|MwnLGdAA7w$^Wa^;HjfzVFk>OOnIvK36yeM*y%jh#k1%zOz9XO2J>`>FVdGtA zXVO<|nHI##nH7*beWU6pNVD7f@a<#5B}E-e=jFNfGa$9iiHSh6{v8U(4*ZWK^v9Tg ztb4aR)@m!ZXKC+O!K}%%xu2XJJ}^&Mjpr#MMFF4@4(-OS6!d{y&3e{YWMuPB4YHAF ze+(r0WuW<>BT?I;?vA*yfw_{LM$x%aQR9tDb zNW25lyG!PwO>0~xeWA4B7IX(lqw+~EuRx%DerfiDPSl8IBbe;kA~!9`FbLM6G_`n9 zULi-f4FHZDuydGMib(dA-HU&4<|O>^BT|Q~3^k+2qOoB%Gd6;^aATf6`|Un`NnQS{ zo^8cOUch=-qoCUvaxr;@d@-uR!FfHO#Se)C;uQ&s3X4hUqg9`H3#g9fWH3$yx$agR z?`2NLVcI+6E*$|4H(Pd|69@vL|9T`a)B^tFl?ce+i>i$~aw(deK^c?3!E`v#KJSz! zmfN}1bI&b~wx_Q2m}0%_TlDTGx~8R==7HEKn-hh_c3ZG#c0Ji2Zz3~w8BzTlTX2){ zIYl{83|8j;XWoK$I3mPC*z7T49muP6KNLINl&DCECcV1NgCUSpk#2XsJN3?IfID^$ zwV!LK>#%D;^7IH|zxac{s-Ng69<}B0R@^}d+tO#lmaliN{P$rBkr#f%^tQ@rB%q@~ z=F|87f+&=R#3N`ae{nvEtxJ1vd<8C<4l1jcotk`LP)iTCUm0=TbF1|^5Fxg+ubONx z^`BNB6RG3|^dvc8M&B#4XN%$`SOtN%EyD*^d<(MQE+~qbBU+g)x9N?=C$-lQvk~~H zttG`3T*lRf5~T;FH`(7xAXt|+%GMbvd5SbMmXuO<0{}c3llB2 z2c?2A2X=IUozYMs^ck!*Db0gJrg9%;%L@fEV4G7f zFxvY8JZH>&V5a1J1Yl@sZwN;}ATOpTYbjCCNxoxk^$WyvWD4>cm6 z$3j!!X*tRnuP(DiFC?3z{BVeSu;KOYnVxuFq9oeO7YEWNryfi7Oh0WTyF4c)Q942c zbwcn_gIeo|5c86`9_t*T3wB8X(?|nPzbQ#8P!`sshr?-*2a5-^Pg`%vz8sF4er{I0 zx65=wu?Qj4Q_`^bg}G#A3Cwgh-$D8fsCswi=)fCD8N@i4i!0sm@}2abbsx#HYW`TL zdsV<`g2|w1c9z98smF)(MufC5HydL-I}dxV9T_TPU(ZG;m_FemW)AZq;q;;${Hqh$ zonk5nYD%kkc-J&Flb^#q+6VI*_)_qDU6K1*L!Xr7)^wM#&Uu?&ctb*%ysQ4lfvg~G zb90J2E92uCQUBXHBR{X0pvW){BX;kF5K9}%$jzZaJNC3#7h}P)g!}oFd2nF`fmBPM`%V>D7SYpCsPe$SAdg0Q5 z(<4!0d6sl%&AmOIuv3JA)@vFBecX=8UmjsJe^D)mrQwS5l*ev&laa$I&Z+Wlja{^j$~@OCyO9sG8sxzCr`V1i?*7iHlH(!8 zZ5WC{b4nAk;#LW?a#~}?9n6o%4LuVu=evY_cgy(gkMnQH*GDNmCQUr16~t0cisO^y z4;)IvoO2h_Xv&$k=NYCm2hrBmzLqC<=HuJH^kyAvA)kF0rSPXD!I5#C;%g?FfgGW1 z_{!M6H$fNtT>T@vtmU``h&dU=OSyHUffr&*O_;8urb<-E_J&l>#bDCB`)A!j0pbgM zXNA|W{IO=(MlPy}jxrOH@B>KSkpTV4VYg-30=AiB_qKukQ7cy_D=?*IH)}8&*7H6{ zYATwUjka;H@CU@*tJrgbg!g_yr5#nD0WMslVy9*0q*Q!9n@*A9(x;nvVX0=IW zt159D1^xb}{xw!bO4Q8w5Wc+_NGj06GP7J2>po)jajNO_Aw!bshLr`EKon7lD3p^9 zuS8a&Z^c%aydxFrVIdJlRu&t?`g(!E8mILq^4X!t?6CC-+Yf^j6#JXdffX)Z>uJ^+ zBxj%I;_nlk`jzz!Uqgt`zB>?hMnxWdE!^It$+XxntPN^7b(R@Pk12e|m}pU-kG7_Q zq)kxTjGMt1wHjE6lQJ=i^-GpCYLa2RzlmqKIIZ{FWme|B_)q zW0+i10%O~hWel^Zjk^cJA@5j?Xk&os*n>c$@0I|)>oDSl`x)Aswo2h*Ik3*^kd47M zqq(_2%en7zGo_RA!u>c39sj71RJ7Q;Ak!iDTx{R!I7NvQVH*^j{5F?hk}WPJW+_-WsMNwN-Sduhfx zf+Z-AwIrAGr!tvNOi@e?Kay~LX|0agU_#Kw@P6uWZ%P%>a58nE;G?I|E`x2T-2O>r zvcbx2CFbh_4Fty%S)B{B=gD;V{ zZxfx;Pzz>UdqBMNd2Zz3Ag%HB<=WDo@4t|%F5G+0e(o@f$dAxUE;wD-=EwAgp{B|% zddbAXbWbb<1&rRsp_k~&;11cdf0P@QLy5|u*m4zjVo2l%mQb}tbB-sIs*?wojn=~3 zhK*fw7k6=dZ12(|&0|Qd@f8BKEpt;1bqtUwz6HX^eZTZd)LXk18#~{4@LM=j*_?8O zCz`!MdtbVrGIc9G%J>B|7t}~j0C#>xmhvYVDo#7ftH7JL(-_D{VsXPT=;9-xd8a^L z@*Rohir#aQGM1IJXCp&9m9Z~N^o^ku%6H!a6zeZPZ-YnyRLB*2o##XdxI`Mw0LxhV zYvf?=9YY!t)3^Pxis6%dcjTr7l{_(6Plx33Xe8)X`QfrfwWJn)XhlxdonU=cr%<`C zNU&=q2*m%&JNq$A+PkSgFj4@8O1-3(Jal(k|ORHsI1Ci6+gJu>6=*Q9BvZSKf4F|lr@~5LS5T->PJ1--+ds_z$b|W0kd9N z(b)Vde>(qF6X_xOT9Z$mtQOu`Gj8Z%FnBkzsZPIYqmL$MZ0t!u3qKaHNjk3l!8rk- zw6sut&@4>8r@>T&l7HTz7R0-clxf_rX|I22(!A`5`|TGLi}&Xm*Uso1=w&>Ad`d2M*X-W814)Imw!9Jo)FoJwY9~rPtEks zd$BGi5P6Q`&=N&wwZrNlJszHPIz`?Y^QcaA{oWtUi?c>%_E9RDsD0Z5`xmi62>zgp zHi6G2?g6DO^DR2DSe>b8pHaVl+~A-a!kOBP8BtUlD&qcm$X9`_fSI4Y!eT4@EA(70 zCC2eXB7l&}gPa_*++TL!sYYy33{j(HWeN)A#=&?bkHui^k3fD!IWSo--RUVU|B%Z! zDR)J_s<5HvHuMb8xG&|S5Y->cxpl>!+f02p{JeB2C(7pd$;GSVt(k?|#@1!6F-~}_ ze;_MpP}>>B8;5)ocvhzx@Ah~JSxyHyL+Ai;RPGl$CxnlL}?3SNjCb0ka_pYCdxA6 z;Jw|RmCppW&M6IWX2WdA{(ad+VT>NN@n6@ig@8Dxj(K*&iQd}UWW5S*Z~j?VA@}(= z&ZrU$dvA0ZsL5pKrP7i5mNY0d`=caXS-v|MwD`{9TQXeZ~Uw{EL?M4A@p0HZe2?c6gIV z2WUcA9MZcIgk`$2cn6GRbLiJ)0?fY8FIFx((YY!f`El~Q&Fg%^9h7t1$?A_FC#W$3 z2e#|J{jN-KQW9GPnqrRpH@Uv(CPYPN%waw8{dW~&@%=_0+GxI`bmPo*wq3;V=Ed}Y z&;B~OvWTzs>OG|&Fnch7-%|_jXjb!*km7)dO0>^vq{ilitxx{Cf%!}g^AW0C%bkMD z?2I=Dn9;gx9s%X?uiE0P(^!2^49JU0tN(b|x~4bi$k{C{tY~{Ra$i_F2BLo|cqqGw zkM%iAy@;QKeC9zmTkR0vFN52A_3WRtmQjNP1iIig{=82Mc^_V17HKYQZ2rY^m@`B|zk< zk?%b7_GlBjw;8#4B-bVoP%Q&5uWxc**xF^kX(uu+W2ka?>zbTXV0d24Gj}-f{D@Fe-Pn-sH^XH+EFN zg?!$~k-FLU*rjV5MTqn5H&T#`7;N)4rn88QlI4QvCk@2tfEQK$g^>rF3RXp?9P^=P zl2@7Q2J`MT7kG0{etO~fn0vLV@FL;k7%DqI%YV~i+<6yzhv3%qeT;UNMH|J3pCM&W zjqer51HB%^&)de^%8zNQT})0KPkmVyW;6;{JnfT+s4KW_PLPFVZp^P2mXVXf16L-@App7b`gyM9Yzs^=x?r`9}!iyw7 zy#plyt{!PBLrH$7S;T-`dOwY!6IWJhfW<;z2xEH6&;x66rF+rC9AS}Wj_jgOqe68w ztW9R=D~GC0`Ow}P0R=R)-XJ?dXkp|g^qOiSVMFKrg*Gz3oj7~L$d2rgm1tbj3XA3B zavl+dq>=Dr|2jfNM-Fc0BGJmU8^pW_9dk@yZDrfb8ay*w^A;h&Fx@_+A~}}-q^oB& zzB|nL_q0f9L_T#QW1`8N5HhT1(0c+KEm!txLI1uM@`pFHcA2&Xv~wyNqBUOFrV3~8 zWZJT1bDb{^y+iA8f>D;hi@pTMIr9nVj`p}w%ce0BgflK+ginNSg71$(_v zfwjUiP74Atq^kOy+5Q@I_>Q0ujG(|RxYGzs0huE(rNPT1(nd(O3<*@_5T8$MvKslX z4r=64L3T)UZp4?esWlj7L=%L#t_A;UsiqBg^nmHwr+lOkAU#+;vifYhcE+yXP-J#K zu}~^hnoZ*uG>uVwiA-18Ry!(<5gKp(&F*I-Ut)~_SeIO~ktkA}0CFAM@d0h#s!> z9&~y&M)+h@j&i9-pBo1q2MJhQSqye!6xRrN|0w|K-~PnP9n$k%7M@pES_@)Ux~L+- z|Ib^prrF-G3~Bn1+DkOv(n8!$nE5(8=STf)#gq;Wqd6Ru5!Ggn(Xm2e^)R2ruey31 zosF#5Go_2?)`_A&Xn@3@DMTeM=k8p6>>7lCRvW+5Rdkf}M_*%1hv(^QpU&863=Y3J zq|Ck7{MNEy+#){rNZ)=#5i*m~k=VuvQ$qg8#7hiiPpm)&_qL|O1;o)K0SW#h$$Ad< zZ%PtAq-aNlxwAKj|lT5vtkF^_33D8GBXkm<#*PoD55rcvBP)_&SHjY*qSJ zz`aFZ>PN@MFsrB@p?4&GeT208O8QYyzkZ14Y&Ac{%3<`s`OFlO+UAR$0lDHXLpmtc z5`>pyWKO#2`j~CgGxQ^rhIRCyJdi{Mr^#|6)jqre1Y2dHZ2 zZj&!;UFVxRrDbmxpfm8OJ#nF>vE+F&$0hQR6%ZBFH0w{Zed)88Gq{|Dv(^HK*NHPW0 zA@gM(m4aS^*&Q6ixw1t6WcwKOz_VdWp{<|b?DKCumSo^>hrY>ox1BiQZ5ktqJduJl znbGhkqa|tu>IJ^G4xy3wJK3(m$Jr@%SEDS*)m@n>+zJLP`5@TFve&9b)X9&y*tiFk zo;$_y`w=_?t`d$QR!E_Vz8yIq2fP^j;4}%wuV&7858!z|Dz1|e$b~0`H6h<%X|A8Q zZc;6>Xr{#rR%O2DEHy#grB`;FXk`qB8v=N&W0JQt7vuY&;OU_!x6gMm0c7Q(yr!v* zjh(jCuhQ*?v2*O|9^JdoHJxJn>)-My5R?J*7jTrak?TeSm?&NU3Y+PbdQ$s&b5+fV z_}^{uQ-e=2y<=OF&e4yd~Qy!5N&V~+Zvoo_r1qO=-SVZ$=M0aVHNAWq^8ZCF!iHAugmwPl{z!o;^1`D z)qv?owIZjwaN`(_NYrF5EC1mR`C_4;w_vkgf*Hv?=I=Zomt|L3TrldF=W~D-oA5iQ z;!=C5D|`{(#nV%LJc{R3oNYG-#Zt~pS)}SJPW7MoK4nX` zml50Y);AURk6ul_w{3ZP*^bgjWEf|wI4>))#ZR<|5h~{DXm=%Vqid?U1mhr}jz;+@ zm3S5KOh?MO&YT8c$$q}`PM|Q)8KSUIg^hXJ58_zHABbgkVMlXxg)=l(YlWxP6dvw& zri80|;TDYtAv83MIH+m~lBvKv>>LWFKrM3h7rk$|g~)=cFgR39E3 z?m%H46&n5r@JDd4O|a%8|1HVulW%?NDmW7aMWu7mnk8eTWSl~LZXAvC3bBGV*0$9I(w3BT8@UaMPaXHDHRs98&nvS{)a>6SXKZO$H&j3rCpP5RhUZthl9))}8$XChG8lojOvNuh2B1h;Iu{xBgfI+?0M56qBlZAZ6iy~Ft ztxlIV3<~5saK_sXuaFYS5`LAMV0*s(Z4m(#Z%4g_21y@hP>NYC&9;H`(YMBChrlZH zCzf?HpZZV&lLCnz8mjWr2eyf7DzSCf1K>#&5I0pti0#dd+@R%9!Va`zpU>>c2?o1V zUuuVMKnJ91(wKZ|O_9Gg+i?kMFRf){pMGHwK;T!3hq??2HwnMjuhG;zEB`xGAUC~w zBsN#4(zRuB`_Z4$JDdEVHtCqBX7lvh8S)msJ6t4-9dg!b*^TPyyDU!4Wzd0NauKzd zi5ao;Hn6J0Piom>Kk8&FVl#={x&Q(KdturO@j%9>m*@!S>u9k_7h{u2I5K+5#s}S| zyLA_>7Se5A${`}IjX~n1$+AY5hvhz^XTb8{6=+qx@5E}<=Bs^{>4O~+djk8nnzVOq z(V5}E5^+IK*z})HN9T_KcmhbmWL%;Lm%?_fy*-SACdPw>YBVLZM+Tn`qJgrqP1=fZ zowMB$RIJ@!`Y~K4cS;iU*Zh{OW-9RJP_Jv=zV_p)s=%qFk>KdIStQzRbe`R^QsyU- z6e^`~I&#U3W<<~3$v;?{$v6>%ZHG%x=>afIqp1IfRv>NHXJZ-F`GR=kBsz}pCQ7uv z&6)@xLcRWnq_;_f)Rl#3y~@yqR6sp7!Ev>ayo;&H0{_2RXYCo)sF7PE9D4j8^nzYe z+E)icoo;*%%0SdDSq9Rd0J@%hl(p4erSew|gi{1cnBtugo-~)Lwh`Ak>#^yq!5=zj z(`pHvt4>@v@+w3@?jKLj`z%y$2P+-fe|9)6>a36%IHlvF1awR5)2!M2iDs1#=JEaZ zQKxE@P0nR8sIm8OgY~q|M@jF-D9yT(wve7%cgb4N`<_hewez9$h2nGDpr+tKL)ZOqcY^Uk30tf(5no^x)bRYLFWOj7Ix3g-4mNvA7{bC^VUry|7|rdTXN7}{ti{o4=e+n{9 zuhnS;>m=`=eALj`^vp|(nWVh2Pa-_3%j6Kmj&-JY(oKk-cRD7M@U_*JnV+rTo zG+8gIW}*5W!4MZb%tq2}Xdrkn8M1UPiB1Q%M7sTmsH#pyA?5=FdS1fJh^v21BuCe` z{?0VgGb}j#bJ_WTV{!sH$A`o%`7Z(_%~MDnulR*4RR*I#PcNsOx6%Zay+ z#_GSdlDEp`t`IeLqsDCBMx1zr-g(K-0HD^dgvKEBg1MT!f7?~{XIA%L(4!Lm&Hox* znxitZ>(QeOHkADsqkE@2*VtfI1C0o~i4v-p4cq7jqvB?+f>Jm;zTn4K-SpKaa;rXywQ2V7x_46EitMt zW~b~bUyiBtDEjO$9S;3DL37w-(aP3LUfCR<}XHM7Dqpxsm5V)aUlNqeyl&MS8QyXeTzGmgabA@e?< zM~nn3*HYlyYkQcNw5g0XX$$E7z&?V*WwAweis!@7m@#+-+BDtwouV0q5{W*7U~*MW z%d%NF0EDP^{qvd_&Q>Bm9$-O-l`t+oX!_SB=Sd_*R2>#uNV|<88nU=7-DXIrw@|jJ zi4*QbKq+-MBIa5CV7WOd!wd8>o8CZ2l*HF*@fGvpWL+eGGGZE9g4?aOxlPBy;AY>b zkBP3buTC5F{!Lv2kR|vS-1Jlf{!PL}^0!f^r6iVpqn$T(td73ht)r9u(gOq@m~~hw zLoVEp*$hvr$GMG*jIs(-3N$dUQKptR#DK<2hzj%_M5_= zNUB9PG`l{-ilmylUVplf19HM!4IE0lA$QX8#VMxEEQ-I{{!I$ohSehXt)K;`usYDu z)act5r?7@GK&}1RokjHDybO-Vpf?=fBEOO{=;#h)>aP$vwgcWSus+$SRac5>_mA8Q z*Qlki7F%VUP8CV8Ek6UE0h@56%lHPZ2?hBSlkMwyJV}pdK!jM^+O%fu3a^3i^)rC0 zNWLy-UVYOnyYY5-S)I;x&Ta`d8=XrZoq5K?ZJC=~Bp(xn4OHC}>^=!#DUz?(E7$NV zyJJ2sl22fJPsv&md)~=$R3x9OFkpu1Mmb~WF(J_H9*~j3TB+_A=2VCuJRGfky=U7T zCz0Ji1!IM!C0!fRucOl~EF2Yo_kMp`rG@Nu6E`B=HN-8SVzc=OHT=z$PL@3;Z2i;0 TW%Ly<04wp0T9LH+^Wy&iA4v;Q literal 0 HcmV?d00001 diff --git a/hosting/src/assets/dummy-images/photo-1519494026892-80bbd2d6fd0d.jpg b/hosting/src/assets/dummy-images/photo-1519494026892-80bbd2d6fd0d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23476337620a4b4ae26e99bf2c989984bb499ced GIT binary patch literal 84415 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

    +2m&F@FBXqxE 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 literal 0 HcmV?d00001 diff --git a/hosting/src/assets/svg/learn_more_agency.svg b/hosting/src/assets/svg/learn_more_agency.svg new file mode 100644 index 00000000..287ba890 --- /dev/null +++ b/hosting/src/assets/svg/learn_more_agency.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_donor.svg b/hosting/src/assets/svg/learn_more_donor.svg new file mode 100644 index 00000000..30053b75 --- /dev/null +++ b/hosting/src/assets/svg/learn_more_donor.svg @@ -0,0 +1 @@ +deliveries \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_publish.svg b/hosting/src/assets/svg/learn_more_publish.svg new file mode 100644 index 00000000..99ee2569 --- /dev/null +++ b/hosting/src/assets/svg/learn_more_publish.svg @@ -0,0 +1 @@ +post online \ No newline at end of file diff --git a/hosting/src/assets/svg/sic_logo.svg b/hosting/src/assets/svg/sic_logo.svg new file mode 100644 index 00000000..2ca5f13d --- /dev/null +++ b/hosting/src/assets/svg/sic_logo.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/src/assets/vectors/undraw_air_support_wy1q.svg b/hosting/src/assets/vectors/undraw_air_support_wy1q.svg new file mode 100644 index 00000000..9e810183 --- /dev/null +++ b/hosting/src/assets/vectors/undraw_air_support_wy1q.svg @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + air support + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/src/assets/vectors/undraw_conversation_h12g.svg b/hosting/src/assets/vectors/undraw_conversation_h12g.svg new file mode 100644 index 00000000..000532e4 --- /dev/null +++ b/hosting/src/assets/vectors/undraw_conversation_h12g.svg @@ -0,0 +1,416 @@ + + + + + + + + + + conversation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/src/assets/vectors/undraw_create_f05x.svg b/hosting/src/assets/vectors/undraw_create_f05x.svg new file mode 100644 index 00000000..28c267eb --- /dev/null +++ b/hosting/src/assets/vectors/undraw_create_f05x.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/src/assets/vectors/undraw_medicine_b1ol.svg b/hosting/src/assets/vectors/undraw_medicine_b1ol.svg new file mode 100644 index 00000000..5c474c2b --- /dev/null +++ b/hosting/src/assets/vectors/undraw_medicine_b1ol.svg @@ -0,0 +1,382 @@ + + + + + + + + + + medicine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hosting/src/environments/environment.prod.ts b/hosting/src/environments/environment.prod.ts new file mode 100644 index 00000000..3612073b --- /dev/null +++ b/hosting/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/hosting/src/environments/environment.ts b/hosting/src/environments/environment.ts new file mode 100644 index 00000000..7b4f817a --- /dev/null +++ b/hosting/src/environments/environment.ts @@ -0,0 +1,16 @@ +// 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/hosting/src/favicon.ico b/hosting/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 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 literal 0 HcmV?d00001 diff --git a/hosting/src/index.html b/hosting/src/index.html new file mode 100644 index 00000000..9c0f99d6 --- /dev/null +++ b/hosting/src/index.html @@ -0,0 +1,17 @@ + + + + + Hibiscus + + + + + + + + + + diff --git a/hosting/src/main.ts b/hosting/src/main.ts new file mode 100644 index 00000000..484b5f3d --- /dev/null +++ b/hosting/src/main.ts @@ -0,0 +1,12 @@ +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/hosting/src/polyfills.ts b/hosting/src/polyfills.ts new file mode 100644 index 00000000..dc03a7ed --- /dev/null +++ b/hosting/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * 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 + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * 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'; + * + * 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__UNPATCHED_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/hosting/src/styles.scss b/hosting/src/styles.scss new file mode 100644 index 00000000..51b54f2b --- /dev/null +++ b/hosting/src/styles.scss @@ -0,0 +1,175 @@ +$primary: #009688; +$secondary: #00796b; +$background: #fafafa; + +@use '@material/theme' with ( + $primary: $primary, + $secondary: $secondary, + $background: $background, +); + +@use '@material/shape' with ( + $small-component-radius: 6px, + $medium-component-radius: 8px, + $large-component-radius: 0px +); + +@use '@material/typography' with ( + $font-family: Nunito, + $styles-subtitle2: ( + font-family: Nunito, + font-weight: 700, + ), + $styles-button: ( + font-weight: 700, + text-transform: initial, + ) +); + +@use '@material/button'; +@use '@material/button/mdc-button'; +@use '@material/card/mdc-card'; +@use '@material/dialog/mdc-dialog'; +@use '@material/data-table/mdc-data-table'; +@use '@material/drawer/mdc-drawer'; +@use '@material/elevation/mdc-elevation'; +@use '@material/icon-button/mdc-icon-button'; +@use '@material/linear-progress/mdc-linear-progress'; +@use '@material/list/mdc-list'; +@use '@material/menu/mdc-menu'; +@use '@material/menu-surface/mdc-menu-surface'; +@use '@material/snackbar/mdc-snackbar'; +@use '@material/textfield/mdc-text-field'; +@use '@material/top-app-bar/mdc-top-app-bar'; +@use '@material/typography/mdc-typography'; +@use '@material/fab/mdc-fab'; +@use '@material/fab'; +@use '@material/radio/mdc-radio'; +@use '@material/slider/mdc-slider'; +@use '@material/form-field/mdc-form-field'; +@use '@material/chips/mdc-chips'; + +@use '@material/layout-grid/mdc-layout-grid'; + +@use '@angular-mdc/theme/material'; + +html, body { + height: 100vh; + margin: 0; + background-color: #fafafa; +} + +mdc-form-field mdc-text-field { + width: 100%; +} + +mdc-form-field mdc-helper-text { + width: 100%; +} + +mdc-text-field button.mdc-icon-button.mdc-text-field__icon.mdc-text-field__icon--leading { + left: 4px; +} + +mdc-text-field button.mdc-icon-button.mdc-text-field__icon.mdc-text-field__icon--trailing { + right: 4px; +} + +mdc-form-field mdc-text-field { + margin-top: 16px; +} + +mdc-form-field:first-child mdc-text-field { + margin-top: 0; +} + +.mdc-button { + overflow: hidden; +} + +mdc-card ::-webkit-scrollbar-thumb { + background: #cfd8dc; +} + +mdc-card ::-webkit-scrollbar-track { + background: transparent; +} + +mdc-card ::-webkit-scrollbar { + width: 6px; + border-radius: 2px; +} + +main .content-frame { + width: 100%; + max-width: 960px; + margin: 0 auto; +} + +main .content-frame-spacious { + width: 100%; + max-width: 1440px; + margin: 0 auto; +} + +main .content-frame-medium { + width: 100%; + max-width: 1280px; + margin: 0 auto; +} + +main .content-frame .content-area { + display: flex; + margin: 16px; + flex-direction: column; +} + +main .content-frame-medium .content-area { + display: flex; + margin: 16px; + flex-direction: column; +} + +main .content-frame-spacious .content-area { + display: flex; + margin: 16px; + flex-direction: column; +} + +main.scrollable { + display: flex; + width: 100%; + height: 100%; + flex-direction: column; + overflow-y: auto; +} + +mdc-data-table.no-border { + border-width: 0; +} + +.custom-chip { + background-color: $primary; + text-align: center; + border-radius: 5px; + color: white; + padding: 4px 8px; + margin-left: 3px; + font-weight: bold; + font-size: 11px; +} + +.custom-chip-noti { + background-color: $secondary; + text-align: center; + border-radius: 9px; + color: white; + padding: 4px 8px; + margin-left: 3px; + font-weight: bold; + font-size: 11px; +} + +.active-button .mdc-button__ripple::before { + opacity: 0.12; +} diff --git a/hosting/src/test.ts b/hosting/src/test.ts new file mode 100644 index 00000000..2c0de7f6 --- /dev/null +++ b/hosting/src/test.ts @@ -0,0 +1,22 @@ +// 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: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./app/@backend', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/hosting/tsconfig.app.json b/hosting/tsconfig.app.json new file mode 100644 index 00000000..f758d982 --- /dev/null +++ b/hosting/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/hosting/tsconfig.json b/hosting/tsconfig.json new file mode 100644 index 00000000..8c4ef3bb --- /dev/null +++ b/hosting/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "module": "esnext", + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "lib": [ + "es2018", + "dom" + ] + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true + } +} diff --git a/hosting/tsconfig.spec.json b/hosting/tsconfig.spec.json new file mode 100644 index 00000000..6400fde7 --- /dev/null +++ b/hosting/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/hosting/tslint.json b/hosting/tslint.json new file mode 100644 index 00000000..d92ff5d1 --- /dev/null +++ b/hosting/tslint.json @@ -0,0 +1,148 @@ +{ + "extends": "tslint:recommended", + "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, + "array-type": false, + "arrow-return-shorthand": true, + "curly": true, + "deprecation": { + "severity": "warning" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "eofline": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "quotemark": [ + true, + "single" + ], + "semicolon": { + "options": [ + "always" + ] + }, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ] + }, + "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case" + ] + }, + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast" + ] + }, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + }, + "rulesDirectory": [ + "codelyzer" + ] +} \ No newline at end of file From fd15bb75568c8b13e9316bdd23703be59cedf0b5 Mon Sep 17 00:00:00 2001 From: Nightly Neko Date: Mon, 13 Apr 2020 22:24:00 +0800 Subject: [PATCH 02/13] replaced README --- README.md | 128 -------------------------------------------------- README.md.bak | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+), 128 deletions(-) create mode 100644 README.md.bak diff --git a/README.md b/README.md index ba962571..e69de29b 100644 --- a/README.md +++ b/README.md @@ -1,128 +0,0 @@ -# Forkwell Coronavirus Hack: Virus Combat - -[Fork](https://guides.github.com/activities/forking/) this repository to start participating! - -[![](https://img.shields.io/discord/692562848437764096.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/jFjbXqp) - -## About - -Welcome to [Forkwell Coronavirus Hack](https://www.forkwell.io/events/forkwell-coronavirus-hack)! - -This repository contains the hackathon kit for you to get started on solving **Topic 2: Virus -Combat** and (eventually) all of your submissions. - -## Sponsors - -| [![Microsoft](https://user-images.githubusercontent.com/19421765/77505763-ff940400-6e9e-11ea-8c47-cafdf6b3b2d6.png)](https://microsoft.com/) | [![MDEC](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7b5a7ea804328ecaf8e5a2_mdec.png)](https://mdec.my/) | [![Runcloud](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e79fb8c21fcad40f1a34b8a_runcloud.png)](https://runcloud.io/) | -|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| -| [![AWS](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7b5a7ef803a29eed975378_aws.png)](https://aws.amazon.com/) | [![DigitlOcean](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e79fb8b1de27906a0d0c3dc_digital-ocean.png)](https://do.co/forkwell) | [![Sunway iLabs](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e79fb8c1de2795359d0c3de_ilab.png)](https://innovationlabs.sunway.edu.my/) | -| [![CoronaTracker](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7c7a1afb4b4a4e49fa0357_coronatracker.png)](https://www.coronatracker.com) | [![LEAD](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7c7a1af1e7b76379787b82_lead.png)](https://www.thelead.io/) | [![AI Geeks](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e798a3fccd66c285759a635_ai-geeks.png)](https://aigeeks.net/) | - -## Background - -WHO has outlined key actions for managing pandemics; testing, tracking, tracing, isolation and -quarantine. Governments around the world are applying these key actions to cope with the spread of -disease but appear to be inadequate with the scale of the outbreak. We as individuals can play a -substantial role in combating this outbreak. With the help of modern technologies, we can realise -these actions effectively. - -Developing a tool targeted for government, authorities, communities, and individuals are all -acceptable. Teams with the winning prototype will automatically get **wildcard** placement in -[Sunway iLab's Super Accelerator](https://innovationlabs.sunway.edu.my/accelerator/) program to -realise the prototype at scale! - -## Goal - -Build web-based or mobile apps to help nations cope with the outbreak. - -1. Identify worrying trends by applying AI and Big Data techniques to publicly available datasets. -2. Propose and develop a prototype that helps nations alleviate these worrying trends. -3. Showcase your proposal and prototype. - -## Submission - -You are required to submit a 15-minute presentation video of your report. However, to ensure the -legitimacy of your submission, you are required to submit your project artifacts (code, datasets, -documents) as a [fork](https://guides.github.com/activities/forking/) to this repository. - -A submission form will be available on the 14th of April 2020 for submission, -please join our -[facebook](https://facebook.com/groups/forkwellcoronavirushack/) group and -[discord](https://discord.gg/jFjbXqp) channel to keep updated with latest changes. - -After creating your own [fork](https://guides.github.com/activities/forking/), clone your -repository: - -```sh -git clone git@github.com:/fch-virus-combat -``` - -Change to the directory: - -```sh -cd fch-virus-combat -``` - -Set upstream: - -```sh -git remote add upstream git@github.com:forkwell-io/fch-virus-combat -``` - -...and start Hacking!! - -Once you are ready to submit, create a pull request from your -[fork](https://guides.github.com/activities/forking/) to us and include the link to your fork in -your submission form that will be available on the 14th of April 2020. - -Please remember that your code will be publicly available, open-sourced licesed and free for the -internet to use. Please ensure that you don't commit any sensitive information! - -## Resources - -### Databases - -| Name | Link | -|--------------------------------------------------|---------------------------------------------------------------------------------------------------------------| -| New cases, New deaths, Total cases, Total deaths | https://covid.ourworldindata.org/data/full_data.csv | -| Airport codes | https://drive.google.com/file/d/1Wb1bYYfS46356uAeyw1qGse7SQjo5OEa/view?usp=sharing | -| Flight data | https://drive.google.com/file/d/1eSq2vDSQJzDeORZS_VcjzZ_PRcbhcbf7/view?usp=sharing | -| World Health Organization | https://drive.google.com/open?id=1oe15S0i9fG4mYr8IxqWfASYbxsunWyRh | -| Johns Hopkins | https://github.com/CSSEGISandData/COVID-19 | -| Nextstrain | https://github.com/nextstrain/ncov | -| Dataset Seach | https://blog-google.cdn.ampproject.org/c/s/blog.google/products/search/discovering-millions-datasets-web/amp/ | - -### APIs - -| Name | Link | -|----------------------|---------------------------------------------------------------------------------------------------------| -| CoronaTracker API | https://api.coronatracker.com | -| COVID-19 Postman API | https://covid-19-apis.postman.com/ | -| COVID-19 Rapid API | https://rapidapi.com/api-sports/api/covid-193?endpoint=apiendpoint_dfb9e52d-bd90-48ec-a571-8b78610a736d | - -### Tools - -| Name | Link | -|----------------------|-----------------------------------------------------| -| nodejs-starter | https://github.com/MLH/mlh-hackathon-nodejs-starter | -| rails-devise-graphql | https://github.com/zauberware/rails-devise-graphql | -| microAuth | https://github.com/Gingernaut/microAuth | - -## Awesome perks from our sponsors! - -Deployment -- [DigitalOcean](https://do.co/forkwell) - -E-learning -- [Microsoft Learn](https://aka.ms/learn) - -## Help us organize better - -Feel free to open issues if you find anything lacking and we appreciate your feedback greatly! - -## Community - -Join the community! -- [Discord](https://discord.gg/jFjbXqp) -- [Forkwell Facebook Group](https://facebook.com/groups/forkwellcoronavirushack/) - diff --git a/README.md.bak b/README.md.bak new file mode 100644 index 00000000..ba962571 --- /dev/null +++ b/README.md.bak @@ -0,0 +1,128 @@ +# Forkwell Coronavirus Hack: Virus Combat + +[Fork](https://guides.github.com/activities/forking/) this repository to start participating! + +[![](https://img.shields.io/discord/692562848437764096.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/jFjbXqp) + +## About + +Welcome to [Forkwell Coronavirus Hack](https://www.forkwell.io/events/forkwell-coronavirus-hack)! + +This repository contains the hackathon kit for you to get started on solving **Topic 2: Virus +Combat** and (eventually) all of your submissions. + +## Sponsors + +| [![Microsoft](https://user-images.githubusercontent.com/19421765/77505763-ff940400-6e9e-11ea-8c47-cafdf6b3b2d6.png)](https://microsoft.com/) | [![MDEC](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7b5a7ea804328ecaf8e5a2_mdec.png)](https://mdec.my/) | [![Runcloud](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e79fb8c21fcad40f1a34b8a_runcloud.png)](https://runcloud.io/) | +|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| +| [![AWS](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7b5a7ef803a29eed975378_aws.png)](https://aws.amazon.com/) | [![DigitlOcean](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e79fb8b1de27906a0d0c3dc_digital-ocean.png)](https://do.co/forkwell) | [![Sunway iLabs](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e79fb8c1de2795359d0c3de_ilab.png)](https://innovationlabs.sunway.edu.my/) | +| [![CoronaTracker](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7c7a1afb4b4a4e49fa0357_coronatracker.png)](https://www.coronatracker.com) | [![LEAD](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e7c7a1af1e7b76379787b82_lead.png)](https://www.thelead.io/) | [![AI Geeks](https://uploads-ssl.webflow.com/5dedc0ed675ba87b09857f05/5e798a3fccd66c285759a635_ai-geeks.png)](https://aigeeks.net/) | + +## Background + +WHO has outlined key actions for managing pandemics; testing, tracking, tracing, isolation and +quarantine. Governments around the world are applying these key actions to cope with the spread of +disease but appear to be inadequate with the scale of the outbreak. We as individuals can play a +substantial role in combating this outbreak. With the help of modern technologies, we can realise +these actions effectively. + +Developing a tool targeted for government, authorities, communities, and individuals are all +acceptable. Teams with the winning prototype will automatically get **wildcard** placement in +[Sunway iLab's Super Accelerator](https://innovationlabs.sunway.edu.my/accelerator/) program to +realise the prototype at scale! + +## Goal + +Build web-based or mobile apps to help nations cope with the outbreak. + +1. Identify worrying trends by applying AI and Big Data techniques to publicly available datasets. +2. Propose and develop a prototype that helps nations alleviate these worrying trends. +3. Showcase your proposal and prototype. + +## Submission + +You are required to submit a 15-minute presentation video of your report. However, to ensure the +legitimacy of your submission, you are required to submit your project artifacts (code, datasets, +documents) as a [fork](https://guides.github.com/activities/forking/) to this repository. + +A submission form will be available on the 14th of April 2020 for submission, +please join our +[facebook](https://facebook.com/groups/forkwellcoronavirushack/) group and +[discord](https://discord.gg/jFjbXqp) channel to keep updated with latest changes. + +After creating your own [fork](https://guides.github.com/activities/forking/), clone your +repository: + +```sh +git clone git@github.com:/fch-virus-combat +``` + +Change to the directory: + +```sh +cd fch-virus-combat +``` + +Set upstream: + +```sh +git remote add upstream git@github.com:forkwell-io/fch-virus-combat +``` + +...and start Hacking!! + +Once you are ready to submit, create a pull request from your +[fork](https://guides.github.com/activities/forking/) to us and include the link to your fork in +your submission form that will be available on the 14th of April 2020. + +Please remember that your code will be publicly available, open-sourced licesed and free for the +internet to use. Please ensure that you don't commit any sensitive information! + +## Resources + +### Databases + +| Name | Link | +|--------------------------------------------------|---------------------------------------------------------------------------------------------------------------| +| New cases, New deaths, Total cases, Total deaths | https://covid.ourworldindata.org/data/full_data.csv | +| Airport codes | https://drive.google.com/file/d/1Wb1bYYfS46356uAeyw1qGse7SQjo5OEa/view?usp=sharing | +| Flight data | https://drive.google.com/file/d/1eSq2vDSQJzDeORZS_VcjzZ_PRcbhcbf7/view?usp=sharing | +| World Health Organization | https://drive.google.com/open?id=1oe15S0i9fG4mYr8IxqWfASYbxsunWyRh | +| Johns Hopkins | https://github.com/CSSEGISandData/COVID-19 | +| Nextstrain | https://github.com/nextstrain/ncov | +| Dataset Seach | https://blog-google.cdn.ampproject.org/c/s/blog.google/products/search/discovering-millions-datasets-web/amp/ | + +### APIs + +| Name | Link | +|----------------------|---------------------------------------------------------------------------------------------------------| +| CoronaTracker API | https://api.coronatracker.com | +| COVID-19 Postman API | https://covid-19-apis.postman.com/ | +| COVID-19 Rapid API | https://rapidapi.com/api-sports/api/covid-193?endpoint=apiendpoint_dfb9e52d-bd90-48ec-a571-8b78610a736d | + +### Tools + +| Name | Link | +|----------------------|-----------------------------------------------------| +| nodejs-starter | https://github.com/MLH/mlh-hackathon-nodejs-starter | +| rails-devise-graphql | https://github.com/zauberware/rails-devise-graphql | +| microAuth | https://github.com/Gingernaut/microAuth | + +## Awesome perks from our sponsors! + +Deployment +- [DigitalOcean](https://do.co/forkwell) + +E-learning +- [Microsoft Learn](https://aka.ms/learn) + +## Help us organize better + +Feel free to open issues if you find anything lacking and we appreciate your feedback greatly! + +## Community + +Join the community! +- [Discord](https://discord.gg/jFjbXqp) +- [Forkwell Facebook Group](https://facebook.com/groups/forkwellcoronavirushack/) + From 17f23f510f3601b9815d922ade1840d46fb5f855 Mon Sep 17 00:00:00 2001 From: S0D4 Date: Mon, 13 Apr 2020 22:46:02 +0800 Subject: [PATCH 03/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e69de29b..6d1de0ad 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +## Team Holmes Submission From ef20b924f1ecd5a420c62f2877bdb8c8d6bca72d Mon Sep 17 00:00:00 2001 From: S0D4 Date: Mon, 13 Apr 2020 22:50:31 +0800 Subject: [PATCH 04/13] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 6d1de0ad..c03b858b 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ +# Sharing is Caring +A Medical Resources Sharing Platform + ## Team Holmes Submission +This is our submission for the Forkwell Hackathon + +This repo contains 2 source code: +1. Firebase Functions +2. Angular Web App From 68d186642dba3a22a0043d44c9675b9c62065a44 Mon Sep 17 00:00:00 2001 From: S0D4 Date: Tue, 14 Apr 2020 00:03:57 +0800 Subject: [PATCH 05/13] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index c03b858b..5387916c 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,8 @@ This is our submission for the Forkwell Hackathon This repo contains 2 source code: 1. Firebase Functions 2. Angular Web App + +## Introduction +In this period of movement control order (MCO), government, front liner and also medical personnel were request us to stay safe at home while they try their’ s utmost to conquer all. Especially for those nurse and doctor, as a warrior in white, they put their risk to save people life. Yet, lack of medicine resource makes them to go pale in panic. Thus, sharing is caring main idea arise. Sharing is caring act as a platform for medial canter, government, social and also non-government organization (NGO) to request and share resources. User in this platform can paly roles of helpers or person who ask for help. Society who have extra resource could provide little help might be bring huge impact for medical center to solve lack of resource issue. + +“Great opportunities to help others seldom come, but small ones surround us every day.” (Sally Koch) From 256bb342b7d2ee6484b68fead1cc06ac0029640b Mon Sep 17 00:00:00 2001 From: Chan Teck Wei <34728894+chantw@users.noreply.github.com> Date: Tue, 14 Apr 2020 09:46:24 +0800 Subject: [PATCH 06/13] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5387916c..bd402203 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,18 @@ A Medical Resources Sharing Platform This is our submission for the Forkwell Hackathon This repo contains 2 source code: -1. Firebase Functions -2. Angular Web App +1. Firebase Functions -> `./functions` +2. Angular Web App -> `./hosting` ## Introduction In this period of movement control order (MCO), government, front liner and also medical personnel were request us to stay safe at home while they try their’ s utmost to conquer all. Especially for those nurse and doctor, as a warrior in white, they put their risk to save people life. Yet, lack of medicine resource makes them to go pale in panic. Thus, sharing is caring main idea arise. Sharing is caring act as a platform for medial canter, government, social and also non-government organization (NGO) to request and share resources. User in this platform can paly roles of helpers or person who ask for help. Society who have extra resource could provide little help might be bring huge impact for medical center to solve lack of resource issue. “Great opportunities to help others seldom come, but small ones surround us every day.” (Sally Koch) + +## Getting started + +### Configuring Firebase Functions (inside `./functions`) +To run the functions, a Firebase project is required as described in [here](https://firebase.google.com/docs/functions/get-started). + +### Building Angular project (inside `./hosting`) +Change the content of class variable `firebaseConfig` to your own Firebase project web config (explained [here](https://support.google.com/firebase/answer/7015592?hl=en)). Assuming Node.js and [Angular CLI](https://angular.io/guide/setup-local) has been installed on a development PC, run `ng build --prod` to build the project as deployable web. From e1c4c9656eee002a0c960f3de76215ba04e7e7b7 Mon Sep 17 00:00:00 2001 From: sophiadouglas Date: Tue, 14 Apr 2020 10:14:30 +0800 Subject: [PATCH 07/13] update readme --- README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bd402203..baa3f433 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,55 @@ -# Sharing is Caring -A Medical Resources Sharing Platform +# Team Holmes – Submission for Forkwell Coronavirus Hackathon -## Team Holmes Submission -This is our submission for the Forkwell Hackathon +## Team Members +Hi! We are a team of 5 members consisting of: +* [Chang Yang Loong](https://github.com/changyangloong) +* [Chan Teck Wei](https://github.com/chantw) +* [Muhammad Danish Ezwan Mohd Nordin](https://github.com/coffeestains1908) +* [Teoh Shu Hong](https://github.com/Harlley7289) +* [Sophia Anak Chulif @ Douglas Chulip](https://github.com/sophiadouglas) +## Topic Chosen +Topic 2 – Virus Combat + +## Solution: Web-based Application +A medical resource sharing platform: [Sharing is Caring](https://neuon-hackathon-holmes.web.app/) + +### Motivation Behind the Solution +In this period of movement control order (MCO), we have seen all frontline authoritative personnel requesting us to +stay at home while they try their best to keep us safe. We see the sacrifices of doctors and nurses putting their lives at risk +as proper masks, gowns, eye gear or personal protective equipments are running low. The shortage of these medical supplies +are allowing our frontliners and patients to be more vulnerable to this virus and we do not want that to happen. Thus, the idea +of Sharing is Caring is formed. Sharing is Caring acts as a platform for medical agencies, government, social as well as non-governmental organisations (NGOs) to request and share medical resources within our communities. By reaching out to the public, the +collective contribution down to a single individual no matter how small, might greatly resolve the shortage of our medical agency's supplies. + +### Problem Statement +With the rising shortage of medical supplies amidst this COVID-19 pandemic, various efforts have been carried out +to coordinate the funding and collection of medical supplies. However, +* these efforts may be hard to follow as needs are rapidly changing, +* the channels to address them are not enough, +* our communities may have the resources to offer but do not know who needs them or which nearest institution they +can donate to. + +Do you know what items are lacking at your local general hospital? We believe we require a platform to make these +items publicly known. Our solution is a web-based application whereby medical agencies can make known their +medical supply needs and allow anyone to tap into it. A collective and centralised effort involving the public +is required to source these items to those in need as soon as possible. + +### Target Users +* Medical agencies (hospitals, clinics) +* Suppliers / donors (industries, NGOs, individuals) + +### Features +* Request for medical supplies +* Contribute medical supplies +* Track progress of requested supplies +* Provide exchange of contacts between different parties + +## Repository Content This repo contains 2 source code: 1. Firebase Functions -> `./functions` 2. Angular Web App -> `./hosting` -## Introduction -In this period of movement control order (MCO), government, front liner and also medical personnel were request us to stay safe at home while they try their’ s utmost to conquer all. Especially for those nurse and doctor, as a warrior in white, they put their risk to save people life. Yet, lack of medicine resource makes them to go pale in panic. Thus, sharing is caring main idea arise. Sharing is caring act as a platform for medial canter, government, social and also non-government organization (NGO) to request and share resources. User in this platform can paly roles of helpers or person who ask for help. Society who have extra resource could provide little help might be bring huge impact for medical center to solve lack of resource issue. - -“Great opportunities to help others seldom come, but small ones surround us every day.” (Sally Koch) - ## Getting started ### Configuring Firebase Functions (inside `./functions`) @@ -20,3 +57,4 @@ To run the functions, a Firebase project is required as described in [here](http ### Building Angular project (inside `./hosting`) Change the content of class variable `firebaseConfig` to your own Firebase project web config (explained [here](https://support.google.com/firebase/answer/7015592?hl=en)). Assuming Node.js and [Angular CLI](https://angular.io/guide/setup-local) has been installed on a development PC, run `ng build --prod` to build the project as deployable web. + From 759a2386f5bb440d89c8ceb8a75d91a76f8cde4f Mon Sep 17 00:00:00 2001 From: S0D4 Date: Tue, 14 Apr 2020 11:06:52 +0800 Subject: [PATCH 08/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index baa3f433..b03e6c19 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Hi! We are a team of 5 members consisting of: * [Chang Yang Loong](https://github.com/changyangloong) * [Chan Teck Wei](https://github.com/chantw) -* [Muhammad Danish Ezwan Mohd Nordin](https://github.com/coffeestains1908) +* [Danish Ezwan](https://github.com/coffeestains1908) * [Teoh Shu Hong](https://github.com/Harlley7289) * [Sophia Anak Chulif @ Douglas Chulip](https://github.com/sophiadouglas) From a69d8c0bc9901070333ac307dd129f22eb9d28d5 Mon Sep 17 00:00:00 2001 From: sophiadouglas Date: Tue, 14 Apr 2020 17:54:26 +0800 Subject: [PATCH 09/13] update readme --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index b03e6c19..aed33383 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,25 @@ This repo contains 2 source code: ## Getting started +#### Tools used +* Firebase + * Firebase Hosting (deployment) + * Cloud Firestore (database) + * Cloud Functions (backend logics) +* Node.js +* AngularJS +* express.js + +#### Motivation +* Rapid development +* Free development quota +* Free web hosting +* Enable building SPA +* Loosely coupled component +* Two way data binding +* Reducing boilerplate code +* Support Firebase libraries + ### Configuring Firebase Functions (inside `./functions`) To run the functions, a Firebase project is required as described in [here](https://firebase.google.com/docs/functions/get-started). From f69ad295bdd2327afc63c6a1bc034e9f5185d0a5 Mon Sep 17 00:00:00 2001 From: Nightly Neko Date: Tue, 14 Apr 2020 18:35:37 +0800 Subject: [PATCH 10/13] updated code --- functions/src/contributionWatcher.ts | 88 ++++++++ functions/src/index.ts | 198 ++---------------- functions/src/mailer.ts | 1 + functions/src/requestStatusWatcher.ts | 140 +++++++++++++ hosting/src/app/@backend/message.service.ts | 19 ++ hosting/src/app/@backend/request.service.ts | 2 +- hosting/src/app/@backend/stats.service.ts | 18 +- hosting/src/app/app.module.ts | 2 + .../confirmation-dialog.component.html | 12 ++ .../confirmation-dialog.component.scss | 0 .../confirmation-dialog.component.spec.ts | 25 +++ .../confirmation-dialog.component.ts | 34 +++ hosting/src/app/dialogs/dialogs.module.ts | 15 ++ .../agency-details.component.html | 18 +- .../agency-details.component.ts | 13 +- .../agency-inbox/agency-inbox.component.ts | 20 +- .../contribution-dialog.component.ts | 42 ++-- ...agency-profile-photo-dialog.component.html | 47 +++++ ...agency-profile-photo-dialog.component.scss | 0 ...ncy-profile-photo-dialog.component.spec.ts | 25 +++ .../agency-profile-photo-dialog.component.ts | 46 ++++ ...agency-request-contribution.component.html | 20 +- .../agency-request-contribution.component.ts | 51 +++-- .../agency-request.component.html | 6 +- .../agency-request.component.ts | 10 + .../src/app/main/drag-drop.directive.spec.ts | 8 + hosting/src/app/main/drag-drop.directive.ts | 34 +++ .../home/contribute/contribute.component.ts | 73 ++++--- .../home/overview/overview.component.html | 19 +- .../main/home/overview/overview.component.ts | 20 +- .../public-requests.component.html | 38 +--- hosting/src/app/main/main.module.ts | 6 +- .../card-request-contrib.component.html | 24 ++- .../card-request-contrib.component.ts | 45 +++- .../learn-more/learn-more.component.html | 134 +++++++++++- .../learn-more/learn-more.component.scss | 9 + hosting/src/assets/svg/learn_more_contact.svg | 1 + .../src/assets/svg/learn_more_contribute.svg | 1 + .../assets/svg/learn_more_donor_contact.svg | 1 + .../svg/learn_more_donor_contribute.svg | 1 + hosting/src/assets/svg/learn_more_request.svg | 1 + hosting/src/assets/svg/learn_more_track.svg | 1 + hosting/src/assets/svg/wearing_a_mask_.svg | 1 + hosting/src/assets/vectors/health_.svg | 175 ++++++++++++++++ 44 files changed, 1097 insertions(+), 347 deletions(-) create mode 100644 functions/src/contributionWatcher.ts create mode 100644 functions/src/requestStatusWatcher.ts create mode 100644 hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.html create mode 100644 hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.scss create mode 100644 hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.spec.ts create mode 100644 hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.ts create mode 100644 hosting/src/app/dialogs/dialogs.module.ts create mode 100644 hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.html create mode 100644 hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.scss create mode 100644 hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.spec.ts create mode 100644 hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.ts create mode 100644 hosting/src/app/main/drag-drop.directive.spec.ts create mode 100644 hosting/src/app/main/drag-drop.directive.ts create mode 100644 hosting/src/assets/svg/learn_more_contact.svg create mode 100644 hosting/src/assets/svg/learn_more_contribute.svg create mode 100644 hosting/src/assets/svg/learn_more_donor_contact.svg create mode 100644 hosting/src/assets/svg/learn_more_donor_contribute.svg create mode 100644 hosting/src/assets/svg/learn_more_request.svg create mode 100644 hosting/src/assets/svg/learn_more_track.svg create mode 100644 hosting/src/assets/svg/wearing_a_mask_.svg create mode 100644 hosting/src/assets/vectors/health_.svg diff --git a/functions/src/contributionWatcher.ts b/functions/src/contributionWatcher.ts new file mode 100644 index 00000000..e13c498b --- /dev/null +++ b/functions/src/contributionWatcher.ts @@ -0,0 +1,88 @@ +import * as admin from "firebase-admin"; +import {CONTRIBS, REQUESTS, REQUESTS__ITEMS} from "./@core/firestore-collections"; +import {ContributionDetails, Request} from "./@core/firestore-interfaces/request"; +import {sendNewContributionEmail} from "./mailer"; + +import {Change, EventContext} from "firebase-functions"; +import DocumentSnapshot = admin.firestore.DocumentSnapshot; +import FieldValue = admin.firestore.FieldValue; + +export function contributionWatcher(change: Change, context: EventContext) { + const firestore = admin.firestore(); + const batchRequest = firestore.batch(); + + const contribId = context.params.contribId; + const contribRef = firestore.collection(CONTRIBS).doc(contribId); + + const dataBefore = change.before.data() as ContributionDetails; + const dataAfter = change.after.data() as ContributionDetails; + + const isDeleted = !dataAfter; + const isCreated = !dataBefore; + const isUpdated = dataBefore && dataAfter; + + return new Promise(async (resolve, reject) => { + try { + if (isDeleted) { + // pass + } else if (isUpdated) { + const statusAfter = dataAfter.status; + const statusBefore = dataBefore.status; + + const requestId = dataAfter.requestId; + + if (requestId) { + const requestRef = firestore.collection(REQUESTS) + .doc(requestId).collection(REQUESTS__ITEMS); + let incrementModifier = 0; + + if (statusAfter === 'received' && (statusBefore !== statusAfter)) { + incrementModifier = 1; + } else if (statusAfter !== 'received' && statusBefore === 'received') { + incrementModifier = -1; + } + + const itemsReceived = dataAfter.contributionItemsReceived; + if (itemsReceived && incrementModifier !== 0) { + itemsReceived.forEach(item => { + if (item.qty > 0) { + batchRequest.update(requestRef.doc(item.name), { + qtyFilled: FieldValue.increment(incrementModifier * item.qty) + }); + } + }); + } + } + } else if (isCreated) { + const requestId = dataAfter.requestId; + if (requestId) { + const requestDoc = await firestore.collection(REQUESTS) + .doc(requestId).get(); + const requestData = requestDoc.data() as Request; + await contribRef.update({ + receiverId: requestData.user + }); + + const items = dataAfter.contributionItems; + const contributorName = dataAfter.sender.name; + const remarks = dataAfter.remarks; + + await sendNewContributionEmail( + requestData.userInfo?.email, + contributorName, + items, + remarks + ); + } + } + + await Promise.all([ + batchRequest.commit() + ]); + + resolve(); + } catch (e) { + reject(e); + } + }); +} diff --git a/functions/src/index.ts b/functions/src/index.ts index e813c846..86cca2a3 100644 --- a/functions/src/index.ts +++ b/functions/src/index.ts @@ -11,13 +11,10 @@ import { import { RequestItem, Request, - RequestStatus, - ContributionDetails, RequestStats, DEFAULT_REQUEST_ITEMS } from "./@core/firestore-interfaces/request"; import {User, UserRoles} from "./@core/firestore-interfaces/user"; import { - sendNewContributionEmail, sendPasswordlessSignInEmail, sendRegistrationSuccessEmail, sendRejectedByAdminEmail, @@ -26,6 +23,8 @@ import { import FieldValue = admin.firestore.FieldValue; import {MessageDocument} from "./@core/firestore-interfaces/messages"; +import {requestStatusWatcher} from "./requestStatusWatcher"; +import {contributionWatcher} from "./contributionWatcher"; admin.initializeApp(); @@ -205,171 +204,11 @@ exports.deleteUser = functions.region(regionName).https.onCall((data, context) = exports.requestStatusWatcher = functions.region(regionName).firestore .document(`${REQUESTS}/{requestId}`) - .onWrite((change, context) => { - const requestId = context.params.requestId; - - const firestore = admin.firestore(); - const batch = firestore.batch(); - - const statsRef = firestore.collection(REQUESTS).doc(__STATS__); - const requestRef = firestore.collection(REQUESTS).doc(requestId); - let userRef: FirebaseFirestore.DocumentReference; - - const dataBefore = change.before.data() as Request; - const dataAfter = change.after.data() as Request; - - let activeRequest = 0; - let completeRequest = 0; - let requestStatus = null; - - if (!dataAfter) { - // deleted - if (dataBefore.status === 'active') { - activeRequest = -1; - } else if (dataBefore.status === 'complete') { - completeRequest = -1; - } - - // remove active items from user - userRef = firestore.collection(USERS).doc(dataBefore.user); - const activeItemsBefore = dataBefore.active as string[]; - if (activeItemsBefore) { - activeItemsBefore.forEach(item => { - batch.update(userRef, { - ['_recentNeededItems.' + item]: FieldValue.increment(-1) - }); - }); - } - } else { - if (dataBefore) { - // updated - const activeListAfter = dataAfter.active; - const completeListAfter = dataAfter.complete; - const activeListBefore = dataBefore.active; - const completeListBefore = dataBefore.complete; - - // check if list is changed - if (completeListAfter && activeListAfter) { - const activeListChanged = activeListBefore !== activeListAfter; - const completeListChanged = completeListBefore !== completeListAfter; - if (activeListChanged || completeListChanged) { - if (activeListAfter.length === 0 && completeListAfter.length > 0) { - if (dataAfter.status !== 'complete') { - requestStatus = 'complete'; - completeRequest = 1; - activeRequest = -1; - } - } else { - if (dataAfter.status !== 'active') { - requestStatus = 'active'; - completeRequest = -1; - activeRequest = 1; - } - } - } - } - } else { - // created - const activeList = dataAfter.active; - const completeList = dataAfter.complete; - - if (activeList && completeList) { - // change status - if (activeList.length === 0 && completeList.length > 0) { - requestStatus = 'complete'; - } else { - requestStatus = 'active'; - } - } - - if (dataAfter.status === 'active') { - console.info('is active'); - activeRequest = 1; - } else if (dataAfter.status === 'complete') { - console.info('is complete'); - completeRequest = 1; - } - } - } - - batch.update(statsRef, { - active: FieldValue.increment(activeRequest), - complete: FieldValue.increment(completeRequest), - }); - - if (requestStatus) { - batch.update(requestRef, {status: requestStatus}); - } - - return batch.commit(); - }); + .onWrite(requestStatusWatcher); exports.contributionWatcher = functions.region(regionName).firestore .document(`${CONTRIBS}/{contribId}`) - .onWrite((change, context) => { - const firestore = admin.firestore(); - - const contribId = context.params.contribId; - const contribRef = firestore.collection(CONTRIBS).doc(contribId); - - const dataBefore = change.before.data() as ContributionDetails; - const dataAfter = change.after.data() as ContributionDetails; - - const batchRequest = firestore.batch(); - - return new Promise(async (resolve, reject) => { - try { - if (!dataBefore) { - if (dataAfter && dataAfter.requestId) { - const requestDoc = await firestore.collection(REQUESTS) - .doc(dataAfter.requestId).get(); - const requestData = requestDoc.data() as Request; - await contribRef.update({ - receiverId: requestData.user - }); - - const items = dataAfter.contributionItems; - const contributorName = dataAfter.sender.name; - const remarks = dataAfter.remarks; - - return sendNewContributionEmail( - requestData.userInfo?.email || '', - contributorName, - items, - remarks - ); - } - } else { - if (dataAfter) { - const statusAfter = dataAfter.status; - const requestId = dataAfter.requestId; - - if (requestId) { - const requestRef = firestore.collection(REQUESTS) - .doc(requestId).collection(REQUESTS__ITEMS); - - if (statusAfter === 'received') { - const itemsReceived = dataAfter.contributionItemsReceived; - if (itemsReceived) { - itemsReceived.forEach(item => { - batchRequest.update(requestRef.doc(item.name), {qtyFilled: item.qty}); - }); - } - } - } - } - } - - await Promise.all([ - batchRequest.commit() - ]); - - resolve(); - } catch (e) { - reject(e); - } - }); - }); + .onWrite(contributionWatcher); /** * update __STATS__ in REQUESTS @@ -434,25 +273,30 @@ exports.demandsWatcher = functions.region(regionName).firestore // check if parent is deleted const requestDoc = await requestRef.get(); - if (requestDoc.exists) { - const requestData = requestDoc.data() as Request; - const userId = requestData.user; + let requestData: Request | null = null; + let userId = null; + const requestDocExists = requestDoc.exists; + if (requestDocExists) { + requestData = requestDoc.data() as Request; + userId = requestData.user; userRef = firestore.collection(USERS).doc(userId); } const dataBefore = change.before.data() as RequestItem; const dataAfter = change.after.data() as RequestItem; - let needIncrement: admin.firestore.FieldValue; - let fillIncrement: admin.firestore.FieldValue; + let needIncrement: admin.firestore.FieldValue | null = null; + let fillIncrement: admin.firestore.FieldValue | null = null; let itemNeed = FieldValue.arrayRemove(itemName); let itemComplete = FieldValue.arrayRemove(itemName); let recentItemNeedIncrement = 0; if (!dataAfter) { // item deleted - needIncrement = admin.firestore.FieldValue.increment(-dataBefore.qtyNeed); - fillIncrement = admin.firestore.FieldValue.increment(-dataBefore.qtyFilled); + if (requestData && requestData.status !== 'complete') { + needIncrement = admin.firestore.FieldValue.increment(-dataBefore.qtyNeed); + fillIncrement = admin.firestore.FieldValue.increment(-dataBefore.qtyFilled); + } recentItemNeedIncrement = -1; } else { if (dataBefore) { @@ -488,10 +332,12 @@ exports.demandsWatcher = functions.region(regionName).firestore } batchStats.set(itemRef, {name: itemName}, {merge: true}); - batchStats.update(itemRef, { - qtyNeed: needIncrement, - qtyFilled: fillIncrement - }); + if (needIncrement && fillIncrement) { + batchStats.update(itemRef, { + qtyNeed: needIncrement, + qtyFilled: fillIncrement + }); + } if (userRef) { batchRequest.update(requestRef, { diff --git a/functions/src/mailer.ts b/functions/src/mailer.ts index 3a3c6734..5e49db19 100644 --- a/functions/src/mailer.ts +++ b/functions/src/mailer.ts @@ -5,6 +5,7 @@ const defaultMailOptions: Mail.Options = { from: '"Sharing is Caring" ' }; +// TODO: fill in your user & pass function createTransport(): Mail { return nodemailer.createTransport({ service: 'gmail', diff --git a/functions/src/requestStatusWatcher.ts b/functions/src/requestStatusWatcher.ts new file mode 100644 index 00000000..bf78cbf2 --- /dev/null +++ b/functions/src/requestStatusWatcher.ts @@ -0,0 +1,140 @@ +import {Change, EventContext} from "firebase-functions"; +import * as admin from "firebase-admin"; +import {__STATS__, __STATS__ITEMS, REQUESTS, REQUESTS__ITEMS, USERS} from "./@core/firestore-collections"; +import {Request, RequestItem, RequestStatus} from "./@core/firestore-interfaces/request"; + +import DocumentSnapshot = admin.firestore.DocumentSnapshot; +import FieldValue = admin.firestore.FieldValue; + +export async function requestStatusWatcher(change: Change, context: EventContext) { + const firestore = admin.firestore(); + const batch = firestore.batch(); + const statsBatch = firestore.batch(); + + const requestId = context.params.requestId; + const dataBefore = change.before.data() as Request; + const dataAfter = change.after.data() as Request; + + const isDeleted = !dataAfter; + const isCreated = !dataBefore; + const isUpdated = dataBefore && dataAfter; + + const statsRef = firestore.collection(REQUESTS).doc(__STATS__); + const requestRef = firestore.collection(REQUESTS).doc(requestId); + let userRef: FirebaseFirestore.DocumentReference; + + let activeRequest = 0; + let completeRequest = 0; + let requestStatus: RequestStatus | null = null; + + if (isDeleted) { + if (dataBefore.status === 'active') { + activeRequest = -1; + console.info('Trying to update stats due to deletion'); + } else if (dataBefore.status === 'complete') { + completeRequest = -1; + } + + // remove active items from user + userRef = firestore.collection(USERS).doc(dataBefore.user); + const activeItemsBefore = dataBefore.active as string[]; + if (activeItemsBefore) { + activeItemsBefore.forEach(item => { + batch.update(userRef, { + ['_recentNeededItems.' + item]: FieldValue.increment(-1) + }); + }); + } + } else if (isUpdated) { + // check if status is force-fully changed + let isJustCompleted = justCompleted(dataBefore, dataAfter); + // check if list is changed + const isListChanged = listChanged(dataBefore, dataAfter); + + // don't check item progress if forced change to complete + if (isJustCompleted) { + // pass + completeRequest = 1; + activeRequest = -1; + + // decrement items + const requestItems = await requestRef.collection(REQUESTS__ITEMS).get(); + requestItems.forEach(doc => { + const itemData = doc.data() as RequestItem; + statsBatch.update(statsRef.collection(__STATS__ITEMS).doc(itemData.name), { + qtyNeed: FieldValue.increment(-itemData.qtyNeed), + qtyFilled: FieldValue.increment(-itemData.qtyFilled), + }); + }); + } + if ((isListChanged.complete && isListChanged.active)) { + if (isListChanged.active || isListChanged.complete) { + const afterComplete = dataAfter.complete; + const afterActive = dataAfter.active; + + if (afterComplete !== undefined && afterActive !== undefined) { + if (afterComplete?.length > afterActive?.length) { + if (dataBefore.status !== 'complete') { + requestStatus = 'complete'; + // completeRequest = 1; + } + } else if (afterActive.length > 0) { + if (dataBefore.status !== 'active') { + requestStatus = 'active'; + // activeRequest = 1; + } + } + } + } + } + } else if (isCreated) { + if (dataAfter.status === 'active') { + activeRequest = 1; + } else if (dataAfter.status === 'complete') { + completeRequest = 1; + } + } + + statsBatch.update(statsRef, { + active: FieldValue.increment(activeRequest), + complete: FieldValue.increment(completeRequest), + }); + + if (requestStatus) { + batch.update(requestRef, {status: requestStatus}); + } + + return Promise.all([ + batch.commit(), + statsBatch.commit() + ]); +} + +function justCompleted(dataBefore: Request, dataAfter: Request): boolean { + return (dataBefore.status !== dataAfter.status) && dataAfter.status === 'complete'; +} + +function listChanged(dataBefore: Request, dataAfter: Request): { + active: boolean; + complete: boolean; +} { + const result = { + active: false, + complete: false + }; + + const activeListAfter = dataAfter.active; + const completeListAfter = dataAfter.complete; + const activeListBefore = dataBefore.active; + const completeListBefore = dataBefore.complete; + + if (completeListAfter && activeListAfter) { + const activeListChanged = activeListBefore !== activeListAfter; + const completeListChanged = completeListBefore !== completeListAfter; + + result.complete = completeListChanged; + result.active = activeListChanged; + } + + return result; +} diff --git a/hosting/src/app/@backend/message.service.ts b/hosting/src/app/@backend/message.service.ts index d4f8fb35..a1020d1e 100644 --- a/hosting/src/app/@backend/message.service.ts +++ b/hosting/src/app/@backend/message.service.ts @@ -20,6 +20,25 @@ export class MessageService { ) { } + async getMessagesSnapshot(): Promise> { + const user = await this.userService.currentUser(); + const userId = user.uid; + return new Observable(subscriber => { + this.firebaseService.firestore() + .collection(MESSAGES) + .where('receiverId', '==', userId) + .onSnapshot(snaps => { + const messages: MessageDocument[] = []; + snaps.docs.forEach(doc => { + const messageData = doc.data() as MessageDocument; + messageData.id = doc.id; + messages.push(messageData); + }); + subscriber.next(messages); + }); + }); + } + getMessages(): Promise { return new Promise(async (resolve, reject) => { const user = await this.userService.currentUser(); diff --git a/hosting/src/app/@backend/request.service.ts b/hosting/src/app/@backend/request.service.ts index 7dad02d6..f9f1a81d 100644 --- a/hosting/src/app/@backend/request.service.ts +++ b/hosting/src/app/@backend/request.service.ts @@ -70,7 +70,7 @@ export class RequestService { // TODO: pagination return new Promise((resolve, reject) => { this.firebaseService.firestore().collection(REQUESTS) - .orderBy('dateCrt', 'asc') + .orderBy('dateCrt', 'desc') .get() .then((querySnapshot) => { this._queryToRequestObject(querySnapshot) diff --git a/hosting/src/app/@backend/stats.service.ts b/hosting/src/app/@backend/stats.service.ts index 3d76baa0..464aebb9 100644 --- a/hosting/src/app/@backend/stats.service.ts +++ b/hosting/src/app/@backend/stats.service.ts @@ -83,15 +83,19 @@ export class StatsService { get requestItemsSnapshot(): Observable { return new Observable(subscriber => { this.firebaseService.firestore().collection(REQUESTS).doc(__STATS__) - .collection(__STATS__ITEMS).onSnapshot(snapshot => { - const requestItems: RequestItem[] = []; + .collection(__STATS__ITEMS) + .onSnapshot(snapshot => { + const requestItems: RequestItem[] = []; - snapshot.docs.forEach(doc => { - requestItems.push(doc.data() as RequestItem); - }); + snapshot.docs.forEach(doc => { + const item = doc.data() as RequestItem; + if (!((item.qtyFilled >= item.qtyNeed))) { + requestItems.push(item); + } + }); - subscriber.next(requestItems); - }); + subscriber.next(requestItems); + }); }); } diff --git a/hosting/src/app/app.module.ts b/hosting/src/app/app.module.ts index c9717162..28653404 100644 --- a/hosting/src/app/app.module.ts +++ b/hosting/src/app/app.module.ts @@ -7,6 +7,7 @@ import {MainModule} from './main/main.module'; import {AppRoutingModule} from './app-routing.module'; import {AuthModule} from './auth/auth.module'; import {GoogleChartsModule} from 'angular-google-charts'; +import {DialogsModule} from './dialogs/dialogs.module'; @NgModule({ declarations: [ @@ -18,6 +19,7 @@ import {GoogleChartsModule} from 'angular-google-charts'; AppRoutingModule, MainModule, AuthModule, + DialogsModule, GoogleChartsModule.forRoot() ], providers: [], diff --git a/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.html b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.html new file mode 100644 index 00000000..1d10ca66 --- /dev/null +++ b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.html @@ -0,0 +1,12 @@ + + + + {{title}} + {{caption}} + + + + + + + diff --git a/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.scss b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.spec.ts b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.spec.ts new file mode 100644 index 00000000..d177de8e --- /dev/null +++ b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {ConfirmationDialogComponent} from './confirmation-dialog.component'; + +describe('ConfirmationDialogComponent', () => { + let component: ConfirmationDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ConfirmationDialogComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfirmationDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.ts b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.ts new file mode 100644 index 00000000..17f3592f --- /dev/null +++ b/hosting/src/app/dialogs/confirmation-dialog/confirmation-dialog.component.ts @@ -0,0 +1,34 @@ +import {Component, Inject, OnInit} from '@angular/core'; +import {MDC_DIALOG_DATA, MdcDialogRef} from '@angular-mdc/web'; + +export interface ConfirmationOptions { + title?: string; + caption?: string; + actionPositive?: string; + actionNegative?: string; +} + +@Component({ + selector: 'app-confirmation-dialog', + templateUrl: './confirmation-dialog.component.html', + styleUrls: ['./confirmation-dialog.component.scss'] +}) +export class ConfirmationDialogComponent implements OnInit { + public title?: string; + public caption?: string; + + public actionPositive?: string; + public actionNegative?: string; + + constructor(private ref: MdcDialogRef, + @Inject(MDC_DIALOG_DATA) + private data: ConfirmationOptions) { + this.title = data.title; + this.caption = data.caption; + this.actionPositive = data.actionPositive; + this.actionNegative = data.actionNegative; + } + + ngOnInit(): void { + } +} diff --git a/hosting/src/app/dialogs/dialogs.module.ts b/hosting/src/app/dialogs/dialogs.module.ts new file mode 100644 index 00000000..82e1ea4c --- /dev/null +++ b/hosting/src/app/dialogs/dialogs.module.ts @@ -0,0 +1,15 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {ConfirmationDialogComponent} from './confirmation-dialog/confirmation-dialog.component'; +import {MaterialModule} from '../material.module'; + + +@NgModule({ + declarations: [ConfirmationDialogComponent], + imports: [ + CommonModule, + MaterialModule, + ] +}) +export class DialogsModule { +} diff --git a/hosting/src/app/main/agency/agency-details/agency-details.component.html b/hosting/src/app/main/agency/agency-details/agency-details.component.html index eed1a909..7bd7a3df 100644 --- a/hosting/src/app/main/agency/agency-details/agency-details.component.html +++ b/hosting/src/app/main/agency/agency-details/agency-details.component.html @@ -1,8 +1,14 @@ -

    diff --git a/hosting/src/app/main/agency/agency-details/agency-details.component.ts b/hosting/src/app/main/agency/agency-details/agency-details.component.ts index a7b216d5..98877a6f 100644 --- a/hosting/src/app/main/agency/agency-details/agency-details.component.ts +++ b/hosting/src/app/main/agency/agency-details/agency-details.component.ts @@ -1,6 +1,8 @@ import {Component, OnInit} from '@angular/core'; import {UserService} from '../../../@backend/user.service'; import {User} from '../../../../@core/firestore-interfaces/user'; +import {MdcDialog} from '@angular-mdc/web'; +import {AgencyProfilePhotoDialogComponent} from '../agency-profile-photo-dialog/agency-profile-photo-dialog.component'; @Component({ selector: 'app-agency-details', @@ -11,7 +13,7 @@ export class AgencyDetailsComponent implements OnInit { public isLoading = true; public agency: User; - constructor(service: UserService) { + constructor(service: UserService, private dialog: MdcDialog) { service.currentUserInfo() .then(user => this.agency = user) .finally(() => this.isLoading = false); @@ -20,4 +22,13 @@ export class AgencyDetailsComponent implements OnInit { ngOnInit(): void { } + public openProfilePhotoDialog() { + this.dialog.open(AgencyProfilePhotoDialogComponent, {autoFocus: false}) + .afterClosed() + .subscribe((result: User | string) => { + if (result !== 'close') { + this.agency = result as User; + } + }); + } } diff --git a/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts index 4be072df..01e7698e 100644 --- a/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts +++ b/hosting/src/app/main/agency/agency-inbox/agency-inbox.component.ts @@ -17,12 +17,20 @@ export class AgencyInboxComponent implements OnInit { private messageService: MessageService, public dialog: MdcDialog ) { - messageService.getMessages() - .then(value => { - this.messages = value; - }) - .catch(e => { - console.error(e); + messageService.getMessagesSnapshot() + .then(obs => { + obs.subscribe(value => { + this.messages = value; + this.messages.sort((a, b) => { + if (a.dateCrt > b.dateCrt) { + return -1; + } else if (a.dateCrt < b.dateCrt) { + return 1; + } else { + return 0; + } + }); + }); }); } diff --git a/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts index 9c94363c..8180f856 100644 --- a/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts +++ b/hosting/src/app/main/agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component.ts @@ -66,30 +66,29 @@ export class ContributionDialogComponent implements OnInit { }); if (itemContributed) { qtyContributed = itemContributed.qty; - } - - let qtyReceived = 0; - if (itemsReceived) { - const itemReceived = itemsReceived.find(itemReceived => { - return itemReceived.name === item.name; - }); - if (itemReceived) { - qtyReceived = itemReceived.qty; + let qtyReceived = 0; + if (itemsReceived) { + const itemReceived = itemsReceived.find(itemReceived => { + return itemReceived.name === item.name; + }); + if (itemReceived) { + qtyReceived = itemReceived.qty; + } } - } - const itemTransaction = { - name: item.name, - qtyNeed: item.qtyNeed, - qtyContributed, - qtyReceived: [qtyReceived, [Validators.min(0), Validators.max(qtyContributed)]] - }; - const formGroup = this.fb.group(itemTransaction); - if (this.readOnly) { - formGroup.disable(); + const itemTransaction = { + name: item.name, + qtyNeed: item.qtyNeed, + qtyContributed, + qtyReceived: [qtyReceived, [Validators.min(0), Validators.max(qtyContributed)]] + }; + const formGroup = this.fb.group(itemTransaction); + if (this.readOnly) { + formGroup.disable(); + } + this.items.push(formGroup); } - this.items.push(formGroup); }); this.request = value; @@ -144,6 +143,9 @@ export class ContributionDialogComponent implements OnInit { alert('Item in transport'); this.loading = false; }); + } else { + alert('Please select either you want to Transport or Receive the item'); + this.loading = false; } } } diff --git a/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.html b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.html new file mode 100644 index 00000000..9b494704 --- /dev/null +++ b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.html @@ -0,0 +1,47 @@ + + + + +
    + +
    + {{droppedFile.name}} + +
    +
    + Uploading profile photo… +
    + +
    +
    +
    + Drag a profile photo here +
    +
    + Or +
    +
    + + +
    +
    +
    +
    + + + +
    +
    +
    diff --git a/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.scss b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.spec.ts b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.spec.ts new file mode 100644 index 00000000..c7d28afc --- /dev/null +++ b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {AgencyProfilePhotoDialogComponent} from './agency-profile-photo-dialog.component'; + +describe('AgencyProfilePhotoDialogComponent', () => { + let component: AgencyProfilePhotoDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AgencyProfilePhotoDialogComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AgencyProfilePhotoDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.ts b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.ts new file mode 100644 index 00000000..93c48525 --- /dev/null +++ b/hosting/src/app/main/agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component.ts @@ -0,0 +1,46 @@ +import {Component, OnInit} from '@angular/core'; +import {UserService} from '../../../@backend/user.service'; +import {MdcDialogRef} from '@angular-mdc/web'; + +@Component({ + selector: 'app-agency-profile-photo-dialog', + templateUrl: './agency-profile-photo-dialog.component.html', + styleUrls: ['./agency-profile-photo-dialog.component.scss'] +}) +export class AgencyProfilePhotoDialogComponent implements OnInit { + public isUploading = false; + public droppedFile?: File; + + constructor(private userService: UserService, private dialogRef: MdcDialogRef) { + } + + ngOnInit(): void { + } + + public onFileDropped(file: File) { + if (!file.type.match(/image\/*/)) { + console.error('Only image file is supported'); + return; + } + this.droppedFile = file; + } + + public onFilePicked(event: Event) { + const attr = 'files'; + const files: FileList = event.target[attr]; + if (files.length > 0) { + this.onFileDropped(files.item(0)); + } + } + + public upload() { + if (this.isUploading || !this.droppedFile) { + return; + } + this.isUploading = true; + this.userService.uploadUserPhoto(this.droppedFile) + .then(_ => this.userService.currentUserInfo()) + .then(user => this.dialogRef.close(user)) + .finally(() => this.isUploading = false); + } +} diff --git a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html index 4f30d6cb..1d373845 100644 --- a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html +++ b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.html @@ -8,22 +8,34 @@
    Add new contribution request -
    -
    + +
    + +

    Select items from the list on the right

    +
    + +
    {{req.name}} - +
    +
    diff --git a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts index 591879cf..2a1ae9e1 100644 --- a/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts +++ b/hosting/src/app/main/agency/agency-request-contribution/agency-request-contribution.component.ts @@ -4,8 +4,9 @@ import {UserService} from '../../../@backend/user.service'; import {RequestItem} from '../../../../@core/firestore-interfaces/request'; import {UserRequestService} from '../../../@backend/user-request.service'; import {RequestContribution} from '../../../../@core/requestContribution'; -import {MdcSnackbar} from '@angular-mdc/web'; +import {MdcDialog, MdcSnackbar} from '@angular-mdc/web'; import {Router} from '@angular/router'; +import {ConfirmationDialogComponent, ConfirmationOptions} from '../../../dialogs/confirmation-dialog/confirmation-dialog.component'; @Component({ selector: 'app-agency-request-contribution', @@ -32,7 +33,8 @@ export class AgencyRequestContributionComponent implements OnInit { constructor(private router: Router, private userService: UserService, private requestService: UserRequestService, - private snackbar: MdcSnackbar) { + private snackbar: MdcSnackbar, + private dialog: MdcDialog) { userService.currentUserInfo() .then(agency => { this.agency = agency; @@ -65,8 +67,9 @@ export class AgencyRequestContributionComponent implements OnInit { this.availableItems.splice(this.availableItems.indexOf(item), 1); } this.addedItems.push(item); - this.itemRequests.push({name: item, qtyFilled: 0, qtyNeed: 0}); + this.itemRequests.push({name: item, qtyFilled: 0, qtyNeed: 1}); this.availableItems = this.availableItems.sort(); + this.resolvePublishIsAllowed(); } public remove(request: RequestItem) { @@ -109,24 +112,32 @@ export class AgencyRequestContributionComponent implements OnInit { } public publish() { - if (this.isPublishing) { - return; - } - this.isPublishing = true; - this.itemRequests.forEach((req) => { - this.newRequest.need(req.name, req.qtyNeed); - }); - return this.requestService.createRequest(this.newRequest) - .then(_ => { - this.snackbar.open('Request published'); - return this.router.navigate(['/agency']); - }) - .catch(reason => { - console.error(reason); - return this.snackbar.open('Unknown error occurred'); + this.dialog + .open(ConfirmationDialogComponent, { + data: {title: 'Publish?', actionNegative: 'Cancel', actionPositive: 'Publish'} as ConfirmationOptions, + autoFocus: false }) - .finally(() => { - this.isPublishing = false; + .afterClosed() + .subscribe(value => { + if (this.isPublishing || value !== 'positive') { + return; + } + this.isPublishing = true; + this.itemRequests.forEach((req) => { + this.newRequest.need(req.name, req.qtyNeed); + }); + return this.requestService.createRequest(this.newRequest) + .then(_ => { + this.snackbar.open('Request published'); + return this.router.navigate(['/agency']); + }) + .catch(reason => { + console.error(reason); + return this.snackbar.open('Unknown error occurred'); + }) + .finally(() => { + this.isPublishing = false; + }); }); } } diff --git a/hosting/src/app/main/agency/agency-request/agency-request.component.html b/hosting/src/app/main/agency/agency-request/agency-request.component.html index 3c090739..6695b2ed 100644 --- a/hosting/src/app/main/agency/agency-request/agency-request.component.html +++ b/hosting/src/app/main/agency/agency-request/agency-request.component.html @@ -7,7 +7,8 @@
    Request progress - Completion: {{sum > 0 ? (progress + '%') : 'Unavailable'}} + + {{currentReq.status === 'complete' ? 'Marked as complete' : (sum > 0 ? 'Completion: ' + (progress + '%') : 'Unavailable')}}
    - + done_all Mark as complete diff --git a/hosting/src/app/main/agency/agency-request/agency-request.component.ts b/hosting/src/app/main/agency/agency-request/agency-request.component.ts index 5f69186f..0cdd31eb 100644 --- a/hosting/src/app/main/agency/agency-request/agency-request.component.ts +++ b/hosting/src/app/main/agency/agency-request/agency-request.component.ts @@ -96,6 +96,15 @@ export class AgencyRequestComponent implements OnInit { this.load(); } + public markAsComplete() { + this.isUpdating = true; + return this.requestService + .markRequestAsComplete(this.currentId) + .finally(() => { + this.reloadData(); + }); + } + public summarizeRequiredItems(request: ContributionDetails): string { const maxCount = 2; const upperMaxCount = 3; @@ -162,6 +171,7 @@ export class AgencyRequestComponent implements OnInit { this.loadContributions(); this.reqService.getRequest(this.currentId) .then(request => { + console.log('Status:', request.status); this.currentReq = request; this.requestedItems = request.requestItems.sort((first, second) => { return (second.qtyNeed - second.qtyFilled) - (first.qtyNeed - first.qtyFilled); diff --git a/hosting/src/app/main/drag-drop.directive.spec.ts b/hosting/src/app/main/drag-drop.directive.spec.ts new file mode 100644 index 00000000..101b686e --- /dev/null +++ b/hosting/src/app/main/drag-drop.directive.spec.ts @@ -0,0 +1,8 @@ +import {DragDropDirective} from './drag-drop.directive'; + +describe('DragDropDirective', () => { + it('should create an instance', () => { + const directive = new DragDropDirective(); + expect(directive).toBeTruthy(); + }); +}); diff --git a/hosting/src/app/main/drag-drop.directive.ts b/hosting/src/app/main/drag-drop.directive.ts new file mode 100644 index 00000000..b1235935 --- /dev/null +++ b/hosting/src/app/main/drag-drop.directive.ts @@ -0,0 +1,34 @@ +import {Directive, EventEmitter, HostListener, Output} from '@angular/core'; + +@Directive({ + selector: '[appDragDrop]' +}) +export class DragDropDirective { + @Output() + public fileDropped = new EventEmitter(); + + constructor() { + } + + @HostListener('dragover', ['$event']) + public onDragOver(event: DragEvent) { + event.preventDefault(); + event.stopPropagation(); + } + + @HostListener('dragleave', ['$event']) + public onDragLeave(event: DragEvent) { + event.preventDefault(); + event.stopPropagation(); + } + + @HostListener('drop', ['$event']) + public onDropFile(event) { + event.preventDefault(); + event.stopPropagation(); + const files = event.dataTransfer.files; + if (files.length > 0) { + this.fileDropped.emit(files.item(0)); + } + } +} diff --git a/hosting/src/app/main/home/contribute/contribute.component.ts b/hosting/src/app/main/home/contribute/contribute.component.ts index e4d6f899..16334794 100644 --- a/hosting/src/app/main/home/contribute/contribute.component.ts +++ b/hosting/src/app/main/home/contribute/contribute.component.ts @@ -5,6 +5,8 @@ import {ContributionItem, RequestObject} from '../../../../@core/firestore-inter import {FormControl, FormGroup, Validators} from '@angular/forms'; import {ContribsService} from '../../../@backend/contribs.service'; import {UserService} from '../../../@backend/user.service'; +import {MdcDialog} from '@angular-mdc/web'; +import {ConfirmationDialogComponent, ConfirmationOptions} from '../../../dialogs/confirmation-dialog/confirmation-dialog.component'; @Component({ selector: 'app-contribute', @@ -29,7 +31,8 @@ export class ContributeComponent implements OnInit { private route: ActivatedRoute, private reqService: RequestService, private userService: UserService, - private contrib: ContribsService) { + private contrib: ContribsService, + private dialog: MdcDialog) { route.queryParamMap.subscribe(params => { this.currentId = params.get('reqId'); this.load(); @@ -66,38 +69,46 @@ export class ContributeComponent implements OnInit { } public publish() { - if (this.isPublishing) { - return; - } - this.isPublishing = true; - const nameControl = this.formGroup.controls.name; - const emailControl = this.formGroup.controls.email; - const phoneControl = this.formGroup.controls.phone; - const noteControl = this.formGroup.controls.note; - const name: string = nameControl.value; - const email: string = emailControl.value; - const phone: string = phoneControl.value; - const note: string = noteControl.value; + this.dialog + .open(ConfirmationDialogComponent, { + data: {title: 'Publish?', actionNegative: 'Cancel', actionPositive: 'Publish'} as ConfirmationOptions, + autoFocus: false + }) + .afterClosed() + .subscribe(value => { + if (this.isPublishing || value !== 'positive') { + return; + } + this.isPublishing = true; + const nameControl = this.formGroup.controls.name; + const emailControl = this.formGroup.controls.email; + const phoneControl = this.formGroup.controls.phone; + const noteControl = this.formGroup.controls.note; + const name: string = nameControl.value; + const email: string = emailControl.value; + const phone: string = phoneControl.value; + const note: string = noteControl.value; - nameControl.disable(); - emailControl.disable(); - phoneControl.disable(); - noteControl.disable(); + nameControl.disable(); + emailControl.disable(); + phoneControl.disable(); + noteControl.disable(); - return this.contrib.contributeToRequest(this.currentId, { - sender: {name, phone, email}, - contributionItems: this.items, - remarks: note, - }) - .then(_ => { - return this.router.navigate(['/']); - }) - .finally(() => { - nameControl.enable(); - emailControl.enable(); - phoneControl.enable(); - noteControl.enable(); - this.isPublishing = false; + return this.contrib.contributeToRequest(this.currentId, { + sender: {name, phone, email}, + contributionItems: this.items, + remarks: note, + }) + .then(_ => { + return this.router.navigate(['/']); + }) + .finally(() => { + nameControl.enable(); + emailControl.enable(); + phoneControl.enable(); + noteControl.enable(); + this.isPublishing = false; + }); }); } diff --git a/hosting/src/app/main/home/overview/overview.component.html b/hosting/src/app/main/home/overview/overview.component.html index 404eaa48..2491623f 100644 --- a/hosting/src/app/main/home/overview/overview.component.html +++ b/hosting/src/app/main/home/overview/overview.component.html @@ -1,12 +1,12 @@
    -
    +
    + style="display: flex; flex-direction: row; border-radius: 8px; background-color: rgba(255, 255, 255, 0.24); padding: 16px">
    {{joinedAgencies}} Agencies joined @@ -21,12 +21,12 @@
    Contribute to help one another - COVID-19 – our common enemy + Combating COVID-19 - With the rising need of medical supplies amidst this COVID-19 pandemic, - we understand the challenge in providing our front-liners the critical items they lack. - We want to enable them to publish their needs easily so we can work together to supply - their needs as soon as possible. + With the rising shortage of medical supplies amidst this COVID-19 pandemic, + we understand the challenge in providing our medical staff and patients the critical items they lack. + Therefore, we want to enable medical agencies to publish their needs easily so we can work together to meet + their requests as soon as possible.
    @@ -85,7 +85,10 @@
    - + +
    diff --git a/hosting/src/app/main/home/overview/overview.component.ts b/hosting/src/app/main/home/overview/overview.component.ts index c98295db..06e7994d 100644 --- a/hosting/src/app/main/home/overview/overview.component.ts +++ b/hosting/src/app/main/home/overview/overview.component.ts @@ -3,6 +3,7 @@ import {RequestItem, RequestObject} from '../../../../@core/firestore-interfaces import {AgenciesNeedItemResult, StatsService} from '../../../@backend/stats.service'; import {RequestService} from '../../../@backend/request.service'; import {MdcMenu} from '@angular-mdc/web'; +import {UserService} from '../../../@backend/user.service'; @Component({ selector: 'app-overview', @@ -13,6 +14,7 @@ export class OverviewComponent implements OnInit, OnDestroy { joinedAgencies = '—'; completedRequests = '—'; activeRequests = '—'; + public currentUserId: string; isLoading = true; topRequests: RequestObject[] = [ @@ -26,15 +28,11 @@ export class OverviewComponent implements OnInit, OnDestroy { constructor( private requestService: RequestService, public stats: StatsService, + private userService: UserService, ) { + userService.currentUserInfo().then(user => this.currentUserId = user.userId); stats.requestItemsSnapshot.subscribe(items => this.requestItems = items); - - this.requestService.topIncompleteRequests(5).then(value => { - this.topRequests = value; - this.isLoading = false; - }).catch(e => { - console.error(e); - }); + this.reloadData(); stats.agencyJoined.subscribe(value => { this.joinedAgencies = value.toString(); @@ -70,4 +68,12 @@ export class OverviewComponent implements OnInit, OnDestroy { this.loadingAgencies = false; }); } + + public reloadData() { + this.isLoading = true; + this.requestService.topIncompleteRequests(5).then(value => { + this.topRequests = value; + }).catch(e => console.error(e)) + .finally(() => this.isLoading = false); + } } diff --git a/hosting/src/app/main/home/public-requests/public-requests.component.html b/hosting/src/app/main/home/public-requests/public-requests.component.html index b96d9053..4de827c2 100644 --- a/hosting/src/app/main/home/public-requests/public-requests.component.html +++ b/hosting/src/app/main/home/public-requests/public-requests.component.html @@ -11,38 +11,8 @@ - - - - - -
    @@ -65,11 +35,11 @@
    Register an account - If you are representing your agency or organisation, - especially those in the medical institutions such as hospitals, clinics, - and nursing homes, you may express your needs by joining us. + If you are representing your agency, + especially those in the medical institutions such as hospitals and clinics, + you may express your supply needs by joining us. - +
    diff --git a/hosting/src/app/main/main.module.ts b/hosting/src/app/main/main.module.ts index 8d7fbdc6..9f028038 100644 --- a/hosting/src/app/main/main.module.ts +++ b/hosting/src/app/main/main.module.ts @@ -34,7 +34,9 @@ import {MessageDialogComponent} from './agency/agency-inbox/message-dialog/messa import {ContributionDialogComponent} from './agency/agency-incoming-contributions/contribution-dialog/contribution-dialog.component'; import {AgencyTransportingContributionsComponent} from './agency/agency-transporting-contributions/agency-transporting-contributions.component'; import {AgencyCompletedContributionsComponent} from './agency/agency-completed-contributions/agency-completed-contributions.component'; -import { AgencyContributionsComponent } from './agency/agency-contributions/agency-contributions.component'; +import {AgencyContributionsComponent} from './agency/agency-contributions/agency-contributions.component'; +import {AgencyProfilePhotoDialogComponent} from './agency/agency-profile-photo-dialog/agency-profile-photo-dialog.component'; +import {DragDropDirective} from './drag-drop.directive'; @NgModule({ @@ -68,6 +70,8 @@ import { AgencyContributionsComponent } from './agency/agency-contributions/agen AgencyTransportingContributionsComponent, AgencyCompletedContributionsComponent, AgencyContributionsComponent, + AgencyProfilePhotoDialogComponent, + DragDropDirective, ], imports: [ CommonModule, diff --git a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html index bb9897a0..a6a3079a 100644 --- a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html +++ b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.html @@ -30,7 +30,8 @@

    {{requestObject.userInfo {{progressBarValue >= 1 ? 'Completed' : (itemProgress) + '% complete'}}

    -
    +
    - +
    + + +
    @@ -62,7 +79,8 @@

    {{requestObject.userInfo

    -
    +
    diff --git a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts index c6522c97..3c10ed22 100644 --- a/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts +++ b/hosting/src/app/my-components/card-request-contrib/card-request-contrib.component.ts @@ -1,7 +1,9 @@ -import {Component, Input, OnInit} from '@angular/core'; +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {RequestItem, RequestObject} from '../../../@core/firestore-interfaces/request'; import {MdcDialog} from '@angular-mdc/web'; import {LeaveMessageDialogComponent} from '../leave-message-dialog/leave-message-dialog.component'; +import {ConfirmationDialogComponent, ConfirmationOptions} from '../../dialogs/confirmation-dialog/confirmation-dialog.component'; +import {UserRequestService} from '../../@backend/user-request.service'; @Component({ selector: 'app-card-request-contrib', @@ -10,6 +12,7 @@ import {LeaveMessageDialogComponent} from '../leave-message-dialog/leave-message }) export class CardRequestContribComponent implements OnInit { @Input() mini = false; + @Input() currentUserId?: string; @Input() requestObject: RequestObject; emptyRequestItem: RequestItem = { name: '—', @@ -20,18 +23,21 @@ export class CardRequestContribComponent implements OnInit { private _viewAll = false; itemProgress = '0'; imgUrl = ''; + @Output() + public updated = new EventEmitter(); imgUrls = { - 'Ra2HX9HXLNQhg62ciBhQXO17IsD3': './assets/dummy-images/1200px-Kuala_Lumpur_Hospital.jpg', - 'zjNFhfMvM9h2SsLPazwius5YWGS2': './assets/dummy-images/120319 CaroMont Regional Medical Center 712.jpg', - 'uFkBX9ZaHwQFER9zFIrSNbCc9xf2': './assets/dummy-images/cleveland-clinic-florida-wellington.jpg', - 'zO8pqEXZTKNO0Qo8RFfBHALrPQM2': './assets/dummy-images/photo-1519494026892-80bbd2d6fd0d.jpg', + Ra2HX9HXLNQhg62ciBhQXO17IsD3: './assets/dummy-images/1200px-Kuala_Lumpur_Hospital.jpg', + zjNFhfMvM9h2SsLPazwius5YWGS2: './assets/dummy-images/120319 CaroMont Regional Medical Center 712.jpg', + uFkBX9ZaHwQFER9zFIrSNbCc9xf2: './assets/dummy-images/cleveland-clinic-florida-wellington.jpg', + zO8pqEXZTKNO0Qo8RFfBHALrPQM2: './assets/dummy-images/photo-1519494026892-80bbd2d6fd0d.jpg', '46x8Ydl8uYf4VMCVtvIaKQzvrSO2': './assets/dummy-images/ming.jpg' }; progressBarValue = 0; constructor( - private mdcDialog: MdcDialog + private dialog: MdcDialog, + private requestService: UserRequestService, ) { } @@ -51,15 +57,16 @@ export class CardRequestContribComponent implements OnInit { const progress = this.getProgress(this.requestObject); this.itemProgress = (progress * 100).toFixed(2) || '0'; this.progressBarValue = progress; - console.info(this.itemProgress); - this.imgUrl = this.imgUrls[this.requestObject.user] || ''; + // this.imgUrl = this.imgUrls[this.requestObject.user] || ''; + const userId = this.requestObject.user; + this.imgUrl = `https://firebasestorage.googleapis.com/v0/b/neuon-hackathon-holmes.appspot.com/o/userImages%2F${userId}?alt=media`; } public getProgress(request: RequestObject): number { let received = 0; let required = 0; - if (request && request.requestItems){ + if (request && request.requestItems) { request.requestItems.forEach(item => { received += +item.qtyFilled; required += +item.qtyNeed; @@ -70,8 +77,26 @@ export class CardRequestContribComponent implements OnInit { leaveMessageDialog(requestObject: RequestObject) { - this.mdcDialog.open(LeaveMessageDialogComponent, { + this.dialog.open(LeaveMessageDialogComponent, { data: requestObject }); } + + public markAsCompleted(id: string) { + this.dialog.open(ConfirmationDialogComponent, { + data: { + title: 'Mark as completed?', + caption: 'This action is irreversible.', + actionPositive: 'Mark as complete', + actionNegative: 'Cancel' + } as ConfirmationOptions + }).afterClosed() + .subscribe(result => { + if (result === 'positive') { + return this.requestService + .markRequestAsComplete(id) + .finally(() => this.updated.emit(true)); + } + }); + } } diff --git a/hosting/src/app/my-components/learn-more/learn-more.component.html b/hosting/src/app/my-components/learn-more/learn-more.component.html index 9ecca01d..64c815ba 100644 --- a/hosting/src/app/my-components/learn-more/learn-more.component.html +++ b/hosting/src/app/my-components/learn-more/learn-more.component.html @@ -3,27 +3,80 @@
    Contribute to help one another - How it works + + This platform aims to connect medical agencies and our community to supply the needs of those + combating COVID-19. +
    -
    +
    - Medical institutions + Medical agencies + Hospitals, clinics -
    -
    - -
    -
    - Request items +
    + +
    +
    +
    +
    + +
    +
    + Publish lacking items +
    +
    + Medical agencies can publish their medical supply needs + to reach out to our community for help +
    +
    + +
    +
    + +
    +
    + Respond to supplier / donor +
    +
    + Obtain items by negotiating with the supplier / donor who responded to the request +
    +
    + +
    +
    + +
    +
    + Track progress +
    +
    + See their request progress, how many items are still lacking, how many items are received and to be received +
    +
    + +
    +
    + +
    +
    + Offer contribution +
    +
    + Medical agencies can also offer contributions to other medical agencies in need +
    +
    + + +
    -
    +
    @@ -33,14 +86,73 @@
    - Supplier / Donor + Suppliers / Donors + Industries, NGOs, individuals + +
    + +
    +
    +
    +
    + +
    +
    + Contact those in need +
    +
    + Suppliers / donors can view the needs of the medical agencies + and respond as desired +
    +
    + +
    +
    + +
    +
    + Offer contribution +
    +
    + They may contribute their items as arranged with the receiving agency +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    + + +
    +
    + Combating COVID-19, together +
    +
    + + In this time of urgency, it is crucial that we gather every forces we have to support those + fighting this virus. + If you are representing your agency, especially those in the medical institutions such as hospitals and clinics, you may register an account with us to express your supply needs. + +
    +
    + +
    \ No newline at end of file diff --git a/hosting/src/app/my-components/learn-more/learn-more.component.scss b/hosting/src/app/my-components/learn-more/learn-more.component.scss index e69de29b..0aef862c 100644 --- a/hosting/src/app/my-components/learn-more/learn-more.component.scss +++ b/hosting/src/app/my-components/learn-more/learn-more.component.scss @@ -0,0 +1,9 @@ +@use '@material/button'; + +.mdc-button.intro { + @include button.ink-color(white); + @include button.outline-color(white); + @include button.outline-width(2px, 24px); + @include button.height(56px); + @include button.shape-radius(28px); +} diff --git a/hosting/src/assets/svg/learn_more_contact.svg b/hosting/src/assets/svg/learn_more_contact.svg new file mode 100644 index 00000000..db2dda70 --- /dev/null +++ b/hosting/src/assets/svg/learn_more_contact.svg @@ -0,0 +1 @@ +agreement \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_contribute.svg b/hosting/src/assets/svg/learn_more_contribute.svg new file mode 100644 index 00000000..9eeb60fd --- /dev/null +++ b/hosting/src/assets/svg/learn_more_contribute.svg @@ -0,0 +1 @@ +logistics \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_donor_contact.svg b/hosting/src/assets/svg/learn_more_donor_contact.svg new file mode 100644 index 00000000..64161400 --- /dev/null +++ b/hosting/src/assets/svg/learn_more_donor_contact.svg @@ -0,0 +1 @@ +chating \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_donor_contribute.svg b/hosting/src/assets/svg/learn_more_donor_contribute.svg new file mode 100644 index 00000000..43c6b1ed --- /dev/null +++ b/hosting/src/assets/svg/learn_more_donor_contribute.svg @@ -0,0 +1 @@ +heavy_box \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_request.svg b/hosting/src/assets/svg/learn_more_request.svg new file mode 100644 index 00000000..7d5434c6 --- /dev/null +++ b/hosting/src/assets/svg/learn_more_request.svg @@ -0,0 +1 @@ +accept request \ No newline at end of file diff --git a/hosting/src/assets/svg/learn_more_track.svg b/hosting/src/assets/svg/learn_more_track.svg new file mode 100644 index 00000000..bc16795a --- /dev/null +++ b/hosting/src/assets/svg/learn_more_track.svg @@ -0,0 +1 @@ +percentages \ No newline at end of file diff --git a/hosting/src/assets/svg/wearing_a_mask_.svg b/hosting/src/assets/svg/wearing_a_mask_.svg new file mode 100644 index 00000000..7fcf9ba5 --- /dev/null +++ b/hosting/src/assets/svg/wearing_a_mask_.svg @@ -0,0 +1 @@ +7 \ No newline at end of file diff --git a/hosting/src/assets/vectors/health_.svg b/hosting/src/assets/vectors/health_.svg new file mode 100644 index 00000000..70af15ef --- /dev/null +++ b/hosting/src/assets/vectors/health_.svg @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Health 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9c3ff70f355a7a7c8ebe9a5bc585569b9e88d7f1 Mon Sep 17 00:00:00 2001 From: S0D4 Date: Tue, 14 Apr 2020 18:36:37 +0800 Subject: [PATCH 11/13] Create README.md --- functions/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 functions/README.md diff --git a/functions/README.md b/functions/README.md new file mode 100644 index 00000000..4436145d --- /dev/null +++ b/functions/README.md @@ -0,0 +1,2 @@ +### Note +Please fill in your own user & pass in the mailer.ts From 390389c3fc4c1a010c013ab8c867ba5b493ae44e Mon Sep 17 00:00:00 2001 From: S0D4 Date: Tue, 14 Apr 2020 18:37:14 +0800 Subject: [PATCH 12/13] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index aed33383..f18cf8e6 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Hi! We are a team of 5 members consisting of: ## Topic Chosen Topic 2 – Virus Combat +Report: https://docs.google.com/document/d/1sj6chHCMd7qJ3oH_zs1uHkyNcLvqaCgExKsCRCVmemo/edit?usp=sharing + ## Solution: Web-based Application A medical resource sharing platform: [Sharing is Caring](https://neuon-hackathon-holmes.web.app/) From 74eed28232a6662880ffa3e878fb68b9a44f23af Mon Sep 17 00:00:00 2001 From: Holmes Chang Date: Wed, 15 Apr 2020 20:38:25 +0800 Subject: [PATCH 13/13] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index f18cf8e6..6887a16d 100644 --- a/README.md +++ b/README.md @@ -79,3 +79,6 @@ To run the functions, a Firebase project is required as described in [here](http ### Building Angular project (inside `./hosting`) Change the content of class variable `firebaseConfig` to your own Firebase project web config (explained [here](https://support.google.com/firebase/answer/7015592?hl=en)). Assuming Node.js and [Angular CLI](https://angular.io/guide/setup-local) has been installed on a development PC, run `ng build --prod` to build the project as deployable web. +## Supported by +NEUON SDN. BHD. +www.neuon.ai

    fL02?sv%$}U&sK@Z&Q5eQb$(C?m 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