From 64daa44e9ffa726e67a72c3eb44fb1b45deb99fa Mon Sep 17 00:00:00 2001 From: sda Date: Sun, 6 Nov 2022 15:51:33 +0100 Subject: [PATCH] First commit! --- .gitignore | 6 + LICENSE.txt | 201 + NOTICE.txt | 740 + README.md | 82 +- analysis/__init__.py | 0 analysis/analysis.py | 79 + analysis/classes/engine.py | 739 + analysis/classes/jarm.py | 477 + analysis/classes/report.py | 475 + analysis/locales/de.json | 147 + analysis/locales/en.json | 147 + analysis/locales/es.json | 147 + analysis/locales/fr.json | 147 + analysis/locales/it.json | 147 + analysis/locales/pt.json | 147 + analysis/locales/ru.json | 147 + analysis/utils.py | 74 + app/.gitignore | 105 + app/backend/.npmrc | 1 + app/backend/babel.config.js | 5 + app/backend/dist/css/app.b563f628.css | 5 + app/backend/dist/favicon.ico | Bin 0 -> 4286 bytes app/backend/dist/fonts/Exo.73922868.ttf | Bin 0 -> 90820 bytes .../dist/fonts/Roboto-Bold.2e84cc2a.eot | Bin 0 -> 134440 bytes .../dist/fonts/Roboto-Bold.4f2b2ed2.woff2 | Bin 0 -> 66008 bytes .../dist/fonts/Roboto-Bold.6552efba.woff | Bin 0 -> 94040 bytes .../dist/fonts/Roboto-Bold.89b89f76.otf | Bin 0 -> 198836 bytes .../dist/fonts/Roboto-Bold.b19d4d24.ttf | Bin 0 -> 179812 bytes app/backend/dist/img/Roboto-Bold.e769d982.svg | 11535 ++++++++++++++ app/backend/dist/img/network.33d31f9d.png | Bin 0 -> 30929 bytes app/backend/dist/index.html | 1 + app/backend/dist/js/app.a3c6f292.js | 2 + app/backend/dist/js/app.a3c6f292.js.map | 1 + .../dist/js/chunk-2d0a3726.bebe5116.js | 2 + .../dist/js/chunk-2d0a3726.bebe5116.js.map | 1 + .../dist/js/chunk-2d0c0c86.cf098d4b.js | 2 + .../dist/js/chunk-2d0c0c86.cf098d4b.js.map | 1 + .../dist/js/chunk-2d0c8321.78ca1407.js | 2 + .../dist/js/chunk-2d0c8321.78ca1407.js.map | 1 + .../dist/js/chunk-2d0c9378.fb16a6a2.js | 2 + .../dist/js/chunk-2d0c9378.fb16a6a2.js.map | 1 + .../dist/js/chunk-2d0cc2b4.6cd43049.js | 2 + .../dist/js/chunk-2d0cc2b4.6cd43049.js.map | 1 + .../dist/js/chunk-2d0cfa15.4b2166d6.js | 2 + .../dist/js/chunk-2d0cfa15.4b2166d6.js.map | 1 + .../dist/js/chunk-2d0e4bf5.fac73388.js | 2 + .../dist/js/chunk-2d0e4bf5.fac73388.js.map | 1 + .../dist/js/chunk-2d20faf8.c983e105.js | 2 + .../dist/js/chunk-2d20faf8.c983e105.js.map | 1 + .../dist/js/chunk-2d215cd3.f0d8ba06.js | 2 + .../dist/js/chunk-2d215cd3.f0d8ba06.js.map | 1 + .../dist/js/chunk-2d2245cf.ea4d33bd.js | 2 + .../dist/js/chunk-2d2245cf.ea4d33bd.js.map | 1 + .../dist/js/chunk-2d22d432.91ebbe55.js | 2 + .../dist/js/chunk-2d22d432.91ebbe55.js.map | 1 + .../dist/js/chunk-3c0d118e.e3f2944c.js | 2 + .../dist/js/chunk-3c0d118e.e3f2944c.js.map | 1 + app/backend/dist/js/chunk-vendors.dbaccf43.js | 8 + .../dist/js/chunk-vendors.dbaccf43.js.map | 1 + app/backend/package-lock.json | 13094 ++++++++++++++++ app/backend/package.json | 43 + app/backend/public/favicon.ico | Bin 0 -> 4286 bytes app/backend/public/index.html | 17 + app/backend/src/App.vue | 177 + app/backend/src/assets/custom.css | 805 + app/backend/src/assets/fonts/Exo.ttf | Bin 0 -> 90820 bytes app/backend/src/assets/fonts/Exo.woff2 | Bin 0 -> 9396 bytes app/backend/src/assets/fonts/Roboto-Bold.eot | Bin 0 -> 134440 bytes app/backend/src/assets/fonts/Roboto-Bold.otf | Bin 0 -> 198836 bytes app/backend/src/assets/fonts/Roboto-Bold.svg | 11535 ++++++++++++++ app/backend/src/assets/fonts/Roboto-Bold.ttf | Bin 0 -> 179812 bytes app/backend/src/assets/fonts/Roboto-Bold.woff | Bin 0 -> 94040 bytes .../src/assets/fonts/Roboto-Bold.woff2 | Bin 0 -> 66008 bytes .../src/assets/fonts/Roboto-Regular.eot | Bin 0 -> 135166 bytes .../src/assets/fonts/Roboto-Regular.otf | Bin 0 -> 198756 bytes .../src/assets/fonts/Roboto-Regular.svg | 11080 +++++++++++++ .../src/assets/fonts/Roboto-Regular.ttf | Bin 0 -> 180932 bytes .../src/assets/fonts/Roboto-Regular.woff | Bin 0 -> 93784 bytes .../src/assets/fonts/Roboto-Regular.woff2 | Bin 0 -> 65992 bytes app/backend/src/assets/network.png | Bin 0 -> 30929 bytes app/backend/src/assets/spectre-exp.min.css | 1 + app/backend/src/assets/spectre-icons.min.css | 1 + app/backend/src/assets/spectre.min.css | 1 + app/backend/src/main.js | 10 + app/backend/src/router/index.js | 87 + app/backend/src/views/analysis-engine.vue | 143 + app/backend/src/views/db-manage.vue | 75 + app/backend/src/views/edit-configuration.vue | 167 + app/backend/src/views/home.vue | 18 + app/backend/src/views/instance-misp.vue | 175 + app/backend/src/views/instance-watchers.vue | 166 + app/backend/src/views/iocs-manage.vue | 254 + app/backend/src/views/iocs-search.vue | 127 + app/backend/src/views/network-manage.vue | 131 + app/backend/src/views/update.vue | 85 + app/backend/src/views/whitelist-manage.vue | 191 + app/backend/src/views/whitelist-search.vue | 94 + app/backend/vue.config.js | 11 + app/frontend/.npmrc | 1 + app/frontend/README.md | 24 + app/frontend/babel.config.js | 5 + app/frontend/dist/.vscode/settings.json | 3 + app/frontend/dist/css/app.f82c83ee.css | 1 + .../dist/css/chunk-0d175fb6.3b87afd9.css | 1 + .../dist/css/chunk-7cb613d5.030f6319.css | 1 + .../dist/css/chunk-vendors.466ce708.css | 11 + app/frontend/dist/fonts/Exo.73922868.ttf | Bin 0 -> 90820 bytes app/frontend/dist/fonts/Exo.e105e55b.woff2 | Bin 0 -> 9396 bytes .../dist/fonts/Roboto-Regular.1cfd1aa3.woff | Bin 0 -> 93784 bytes .../dist/fonts/Roboto-Regular.2222f1fd.woff2 | Bin 0 -> 65992 bytes .../dist/fonts/Roboto-Regular.3e4fe426.ttf | Bin 0 -> 180932 bytes .../dist/fonts/Roboto-Regular.74670bfc.otf | Bin 0 -> 198756 bytes .../dist/fonts/Roboto-Regular.89207cf8.eot | Bin 0 -> 135166 bytes .../dist/img/Roboto-Regular.f886f6f8.svg | 11080 +++++++++++++ .../dist/img/icon_spinner.57ed8eec.svg | 16 + .../dist/img/icon_success.cfd1f9ca.svg | 5 + app/frontend/dist/img/icon_usb.21f6dada.svg | 5 + app/frontend/dist/index.html | 1 + app/frontend/dist/js/app.3056ab4c.js | 2 + app/frontend/dist/js/app.3056ab4c.js.map | 1 + .../dist/js/chunk-0d175fb6.abef9fad.js | 2 + .../dist/js/chunk-0d175fb6.abef9fad.js.map | 1 + .../dist/js/chunk-2d0b23b3.d02b548c.js | 2 + .../dist/js/chunk-2d0b23b3.d02b548c.js.map | 1 + .../dist/js/chunk-2d0b6d35.656552d9.js | 2 + .../dist/js/chunk-2d0b6d35.656552d9.js.map | 1 + .../dist/js/chunk-2d0baeaa.14768760.js | 2 + .../dist/js/chunk-2d0baeaa.14768760.js.map | 1 + .../dist/js/chunk-2d0cfa15.19c6d0ba.js | 2 + .../dist/js/chunk-2d0cfa15.19c6d0ba.js.map | 1 + .../dist/js/chunk-2e6079ad.851ba167.js | 2 + .../dist/js/chunk-2e6079ad.851ba167.js.map | 1 + .../dist/js/chunk-7cb613d5.5349d43e.js | 2 + .../dist/js/chunk-7cb613d5.5349d43e.js.map | 1 + .../dist/js/chunk-vendors.3521aad3.js | 25 + .../dist/js/chunk-vendors.3521aad3.js.map | 1 + app/frontend/package.json | 51 + app/frontend/public/.vscode/settings.json | 3 + app/frontend/src/App.vue | 65 + app/frontend/src/assets/custom.css | 1196 ++ app/frontend/src/assets/fonts/Exo.ttf | Bin 0 -> 90820 bytes app/frontend/src/assets/fonts/Exo.woff2 | Bin 0 -> 9396 bytes app/frontend/src/assets/fonts/Roboto-Bold.eot | Bin 0 -> 134440 bytes app/frontend/src/assets/fonts/Roboto-Bold.otf | Bin 0 -> 198836 bytes app/frontend/src/assets/fonts/Roboto-Bold.svg | 11535 ++++++++++++++ app/frontend/src/assets/fonts/Roboto-Bold.ttf | Bin 0 -> 179812 bytes .../src/assets/fonts/Roboto-Bold.woff | Bin 0 -> 94040 bytes .../src/assets/fonts/Roboto-Bold.woff2 | Bin 0 -> 66008 bytes .../src/assets/fonts/Roboto-Regular.eot | Bin 0 -> 135166 bytes .../src/assets/fonts/Roboto-Regular.otf | Bin 0 -> 198756 bytes .../src/assets/fonts/Roboto-Regular.svg | 11080 +++++++++++++ .../src/assets/fonts/Roboto-Regular.ttf | Bin 0 -> 180932 bytes .../src/assets/fonts/Roboto-Regular.woff | Bin 0 -> 93784 bytes .../src/assets/fonts/Roboto-Regular.woff2 | Bin 0 -> 65992 bytes app/frontend/src/assets/fonts/lobster.ttf | Bin 0 -> 396688 bytes app/frontend/src/assets/icon_plug_usb.svg | 4 + app/frontend/src/assets/icon_spinner.svg | 16 + app/frontend/src/assets/icon_success.svg | 5 + app/frontend/src/assets/icon_usb.svg | 5 + app/frontend/src/assets/loading.svg | 11 + app/frontend/src/assets/spectre.min.css | 1 + app/frontend/src/components/Controls.vue | 179 + app/frontend/src/components/Modals.vue | 150 + .../src/components/SimpleKeyboard.vue | 70 + app/frontend/src/locales/de.json | 91 + app/frontend/src/locales/en.json | 91 + app/frontend/src/locales/es.json | 91 + app/frontend/src/locales/fr.json | 91 + app/frontend/src/locales/it.json | 91 + app/frontend/src/locales/pt.json | 91 + app/frontend/src/locales/ru.json | 91 + app/frontend/src/main.js | 15 + app/frontend/src/plugins/i18n.js | 18 + app/frontend/src/router/index.js | 58 + app/frontend/src/views/analysis.vue | 75 + app/frontend/src/views/capture.vue | 98 + app/frontend/src/views/generate-ap.vue | 145 + app/frontend/src/views/home.vue | 22 + app/frontend/src/views/report.vue | 195 + app/frontend/src/views/save-capture.vue | 106 + app/frontend/src/views/splash-screen.vue | 60 + app/frontend/vue.config.js | 11 + assets/iocs.json | 1 + assets/requirements.txt | 17 + assets/scheme.sql | 30 + assets/whitelist.json | 1 + config.yaml | 61 + install.sh | 247 + server/backend/app/__init__.py | 15 + server/backend/app/blueprints/config.py | 131 + server/backend/app/blueprints/ioc.py | 97 + server/backend/app/blueprints/misp.py | 42 + server/backend/app/blueprints/update.py | 25 + server/backend/app/blueprints/watchers.py | 42 + server/backend/app/blueprints/whitelist.py | 68 + server/backend/app/classes/config.py | 174 + server/backend/app/classes/iocs.py | 158 + server/backend/app/classes/misp.py | 157 + server/backend/app/classes/update.py | 73 + server/backend/app/classes/watchers.py | 112 + server/backend/app/classes/whitelist.py | 117 + server/backend/app/db/__init__.py | 18 + server/backend/app/db/models.py | 34 + server/backend/app/decorators.py | 65 + server/backend/app/definitions.py | 125 + server/backend/app/utils.py | 70 + server/backend/main.py | 68 + server/backend/watchers.py | 146 + server/frontend/app/__init__.py | 15 + server/frontend/app/blueprints/analysis.py | 29 + server/frontend/app/blueprints/capture.py | 26 + server/frontend/app/blueprints/device.py | 13 + server/frontend/app/blueprints/misc.py | 90 + server/frontend/app/blueprints/network.py | 36 + server/frontend/app/blueprints/save.py | 21 + server/frontend/app/classes/analysis.py | 78 + server/frontend/app/classes/capture.py | 161 + server/frontend/app/classes/device.py | 61 + server/frontend/app/classes/network.py | 181 + server/frontend/app/classes/save.py | 77 + server/frontend/app/utils.py | 165 + server/frontend/main.py | 51 + uninstall.sh | 66 + update.sh | 51 + watchers.yaml | 10 + 225 files changed, 94329 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 NOTICE.txt create mode 100755 analysis/__init__.py create mode 100755 analysis/analysis.py create mode 100755 analysis/classes/engine.py create mode 100644 analysis/classes/jarm.py create mode 100755 analysis/classes/report.py create mode 100755 analysis/locales/de.json create mode 100755 analysis/locales/en.json create mode 100755 analysis/locales/es.json create mode 100755 analysis/locales/fr.json create mode 100755 analysis/locales/it.json create mode 100755 analysis/locales/pt.json create mode 100755 analysis/locales/ru.json create mode 100755 analysis/utils.py create mode 100755 app/.gitignore create mode 100755 app/backend/.npmrc create mode 100755 app/backend/babel.config.js create mode 100644 app/backend/dist/css/app.b563f628.css create mode 100644 app/backend/dist/favicon.ico create mode 100644 app/backend/dist/fonts/Exo.73922868.ttf create mode 100644 app/backend/dist/fonts/Roboto-Bold.2e84cc2a.eot create mode 100644 app/backend/dist/fonts/Roboto-Bold.4f2b2ed2.woff2 create mode 100644 app/backend/dist/fonts/Roboto-Bold.6552efba.woff create mode 100644 app/backend/dist/fonts/Roboto-Bold.89b89f76.otf create mode 100644 app/backend/dist/fonts/Roboto-Bold.b19d4d24.ttf create mode 100644 app/backend/dist/img/Roboto-Bold.e769d982.svg create mode 100644 app/backend/dist/img/network.33d31f9d.png create mode 100644 app/backend/dist/index.html create mode 100644 app/backend/dist/js/app.a3c6f292.js create mode 100644 app/backend/dist/js/app.a3c6f292.js.map create mode 100644 app/backend/dist/js/chunk-2d0a3726.bebe5116.js create mode 100644 app/backend/dist/js/chunk-2d0a3726.bebe5116.js.map create mode 100644 app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js create mode 100644 app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js.map create mode 100644 app/backend/dist/js/chunk-2d0c8321.78ca1407.js create mode 100644 app/backend/dist/js/chunk-2d0c8321.78ca1407.js.map create mode 100644 app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js create mode 100644 app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js.map create mode 100644 app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js create mode 100644 app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js.map create mode 100644 app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js create mode 100644 app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js.map create mode 100644 app/backend/dist/js/chunk-2d0e4bf5.fac73388.js create mode 100644 app/backend/dist/js/chunk-2d0e4bf5.fac73388.js.map create mode 100644 app/backend/dist/js/chunk-2d20faf8.c983e105.js create mode 100644 app/backend/dist/js/chunk-2d20faf8.c983e105.js.map create mode 100644 app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js create mode 100644 app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js.map create mode 100644 app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js create mode 100644 app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js.map create mode 100644 app/backend/dist/js/chunk-2d22d432.91ebbe55.js create mode 100644 app/backend/dist/js/chunk-2d22d432.91ebbe55.js.map create mode 100644 app/backend/dist/js/chunk-3c0d118e.e3f2944c.js create mode 100644 app/backend/dist/js/chunk-3c0d118e.e3f2944c.js.map create mode 100644 app/backend/dist/js/chunk-vendors.dbaccf43.js create mode 100644 app/backend/dist/js/chunk-vendors.dbaccf43.js.map create mode 100644 app/backend/package-lock.json create mode 100755 app/backend/package.json create mode 100755 app/backend/public/favicon.ico create mode 100755 app/backend/public/index.html create mode 100755 app/backend/src/App.vue create mode 100755 app/backend/src/assets/custom.css create mode 100755 app/backend/src/assets/fonts/Exo.ttf create mode 100755 app/backend/src/assets/fonts/Exo.woff2 create mode 100755 app/backend/src/assets/fonts/Roboto-Bold.eot create mode 100755 app/backend/src/assets/fonts/Roboto-Bold.otf create mode 100755 app/backend/src/assets/fonts/Roboto-Bold.svg create mode 100755 app/backend/src/assets/fonts/Roboto-Bold.ttf create mode 100755 app/backend/src/assets/fonts/Roboto-Bold.woff create mode 100755 app/backend/src/assets/fonts/Roboto-Bold.woff2 create mode 100755 app/backend/src/assets/fonts/Roboto-Regular.eot create mode 100755 app/backend/src/assets/fonts/Roboto-Regular.otf create mode 100755 app/backend/src/assets/fonts/Roboto-Regular.svg create mode 100755 app/backend/src/assets/fonts/Roboto-Regular.ttf create mode 100755 app/backend/src/assets/fonts/Roboto-Regular.woff create mode 100755 app/backend/src/assets/fonts/Roboto-Regular.woff2 create mode 100755 app/backend/src/assets/network.png create mode 100755 app/backend/src/assets/spectre-exp.min.css create mode 100755 app/backend/src/assets/spectre-icons.min.css create mode 100755 app/backend/src/assets/spectre.min.css create mode 100755 app/backend/src/main.js create mode 100755 app/backend/src/router/index.js create mode 100755 app/backend/src/views/analysis-engine.vue create mode 100755 app/backend/src/views/db-manage.vue create mode 100755 app/backend/src/views/edit-configuration.vue create mode 100755 app/backend/src/views/home.vue create mode 100755 app/backend/src/views/instance-misp.vue create mode 100755 app/backend/src/views/instance-watchers.vue create mode 100755 app/backend/src/views/iocs-manage.vue create mode 100755 app/backend/src/views/iocs-search.vue create mode 100755 app/backend/src/views/network-manage.vue create mode 100755 app/backend/src/views/update.vue create mode 100755 app/backend/src/views/whitelist-manage.vue create mode 100755 app/backend/src/views/whitelist-search.vue create mode 100755 app/backend/vue.config.js create mode 100755 app/frontend/.npmrc create mode 100755 app/frontend/README.md create mode 100755 app/frontend/babel.config.js create mode 100644 app/frontend/dist/.vscode/settings.json create mode 100644 app/frontend/dist/css/app.f82c83ee.css create mode 100644 app/frontend/dist/css/chunk-0d175fb6.3b87afd9.css create mode 100644 app/frontend/dist/css/chunk-7cb613d5.030f6319.css create mode 100644 app/frontend/dist/css/chunk-vendors.466ce708.css create mode 100644 app/frontend/dist/fonts/Exo.73922868.ttf create mode 100644 app/frontend/dist/fonts/Exo.e105e55b.woff2 create mode 100644 app/frontend/dist/fonts/Roboto-Regular.1cfd1aa3.woff create mode 100644 app/frontend/dist/fonts/Roboto-Regular.2222f1fd.woff2 create mode 100644 app/frontend/dist/fonts/Roboto-Regular.3e4fe426.ttf create mode 100644 app/frontend/dist/fonts/Roboto-Regular.74670bfc.otf create mode 100644 app/frontend/dist/fonts/Roboto-Regular.89207cf8.eot create mode 100644 app/frontend/dist/img/Roboto-Regular.f886f6f8.svg create mode 100644 app/frontend/dist/img/icon_spinner.57ed8eec.svg create mode 100644 app/frontend/dist/img/icon_success.cfd1f9ca.svg create mode 100644 app/frontend/dist/img/icon_usb.21f6dada.svg create mode 100644 app/frontend/dist/index.html create mode 100644 app/frontend/dist/js/app.3056ab4c.js create mode 100644 app/frontend/dist/js/app.3056ab4c.js.map create mode 100644 app/frontend/dist/js/chunk-0d175fb6.abef9fad.js create mode 100644 app/frontend/dist/js/chunk-0d175fb6.abef9fad.js.map create mode 100644 app/frontend/dist/js/chunk-2d0b23b3.d02b548c.js create mode 100644 app/frontend/dist/js/chunk-2d0b23b3.d02b548c.js.map create mode 100644 app/frontend/dist/js/chunk-2d0b6d35.656552d9.js create mode 100644 app/frontend/dist/js/chunk-2d0b6d35.656552d9.js.map create mode 100644 app/frontend/dist/js/chunk-2d0baeaa.14768760.js create mode 100644 app/frontend/dist/js/chunk-2d0baeaa.14768760.js.map create mode 100644 app/frontend/dist/js/chunk-2d0cfa15.19c6d0ba.js create mode 100644 app/frontend/dist/js/chunk-2d0cfa15.19c6d0ba.js.map create mode 100644 app/frontend/dist/js/chunk-2e6079ad.851ba167.js create mode 100644 app/frontend/dist/js/chunk-2e6079ad.851ba167.js.map create mode 100644 app/frontend/dist/js/chunk-7cb613d5.5349d43e.js create mode 100644 app/frontend/dist/js/chunk-7cb613d5.5349d43e.js.map create mode 100644 app/frontend/dist/js/chunk-vendors.3521aad3.js create mode 100644 app/frontend/dist/js/chunk-vendors.3521aad3.js.map create mode 100755 app/frontend/package.json create mode 100755 app/frontend/public/.vscode/settings.json create mode 100755 app/frontend/src/App.vue create mode 100755 app/frontend/src/assets/custom.css create mode 100755 app/frontend/src/assets/fonts/Exo.ttf create mode 100755 app/frontend/src/assets/fonts/Exo.woff2 create mode 100755 app/frontend/src/assets/fonts/Roboto-Bold.eot create mode 100755 app/frontend/src/assets/fonts/Roboto-Bold.otf create mode 100755 app/frontend/src/assets/fonts/Roboto-Bold.svg create mode 100755 app/frontend/src/assets/fonts/Roboto-Bold.ttf create mode 100755 app/frontend/src/assets/fonts/Roboto-Bold.woff create mode 100755 app/frontend/src/assets/fonts/Roboto-Bold.woff2 create mode 100755 app/frontend/src/assets/fonts/Roboto-Regular.eot create mode 100755 app/frontend/src/assets/fonts/Roboto-Regular.otf create mode 100755 app/frontend/src/assets/fonts/Roboto-Regular.svg create mode 100755 app/frontend/src/assets/fonts/Roboto-Regular.ttf create mode 100755 app/frontend/src/assets/fonts/Roboto-Regular.woff create mode 100755 app/frontend/src/assets/fonts/Roboto-Regular.woff2 create mode 100755 app/frontend/src/assets/fonts/lobster.ttf create mode 100755 app/frontend/src/assets/icon_plug_usb.svg create mode 100755 app/frontend/src/assets/icon_spinner.svg create mode 100755 app/frontend/src/assets/icon_success.svg create mode 100755 app/frontend/src/assets/icon_usb.svg create mode 100755 app/frontend/src/assets/loading.svg create mode 100755 app/frontend/src/assets/spectre.min.css create mode 100755 app/frontend/src/components/Controls.vue create mode 100755 app/frontend/src/components/Modals.vue create mode 100755 app/frontend/src/components/SimpleKeyboard.vue create mode 100755 app/frontend/src/locales/de.json create mode 100755 app/frontend/src/locales/en.json create mode 100755 app/frontend/src/locales/es.json create mode 100755 app/frontend/src/locales/fr.json create mode 100755 app/frontend/src/locales/it.json create mode 100755 app/frontend/src/locales/pt.json create mode 100755 app/frontend/src/locales/ru.json create mode 100755 app/frontend/src/main.js create mode 100755 app/frontend/src/plugins/i18n.js create mode 100755 app/frontend/src/router/index.js create mode 100755 app/frontend/src/views/analysis.vue create mode 100755 app/frontend/src/views/capture.vue create mode 100755 app/frontend/src/views/generate-ap.vue create mode 100755 app/frontend/src/views/home.vue create mode 100755 app/frontend/src/views/report.vue create mode 100755 app/frontend/src/views/save-capture.vue create mode 100755 app/frontend/src/views/splash-screen.vue create mode 100755 app/frontend/vue.config.js create mode 100644 assets/iocs.json create mode 100755 assets/requirements.txt create mode 100755 assets/scheme.sql create mode 100644 assets/whitelist.json create mode 100644 config.yaml create mode 100644 install.sh create mode 100755 server/backend/app/__init__.py create mode 100755 server/backend/app/blueprints/config.py create mode 100755 server/backend/app/blueprints/ioc.py create mode 100755 server/backend/app/blueprints/misp.py create mode 100755 server/backend/app/blueprints/update.py create mode 100755 server/backend/app/blueprints/watchers.py create mode 100755 server/backend/app/blueprints/whitelist.py create mode 100755 server/backend/app/classes/config.py create mode 100755 server/backend/app/classes/iocs.py create mode 100755 server/backend/app/classes/misp.py create mode 100755 server/backend/app/classes/update.py create mode 100755 server/backend/app/classes/watchers.py create mode 100755 server/backend/app/classes/whitelist.py create mode 100755 server/backend/app/db/__init__.py create mode 100755 server/backend/app/db/models.py create mode 100755 server/backend/app/decorators.py create mode 100755 server/backend/app/definitions.py create mode 100755 server/backend/app/utils.py create mode 100755 server/backend/main.py create mode 100755 server/backend/watchers.py create mode 100755 server/frontend/app/__init__.py create mode 100755 server/frontend/app/blueprints/analysis.py create mode 100755 server/frontend/app/blueprints/capture.py create mode 100755 server/frontend/app/blueprints/device.py create mode 100755 server/frontend/app/blueprints/misc.py create mode 100755 server/frontend/app/blueprints/network.py create mode 100755 server/frontend/app/blueprints/save.py create mode 100755 server/frontend/app/classes/analysis.py create mode 100755 server/frontend/app/classes/capture.py create mode 100755 server/frontend/app/classes/device.py create mode 100755 server/frontend/app/classes/network.py create mode 100755 server/frontend/app/classes/save.py create mode 100755 server/frontend/app/utils.py create mode 100755 server/frontend/main.py create mode 100755 uninstall.sh create mode 100755 update.sh create mode 100755 watchers.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..193305a --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ + +__pycache__/ +*.py[cod] +*$py.class +*.sqlite3 +node_modules/ diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..6f1a5bb --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,740 @@ +Copyright (C) 2022 Félix Aimé. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +The SpyGuard project is released under the Apache License, Version 2.0. +This license applies to all code developed by Félix Aimé. +The SpyGuard project contains third-party software that are under different +licenses. This file contains a list of the third-party code and licensing +terms. Please note, however, that this file may not contain all the +licenses of all third-party software used in SpyGuard. + +======= +SOFTWARE CODE +Information about third-party software code used in the development of Spyguard. + + +TinyCheck (commit ab3f5b584e8d1d23650f638948f28734e62b4e56) +Licensed under the Apache License, Version 2.0 +----- + +Copyright (C) 2020 AO Kaspersky Lab. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +The TinyCheck project is released under the Apache License, Version 2.0. This license applies to all code developed by Kaspersky. +The TinyCheck project contains third-party software that are under different licenses. This file contains a list of the third-party code and licensing terms. Please note, however, that this file may not contain all the licenses of all third-party software used in TinyCheck. So, please check the top of all the files for any additional license statements. + + + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +----- + +SQLite (Public Domain) + +The author disclaims copyright to this source code. In place of +a legal notice, here is a blessing: + + May you do good and not evil. + May you find forgiveness for yourself and forgive others. + May you share freely, never taking more than you give. + +----- + +dnsutils 9.11.5 +Copyright: 2004-2017, Internet Systems Consortium, Inc. ("ISC") + 1996-2003, Internet Software Consortium + 2012, Vadim Goncharov + 2009-2012, John Eaglesham + 2008, Damien Miller + 2004, 2008, Nominet, Ltd. + 2004, Masarykova universita + 1997-2003, Kungliga Tekniska Högskolan + 2002, Nuno M. Rodrigues. + 2002, Stichting NLnet, Netherlands + 2000-2002, Japan Network Information Center. + 2001, Jake Burkholder + 1996-2001, Nominum, Inc. + 1995-2000, Network Associates, Inc. + 2000, Aaron D. Gifford + 1999-2000, Nortel Networks Corporation + 1996, David Mazieres + 1993, Digital Equipment Corporation. + 1990, 1993, The Regents of the University of California. + +License: ISC and BSD-2-clause and BSD-3-clause and BSD-4-clause + +Files: bin/tests/system/chain/ + doc/misc/docbook-options.pl +Copyright: 2016-2017, Internet Systems Consortium, Inc. ("ISC") +License: MPL-2.0 or ISC + +Files: unit/atf-src/ +Copyright: 2007-2012, The NetBSD Foundation, Inc. +License: BSD-2-clause + +Files: contrib/idn/ +Copyright: 2000-2002, Japan Network Information Center +License: BSD-4-clause + +Files: debian/ +Copyright: 2007-2017 LaMont Jones + 2013-2017 Michael Gilbert + 2017 Ondřej Surý + 2008-2016 Jamie Strandboge +License: ISC or MPL-2.0 + +License: ISC + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY + WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY + WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD-4-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + 3. All advertising materials mentioning features or use of this + software must display the following acknowledgement: This product + includes software developed by the the organization . + . + 4. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: MPL-2.0 + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. + . + On Debian systems, the full copy of MPL-2.0 can be found at + /usr/share/common-licenses/MPL-2.0 +----- + +----- + + +node.js 12.0 +Copyright Joyent, Inc. and other Node contributors. +----- +Distributed under the terms of the MIT License +----- +Node's license follows: +==== +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +==== +This license applies to all parts of Node that are not externally maintained libraries. The externally maintained libraries used by Node are: +- V8, located at deps/v8. V8's license follows: +""" +This license applies to all parts of V8 that are not externally maintained libraries.The externally maintained libraries used by V8 are: +- PCRE test suite, located in +test/mjsunit/third_party/regexp-pcre.js.This is based on the test suite from PCRE-7.3, which is copyrighted by the University of Cambridge and Google, Inc.The copyright notice and license are embedded in regexp-pcre.js. +- Layout tests, located in test/mjsunit/third_party.These are based on layout tests from webkit.org which are copyrighted by Apple Computer, Inc. and released under a 3-clause BSD license. +- Strongtalk assembler, the basis of the files assembler-arm-inl.h, assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h, assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h, assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h, assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h. This code is copyrighted by Sun Microsystems Inc. and released under a 3-clause BSD license. +- Valgrind client API header, located at third_party/valgrind/valgrind.h This is release under the BSD license. +These libraries have their own licenses; we recommend you read them, as their terms may differ from the terms below. +Copyright 2006-2012, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" +- C-Ares, an asynchronous DNS client, located at deps/cares. C-Ares license follows: +""" +Copyright 1998 by the Massachusetts Institute of Technology. +Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + M.I.T. makes no representations about the suitability of this software for any purpose.It is provided "as is" without express or implied warranty. +""" +- OpenSSL located at deps/openssl. OpenSSL is cryptographic software written by Eric Young (eay@cryptsoft.com) to provide SSL/TLS encryption. OpenSSL's license follows: +""" +/==================================================================== + Copyright (c) 1998-2011 The OpenSSL Project.All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this +software must display the following acknowledgment: +"This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" +4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. +5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. +6. Redistributions of any form whatsoever must retain the following acknowledgment: +"This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" +THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ==================================================================== +""" +- HTTP Parser, located at deps/http_parser. HTTP Parser's license follows: +""" +http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright Igor Sysoev. +Additional changes are licensed under the same terms as NGINX and copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" +- Closure Linter is located at tools/closure_linter. Closure's license follows: +""" +Copyright (c) 2007, Google Inc. +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" +- tools/cpplint.py is a C++ linter. Its license follows: +""" +Copyright (c) 2009 Google Inc. All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" +- lib/punycode.js is copyright 2011 Mathias Bynens +and released under the MIT license. +""" +Punycode.js +Copyright 2011 Mathias Bynens +Available under MIT license +""" +- tools/gyp. GYP is a meta-build system. GYP's license follows: +""" +Copyright (c) 2009 Google Inc. All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" +- Zlib at deps/zlib. zlib's license follows: +""" +/zlib.h -- interface of the 'zlib' general purpose compression library +version 1.2.8, April 28th, 2013 +Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler +This software is provided 'as-is', without any express or implied warranty.In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +Jean-loup GaillyMark Adler +jloup@gzip.orgmadler@alumni.caltech.edu +*/ +""" +- npm is a package manager program located at deps/npm. +npm's license follows: +""" +Copyright (c) Isaac Z. Schlueter +All rights reserved. +npm is released under the Artistic 2.0 License. +The text of the License follows: +-------- +The Artistic License 2.0 +Copyright (c) 2000-2006, The Perl Foundation. +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +Preamble +This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. +The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. +You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. +Definitions +"Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. +"Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. +"You" and "your" means any person who would like to copy, distribute, or modify the Package. +"Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. +"Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. +"Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. +"Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. +"Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. +"Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. +"Source" form means the source code, documentation source, and configuration files for the Package. +"Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. +Permission for Use and Modification Without Distribution +(1)You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. +Permissions for Redistribution of the Standard Version +(2)You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. +(3)You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. +Distribution of Modified Versions of the Package as Source +(4)You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: +(a)make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. +(b)ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. +(c)allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under +(i)the Original License or +(ii)a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. +Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source +(5)You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further istribution. +If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. +(6)You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. +Aggregating or Linking the Package +(7)You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. +(8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. +Items That are Not Considered Part of a Modified Version +(9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. +General Provisions +(10)Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. +(11)If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. +(12)This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. +(13)This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. +(14)Disclaimer of Warranty: +THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------- +"Node.js" and "node" trademark Joyent, Inc. npm is not officially part of the Node.js project, and is neither owned by nor officially affiliated with Joyent, Inc. +Packages published in the npm registry (other than the Software and its included dependencies) are not part of npm itself, are the sole property of their respective maintainers, and are not covered by this license. +"npm Logo" created by Mathias Pettersson and Brian Hammond, used with permission. +"Gubblebum Blocky" font Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com included for use in the npm website and documentation, used with permission. +This program uses several Node modules contained in the node_modules/ subdirectory, according to the terms of their respective licenses. +""" +- tools/doc/node_modules/marked. Marked is a Markdown parser. Marked's license follows: +""" +Copyright (c) 2011-2012, Christopher Jeffrey (https://github.com/chjj/) +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" +- test/gc/node_modules/weak. Node-weak is a node.js addon that provides garbage collector notifications. Node-weak's license follows: +""" +Copyright (c) 2011, Ben Noordhuis +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +""" +- wrk is located at tools/wrk. wrk's license follows: +""" +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and +(b) You must cause any modified files to carry prominent notices stating that You changed the files; and +(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. +END OF TERMS AND CONDITIONS +""" +- ICU's license follows: +From http://source.icu-project.org/repos/icu/icu/trunk/license.html +""" +ICU License - ICU 1.8.1 and later +COPYRIGHT AND PERMISSION NOTICE +Copyright (c) 1995-2014 International Business Machines Corporation and others +All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. +All trademarks and registered trademarks mentioned herein are the property of their respective owners. +Third-Party Software Licenses +This section contains third-party software notices and/or additional terms for licensed third-party software components included within ICU libraries. +1. Unicode Data Files and Software +COPYRIGHT AND PERMISSION NOTICE +Copyright © 1991-2014 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in +http://www.unicode.org/copyright.html. +Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that +(a) this copyright and permission notice appear with all copies of the Data Files or Software, +(b) this copyright and permission notice appear in associated documentation, and +(c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. +2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) +The Google Chrome software developed by Google is licensed under the BSD license. Other software included in this distribution is provided under other licenses, as set forth below. +The BSD License +http://opensource.org/licenses/bsd-license.php +Copyright (C) 2006-2008, Google Inc. +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The word list in cjdict.txt are generated by combining three word lists listed below with further processing for compound word breaking. The frequency is generated with an iterative training against Google web corpora. +Libtabe (Chinese) +- https://sourceforge.net/project/?group_id=1519 +- Its license terms and conditions are shown below. +IPADIC (Japanese) +- http://chasen.aist-nara.ac.jp/chasen/distribution.html +- Its license terms and conditions are shown below. +---------COPYING.libtabe ---- BEGIN-------------------- +Copyrighy (c) 1999 TaBE Project. + Copyright (c) 1999 Pai-Hsiang Hsiao. + All rights reserved. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + . Neither the name of the TaBE Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 1999 Computer Systems and Communication Lab, Institute of Information Science, Academia Sinica. + All rights reserved. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + . Neither the name of the Computer Systems and Communication Lab nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright 1996 Chih-Hao Tsai @ Beckman Institute, University of Illinois +c-tsai4@uiuc.eduhttp://casper.beckman.uiuc.edu/~c-tsai4 +---------------COPYING.libtabe-----END------------------------------------ +---------------COPYING.ipadic-----BEGIN------------------------------------ +Copyright 2000, 2001, 2002, 2003 Nara Institute of Science and Technology.All Rights Reserved. +Use, reproduction, and distribution of this software is permitted. Any copy of this software, whether in its original form or modified, must include both the above copyright notice and the following paragraphs. +Nara Institute of Science and Technology (NAIST), the copyright holders, disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness, in no event shall NAIST be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of this software. +A large portion of the dictionary entries originate from ICOT Free Software.The following conditions for ICOT Free Software applies to the current dictionary as well. +Each User may also freely distribute the Program, whether in its original form or modified, to any third party or parties, PROVIDED that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear on, or be attached to, the Program, which is distributed substantiallyin the same form as set out herein and that such intended distribution, if actually made, will neither violate or otherwise contravene any of the laws and regulations of the countries having jurisdiction over the User or the intended distribution itself. +NO WARRANTY +The program was produced on an experimental basis in the course of the research and development conducted during the project and is provided to users as so produced on an experimental basis.Accordingly, the program is provided without any warranty whatsoever, whether express, implied, statutory or otherwise.The term "warranty" used herein includes, but is not limited to, any warranty of the quality, performance, merchantability and fitness for a particular purpose of the program and the nonexistence of any infringement or violation of any right of any third party. +Each user of the program will agree and understand, and be deemed to have agreed and understood, that there is no warranty whatsoever for the program and, accordingly, the entire risk arising from or otherwise connected with the program is assumed by the user. +Therefore, neither ICOT, the copyright holder, or any other organization that participated in or was otherwise related to the development of the program and their respective officials, directors, officers and other employees shall be held liable for any and all damages, including, without limitation, general, special, incidental and consequential damages, arising out of or otherwise in connection with the use or inability to use the program or any product, material or result produced or otherwise obtained by using the program, regardless of whether they have been advised of, or otherwise had knowledge of, the possibility of such damages at any time during the project or thereafter. Each user will be deemed to have agreed to the foregoing by his or her commencement of use of the program. The term "use" as used herein includes, but is not limited to, the use, modification, copying and distribution of the program and the production of secondary products from the program. +In the case where the program, whether in its original form or modified, was distributed or delivered to or received by a user from any person, organization or entity other than ICOT, unless it makes or grants independently of ICOT any specific warranty to the user in writing, such person, organization or entity, will also be exempted from and not be held liable to the user for any such damages as noted above as far as the program is concerned. +---------------COPYING.ipadic-----END------------------------------------ +3. Lao Word Break Dictionary Data (laodict.txt) +Copyright (c) 2013 International Business Machines Corporation and others. All Rights Reserved. +Project:http://code.google.com/p/lao-dictionary/ +Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt +License:http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt +(copied below) +This file is derived from the above dictionary, with slight modifications. +-------------------------------------------------------------------------------- +Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +4. Burmese Word Break Dictionary Data (burmesedict.txt) Copyright (c) 2014 International Business Machines Corporation and others. All Rights Reserved. +This list is part of a project hosted at: github.com/kanyawtech/myanmar-karen-word-lists +-------------------------------------------------------------------------------- +Copyright (c) 2013, LeRoy Benjamin Sharon +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name Myanmar Karen Word Lists, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +5. Time Zone Database +ICU uses the public domain data and code derived from Time Zone Database for its time zone support. The ownership of the TZ database is explained in BCP 175: Procedure for Maintaining the Time Zone Database section 7. +7. Database Ownership + The TZ database itself is not an IETF Contribution or an IETF document. Rather it is a pre-existing and regularly updated work that is in the public domain, and is intended to remain in the public domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do not apply to the TZ Database or contributions that individuals make to it. + Should any claims be made and substantiated against the TZ Database, the organization that is providing the IANA Considerations defined in this RFC, under the memorandum of understanding with the IETF, currently ICANN, may act in accordance with all competent court orders. No ownership claims will be made by ICANN or the IETF Trust on the database or the code. Any person making a contribution to the database or code waives all rights to future claims in that contribution or in the TZ Database. +""" + + + +simple-keyboard 2.32.0 +Copyright (c) 2019 Francisco Hodge +----- +Distributed under the terms of the MIT License +----- + + +== +the MIT License +== +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +suricata & nmcli +----- +Distributed under the terms of the GNU General Public License Version 2, June 1991 +----- + +Version 2, June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +24.1.1. Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + +Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. +24.1.2. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”. + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. +24.1.3. NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS +24.1.4. How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + Copyright (C) + + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’. This is free software, and you are welcome to redistribute it under certain conditions; type `show c’ for details. + +The hypothetical commands `show w` and `show c` should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w’ and `show c`; they could even be mouse-clicks or menu items–whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision’ (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. diff --git a/README.md b/README.md index e845566..3a0d88f 100644 --- a/README.md +++ b/README.md @@ -1 +1,81 @@ -README +![title](https://user-images.githubusercontent.com/25131750/200111909-e0d10587-014a-410c-be05-e7e89cf6c9f5.gif) + +### Description + +SpyGuard is a forked and enhanced version of [TinyCheck](https://github.com/KasperskyLab/TinyCheck), developed by the same author when he was working at Kaspersky. SpyGuard's main objective is to detect signs of compromise by monitoring network flows transmitted by a device. + +As it uses WiFi, SpyGuard can be used against a wide range of devices, such as smartphones, laptops, IOTs or workstations. To do its job, the analysis engine of SpyGuard is using Indicators of Compromise (IOCs), anomaly detection and is supported by [Suricata](https://suricata.io). + +### Installation + +You need a debian-like operating system to install it easly by using the provided bash script. Once you've cloned the repository, just launch `install.sh` as root. Here are the command lines to the that: + +``` +cd /tmp/ && git clone https://github.com/SpyGuard/spyguard +cd spyguard && sudo bash install.sh +``` + +Once installed, you can go to the backend interface located at `https://localhost:8443` to manage the device and setup the right network interfaces to get it working. Please look at the [dedicated wiki page](https://github.com/SpyGuard/spyguard/wiki/Installing-SpyGuard) to get some tips regarding it. + +> Please check prior the installation that your Linux distribution is using `nmcli` to manage networks. If you want to install it on a Raspberry Pi +> you need to activate it via the `raspi-config` interface. + +### Smartphone analysis best practices + +* Do the interception in a public place (library, restaurant...) or common place (office, home...); +* Intercept the network communications of the device for at least 10 minutes; +* Interact with the analysed device during the interception (reboot it, take a photo, send a message...); + +### SpyGuard and Stalkerware threat + +The indicators of compromise (IOCs) linked to stalkerware are now fully managed by [ECHAP](https://echap.eu.org), a French association working against cyberviolence. Even though stalkerware still remains a threat, remember that most of digital violence and surveillance is done by using simple means, such as hacking cloud & mail accounts. Therefore, we encourage you to consult the [ECHAP guides](https://echap.eu.org/ressources/) and apply their advice to your digital life alongside of device checks. + +> It is worth mentioning that the IOCs are distributed under the **Creative Common BY-NC-SA** licence. +> This imply a **non commercial use** of them. Please respect this licence and ask ECHAP for any question related to that. + +### Commercial use + +You can use SpyGuard in a commercial product. However, you can't use SpyGuard as the name of your product and you’re still required to follow the terms and conditions that the Apache License imposes, like refering to the SpyGuard project in customer documentation. Moreover, a sweet note to explain your use to the author is always appreciated, please see the contact below. + +### Contact + +If you need an express help or specific developements or your own needs, do not hesitate to contact [the author](https://twitter.com/felixaime) via Twitter or by sending an email at spyguard@protonmail.com. A bug? Do not hesitate to open a [new issue](https://github.com/SpyGuard/spyguard/issues). + +### They have contributed to or helped this project + +

+    + +

+ +To work, Spyguard is using a lot of awesome opensource projects, libraries, and fonts, kudos to them: + +[Dumpcap](https://tshark.dev/capture/dumpcap/), +[Dig](https://github.com/tigeli/bind-utils), +[Suricata](https://suricata.io/), +[NetworkManager](https://github.com/NetworkManager/NetworkManager), +[Python](https://www.python.org), +[VueJS](https://vuejs.org), +[Pip](https://github.com/pypa/pip), +[pydig](https://pypi.org/project/pydig/), +[pymisp](https://pypi.org/project/pymisp), +[netaddr](https://pypi.org/project/netaddr), +[pyyaml](https://pypi.org/project/pyyaml), +[flask](https://pypi.org/project/flask), +[flask_httpauth](https://pypi.org/project/flask_httpauth), +[pyjwt](https://pypi.org/project/pyjwt), +[sqlalchemy](https://pypi.org/project/sqlalchemy), +[psutil](https://pypi.org/project/psutil), +[pyudev](https://pypi.org/project/pyudev), +[qrcode](https://pypi.org/project/qrcode), +[netifaces](https://pypi.org/project/netifaces), +[weasyprint](https://pypi.org/project/weasyprint), +[python-whois](https://pypi.org/project/python-whois), +[publicsuffix2](https://pypi.org/project/publicsuffix2), +[six](https://pypi.org/project/six), +[Exo2 font](https://github.com/NDISCOVER/Exo-2.0), +[Virtual Keyboard](https://virtual-keyboard.js.org/vuejs/), +[OpenSSL](https://www.openssl.org), +[Spectre CSS](https://picturepan2.github.io/spectre/). + +Icons and design created via [Figma](https://www.figma.com). diff --git a/analysis/__init__.py b/analysis/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/analysis/analysis.py b/analysis/analysis.py new file mode 100755 index 0000000..b814e2d --- /dev/null +++ b/analysis/analysis.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from classes.engine import Engine +from classes.report import Report +import sys +import json +import os + +""" + This file is called by the frontend to do the analysis. +""" + +def analyze(capture_folder): + """This method analyse a pcap. It: + 1. Launches the detection engine which uses suricata; + 2. Save the results inside the "assets" subfolder of the capture folder; + 3. Generates the PDF report and save it in the capture folder. + + Args: + capture_folder (str): The capture folder (eg. /tmp/45FB392D/) + """ + if os.path.isdir(capture_folder): + + alerts = {} + + # Create the assets folder. + if not os.path.isdir(os.path.join(capture_folder, "assets")): + os.mkdir(os.path.join(capture_folder, "assets")) + + # Starts the engine and get alerts + engine = Engine(capture_folder) + engine.start_engine() + alerts = engine.get_alerts() + analysis_duration = (engine.analysis_end-engine.analysis_start).seconds + + # alerts.json writing. + with open(os.path.join(capture_folder, "assets/alerts.json"), "w") as f: + report = {"high": [], "moderate": [], "low": []} + for alert in alerts: + if alert["level"] == "High": + report["high"].append(alert) + if alert["level"] == "Moderate": + report["moderate"].append(alert) + if alert["level"] == "Low": + report["low"].append(alert) + f.write(json.dumps(report, indent=4, separators=(',', ': '))) + + # records.json writing. + with open(os.path.join(capture_folder, "assets/records.json"), "w") as f: + f.write(json.dumps(engine.records, indent=4, separators=(',', ': '))) + + # detection_methods.json writing. + with open(os.path.join(capture_folder, "assets/detection_methods.json"), "w") as f: + f.write(json.dumps(engine.detection_methods, indent=4, separators=(',', ': '))) + + # errors.json writing. + with open(os.path.join(capture_folder, "assets/errors.json"), "w") as f: + f.write(json.dumps(engine.errors, indent=4, separators=(',', ': '))) + + # Generate the PDF report + report = Report(capture_folder, analysis_duration) + report.generate_report() + + else: + print("The folder doesn't exist.") + +def usage(): + """Shows the usage output.""" + print(""" Usage: python analysis.py [capture_folder] where [capture_folder] is a folder containing a capture.pcap file """) + +if __name__ == "__main__": + if len(sys.argv) == 2: + analyze(sys.argv[1]) + else: + usage() + + + diff --git a/analysis/classes/engine.py b/analysis/classes/engine.py new file mode 100755 index 0000000..94f5576 --- /dev/null +++ b/analysis/classes/engine.py @@ -0,0 +1,739 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import json +import os +import re +import subprocess as sp +import sys +from datetime import datetime +from ipaddress import IPv4Address, IPv6Address + +import ssl +import socket +import OpenSSL +import requests + +import pydig +import whois +from publicsuffix2 import get_sld +from netaddr import IPAddress, IPNetwork +from classes.jarm import get_jarm +from utils import get_config, get_iocs, get_whitelist + + +class Engine(): + + def __init__(self, capture_directory): + + # Set some vars. + self.analysis_start = datetime.now() + self.connected = self.check_internet() + self.working_dir = capture_directory + self.assets_dir = f"{capture_directory}/assets/" + self.rules_file = "/tmp/rules.rules" + self.pcap_path = os.path.join(self.working_dir, "capture.pcap") + self.records = [] + self.alerts = [] + self.dns = [] + self.files = [] + self.whitelist = [] + self.uncategorized = [] + self.analysed = [] + self.dns_failed = [] + self.dns_checked = [] + self.cert_checked = [] + self.errors = [] + self.analysis_end = None + + # Get configuration + self.heuristics_analysis = get_config(("analysis", "heuristics")) + self.iocs_analysis = get_config(("analysis", "iocs")) + self.whitelist_analysis = get_config(("analysis", "whitelist")) + self.active_analysis = get_config(("analysis", "active")) + self.userlang = get_config(("frontend", "user_lang")) + self.max_ports = get_config(("analysis", "max_ports")) + self.http_default_ports = get_config(("analysis", "http_default_ports")) + self.tls_default_ports = get_config(("analysis", "tls_default_ports")) + self.free_issuers = get_config(("analysis", "free_issuers")) + self.max_alerts = get_config(("analysis", "max_alerts")) + self.indicators_types = get_config(("analysis", "indicators_types")) + + # Save detection methods used. + self.detection_methods = { "iocs" : self.iocs_analysis, + "heuristics" : self.heuristics_analysis, + "active" : self.active_analysis } + + # Retreive IOCs. + if self.iocs_analysis: + self.bl_cidrs = [[IPNetwork(cidr[0]), cidr[1]] for cidr in get_iocs("cidr")] + self.bl_hosts = get_iocs("ip4addr") + get_iocs("ip6addr") + self.tor_nodes = self.get_tor_nodes() + self.bl_domains = get_iocs("domain") + self.bl_freedns = get_iocs("freedns") + self.bl_certs = get_iocs("sha1cert") + self.bl_jarms = get_iocs("jarm") + self.bl_nameservers = get_iocs("ns") + self.bl_tlds = get_iocs("tld") + + # Retreive whitelisted items. + if self.whitelist_analysis: + self.wl_cidrs = [IPNetwork(cidr) for cidr in get_whitelist("cidr")] + self.wl_hosts = get_whitelist("ip4addr") + get_whitelist("ip6addr") + self.get_public_ip() + self.wl_domains = get_whitelist("domain") + + # Load template language + if not re.match("^[a-z]{2,3}$", self.userlang): self.userlang = "en" + + with open(os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "locales/{}.json".format(self.userlang))) as f: + self.template = json.load(f)["alerts"] + + def check_internet(self) -> bool: + """Check the internet link just with a small http request + to an URL present in the configuration + + Returns: + bool: True if everything works. + """ + try: + url = get_config(("network", "internet_check")) + requests.get(url, timeout=3) + return True + except: + return False + + def get_public_ip(self) -> list: + """Get the public IP address + + Returns: + list: list containing the public IP address. + """ + if self.connected: + try: + return [requests.get("https://api.ipify.org", timeout=3).text] + except: + return [] + else: + return [] + + def start_engine(self): + """ This method starts suricata and then launch the + parsers to analyse the output logs. + """ + + # Parse the eve.json file. + self.parse_eve_file() + + # For each type of records, check it against heuristics. + for record in self.records: + if self.whitelist_analysis: self.check_whitelist(record) + self.check_domains(record) + self.check_flow(record) + self.check_tls(record) + self.check_http(record) + + # Check for failed DNS answers (if spyguard not connected) + for dnsname in list(set(self.dns_failed)): + self.check_dnsname(dnsname) + + def parse_eve_file(self): + """This method parses the eve.json file produced by suricata. + For each record, it look at the record type and then append the self.record + dictionnary which contains valuable data to look at suspicious stuff. + """ + for record in open(f"{self.assets_dir}eve.json", "r").readlines(): + record = json.loads(record) + try: + if "flow" in record: + if "app_proto" not in record: record["app_proto"] = "failed" + proto = { "name" : record["app_proto"].upper() if record["app_proto"] != "failed" else record["proto"].upper(), "port" : record["dest_port"] if "dest_port" in record else -1 } + + if record["dest_ip"] not in [r["ip_dst"] for r in self.records]: + self.records.append({ + "ip_dst" : record["dest_ip"], + "whitelisted" : False, + "suspicious" : False, + "protocols" : [proto], + "domains" : [], + "certificates" : [] + }) + else: + for rec in self.records: + if record["dest_ip"] == rec["ip_dst"]: + if proto not in rec["protocols"]: + rec["protocols"].append(proto) + except Exception as e: + self.errors.append(f"Issue when processing the following eve record (flow): {json.dumps(record)}") + + for record in open(f"{self.assets_dir}eve.json", "r").readlines(): + record = json.loads(record) + try: + if "tls" in record: + for rec in self.records: + if record["dest_ip"] == rec["ip_dst"]: + if "version" in record["tls"]: + if float(record["tls"]["version"].split(" ")[1]) < 1.3 and not "session_resumed" in record["tls"]: + if record["tls"] not in rec["certificates"]: + record["tls"]["port"] = record["dest_port"] + rec["certificates"].append(record["tls"]) + else: + if "sni" in record["tls"] and record["tls"]["sni"] not in [c["sni"] for c in rec["certificates"]]: + rec["certificates"].append({ "sni" : record["tls"]["sni"], "version" : record["tls"]["version"], "port" : record["dest_port"] }) + else: + rec["certificates"].append({ "version" : record["tls"]["version"], "port" : record["dest_port"] }) + except Exception as e: + self.errors.append(f"Issue when processing the following eve record (tls): {json.dumps(record)}") + + for record in open(f"{self.assets_dir}eve.json", "r").readlines(): + record = json.loads(record) + try: + if "http" in record: + for rec in self.records: + if record["dest_ip"] == rec["ip_dst"]: + d = { "hostname" : record["http"]["hostname"] } + if "http_user_agent" in record["http"]: + d["user-agent"] = record["http"]["http_user_agent"] + if "http" in rec: + if not d in rec["http"]: + rec["http"].append(d) + else: + rec["http"] = [d] + except Exception as e: + self.errors.append(f"Issue when processing the following eve record (http): {json.dumps(record)}") + + for record in open(f"{self.assets_dir}eve.json", "r").readlines(): + record = json.loads(record) + try: + if "dns" in record: + if record["dns"]["type"] == "answer": + for rec in self.records: + if record["dns"]["rcode"] == "NOERROR": + if "grouped" in record["dns"]: + if "A" in record["dns"]["grouped"] and rec["ip_dst"] in record["dns"]["grouped"]["A"]: + if record["dns"]["rrname"] not in rec["domains"]: + rec["domains"].append(record["dns"]["rrname"]) + elif "AAAA" in record["dns"]["grouped"] and rec["ip_dst"] in record["dns"]["grouped"]["AAAA"]: + if record["dns"]["rrname"] not in rec["domains"]: + rec["domains"].append(record["dns"]["rrname"]) + elif record["dns"]["rcode"] == "SERVFAIL": + self.dns_failed.append(record["dns"]["rrname"]) + except Exception as e: + self.errors.append(f"Issue when processing the following eve record (dns answer): {json.dumps(record)}") + + # This pass is if SpyGuard is not connected to Internet. + # We still analyze the un answered DNS queries. + for record in open(f"{self.assets_dir}eve.json", "r").readlines(): + record = json.loads(record) + try: + if "dns" in record: + if record["dns"]["type"] == "query": + if record["dns"]["rrname"] not in sum([r["domains"] for r in self.records], []): + self.records.append({ + "ip_dst" : "--", + "whitelisted" : False, + "suspicious" : False, + "protocols" : [{"name" : "DNS", "port" : "53"}], + "domains" : [record["dns"]["rrname"]], + "certificates" : [] + }) + except Exception as e: + self.errors.append(f"Issue when processing the following eve record (dns query): {json.dumps(record)}") + + for record in open(f"{self.assets_dir}eve.json", "r").readlines(): + record = json.loads(record) + try: + if "alert" in record and record["event_type"] == "alert": + for rec in self.records: + if record["dest_ip"] == rec["ip_dst"]: + rec["suspicious"] = True + self.alerts.append({"title": self.template["SNORT-01"]["title"].format(record["alert"]["signature"]), + "description": self.template["SNORT-01"]["description"].format(rec["ip_dst"]), + "host": rec["ip_dst"], + "level": "High", + "id": "SNORT-01"}) + + except Exception as e: + self.errors.append(f"Issue when processing the following eve record (dns answer): {json.dumps(record)}") + + + def check_whitelist(self, record): + """ This method is asked on each record. It: + + 1. Check if the associated IP(v4/6) Address can be whitelisted + 2. Check if one of the associated domain names can be whitelisted. + + If its the case, the "whitelisted" key of the record is set to True. + Therefore, the record will be ignored for the rest of the analysis. + Args: + record (dict): record to be processed. + """ + + try: + assert IPv4Address(record["ip_dst"]) + + if IPv4Address('224.0.0.0') <= IPv4Address(record["ip_dst"]) <= IPv4Address('239.255.255.255'): + record["whitelisted"] = True + return + + for cidr in self.wl_cidrs: + if IPAddress(record["ip_dst"]) in cidr: + record["whitelisted"] = True + return + + for ip in self.wl_hosts: + if record["ip_dst"] == ip: + record["whitelisted"] = True + return + except: + pass + + try: + assert IPv6Address(record["ip_dst"]) + + if [record["ip_dst"].startswith(prefix) for prefix in ["fe80", "fc00", "ff02"]]: + record["whitelisted"] = True + return + + for ip in self.wl_hosts: + if record["ip_dst"] == ip: + record["whitelisted"] = True + return + except: + pass + + # We check if at least one of the associated + # domains is whitelisted + for dom in self.wl_domains: + for domain in record["domains"]: + if domain.endswith(dom): + record["whitelisted"] = True + return + + def check_domains(self, record): + """Check the domains associated to each record. + First this method checks if the record is whitelisted. If not: + 1. Leverage a low alert if the record don't have any associated DNSName + 2. Check each domain associated to the record by calling check_dnsname. + Args: + record (dict): record to be processed. + """ + if record["whitelisted"]: return + + if self.heuristics_analysis: + # Otherwise, we alert the user that an IP haven't been resolved by + # a DNS answer during the session... + if record["domains"] == []: + record["suspicious"] = True + self.alerts.append({"title": self.template["PROTO-05"]["title"].format(record["ip_dst"]), + "description": self.template["PROTO-05"]["description"].format(record["ip_dst"]), + "host": record["ip_dst"], + "level": "Low", + "id": "PROTO-05"}) + + # Check each associated domain. + for domain in record["domains"]: + if self.check_dnsname(domain): + record["suspicious"] = True + + def check_dnsname(self, dnsname): + """Check a domain name against a set of IOCs / heuristics. + 1. Check if the parent domain is blacklisted. + 2. Check if the parent domain is a Free DNS. + 3. Check if the domain extension is a suspicious TLD. + 4. Check if the name servers associated to the domain are suspicious. + 5. Check if the domain have been registered recently - less than one year. + Args: + record (dict): record to be processed. + Returns: + supicious (bool) : if an alert has been leveraged. + """ + suspicious = False + + if self.iocs_analysis: + for domain in self.bl_domains: + if dnsname.endswith(domain[0]) and any(t in self.indicators_types for t in [domain[1], "all"]): + if domain[1] == "dual": + suspicious = True + self.alerts.append({"title": self.template["IOC-12"]["title"], + "description": self.template["IOC-12"]["description"].format(domain[0]), + "host": domain[0], + "level": "Low", + "id": "IOC-12"}) + elif domain[1] == "tracker": + suspicious = True + self.alerts.append({"title": self.template["IOC-04"]["title"].format(domain[0], "tracker"), + "description": self.template["IOC-04"]["description"].format(domain[0], "tracker"), + "host": domain[0], + "level": "Low", + "id": "IOC-04"}) + elif domain[1] == "doh": + suspicious = True + self.alerts.append({"title": self.template["IOC-13"]["title"].format(f"{dnsname}"), + "description": self.template["IOC-13"]["description"].format(f"{dnsname}"), + "host": dnsname, + "level": "Low", + "id": "IOC-13"}) + else: + suspicious = True + self.alerts.append({"title": self.template["IOC-03"]["title"].format(dnsname, domain[1].upper()), + "description": self.template["IOC-03"]["description"].format(dnsname), + "host": dnsname, + "level": "High", + "id": "IOC-03"}) + for domain in self.bl_freedns: + if dnsname.endswith(domain[0]) and any(t in self.indicators_types for t in [domain[1], "all"]): + suspicious = True + self.alerts.append({"title": self.template["IOC-05"]["title"].format(dnsname), + "description": self.template["IOC-05"]["description"].format(dnsname), + "host": dnsname, + "level": "Moderate", + "id": "IOC-05"}) + + if self.heuristics_analysis: + for domain in self.bl_tlds: + if dnsname.endswith(domain[0]) and any(t in self.indicators_types for t in [domain[1], "all"]): + suspicious = True + self.alerts.append({"title": self.template["IOC-06"]["title"].format(dnsname), + "description": self.template["IOC-06"]["description"].format(dnsname, domain[0]), + "host": dnsname, + "level": "Low", + "id": "IOC-06"}) + + if self.active_analysis and self.connected: + domain = get_sld(dnsname) + if domain not in self.dns_checked: + self.dns_checked.append(domain) + try: + name_servers = pydig.query(domain, "NS") + if len(name_servers): + for ns in self.bl_nameservers: + if name_servers[0].endswith(".{}.".format(ns[0])) and any(t in self.indicators_types for t in [ns[1], "all"]): + suspicious = True + self.alerts.append({"title": self.template["ACT-01"]["title"].format(dnsname, name_servers[0]), + "description": self.template["ACT-01"]["description"].format(dnsname), + "host": dnsname, + "level": "Moderate", + "id": "ACT-01"}) + except Exception as e: + self.errors.append(f"Issue when doing a dig NS query to {domain}, are you connected? Error: {str(e)}") + + try: + whois_record = whois.whois(domain) + creation_date = whois_record.creation_date if type(whois_record.creation_date) is not list else whois_record.creation_date[0] + creation_days = abs((datetime.now() - creation_date).days) + if creation_days < 365: + suspicious = True + self.alerts.append({"title": self.template["ACT-02"]["title"].format(dnsname, creation_days), + "description": self.template["ACT-02"]["description"].format(dnsname), + "host": dnsname, + "level": "Moderate", + "id": "ACT-02"}) + except Exception as e: + self.errors.append(f"Issue when doing a WHOIS query to {domain}, are you connected? Error: {str(e)}") + + return suspicious + + + def check_flow(self, record): + """Check a network flow against a set of IOCs / heuristics. + 1. Check if the IP Address is blacklisted + 2. Check if the IP Address is inside a blacklisted CIDR + 3. Check if the UDP or ICMP protocol is going outside of the local network. + 4. Check if the HTTP protocol is not using default HTTP ports. + 5. Check if the network flow is using a port > 1024. + Args: + record (dict): record to be processed. + Returns: + supicious (bool) : if an alert has been leveraged. + """ + if record["whitelisted"]: return + + resolved_host = record["domains"][0] if len(record["domains"]) else record["ip_dst"] + + if self.iocs_analysis: + for host in self.bl_hosts: + if record["ip_dst"] == host[0] and any(t in self.indicators_types for t in [host[1], "all"]): + if host[1] == "dual": + record["suspicious"] = True + self.alerts.append({"title": self.template["IOC-12"]["title"], + "description": self.template["IOC-12"]["description"].format(resolved_host), + "host": resolved_host, + "level": "Low", + "id": "IOC-12"}) + if host[1] == "tracker": + record["suspicious"] = True + self.alerts.append({"title": self.template["IOC-04"]["title"].format(resolved_host, "tracker"), + "description": self.template["IOC-04"]["description"].format(resolved_host, "tracker"), + "host": resolved_host, + "level": "Low", + "id": "IOC-04"}) + elif host[1] == "doh": + if 443 in [p["port"] for p in record["protocols"]]: + record["suspicious"] = True + self.alerts.append({"title": self.template["IOC-13"]["title"].format(f"{resolved_host}"), + "description": self.template["IOC-13"]["description"].format(f"{resolved_host}"), + "host": resolved_host, + "level": "Low", + "id": "IOC-13"}) + else: + record["suspicious"] = True + self.alerts.append({"title": self.template["IOC-01"]["title"].format(resolved_host, record["ip_dst"], host[1].upper()), + "description": self.template["IOC-01"]["description"].format(f"{resolved_host} ({record['ip_dst']})"), + "host": resolved_host, + "level": "High", + "id": "IOC-01"}) + break + + for host in self.tor_nodes: + if record["ip_dst"] == host: + record["suspicious"] = True + self.alerts.append({"title": self.template["IOC-11"]["title"].format(resolved_host, record["ip_dst"]), + "description": self.template["IOC-11"]["description"].format(f"{resolved_host} ({record['ip_dst']})"), + "host": resolved_host, + "level": "High", + "id": "IOC-11"}) + break + + for cidr in self.bl_cidrs: + try: + if IPAddress(record["ip_dst"]) in cidr[0] and any(t in self.indicators_types for t in [cidr[1], "all"]): + record["suspicious"] = True + self.alerts.append({"title": self.template["IOC-02"]["title"].format(resolved_host, cidr[0], cidr[1].upper()), + "description": self.template["IOC-02"]["description"].format(record["ip_dst"]), + "host": resolved_host, + "level": "Moderate", + "id": "IOC-02"}) + except: + continue + + if self.heuristics_analysis: + for protocol in record["protocols"]: + if protocol["name"] in ["UDP", "ICMP", "IPV6-ICMP"]: + record["suspicious"] = True + self.alerts.append({"title": self.template["PROTO-01"]["title"].format(protocol["name"], resolved_host), + "description": self.template["PROTO-01"]["description"].format(protocol["name"], resolved_host), + "host": resolved_host, + "level": "Moderate", + "id": "PROTO-01"}) + try: + if protocol["port"] >= int(self.max_ports): + record["suspicious"] = True + self.alerts.append({"title": self.template["PROTO-02"]["title"].format("", resolved_host, self.max_ports), + "description": self.template["PROTO-02"]["description"].format("", resolved_host, protocol["port"]), + "host": resolved_host, + "level": "Low", + "id": "PROTO-02"}) + except: + pass + + if protocol["name"] == "HTTP": + record["suspicious"] = True + self.alerts.append({"title": self.template["PROTO-03"]["title"].format(resolved_host), + "description": self.template["PROTO-03"]["description"].format(resolved_host), + "host": resolved_host, + "level": "Low", + "id": "PROTO-03"}) + + if protocol["name"] == "HTTP" and protocol["port"] not in self.http_default_ports: + record["suspicious"] = True + self.alerts.append({"title": self.template["PROTO-04"]["title"].format(resolved_host, protocol["port"]), + "description": self.template["PROTO-04"]["description"].format(resolved_host, protocol["port"]), + "host": resolved_host, + "level": "Moderate", + "id": "PROTO-04"}) + + def check_tls(self, record): + """Check a TLS protocol and certificates against a set of IOCs / heuristics. + Note since TLS 1.3, the certificate is not exchanged in clear text, therefore + we need to check it "actively" via the method active_check_ssl. + + 1. Check if the TLS record is not using default TLS ports. + 2. Check if one of the certificates is a free one, like Let's Encrypt. + 3. Check if the certificate is auto-signed. + 4. If the certificate has an SNI, check the domain by calling check_dnsname. + Args: + record (dict): record to be processed. + Returns: + supicious (bool) : if an alert has been leveraged. + """ + if record["whitelisted"]: return + + resolved_host = record["domains"][0] if len(record["domains"]) else record["ip_dst"] + + for certificate in record["certificates"]: + + try: + if "sni" in certificate and certificate["sni"] not in record["domains"]: + if certificate["sni"]: + if self.check_dnsname(certificate["sni"]): + record["suspicious"] = True + + if certificate["port"] not in self.tls_default_ports: + record["suspicious"] = True + self.alerts.append({"title": self.template["SSL-01"]["title"].format(certificate["port"], resolved_host), + "description": self.template["SSL-01"]["description"].format(resolved_host), + "host": resolved_host, + "level": "Moderate", + "id": "SSL-01"}) + + if float(certificate["version"].split(" ")[1]) < 1.3 and "issuerdn" in certificate: + + if certificate["issuerdn"] in self.free_issuers: + record["suspicious"] = True + self.alerts.append({"title": self.template["SSL-02"]["title"].format(resolved_host), + "description": self.template["SSL-02"]["description"], + "host": resolved_host, + "level": "Moderate", + "id": "SSL-02"}) + + elif certificate["issuerdn"] == certificate["subject"]: + record["suspicious"] = True + self.alerts.append({"title": self.template["SSL-03"]["title"].format(resolved_host), + "description": self.template["SSL-03"]["description"].format(resolved_host), + "host": resolved_host, + "level": "Moderate", + "id": "SSL-03"}) + else: + if self.active_analysis and self.connected: + if "sni" in certificate: + if certificate["sni"] not in self.cert_checked: + self.cert_checked.append(certificate["sni"]) + if self.active_check_ssl(certificate["sni"], certificate["port"]): + record["suspicious"] = True + break + else: + if resolved_host not in self.cert_checked: + self.cert_checked.append(resolved_host) + if self.active_check_ssl(resolved_host, certificate["port"]): + record["suspicious"] = True + break + except Exception as e: + self.errors.append(f"Issue when processing the following certificate (check_tls): {json.dumps(certificate)}") + + def get_tor_nodes(self) -> list: + """Get a list of TOR nodes from dan.me.uk. + + Returns: + list: list of TOR nodes + """ + + nodes = [] + if os.path.exists("/tmp/tor_nodes.lst"): + with open("/tmp/tor_nodes.lst", "r") as f: + for l in f.readlines(): + nodes.append(l.strip()) + else: + if self.connected: + try: + nodes_list = requests.get("https://www.dan.me.uk/torlist/", timeout=10).text + with open("/tmp/tor_nodes.lst", "w+") as f: + f.write(nodes_list) + for l in nodes_list.splitlines(): + nodes.append(l.strip()) + except: + self.errors.append(f"Issue when trying to get TOR nodes from dan.me.uk") + return nodes + + + def check_http(self, record): + """Check the HTTP hostname against a set of IOCs / heuristics. + Args: + record (dict): record to be processed. + Returns: + supicious (bool) : if an alert has been leveraged. + """ + if record["whitelisted"]: return + + if "http" in record: + for http in record["http"]: + if http["hostname"] not in record["domains"]: + if re.match("^[a-z\.0-9\-]+\.[a-z\-]{2,}$", http["hostname"]): + if http["hostname"]: + if self.check_dnsname(http["hostname"]): + record["suspicious"] = True + + def active_check_ssl(self, host, port): + """This method: + + 1. Check the issuer and subject of a certificate directly by connecting + to the remote server in order to bypass TLS 1.3+ restrictions. + Most of this method was been taken from: https://tinyurl.com/3vsvhu79 + + 2. Get the JARM of the remote server by using the standard poc library + from sales force. + + Args: + host (str): Host to connect to + port (int): Port to connect to + """ + try: + suspect = False + context = ssl.create_default_context() + conn = socket.create_connection((host, port)) + sock = context.wrap_socket(conn, server_hostname=host) + sock.settimeout(5) + try: + der_cert = sock.getpeercert(True) + finally: + sock.close() + + if "der_cert" in locals(): + + certificate = ssl.DER_cert_to_PEM_cert(der_cert) + x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, certificate) + + issuer = dict(x509.get_issuer().get_components()) + subject = dict(x509.get_subject().get_components()) + certhash = x509.digest("sha1").decode("utf8").replace(":", "").lower() + issuer = ", ".join(f"{k.decode('utf8')}={v.decode('utf8')}" for k, v in issuer.items()) + subject = ", ".join(f"{k.decode('utf8')}={v.decode('utf8')}" for k, v in subject.items()) + + if issuer in self.free_issuers: + self.alerts.append({"title": self.template["SSL-02"]["title"].format(host), + "description": self.template["SSL-02"]["description"], + "host": host, + "level": "Moderate", + "id": "SSL-02"}) + suspect = True + + if issuer == subject: + self.alerts.append({"title": self.template["SSL-03"]["title"].format(host), + "description": self.template["SSL-03"]["description"].format(host), + "host": host, + "level": "Moderate", + "id": "SSL-03"}) + suspect = True + + if self.iocs_analysis: + for cert in self.bl_certs: + if cert[0] == certhash and any(t in self.indicators_types for t in [cert[1], "all"]): + self.alerts.append({"title": self.template["SSL-04"]["title"].format(host, cert[1].upper()), + "description": self.template["SSL-04"]["description"].format(host), + "host": host, + "level": "High", + "id": "SSL-04"}) + suspect = True + + if self.bl_jarms: + host_jarm = get_jarm(host, port) + for jarm in self.bl_jarms: + if jarm[0] == host_jarm and any(t in self.indicators_types for t in [jarm[1], "all"]): + self.alerts.append({"title": self.template["SSL-05"]["title"].format(host, cert[1].upper()), + "description": self.template["SSL-05"]["description"].format(host), + "host": host, + "level": "High", + "id": "SSL-05"}) + suspect = True + return suspect + except: + self.errors.append(f"Issue when trying to grab the SSL certificate located at {host}:{port}") + return False + + def get_alerts(self): + """Retrieves the alerts triggered during the analysis + + Returns: + list: list of the alerts. + """ + self.analysis_end = datetime.now() + return [dict(t) for t in {tuple(d.items()) for d in self.alerts}] diff --git a/analysis/classes/jarm.py b/analysis/classes/jarm.py new file mode 100644 index 0000000..e2efab2 --- /dev/null +++ b/analysis/classes/jarm.py @@ -0,0 +1,477 @@ +# Version 1.0 (November 2020) +# +# Created by: +# John Althouse +# Andrew Smart +# RJ Nunaly +# Mike Brady +# +# Converted to Python by: +# Caleb Yu +# +# Copyright (c) 2020, salesforce.com, inc. +# All rights reserved. +# Licensed under the BSD 3-Clause license. +# For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause +# + +from __future__ import print_function + +import codecs +import socket +import struct +import os +import random +import hashlib +import ipaddress + +#Randomly choose a grease value +def choose_grease(): + grease_list = [b"\x0a\x0a", b"\x1a\x1a", b"\x2a\x2a", b"\x3a\x3a", b"\x4a\x4a", b"\x5a\x5a", b"\x6a\x6a", b"\x7a\x7a", b"\x8a\x8a", b"\x9a\x9a", b"\xaa\xaa", b"\xba\xba", b"\xca\xca", b"\xda\xda", b"\xea\xea", b"\xfa\xfa"] + return random.choice(grease_list) + +def packet_building(jarm_details): + payload = b"\x16" + #Version Check + if jarm_details[2] == "TLS_1.3": + payload += b"\x03\x01" + client_hello = b"\x03\x03" + elif jarm_details[2] == "SSLv3": + payload += b"\x03\x00" + client_hello = b"\x03\x00" + elif jarm_details[2] == "TLS_1": + payload += b"\x03\x01" + client_hello = b"\x03\x01" + elif jarm_details[2] == "TLS_1.1": + payload += b"\x03\x02" + client_hello = b"\x03\x02" + elif jarm_details[2] == "TLS_1.2": + payload += b"\x03\x03" + client_hello = b"\x03\x03" + #Random values in client hello + client_hello += os.urandom(32) + session_id = os.urandom(32) + session_id_length = struct.pack(">B", len(session_id)) + client_hello += session_id_length + client_hello += session_id + #Get ciphers + cipher_choice = get_ciphers(jarm_details) + client_suites_length = struct.pack(">H", len(cipher_choice)) + client_hello += client_suites_length + client_hello += cipher_choice + client_hello += b"\x01" #cipher methods + client_hello += b"\x00" #compression_methods + #Add extensions to client hello + extensions = get_extensions(jarm_details) + client_hello += extensions + #Finish packet assembly + inner_length = b"\x00" + inner_length += struct.pack(">H", len(client_hello)) + handshake_protocol = b"\x01" + handshake_protocol += inner_length + handshake_protocol += client_hello + outer_length = struct.pack(">H", len(handshake_protocol)) + payload += outer_length + payload += handshake_protocol + return payload + +def get_ciphers(jarm_details): + selected_ciphers = b"" + #Two cipher lists: NO1.3 and ALL + if jarm_details[3] == "ALL": + list = [b"\x00\x16", b"\x00\x33", b"\x00\x67", b"\xc0\x9e", b"\xc0\xa2", b"\x00\x9e", b"\x00\x39", b"\x00\x6b", b"\xc0\x9f", b"\xc0\xa3", b"\x00\x9f", b"\x00\x45", b"\x00\xbe", b"\x00\x88", b"\x00\xc4", b"\x00\x9a", b"\xc0\x08", b"\xc0\x09", b"\xc0\x23", b"\xc0\xac", b"\xc0\xae", b"\xc0\x2b", b"\xc0\x0a", b"\xc0\x24", b"\xc0\xad", b"\xc0\xaf", b"\xc0\x2c", b"\xc0\x72", b"\xc0\x73", b"\xcc\xa9", b"\x13\x02", b"\x13\x01", b"\xcc\x14", b"\xc0\x07", b"\xc0\x12", b"\xc0\x13", b"\xc0\x27", b"\xc0\x2f", b"\xc0\x14", b"\xc0\x28", b"\xc0\x30", b"\xc0\x60", b"\xc0\x61", b"\xc0\x76", b"\xc0\x77", b"\xcc\xa8", b"\x13\x05", b"\x13\x04", b"\x13\x03", b"\xcc\x13", b"\xc0\x11", b"\x00\x0a", b"\x00\x2f", b"\x00\x3c", b"\xc0\x9c", b"\xc0\xa0", b"\x00\x9c", b"\x00\x35", b"\x00\x3d", b"\xc0\x9d", b"\xc0\xa1", b"\x00\x9d", b"\x00\x41", b"\x00\xba", b"\x00\x84", b"\x00\xc0", b"\x00\x07", b"\x00\x04", b"\x00\x05"] + elif jarm_details[3] == "NO1.3": + list = [b"\x00\x16", b"\x00\x33", b"\x00\x67", b"\xc0\x9e", b"\xc0\xa2", b"\x00\x9e", b"\x00\x39", b"\x00\x6b", b"\xc0\x9f", b"\xc0\xa3", b"\x00\x9f", b"\x00\x45", b"\x00\xbe", b"\x00\x88", b"\x00\xc4", b"\x00\x9a", b"\xc0\x08", b"\xc0\x09", b"\xc0\x23", b"\xc0\xac", b"\xc0\xae", b"\xc0\x2b", b"\xc0\x0a", b"\xc0\x24", b"\xc0\xad", b"\xc0\xaf", b"\xc0\x2c", b"\xc0\x72", b"\xc0\x73", b"\xcc\xa9", b"\xcc\x14", b"\xc0\x07", b"\xc0\x12", b"\xc0\x13", b"\xc0\x27", b"\xc0\x2f", b"\xc0\x14", b"\xc0\x28", b"\xc0\x30", b"\xc0\x60", b"\xc0\x61", b"\xc0\x76", b"\xc0\x77", b"\xcc\xa8", b"\xcc\x13", b"\xc0\x11", b"\x00\x0a", b"\x00\x2f", b"\x00\x3c", b"\xc0\x9c", b"\xc0\xa0", b"\x00\x9c", b"\x00\x35", b"\x00\x3d", b"\xc0\x9d", b"\xc0\xa1", b"\x00\x9d", b"\x00\x41", b"\x00\xba", b"\x00\x84", b"\x00\xc0", b"\x00\x07", b"\x00\x04", b"\x00\x05"] + #Change cipher order + if jarm_details[4] != "FORWARD": + list = cipher_mung(list, jarm_details[4]) + #Add GREASE to beginning of cipher list (if applicable) + if jarm_details[5] == "GREASE": + list.insert(0,choose_grease()) + #Generate cipher list + for cipher in list: + selected_ciphers += cipher + return selected_ciphers + +def cipher_mung(ciphers, request): + output = [] + cipher_len = len(ciphers) + #Ciphers backward + if (request == "REVERSE"): + output = ciphers[::-1] + #Bottom half of ciphers + elif (request == "BOTTOM_HALF"): + if (cipher_len % 2 == 1): + output = ciphers[int(cipher_len/2)+1:] + else: + output = ciphers[int(cipher_len/2):] + #Top half of ciphers in reverse order + elif (request == "TOP_HALF"): + if (cipher_len % 2 == 1): + output.append(ciphers[int(cipher_len/2)]) + #Top half gets the middle cipher + output += cipher_mung(cipher_mung(ciphers, "REVERSE"),"BOTTOM_HALF") + #Middle-out cipher order + elif (request == "MIDDLE_OUT"): + middle = int(cipher_len/2) + # if ciphers are uneven, start with the center. Second half before first half + if (cipher_len % 2 == 1): + output.append(ciphers[middle]) + for i in range(1, middle+1): + output.append(ciphers[middle + i]) + output.append(ciphers[middle - i]) + else: + for i in range(1, middle+1): + output.append(ciphers[middle-1 + i]) + output.append(ciphers[middle - i]) + return output + +def get_extensions(jarm_details): + extension_bytes = b"" + all_extensions = b"" + grease = False + #GREASE + if jarm_details[5] == "GREASE": + all_extensions += choose_grease() + all_extensions += b"\x00\x00" + grease = True + #Server name + all_extensions += extension_server_name(jarm_details[0]) + #Other extensions + extended_master_secret = b"\x00\x17\x00\x00" + all_extensions += extended_master_secret + max_fragment_length = b"\x00\x01\x00\x01\x01" + all_extensions += max_fragment_length + renegotiation_info = b"\xff\x01\x00\x01\x00" + all_extensions += renegotiation_info + supported_groups = b"\x00\x0a\x00\x0a\x00\x08\x00\x1d\x00\x17\x00\x18\x00\x19" + all_extensions += supported_groups + ec_point_formats = b"\x00\x0b\x00\x02\x01\x00" + all_extensions += ec_point_formats + session_ticket = b"\x00\x23\x00\x00" + all_extensions += session_ticket + #Application Layer Protocol Negotiation extension + all_extensions += app_layer_proto_negotiation(jarm_details) + signature_algorithms = b"\x00\x0d\x00\x14\x00\x12\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x02\x01" + all_extensions += signature_algorithms + #Key share extension + all_extensions += key_share(grease) + psk_key_exchange_modes = b"\x00\x2d\x00\x02\x01\x01" + all_extensions += psk_key_exchange_modes + #Supported versions extension + if (jarm_details[2] == "TLS_1.3") or (jarm_details[7] == "1.2_SUPPORT"): + all_extensions += supported_versions(jarm_details, grease) + #Finish assembling extensions + extension_length = len(all_extensions) + extension_bytes += struct.pack(">H", extension_length) + extension_bytes += all_extensions + return extension_bytes + +#Client hello server name extension +def extension_server_name(host): + ext_sni = b"\x00\x00" + ext_sni_length = len(host)+5 + ext_sni += struct.pack(">H", ext_sni_length) + ext_sni_length2 = len(host)+3 + ext_sni += struct.pack(">H", ext_sni_length2) + ext_sni += b"\x00" + ext_sni_length3 = len(host) + ext_sni += struct.pack(">H", ext_sni_length3) + ext_sni += host.encode() + return ext_sni + +#Client hello apln extension +def app_layer_proto_negotiation(jarm_details): + ext = b"\x00\x10" + if (jarm_details[6] == "RARE_APLN"): + #Removes h2 and http/1.1 + alpns = [b"\x08\x68\x74\x74\x70\x2f\x30\x2e\x39", b"\x08\x68\x74\x74\x70\x2f\x31\x2e\x30", b"\x06\x73\x70\x64\x79\x2f\x31", b"\x06\x73\x70\x64\x79\x2f\x32", b"\x06\x73\x70\x64\x79\x2f\x33", b"\x03\x68\x32\x63", b"\x02\x68\x71"] + else: + #All apln extensions in order from weakest to strongest + alpns = [b"\x08\x68\x74\x74\x70\x2f\x30\x2e\x39", b"\x08\x68\x74\x74\x70\x2f\x31\x2e\x30", b"\x08\x68\x74\x74\x70\x2f\x31\x2e\x31", b"\x06\x73\x70\x64\x79\x2f\x31", b"\x06\x73\x70\x64\x79\x2f\x32", b"\x06\x73\x70\x64\x79\x2f\x33", b"\x02\x68\x32", b"\x03\x68\x32\x63", b"\x02\x68\x71"] + #apln extensions can be reordered + if jarm_details[8] != "FORWARD": + alpns = cipher_mung(alpns, jarm_details[8]) + all_alpns = b"" + for alpn in alpns: + all_alpns += alpn + second_length = len(all_alpns) + first_length = second_length+2 + ext += struct.pack(">H", first_length) + ext += struct.pack(">H", second_length) + ext += all_alpns + return ext + +#Generate key share extension for client hello +def key_share(grease): + ext = b"\x00\x33" + #Add grease value if necessary + if grease == True: + share_ext = choose_grease() + share_ext += b"\x00\x01\x00" + else: + share_ext = b"" + group = b"\x00\x1d" + share_ext += group + key_exchange_length = b"\x00\x20" + share_ext += key_exchange_length + share_ext += os.urandom(32) + second_length = len(share_ext) + first_length = second_length+2 + ext += struct.pack(">H", first_length) + ext += struct.pack(">H", second_length) + ext += share_ext + return ext + +#Supported version extension for client hello +def supported_versions(jarm_details, grease): + if (jarm_details[7] == "1.2_SUPPORT"): + #TLS 1.3 is not supported + tls = [b"\x03\x01", b"\x03\x02", b"\x03\x03"] + else: + #TLS 1.3 is supported + tls = [b"\x03\x01", b"\x03\x02", b"\x03\x03", b"\x03\x04"] + #Change supported version order, by default, the versions are from oldest to newest + if jarm_details[8] != "FORWARD": + tls = cipher_mung(tls, jarm_details[8]) + #Assemble the extension + ext = b"\x00\x2b" + #Add GREASE if applicable + if grease == True: + versions = choose_grease() + else: + versions = b"" + for version in tls: + versions += version + second_length = len(versions) + first_length = second_length+1 + ext += struct.pack(">H", first_length) + ext += struct.pack(">B", second_length) + ext += versions + return ext + +#Send the assembled client hello using a socket +def send_packet(packet, destination_host, destination_port): + try: + #Determine if the input is an IP or domain name + try: + if (type(ipaddress.ip_address(destination_host)) == ipaddress.IPv4Address) or (type(ipaddress.ip_address(destination_host)) == ipaddress.IPv6Address): + raw_ip = True + ip = (destination_host, destination_port) + except ValueError as e: + ip = (None, None) + raw_ip = False + #Connect the socket + if ":" in destination_host: + sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) + sock.settimeout(10) + sock.connect((destination_host, destination_port, 0, 0)) + else: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(10) + sock.connect((destination_host, destination_port)) + #Resolve IP if given a domain name + if raw_ip == False: + ip = sock.getpeername() + sock.sendall(packet) + #Receive server hello + data = sock.recv(1484) + #Close socket + sock.shutdown(socket.SHUT_RDWR) + sock.close() + return bytearray(data), ip[0] + #Timeout errors result in an empty hash + except socket.timeout as e: + sock.close() + return "TIMEOUT", ip[0] + except Exception as e: + sock.close() + return None, ip[0] + +#If a packet is received, decipher the details +def read_packet(data, jarm_details): + try: + if data == None: + return "|||" + jarm = "" + #Server hello error + if data[0] == 21: + selected_cipher = b"" + return "|||" + #Check for server hello + elif (data[0] == 22) and (data[5] == 2): + server_hello_length = int.from_bytes(data[3:5], "big") + counter = data[43] + #Find server's selected cipher + selected_cipher = data[counter+44:counter+46] + #Find server's selected version + version = data[9:11] + #Format + jarm += codecs.encode(selected_cipher, 'hex').decode('ascii') + jarm += "|" + jarm += codecs.encode(version, 'hex').decode('ascii') + jarm += "|" + #Extract extensions + extensions = (extract_extension_info(data, counter, server_hello_length)) + jarm += extensions + return jarm + else: + return "|||" + + except Exception as e: + return "|||" + +#Deciphering the extensions in the server hello +def extract_extension_info(data, counter, server_hello_length): + try: + #Error handling + if (data[counter+47] == 11): + return "|" + elif (data[counter+50:counter+53] == b"\x0e\xac\x0b") or (data[82:85] == b"\x0f\xf0\x0b"): + return "|" + elif counter+42 >= server_hello_length: + return "|" + count = 49+counter + length = int(codecs.encode(data[counter+47:counter+49], 'hex'), 16) + maximum = length+(count-1) + types = [] + values = [] + #Collect all extension types and values for later reference + while count < maximum: + types.append(data[count:count+2]) + ext_length = int(codecs.encode(data[count+2:count+4], 'hex'), 16) + if ext_length == 0: + count += 4 + values.append("") + else: + values.append(data[count+4:count+4+ext_length]) + count += ext_length+4 + result = "" + #Read application_layer_protocol_negotiation + alpn = find_extension(b"\x00\x10", types, values) + result += str(alpn) + result += "|" + #Add formating hyphens + add_hyphen = 0 + while add_hyphen < len(types): + result += codecs.encode(types[add_hyphen], 'hex').decode('ascii') + add_hyphen += 1 + if add_hyphen == len(types): + break + else: + result += "-" + return result + #Error handling + except IndexError as e: + result = "|" + return result + +#Matching cipher extensions to values +def find_extension(ext_type, types, values): + iter = 0 + #For the APLN extension, grab the value in ASCII + if ext_type == b"\x00\x10": + while iter < len(types): + if types[iter] == ext_type: + return ((values[iter][3:]).decode()) + iter += 1 + else: + while iter < len(types): + if types[iter] == ext_type: + return values[iter].hex() + iter += 1 + return "" + +#Custom fuzzy hash +def jarm_hash(jarm_raw): + #If jarm is empty, 62 zeros for the hash + if jarm_raw == "|||,|||,|||,|||,|||,|||,|||,|||,|||,|||": + return "0"*62 + fuzzy_hash = "" + handshakes = jarm_raw.split(",") + alpns_and_ext = "" + for handshake in handshakes: + components = handshake.split("|") + #Custom jarm hash includes a fuzzy hash of the ciphers and versions + fuzzy_hash += cipher_bytes(components[0]) + fuzzy_hash += version_byte(components[1]) + alpns_and_ext += components[2] + alpns_and_ext += components[3] + #Custom jarm hash has the sha256 of alpns and extensions added to the end + sha256 = (hashlib.sha256(alpns_and_ext.encode())).hexdigest() + fuzzy_hash += sha256[0:32] + return fuzzy_hash + +#Fuzzy hash for ciphers is the index number (in hex) of the cipher in the list +def cipher_bytes(cipher): + if cipher == "": + return "00" + list = [b"\x00\x04", b"\x00\x05", b"\x00\x07", b"\x00\x0a", b"\x00\x16", b"\x00\x2f", b"\x00\x33", b"\x00\x35", b"\x00\x39", b"\x00\x3c", b"\x00\x3d", b"\x00\x41", b"\x00\x45", b"\x00\x67", b"\x00\x6b", b"\x00\x84", b"\x00\x88", b"\x00\x9a", b"\x00\x9c", b"\x00\x9d", b"\x00\x9e", b"\x00\x9f", b"\x00\xba", b"\x00\xbe", b"\x00\xc0", b"\x00\xc4", b"\xc0\x07", b"\xc0\x08", b"\xc0\x09", b"\xc0\x0a", b"\xc0\x11", b"\xc0\x12", b"\xc0\x13", b"\xc0\x14", b"\xc0\x23", b"\xc0\x24", b"\xc0\x27", b"\xc0\x28", b"\xc0\x2b", b"\xc0\x2c", b"\xc0\x2f", b"\xc0\x30", b"\xc0\x60", b"\xc0\x61", b"\xc0\x72", b"\xc0\x73", b"\xc0\x76", b"\xc0\x77", b"\xc0\x9c", b"\xc0\x9d", b"\xc0\x9e", b"\xc0\x9f", b"\xc0\xa0", b"\xc0\xa1", b"\xc0\xa2", b"\xc0\xa3", b"\xc0\xac", b"\xc0\xad", b"\xc0\xae", b"\xc0\xaf", b'\xcc\x13', b'\xcc\x14', b'\xcc\xa8', b'\xcc\xa9', b'\x13\x01', b'\x13\x02', b'\x13\x03', b'\x13\x04', b'\x13\x05'] + count = 1 + for bytes in list: + strtype_bytes = codecs.encode(bytes, 'hex').decode('ascii') + if cipher == strtype_bytes: + break + count += 1 + hexvalue = str(hex(count))[2:] + #This part must always be two bytes + if len(hexvalue) < 2: + return_bytes = "0" + hexvalue + else: + return_bytes = hexvalue + return return_bytes + +#This captures a single version byte based on version +def version_byte(version): + if version == "": + return "0" + options = "abcdef" + count = int(version[3:4]) + byte = options[count] + return byte + +def ParseNumber(number): + if number.startswith('0x'): + return int(number[2:], 16) + else: + return int(number) + +def get_jarm(destination_host, destination_port): + #Select the packets and formats to send + #Array format = [destination_host,destination_port,version,cipher_list,cipher_order,GREASE,RARE_APLN,1.3_SUPPORT,extension_orders] + tls1_2_forward = [destination_host, destination_port, "TLS_1.2", "ALL", "FORWARD", "NO_GREASE", "APLN", "1.2_SUPPORT", "REVERSE"] + tls1_2_reverse = [destination_host, destination_port, "TLS_1.2", "ALL", "REVERSE", "NO_GREASE", "APLN", "1.2_SUPPORT", "FORWARD"] + tls1_2_top_half = [destination_host, destination_port, "TLS_1.2", "ALL", "TOP_HALF", "NO_GREASE", "APLN", "NO_SUPPORT", "FORWARD"] + tls1_2_bottom_half = [destination_host, destination_port, "TLS_1.2", "ALL", "BOTTOM_HALF", "NO_GREASE", "RARE_APLN", "NO_SUPPORT", "FORWARD"] + tls1_2_middle_out = [destination_host, destination_port, "TLS_1.2", "ALL", "MIDDLE_OUT", "GREASE", "RARE_APLN", "NO_SUPPORT", "REVERSE"] + tls1_1_middle_out = [destination_host, destination_port, "TLS_1.1", "ALL", "FORWARD", "NO_GREASE", "APLN", "NO_SUPPORT", "FORWARD"] + tls1_3_forward = [destination_host, destination_port, "TLS_1.3", "ALL", "FORWARD", "NO_GREASE", "APLN", "1.3_SUPPORT", "REVERSE"] + tls1_3_reverse = [destination_host, destination_port, "TLS_1.3", "ALL", "REVERSE", "NO_GREASE", "APLN", "1.3_SUPPORT", "FORWARD"] + tls1_3_invalid = [destination_host, destination_port, "TLS_1.3", "NO1.3", "FORWARD", "NO_GREASE", "APLN", "1.3_SUPPORT", "FORWARD"] + tls1_3_middle_out = [destination_host, destination_port, "TLS_1.3", "ALL", "MIDDLE_OUT", "GREASE", "APLN", "1.3_SUPPORT", "REVERSE"] + #Possible versions: SSLv3, TLS_1, TLS_1.1, TLS_1.2, TLS_1.3 + #Possible cipher lists: ALL, NO1.3 + #GREASE: either NO_GREASE or GREASE + #APLN: either APLN or RARE_APLN + #Supported Verisons extension: 1.2_SUPPPORT, NO_SUPPORT, or 1.3_SUPPORT + #Possible Extension order: FORWARD, REVERSE + queue = [tls1_2_forward, tls1_2_reverse, tls1_2_top_half, tls1_2_bottom_half, tls1_2_middle_out, tls1_1_middle_out, tls1_3_forward, tls1_3_reverse, tls1_3_invalid, tls1_3_middle_out] + jarm = "" + #Assemble, send, and decipher each packet + iterate = 0 + while iterate < len(queue): + payload = packet_building(queue[iterate]) + server_hello, ip = send_packet(payload, destination_host, destination_port) + #Deal with timeout error + if server_hello == "TIMEOUT": + jarm = "|||,|||,|||,|||,|||,|||,|||,|||,|||,|||" + break + ans = read_packet(server_hello, queue[iterate]) + jarm += ans + iterate += 1 + if iterate == len(queue): + break + else: + jarm += "," + #Fuzzy hash + return jarm_hash(jarm) \ No newline at end of file diff --git a/analysis/classes/report.py b/analysis/classes/report.py new file mode 100755 index 0000000..e85403a --- /dev/null +++ b/analysis/classes/report.py @@ -0,0 +1,475 @@ +import weasyprint +import os +import json +import hashlib +import re +import sys + +from weasyprint import HTML +from pathlib import Path +from datetime import datetime +from utils import get_config + + +class Report(object): + + def __init__(self, capture_directory, analysis_duration): + self.capture_directory = capture_directory + self.alerts = self.read_json(os.path.join(capture_directory, "assets/alerts.json")) + self.records = self.read_json(os.path.join(capture_directory, "assets/records.json")) + self.methods = self.read_json(os.path.join(capture_directory, "assets/detection_methods.json")) + self.device = self.read_json(os.path.join(capture_directory, "assets/device.json")) + self.capinfos = self.read_json(os.path.join(capture_directory, "assets/capinfos.json")) + self.instance = self.read_json(os.path.join(capture_directory, "assets/instance.json")) + self.analysis_duration = analysis_duration + + with open(os.path.join(self.capture_directory, "capture.pcap"), "rb") as f: + self.capture_sha1 = hashlib.sha1(f.read()).hexdigest() + + self.userlang = get_config(("frontend", "user_lang")) + + # Load template language + if not re.match("^[a-z]{2,3}$", self.userlang): + self.userlang = "en" + with open(os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), "locales/{}.json".format(self.userlang))) as f: + self.template = json.load(f)["report"] + + def read_json(self, json_path): + """Read a JSON + + Args: + json_path (_type_): _description_ + + Returns: + _type_: _description_ + """ + with open(json_path, "r") as json_file: + return json.load(json_file) + + def generate_report(self): + """Generate the full report and save it as report.pdf """ + + content = self.generate_page_header() + content += self.generate_header() + content += self.generate_warning() + content += self.generate_alerts() + content += self.generate_suspect_conns_block() + content += self.generate_uncat_conns_block() + content += self.generate_whitelist_block() + + htmldoc = HTML(string=content, base_url="").write_pdf() + Path(os.path.join(self.capture_directory, + "report.pdf")).write_bytes(htmldoc) + + def generate_warning(self): + """Generate the main warning message on the report + + Returns: + string: HTML code of the main warning message. + """ + if len(self.alerts["high"]): + msg = "
" + msg += self.template["high_msg"].format( + self.nb_translate(len(self.alerts["high"]))) + msg += "
" + return msg + elif len(self.alerts["moderate"]): + msg = "
" + msg += self.template["moderate_msg"].format( + self.nb_translate(len(self.alerts["moderate"]))) + msg += "
" + return msg + elif len(self.alerts["low"]): + msg = "
" + msg += self.template["low_msg"].format( + self.nb_translate(len(self.alerts["low"]))) + msg += "
" + return msg + else: + msg = "
" + msg += self.template["none_msg"] + msg += "
" + return msg + + def nb_translate(self, nb): + """ Translate a number in a string. + + Args: + nb (int): integer + + Returns: + string: A translated string related to the integer + """ + a = self.template["numbers"] + return a[nb-1] if nb <= 9 else str(nb) + + def generate_suspect_conns_block(self): + """Generate the block and the table of communications categorized as suspect. + + Returns: + str: HTML block of the suspect communications + """ + + tbody = "" + + for record in self.records: + if record["suspicious"] == True: + tbody += "" + tbody += f"{', '.join([p['name'] for p in record['protocols']])}" + tbody += f"{', '.join(record['domains'])}" + tbody += f"{record['ip_dst']}" + tbody += f"{', '.join([str(p['port']) if p['port'] != -1 else '--' for p in record['protocols']])}" + tbody += "" + + if len(tbody): + title = f"

{self.template['suspect_title']}

" + table = "" + table += " " + table += " " + table += f" " + table += f" " + table += f" " + table += f" " + table += " " + table += " " + table += "" + table += tbody + table += "
{self.template['protocol']}{self.template['domain']}{self.template['dst_ip']}{self.template['dst_port']}
" + return title + table + else: + return "" + + def generate_uncat_conns_block(self): + """Generate the block and the table of the uncategorized communications + + Returns: + str: HTML block of the uncategorized communications + """ + tbody = "" + + for record in self.records: + if record["suspicious"] == False and record["whitelisted"] == False: + tbody += "" + tbody += f"{', '.join([p['name'] for p in record['protocols']])}" + tbody += f"{', '.join(record['domains'])}" + tbody += f"{record['ip_dst']}" + tbody += f"{', '.join([str(p['port']) if p['port'] != -1 else '--' for p in record['protocols']])}" + tbody += "" + + if len(tbody): + title = "

{}

".format(self.template["uncat_title"]) + table = "" + table += " " + table += " " + table += f" " + table += f" " + table += f" " + table += f" " + table += " " + table += " " + table += "" + table += tbody + table += "
{self.template['protocol']}{self.template['domain']}{self.template['dst_ip']}{self.template['dst_port']}
" + return title + table + else: + return "" + + def generate_whitelist_block(self): + """Generate the block and the table of the whitelisted communications + + Returns: + str: HTML block of the whitelisted communications + """ + + tbody = "" + + for record in self.records: + if record["whitelisted"] == True: + tbody += "" + tbody += f"{', '.join([p['name'] for p in record['protocols']])}" + tbody += f"{', '.join(record['domains'])}" + tbody += f"{record['ip_dst']}" + tbody += f"{', '.join([str(p['port']) if p['port'] != -1 else '--' for p in record['protocols']])}" + tbody += "" + + if len(tbody): + title = "

{}

".format(self.template["whitelist_title"]) + table = "" + table += " " + table += " " + table += f" " + table += f" " + table += f" " + table += f" " + table += " " + table += " " + table += "" + table += tbody + table += "
{self.template['protocol']}{self.template['domain']}{self.template['dst_ip']}{self.template['dst_port']}
" + return title + table + else: + return "" + + def generate_header(self): + """Generate the report headers with the capture's metadata. + + Returns: + str: HTML block containing the data. + """ + header = "
" + header += "
" + header += f"


{self.template['device_mac']}: {self.device['mac_address']}
" + header += f"{self.template['detection_methods']}: {'☑' if self.methods['iocs'] else '☐'} IOCs {'☑' if self.methods['heuristics'] else '☐'} Heuristics {'☑' if self.methods['active'] else '☐'} Active analysis
" + header += f"{self.template['capture_sha1']}: {self.capture_sha1}
" + header += f"{self.template['instance_uuid']}: {self.instance['instance_uuid']}
" + header += f"{self.template['report_generated_on']} {datetime.now().strftime('%d/%m/%Y - %H:%M:%S')}
" + if self.capinfos is not None: + header += f"{self.template['capture_duration']}: {self.capinfos['Capture duration'].split(' ')[0]} {self.template['seconds']}
" + header += f"{self.template['analysis_duration']}: {self.analysis_duration} {self.template['seconds']}
" + header += f"{self.template['packets_number']}: {self.capinfos['Number of packets']}
" + header += "

" + header += "
" + return header + + def generate_alerts(self): + """Generate a block embedding the alerts triggered during the analysis. + + Returns: + str: HTML block containing the data. + """ + alerts = "
    " + for alert in self.alerts["high"]: + alerts += "
  • " + alerts += "High" + alerts += "{}".format(alert["id"]) + alerts += "
    " + alerts += "{}".format(alert["title"]) + alerts += "

    {}

    ".format( + alert["description"]) + alerts += "
    " + alerts += "
  • " + + for alert in self.alerts["moderate"]: + alerts += "
  • " + alerts += "moderate" + alerts += "{}".format(alert["id"]) + alerts += "
    " + alerts += "{}".format(alert["title"]) + alerts += "

    {}

    ".format( + alert["description"]) + alerts += "
    " + alerts += "
  • " + for alert in self.alerts["low"]: + alerts += "
  • " + alerts += "low" + alerts += "{}".format(alert["id"]) + alerts += "
    " + alerts += "{}".format(alert["title"]) + alerts += "

    {}

    ".format( + alert["description"]) + alerts += "
    " + alerts += "
  • " + + alerts += "
" + return alerts + + def generate_page_footer(self): + """Generate the page footer + + Returns: + str: HTML block closing the page + """ + return "" + + def generate_page_header(self): + """Generate the page header + + Returns: + str: HTML block containing the page header with the CSS. + """ + return """ + + + """.replace("REPORT_HEADER", "{} {}".format(self.template["report_for_the_capture"], self.capture_sha1)).replace("REPORT_FOOTER", self.template["report_footer"]) diff --git a/analysis/locales/de.json b/analysis/locales/de.json new file mode 100755 index 0000000..68d6d31 --- /dev/null +++ b/analysis/locales/de.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "Es besteht {} Kommunikationsverbindung zu {} außerhalb des lokalen Netzwerks.", + "description": "Das Protokoll {} wird häufig in internen Netzwerken verwendet. Bitte überprüfen Sie, ob der Host {} andere Warnungen verursacht hat, was auf bösartiges Verhalten hindeuten kann." + }, + "PROTO-02": { + "title": "{} Verbindung zu {} zu einem Port größer als oder gleich {}.", + "description": "{} Verbindungen zu {} über den Port {} wurden erkannt. Die Verwendung eines nicht standardmäßigen Ports ist manchmal ein Merkmal für bösartige Aktivitäten. Wir empfehlen, die Reputation dieses Hosts zu überprüfen, indem Sie sich andere Warnungen ansehen und im Internet danach suchen." + }, + "PROTO-03": { + "title": "Mit dem Host {} wurde per HTTP kommuniziert.", + "description": "Ihr Gerät hat mit dem Host {} über das unverschlüsselte HTTP-Protokoll kommuniziert. Auch wenn dieses Verhalten an sich nicht bösartig ist, ist es ungewöhnlich, dass von Smartphone-Anwendungen, die im Hintergrund laufen, HTTP-Kommunikationen ausgehen. Bitte überprüfen Sie die Reputation des Hosts anhand einer Internetsuche." + }, + "PROTO-04": { + "title": "Mit dem Host {} wurde über einen nicht standardmäßigen Port ({}) per HTTP kommuniziert.", + "description": "Ihr Gerät hat mit dem Host {} über den Port {} über das unverschlüsselte HTTP-Protokoll kommuniziert. Dieses Verhalten ist recht ungewöhnlich. Bitte überprüfen Sie die Reputation des Hosts anhand einer Internetsuche." + }, + "PROTO-05": { + "title": "Der Server {} wurde während der Sitzung nicht in einer DNS-Abfrage aufgelöst.", + "description": "Das bedeutet, dass der Server {} möglicherweise in keinen Domain-Namen aufgelöst wird oder dass die Auflösung bereits vom Gerät zwischengespeichert wurde. Wenn dieser Host in anderen Warnungen vorkommt, überprüfen Sie ihn bitte." + }, + "IOC-01": { + "title": "Es wurde eine Verbindung zu {} hergestellt ({}), was als {} gekennzeichnet ist.", + "description": "Der Host {} wurde aufgrund bösartiger Aktivitäten explizit auf die Sperrliste gesetzt. Ihr Gerät ist wahrscheinlich kompromittiert und muss von IT-Sicherheitsexperten genauer untersucht werden." + }, + "IOC-02": { + "title": "Kommunikation mit {} unter dem CIDR {}, der als {} gekennzeichnet ist.", + "description": "Der Server {} wird in einem Netzwerk gehostet, das für bösartige Aktivitäten bekannt ist. Auch wenn dieses Verhalten an sich nicht bösartig ist, müssen Sie überprüfen, ob dieser Host auch in anderen Warnungen erwähnt wird. Wenn Sie Zweifel haben, suchen Sie im Internet nach diesem Host, um zu sehen, ob er legitim ist." + }, + "IOC-03": { + "title": "Es wurde eine DNS-Abfrage zu {} ausgeführt, was als {} gekennzeichnet ist.", + "description": "Der in der Aufnahme vorkommende Domain-Name {} wurde explizit als bösartig gekennzeichnet. Dies weist darauf hin, dass Ihr Gerät wahrscheinlich kompromittiert ist und eingehend untersucht werden muss." + }, + "IOC-04": { + "title": "Es wurde eine DNS-Abfrage zu {} ausgeführt, was als {} gekennzeichnet ist.", + "description": "Der in der Aufnahme vorkommende Domain-Name {} wurde explizit als Tracker gekennzeichnet. Dies weist darauf hin, dass eine der aktiven Apps Ihren Standort geografisch verfolgt." + }, + "IOC-05": { + "title": "Es wurde eine DNS-Abfrage zur Domain {} ausgeführt, die einen Free-DNS-Dienst nutzt.", + "description": "Der Domain-Name {} nutzt einen Free-DNS-Dienst. Dienste dieser Art werden häufig von Cyberkriminellen oder staatlich unterstützten Angreifern bei ihren Operationen genutzt. Es ist sehr verdächtig, dass eine im Hintergrund laufende Anwendung einen solchen Dienst verwendet. Bitte untersuchen Sie das näher." + }, + "IOC-06": { + "title": "Es wurde eine DNS-Abfrage zur Domain {} ausgeführt, die eine verdächtige TLD enthält.", + "description": "Der Domain-Name {} nutzt eine verdächtige Top-Level-Domain ({}). Diese nicht-generische TLD ist zwar selbst nicht bösartig, wird aber häufig von Cyberkriminellen und bei staatlich unterstützten Operationen verwendet. Bitte überprüfen Sie diese Domain anhand einer Internetsuche. Wenn dieser Host in anderen Warnungen erwähnt wird, können Sie ihn als sehr verdächtig betrachten." + }, + "IOC-07": { + "title": "Ein Zertifikat, das mit {} Aktivitäten verknüpft ist, wurde in der Kommunikationsverbindung zu {} gefunden.", + "description": "Das Zertifikat ({}), das mit {} verknüpft ist, wurde explizit als bösartig gekennzeichnet. Dies weist darauf hin, dass Ihr Gerät wahrscheinlich kompromittiert ist und eine forensische Analyse benötigt." + }, + "IOC-08": { + "title": "Es wurde eine HTTP-Abfrage zu {} ausgeführt, was als {} gekennzeichnet ist.", + "description": "Der in der Aufnahme vorkommende Domain-Name {} wurde explizit als bösartig gekennzeichnet. Dies weist darauf hin, dass Ihr Gerät wahrscheinlich kompromittiert ist und eingehend untersucht werden muss." + }, + "IOC-09": { + "title": "Es wurde eine HTTP-Abfrage zur Domain {} ausgeführt, die einen Free-DNS-Dienst nutzt.", + "description": "Der Domain-Name {} nutzt einen Free-DNS-Dienst. Dienste dieser Art werden häufig von Cyberkriminellen oder staatlich unterstützten Angreifern bei ihren Operationen genutzt. Es ist sehr verdächtig, dass eine im Hintergrund laufende Anwendung einen solchen Dienst verwendet. Bitte untersuchen Sie das näher." + }, + "IOC-10": { + "title": "Es wurde eine HTTP-Abfrage zur Domain {} ausgeführt, die eine verdächtige TLD enthält.", + "description": "Der Domain-Name {} nutzt eine verdächtige Top-Level-Domain ({}). Diese nicht-generische TLD ist zwar selbst nicht bösartig, wird aber häufig von Cyberkriminellen und bei staatlich unterstützten Operationen verwendet. Bitte überprüfen Sie diese Domain anhand einer Internetsuche. Wenn dieser Host in anderen Warnungen erwähnt wird, können Sie ihn als sehr verdächtig betrachten." + }, + "IOC-11": { + "title": "Verbindung zu {} ({}), die als TOR-Knoten referenziert wird.", + "description": "Der Server {} wird als Knoten im TOR-Anonymisierungsnetzwerk referenziert. Das analysierte Gerät scheint TOR zu verwenden oder mit einem Server zu kommunizieren, der als TOR-Eingangs- oder -Ausgangsknoten konfiguriert ist. Einige Angreifer nutzen TOR auf ihren Servern, um ihre Spuren zu verwischen." + }, + "IOC-12": { + "title": "Eine Anwendung fordert einen legitimen Dienst an, der möglicherweise doppelt verwendet wird." + "description": "Der Server {} wird für legitime Zwecke verwendet. Einige Angreifer können ihn jedoch verwenden, um mit ihren Implantaten zu interagieren. Es wird empfohlen, zu überprüfen, ob das analysierte Gerät eine legitime Anwendung enthält, die diesen Dienst verwendet." + }, + "IOC-13": { + "title": "Mindestens eine Anwendung verwendet verschlüsselte DNS-Abfragen." + "description": "Der DNS over HTTPs server {} wurde während der Erfassung kontaktiert. Dies scheint darauf hinzuweisen, dass mindestens eine Anwendung diese Technik verwendet, um ihre DNS-Anfragen zu verschlüsseln. Diese Funktion schränkt die Scanfunktionen von SpyGuard ein. Wenn diese Funktion auf dem analysierten Gerät nicht aktiviert ist, kann es sich lohnen, herauszufinden, welche App diese Methode verwendet." + }, + "ACT-01": { + "title": "Die Domain {} nutzt einen verdächtigen Nameserver ({}).", + "description": "Der Domain-Name {} nutzt einen Nameserver, der explizit mit bösartigen Aktivitäten in Verbindung gebracht wird. Viele Cyberkriminelle und staatlich unterstützte Angreifer nutzen Registrare dieser Art, weil sie Kryptowährungen und anonyme Zahlungen zulassen. Es wird empfohlen, diese Domain und die damit verknüpfte laufende Anwendung mithilfe einer forensischen Analyse des Telefons näher zu untersuchen." + }, + "ACT-02": { + "title": "Die Domain {} wurde vor kurzem (vor {} Tagen) erstellt.", + "description": "Der Domainname {} ist neu. Auch wenn dies nicht von Natur aus böswillig ist, richten Angreifer häufig für jede Kampagne eine neue Infrastruktur ein, die zur Verwendung neu registrierter Domainnamen führen kann." + }, + "SSL-01": { + "title": "SSL-Verbindung über einen nicht standardmäßigen Port ({})", + "description": "Es ist ungewöhnlich, dass SSL-Verbindungen von Smartphones über einen nicht standardmäßigen Port hergestellt werden. Das kann durchaus legitim sein, aber wir empfehlen dennoch, die Reputation von {} zu überprüfen. Sehen Sie sich dazu den entsprechenden WHOIS-Eintrag, das zugehörige autonome System und das Erstellungsdatum an und suchen Sie im Internet danach." + }, + "SSL-02": { + "title": "Eine SSL-Verbindung zu {} verwendet ein kostenloses Zertifikat.", + "description": "Kostenlose Zertifikate – wie z. B. Let's Encrypt – werden gerne von Command-and-Control-Servern verwendet, die mit bösartigen Implants und Phishing-Webseiten in Verbindung stehen. Wir empfehlen, den mit diesem Zertifikat verknüpften Host zu überprüfen. Sehen Sie sich dazu seinen Domain-Namen und das Erstellungsdatum an oder überprüfen Sie die Reputation des Hosts im Internet." + }, + "SSL-03": { + "title": "Das mit {} verknüpfte Zertifikat ist selbstsigniert.", + "description": "Die Verwendung von selbstsignierten Zertifikaten ist in der Infrastruktur von Angreifern weit verbreitet. Wir empfehlen, den mit diesem Zertifikat verknüpften Host {} zu überprüfen. Sehen Sie sich dazu seinen Domain-Namen (falls vorhanden), den WHOIS-Eintrag und das Erstellungsdatum an und überprüfen Sie die Reputation des Hosts im Internet." + }, + "SSL-04": { + "title": "Das mit {} verknüpfte Zertifikat ist mit böswilligen Aktivitäten ({})" verknüpft, + "description": "Das mit server {} verknüpfte Zertifikat wurde explizit als bösartig eingestuft. Ihr Gerät sieht kompromittiert aus und muss von einem professionellen Team weiter untersucht werden." + }, + "SSL-05": { + "title": "Die SSL-Konfiguration von {} ist mit bösartigen Aktivitäten ({})" verknüpft, + "description": "Der serverbezogene JARM-Hash {} wurde explizit mit bösartigen Aktivitäten verknüpft. Ihr Gerät ist möglicherweise kompromittiert und muss von einem professionellen Team weiter untersucht werden." + }, + "ADV-01": { + "title": "Überprüfen Sie die Warnungen für {}", + "description": "Bitte überprüfen Sie die Reputation des Hosts {}. Dieser scheint bösartig zu sein, da er während der Sitzung {} Warnungen verursacht hat." + }, + "SNORT-01": { + "title": "Suricata-Regel ausgelöst: {}", + "description": "Eine Netzwerkerkennungsregel wurde ausgelöst. Es ist wahrscheinlich, dass Ihr Gerät kompromittiert wurde oder verdächtiges Verhalten aufweist." + } + }, + "report": { + "numbers": [ + "eine", + "zwei", + "drei", + "vier", + "fünf", + "sechs", + "sieben", + "acht", + "neun" + ], + "suspect_title": "Verdächtige Kommunikationsverbindungen", + "uncat_title": "Kommunikationsverbindungen ohne Kategorie", + "whitelist_title": "Kommunikationsverbindungen auf der Zulassungsliste", + "protocol": "Protokoll", + "domain": "Domain", + "dst_ip": "Ziel-IP-Adresse", + "dst_port": "Ziel-Portnummer", + "device_mac": "MAC-Adresse des Geräts", + "report_generated_on": "Bericht erstellt am", + "capture_duration": "Aufnahmedauer", + "packets_number": "Anzahl der Pakete", + "capture_sha1": "SHA1-Aufnahme", + "report_for_the_capture": "Bericht zur Aufnahme", + "report_footer": "Dieser Bericht wurde von einem SpyGuard-Gerät automatisch erstellt. Wenn Sie Fragen haben, Bugs melden oder Feedback geben möchten, kontaktieren Sie uns unter contact@spyguard.io.", + "high_msg": "Ihr Gerät scheint kompromittiert zu sein, da Sie {} Warnung(en) der Stufe \"Hoch\" haben.", + "moderate_msg": "Sie haben {} Warnungen der Stufe \"Mittel\": Ihr Gerät könnte kompromittiert sein. Bitte sehen Sie sich die Warnungen sorgfältig an.", + "low_msg": "Sie haben nur {} Warnungen der Stufe \"Niedrig\": Überprüfen Sie sie gerne.", + "none_msg": "Alles sieht gut aus – kein Warnungen. Sehen Sie sich gerne auch die nicht kategorisierten Kommunikationsverbindungen an, falls welche vorhanden sind.", + "detection_methods": "Nachweismethoden", + "analysis_duration": "Analysezeit", + "instance_uuid": "Instanz von SpyGuard", + "seconds" : "zweite" + } +} diff --git a/analysis/locales/en.json b/analysis/locales/en.json new file mode 100755 index 0000000..942e7d7 --- /dev/null +++ b/analysis/locales/en.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "{} communication going outside the local network to {}.", + "description": "The {} protocol is commonly used in internal networks. Please, verify if the host {} leveraged other alerts which may indicates a possible malicious behavior." + }, + "PROTO-02": { + "title": "{} connection to {} to a port over or equal to {}.", + "description": "{} connections have been seen to {} by using the port {}. The use of non-standard port can be sometimes associated to malicious activities. We recommend to check if this host has a good reputation by looking on other alerts and search it on the internet." + }, + "PROTO-03": { + "title": "HTTP communications have been done to the host {}", + "description": "Your device exchanged with the host {} by using HTTP, an unencrypted protocol. Even if this behavior is not malicious by itself, it is unusual to see HTTP communications issued from smartphone applications running in the background. Please check the host reputation by searching it on the internet." + }, + "PROTO-04": { + "title": "HTTP communications have been seen to the host {} on a non standard port ({}).", + "description": "Your device exchanged with the host {} by using HTTP, an unencrypted protocol on the port {}. This behavior is quite unusual. Please check the host reputation by searching it on the internet." + }, + "PROTO-05": { + "title": "The server {} hasn't been resolved by any DNS query during the session", + "description": "It means that the server {} is likely not resolved by any domain name or the resolution has already been cached by the device. If the host appears in other alerts, please check it." + }, + "IOC-01": { + "title": "A connection has been made to {} ({}) which is tagged as {}.", + "description": "The host {} has been explicitly blacklisted for malicious activities. Your device is likely compromised and needs to be investigated more deeply by IT security professionals." + }, + "IOC-02": { + "title": "Communication to {} under the CIDR {} which is tagged as {}.", + "description": "The server {} is hosted under a network which is known to host malicious activities. Even if this behavior is not malicious by itself, you need to check if other alerts are also mentioning this host. If you have some doubts, please search this host on the internet to see if its legit or not." + }, + "IOC-03": { + "title": "A DNS request have been done to {} which is tagged as {}.", + "description": "The domain name {} seen in the capture has been explicitly tagged as malicious. This indicates that your device is likely compromised and needs to be investigated deeply." + }, + "IOC-04": { + "title": "A DNS request have been done to {} which is tagged as {}.", + "description": "The domain name {} seen in the capture has been explicitly tagged as a Tracker. This indicates that one of the active apps is geo-tracking your moves." + }, + "IOC-05": { + "title": "A DNS request have been done to the domain {} which is a Free DNS.", + "description": "The domain name {} is using a Free DNS service. This kind of service is commonly used by cybercriminals or state-sponsored threat actors during their operations. It is very suspicious that an application running in background use this kind of service, please investigate." + }, + "IOC-06": { + "title": "A DNS request have been done to the domain {} which contains a suspect TLD.", + "description": "The domain name {} is using a suspect Top Level Domain ({}). Even not malicious, this non-generic TLD is used regularly by cybercrime or state-sponsored operations. Please check this domain by searching it on an internet search engine. If other alerts are related to this host, please consider it as very suspicious." + }, + "IOC-07": { + "title": "A certificate associated to {} activities have been found in the communication to {}.", + "description": "The certificate ({}) associated to {} has been explicitly tagged as malicious. This indicates that your device is likely compromised and need a forensic analysis." + }, + "IOC-08": { + "title": "An HTTP request have been done to {} which is tagged as {}.", + "description": "The domain name {} seen in the capture has been explicitly tagged as malicious. This indicates that your device is likely compromised and needs to be investigated deeply." + }, + "IOC-09": { + "title": "An HTTP request have been done to the domain {} which is a Free DNS.", + "description": "The domain name {} is using a Free DNS service. This kind of service is commonly used by cybercriminals or state-sponsored threat actors during their operations. It is very suspicious that an application running in background use this kind of service, please investigate." + }, + "IOC-10": { + "title": "An HTTP request have been done to the domain {} which contains a suspect TLD.", + "description": "The domain name {} is using a suspect Top Level Domain ({}). Even not malicious, this non-generic TLD is used regularly by cybercrime or state-sponsored operations. Please check this domain by searching it on an internet search engine. If other alerts are related to this host, please consider it as very suspicious." + }, + "IOC-11": { + "title": "Connection to {} ({}) which is referenced as a TOR node.", + "description": "The server {} is referenced as a node on the TOR anonymization network. The analyzed device appears to be using TOR or communicating with a server configured as a TOR input or output node. Some attackers use TOR on their servers to cover their tracks." + }, + "IOC-12": { + "title": "An application requests a legitimate service that may have a dual use .", + "description": "The server {} is used for legitimate purposes. However, some attackers can use it to interact with their implants. It is adviced to check that the analyzed device contains a legitimate application which use this service." + }, + "IOC-13": { + "title": "At least one application uses encrypted DNS queries.", + "description": "The DNS over HTTPs server {} was contacted during the capture. This seems to indicate that at least one application uses this technique to encrypt its DNS requests. This feature limits the scanning capabilities of SpyGuard. If this feature is not enabled on the analyzed device, it may be worth finding out which app is using this method." + }, + "ACT-01": { + "title": "The domain {} is using a suspect nameserver ({}).", + "description": "The domain name {} is using a nameserver that has been explicitly tagged to be associated to malicious activities. Many cybercriminals and state-sponsored threat actors are using this kind of registrars because they allow cryptocurrencies and anonymous payments. It is adviced to investigate on this domain and the associated running application by doing a forensic analysis of the phone." + }, + "ACT-02": { + "title": "The domain {} have been created quite recently ({} days ago).", + "description": "The domain name {} is quite new. Even this is not malicious by itself, its quite common for attackers to set up new infrastructure for each attack campaign which can lead to the use of recently registered domain names." + }, + "SSL-01": { + "title": "SSL connection done on a non standard port ({}) to {}", + "description": "It is not common to see SSL connections issued from smartphones using non-standard ports. Even this can be totally legit, we recommend to check the reputation of {}, by looking at its WHOIS record, the associated autonomus system, its creation date, and by searching it the internet." + }, + "SSL-02": { + "title": "An SSL connection to {} is using a free certificate.", + "description": "Free certificates — such as Let's Encrypt — are wildly used by command and control servers associated to malicious implants or phishing web pages. We recommend to check the host associated to this certificate, by looking at the domain name, its creation date, or by checking its reputation on the internet." + }, + "SSL-03": { + "title": "The certificate associated to {} is self-signed.", + "description": "The use of self-signed certificates is a common thing for attacker infrastructure. We recommend to check the host {} which is associated to this certificate, by looking at the domain name (if any), its WHOIS record, its creation date, and by checking its reputation on the internet." + }, + "SSL-04": { + "title": "The certificate associated with {} is linked to malicious activity ({}).", + "description": "The certificate associated with server {} has been explicitly categorized as malicious. Your device looks compromised and needs to be further investigated by a professional team." + }, + "SSL-05": { + "title": "The SSL configuration of {} is linked to malicious activity ({}).", + "description": "The server-related JARM hash {} has been explicitly associated with malicious activity. Your device is possibly compromised and needs to be further investigated by a professional team." + }, + "ADV-01": { + "title": "Check the alerts for {}", + "description": "Please, check the reputation of the host {}, this one seems to be malicious as it leveraged {} alerts during the session." + }, + "SNORT-01": { + "title": "Suricata rule tiggered: {}", + "description": "A network detection rule has been triggered. It's likely that your device has been compromised or have some suspect behaviour." + } + }, + "report": { + "numbers": [ + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine" + ], + "suspect_title": "Suspect communications", + "uncat_title": "Uncategorized communications", + "whitelist_title": "Whitelisted communications", + "protocol": "Protocol", + "domain": "Domain", + "dst_ip": "Dst IP address", + "dst_port": "Dst port number", + "device_mac": "Device MAC address", + "report_generated_on": "Report generated on", + "capture_duration": "Capture duration", + "packets_number": "Number of packets", + "capture_sha1": "Capture SHA1", + "report_for_the_capture": "Report for the capture", + "report_footer": "This report has been autogenerated by a SpyGuard device. For any question, bug report or feedback, please contact contact@spyguard.io.", + "high_msg": "Your device seems to be compromised as you have {} high alert(s).", + "moderate_msg": "You have {} moderate alert(s), your device might be compromised. Please look at them carefully.", + "low_msg": "You have only {} low alert(s), don't hesitate to check them.", + "none_msg": "Everything looks fine, zero alerts. Don't hesitate to check the uncategorized communications, if any.", + "detection_methods": "Detection methods", + "analysis_duration": "Analysis duration", + "instance_uuid": "SpyGuard instance", + "seconds" : "second(s)" + } +} diff --git a/analysis/locales/es.json b/analysis/locales/es.json new file mode 100755 index 0000000..a1d6ae5 --- /dev/null +++ b/analysis/locales/es.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "Comunicación {} saliente desde la red local hacia {}.", + "description": "El protocolo {} se usa comúnmente en redes internas. Por favor verifique si el host {} ha emitido otras alertas que puedan indicar un posible comportamiento malicioso" + }, + "PROTO-02": { + "title": "Conexión {} hacia {} en un puerto superior o igual a {}.", + "description": "Se han identificado conexiones {} hacia {} usando el puerto {}. El uso de un puerto no standard puede estar asociado a actividad maliciosa. Recomendamos verificar la reputación de este host mediante la comprobación de otras alertas y búsquedas en Internet." + }, + "PROTO-03": { + "title": "Se han realizado comunicaciones HTTP hacia el host {}", + "description": "Su dispositivo se ha comunicado con el host {} mediante HTTP, un protocolo sin cifrar. Aunque este comportamiento no tiene porque ser malicioso por sí mismo, no es del todo común ver comunicaciones HTTP emitidas desde aplicaciones móviles ejecutándose en segundo plano. Por favor verifique la reputación de este host mediante su búsqueda en Internet." + }, + "PROTO-04": { + "title": "Se han realizado comunicaciones HTTP hacia el host {} en un puerto ({}) no standard.", + "description": "Su dispositivo se ha comunicado con el host {} mediante HTTP, un protocolo sin cifrado, en el puerto {}. Este comportamiento es bastante inusual. Por favor verifique la reputación de este host mediante su búsqueda en Internet." + }, + "PROTO-05": { + "title": "El servidor {} no ha sido resuelto por ningún servidor DNS durante la sesión.", + "description": "Significa que el servidor {} probablemente no resuelve a ningún nombre de dominio o su resolución ha sido cacheada por el dispositivo. Por favor, compruebe si este host aparece en otras alertas." + }, + "IOC-01": { + "title": "Se ha realizado una conexión a {} ({}) que está etiquetada como {}.", + "description": "El host {} ha sido explícitamente añadido a la lista negra por actividad maliciosa. Su dispositivo está probablemente comprometido y necesita ser investigado en profundidad por un profesional de seguridad IT." + }, + "IOC-02": { + "title": "Comunicación hacia {} incluida en el CIDR {} que está etiquetada como {}.", + "description": "El servidor {} está hospedado en una red conocida por albergar actividades maliciosas. Aunque este comportamiento no es malicioso de por sí, por favor compruebe si el host aparece en otras alertas y verifique la reputación del mismo en Internet." + }, + "IOC-03": { + "title": "Se ha realizado una petición DNS a {} que está etiquetada como {}.", + "description": "El dominio {} identificado en la captura ha sido explícitamente etiquetado como malicioso. Esto indica que su dispositivo está probablemente comprometido y debe ser investigado en profundidad." + }, + "IOC-04": { + "title": "Se ha realizado una petición DNS a {} que está etiquetada como {}.", + "description": "El dominio {} identificado en la captura ha sido explícitamente etiquetado como Tracker. Esto indica que la aplicación asociada está monitorizando su posición geográfica." + }, + "IOC-05": { + "title": "Se ha realizado una petición DNS al dominio {} que es un DNS gratuito.", + "description": "El dominio {} está usando un servicio DNS gratuito. Este tipo de servicios es comúnmente utilizado por cibercriminales y otros actores de amenazas. Es altamente sospechoso que una aplicación ejecutándose en segundo plano use este tipo de servicios. Por favor investigue." + }, + "IOC-06": { + "title": "Se ha realizado una petición DNS al dominio {} que contiene un TLD sospechoso.", + "description": "El dominio {} está usando un dominio de primero nivel -TLD- ({}). Aunque no sea malicioso, este TLP no-genérico es usado por cibercriminales y otros actores de amenazas con regularidad. Verifique este dominio mediante su búsqueda en Internet. Si hay otras alertas relacionadas con este host, por favor considérelo como muy sospechoso." + }, + "IOC-07": { + "title": "Un certificado asociado a actividades {} ha sido identificado en una comunicación hacia {}.", + "description": "El certificado ({}) asociado a {} ha sido explícitamente etiquetado como malicioso. Esto indica que su dispositivo está probablemente comprometido y necesita ser analizado en profundidad por un especialista forense." + }, + "IOC-08": { + "title": "Se ha realizado una petición HTTP a {} que está etiquetada como {}.", + "description": "El dominio {} identificado en la captura ha sido explícitamente etiquetado como malicioso. Esto indica que su dispositivo está probablemente comprometido y debe ser investigado en profundidad." + }, + "IOC-09": { + "title": "Se ha realizado una petición HTTP al dominio {} que es un DNS gratuito.", + "description": "El dominio {} está usando un servicio DNS gratuito. Este tipo de servicios es comúnmente utilizado por cibercriminales y otros actores de amenazas. Es altamente sospechoso que una aplicación ejecutándose en segundo plano use este tipo de servicios. Por favor investigue." + }, + "IOC-10": { + "title": "Se ha realizado una petición HTTP al dominio {} que contiene un TLD sospechoso.", + "description": "El dominio {} está usando un dominio de primero nivel -TLD- ({}). Aunque no sea malicioso, este TLP no-genérico es usado por cibercriminales y otros actores de amenazas con regularidad. Verifique este dominio mediante su búsqueda en Internet. Si hay otras alertas relacionadas con este host, por favor considérelo como muy sospechoso." + }, + "IOC-11": { + "title": "Conexión a {} ({}) a la que se hace referencia como un nodo TOR.", + "description": "El servidor {} es referenciado como un nodo en la red de anonimización TOR. El dispositivo analizado parece estar usando TOR o comunicándose con un servidor configurado como un nodo de entrada o salida de TOR. Algunos atacantes utilizan TOR en sus servidores para cubrir sus pistas." + }, + "IOC-12": { + "title": "Una aplicación solicita un servicio legítimo que puede tener un doble uso .", + "description": "El servidor {} se utiliza para fines legítimos. Sin embargo, algunos atacantes pueden usarlo para interactuar con sus implantes. Se recomienda comprobar que el dispositivo analizado contiene una aplicación legítima que utiliza este servicio." + }, + "IOC-13": { + "title": "Al menos una aplicación utiliza consultas DNS cifradas.", + "description": "El servidor DNS sobre HTTPs {} fue contactado durante la captura. Esto parece indicar que al menos una aplicación utiliza esta técnica para cifrar sus solicitudes de DNS. Esta característica limita las capacidades de escaneo de SpyGuard. Si esta función no está habilitada en el dispositivo analizado, puede valer la pena averiguar qué aplicación está utilizando este método." + }, + "ACT-01": { + "title": "El dominio {} está usando un servidor de nombres sospechoso ({}).", + "description": "El nombre de dominio {} usa un servidor de nombres que ha sido explícitamente etiquetado como asociado a actividad maliciosa. Muchos ciberdelincuentes y otros actores de amenazas utilizan este tipo de registradores ya que aceptan criptomonedas y pagos anónimos. Se recomienda investigar este dominio y la aplicación en ejecución asociada mediante un análisis forense del dispositivo." + }, + "ACT-02": { + "title": "El dominio {} se creó recientemente (hay {} días).", + "description": "El nombre de dominio {} es nuevo. Incluso esto no es intrínsecamente malicioso, es bastante común que los atacantes configuren una nueva infraestructura para cada campaña, lo que puede llevar al uso de nombres de dominio recién registrados." + }, + "SSL-01": { + "title": "Conexión SSL realizada mediante un puerto no standard ({}) a {}", + "description": "Las conexiones SSL desde dispositivos móviles usando puertos no standard no son muy comunes. Aunque pudiera ser totalmente legítima, recomendamos verificar la reputación de {}, comprobando su registro WHOIS, su sistema autónomo asociado y su fecha de creación mediante su búsqueda en Internet." + }, + "SSL-02": { + "title": "Conexión SSL a {} està usando un certificado gratuito", + "description": "Certificados gratuitos - como Let's Encrypt — son ampliamente utilizados por servidores de control asociados a software malicioso o webs de phishing. Recomendamos verificar el host asociado a esta certificado comprobando el nombre de dominio, su fecha de creación y verificando su reputación en Internet." + }, + "SSL-03": { + "title": "El certificado asociado a {} es autofirmado.", + "description": "El uso de certificados autofirmados es un elemento común en infraestructuras utilizadas por atacantes. Recomendamos comprobar el host {} que está asociado a este certificado, especialmente su nombre de dominio (en caso de existir), su registro WHOIS, su fecha de creación y verificando su reputación en Internet." + }, + "SSL-04": { + "title": "El certificado asociado con {} está vinculado a una actividad maliciosa ({}).", + "description": "El certificado asociado con server {} ha sido categorizado explícitamente como malicioso. Su dispositivo parece comprometido y necesita ser investigado por un equipo profesional." + }, + "SSL-05": { + "title": "La configuración SSL de {} está vinculada a una actividad maliciosa ({}).", + "description": "El hash JARM relacionado con el servidor {} se ha asociado explícitamente con actividad maliciosa. Su dispositivo está posiblemente comprometido y necesita ser investigado por un equipo profesional." + }, + "ADV-01": { + "title": "Compruebe las alertas para {}", + "description": "Por favor, verifique la reputación del host {}, ya que parece ser malicioso por aparecer en {} alertas durante la sesión." + }, + "SNORT-01": { + "title": "Regla Suricata activada: {}", + "description": "Una regla de detección ha sido activada. Probablemente su dispositivo está comprometido o presenta comportamiento sospechoso." + } + }, + "report": { + "numbers": [ + "uno", + "dos", + "tres", + "cuatro", + "cinco", + "seis", + "siete", + "ocho", + "nueve" + ], + "suspect_title": "Comunicaciones sospechosas", + "uncat_title": "Comunicaciones no categorizadas", + "whitelist_title": "Comunicaciones en lista blanca", + "protocol": "Protocolo", + "domain": "Dominio", + "dst_ip": "Dirección IP destino", + "dst_port": "Puerto destino número", + "device_mac": "Dirección MAC dispositivo", + "report_generated_on": "Informe generado en", + "capture_duration": "Duración captura", + "packets_number": "Número de paquetes", + "capture_sha1": "Captura SHA1", + "report_for_the_capture": "Informe de la captura", + "report_footer": "Este informe ha sido autogenerado por un dispositivo SpyGuard. Para cualquier pregunta, informe de fallos o feedback por favor contacte con contact@spyguard.io.", + "high_msg": "Su dispositivo parece estar comprometido ya que tiene {} alerta(s) de nivel alto.", + "moderate_msg": "Tienes {} alerta(s) de nivel moderado, su dispositivo podría estar comprometido. Por favor revíselas detenidamente.", + "low_msg": "Solamente tiene {} alertas(s) de nivel bajo, por favor revíselas.", + "none_msg": "Todo se ve bien, cero alertas. No dude en comprobar las comunicaciones no clasificadas (en caso de haberlas).", + "detection_methods": "Métodos de detección", + "analysis_duration": "Tiempo de análisis", + "instance_uuid": "Instancia de SpyGuard", + "seconds" : "segundo(s)" + } +} diff --git a/analysis/locales/fr.json b/analysis/locales/fr.json new file mode 100755 index 0000000..9234956 --- /dev/null +++ b/analysis/locales/fr.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "Une communication {} va à l'extérieur du réseau jusqu'à {}.", + "description": "Le protocole {} est généralement utilisé dans des réseaux internes. Vérifiez si le serveur {} a soulevé d'autres alertes. Ceci pourrait indiquer la présence d'une possible application malveillante." + }, + "PROTO-02": { + "title": "Connexion {} vers {} sur un port au dessus ou égal à {}.", + "description": "Des connexions {} vers {} ont été vues utilisant le port {}. L'utilisation d'un numéro de port non standard peut être associé à des activités malveillantes. Nous recommandons de vérifier si ce serveur possède une bonne réputation en regardant les autres alertes et en le cherchant sur Internet." + }, + "PROTO-03": { + "title": "Des communications HTTP ont été réalisées vers {}", + "description": "Votre appareil a communiqué avec le serveur {} en utilisant HTTP, un protocole non chiffré. Même si ce n'est pas malveillant en tant que tel, il est rare de voir des communications HTTP issues d'applications installées sur des smartphones exécutées en arrière plan. Il est conseillé de vérifier la réputation du serveur en le recherchant sur Internet." + }, + "PROTO-04": { + "title": "Des communications HTTP ont été réalisées vers {} sur un port non standard ({}).", + "description": "Votre appareil a communiqué vers le serveur {} en utilisant HTTP, un protocole non chiffré sur le port {}. Ce type de communication peut être signe d'une activité malveillante sur votre appareil car il est très rare qu'HTTP utilise ce port. Il est conseillé de vérifier la réputation du serveur en le recherchant sur Internet." + }, + "PROTO-05": { + "title": "Le serveur {} n'a pas été résolu par le protocole DNS durant la session", + "description": "Cela signifie que le serveur {} ne possède pas de nom de domaine associé ou que sa résolution a déjà été mise en cache par votre appareil. Si le serveur apparait dans d'autres alertes, merci de vérifier sa réputation." + }, + "IOC-01": { + "title": "Connexion vers {} ({}) qui est tagué en tant que {}.", + "description": "Le serveur {} est connu pour être associé à des activités malveillantes. Votre appareil est surement compromis et doit être investigué plus en détails par une équipe professionnelle." + }, + "IOC-02": { + "title": "Connexion vers {} appartenant au bloc réseau {} qui est tagué en tant que {}.", + "description": "Le serveur {} est hébergé dans un réseau qui est connu pour abriter des activités malveillantes. Même si ce n'est pas malveillant en tant que tel, vous devez regarder si d'autres alertes mentionnent ce serveur. Si vous avez certains doutes, recherchez sur Internet ce serveur pour savoir s'il semble être légitime ou non." + }, + "IOC-03": { + "title": "Requête DNS vers le domaine {} qui est tagué en tant que {}.", + "description": "Le serveur {} vers lequel communique votre appareil a été explicitement catégorisé en tant que malveillant. Votre appareil est sûrement compromis et doit être investigué plus en détails par une équipe professionnelle." + }, + "IOC-04": { + "title": "Requête DNS vers le domaine {} qui est tagué en tant que {}.", + "description": "Le nom de domaine {} vers lequel communique votre appareil a été explicitement catégorisé comme un tracker. Ceci indique d'une application active sur votre appareil est entrain de vous géo-localiser." + }, + "IOC-05": { + "title": "Requête DNS vers le domaine {} qui est un domaine gratuit.", + "description": "Le nom de domaine {} utilise un service de noms de domaine gratuits. Ce type de service est couramment utilisé par les cybercriminels ou des acteurs associés à des États au cours de leurs opérations d'espionnage. Il est très suspect qu'une application exécutée en arrière-plan utilise ce type de service, veuillez enquêter." + }, + "IOC-06": { + "title": "Requête DNS vers le domaine {} contenant une extension suspecte.", + "description": "Le nom de domaine {} utilise une extension suspecte ({}). Même si cela n'est pas malveillant en-soi, l'utilisation d'une extension non générique est l'apanage d'acteurs cybercriminels et étatiques durant leurs opérations. Veuillez vérifier la pertinance de ce domaine en le recherchant sur un moteur de recherche Internet. Si d'autres alertes sont liées à ce dernier, veuillez le considérer comme très suspect." + }, + "IOC-07": { + "title": "Un certificat associé à des activités de {} a été vu lors de communications vers {}.", + "description": "Le certificat ({}) associé au serveur {} a été explicitement catégorisé comme malveillant. Votre appareil est sûrement compromis et doit être investigué plus en détails par une équipe professionnelle." + }, + "IOC-08": { + "title": "Requête HTTP vers le domaine {} qui est tagué en tant que {}.", + "description": "Le serveur {} vers lequel communique votre appareil a été explicitement catégorisé en tant que malveillant. Votre appareil est sûrement compromis et doit être investigué plus en détails par une équipe professionnelle." + }, + "IOC-09": { + "title": "Requête HTTP vers le domaine {} qui est un domaine gratuit.", + "description": "Le nom de domaine {} utilise un service de noms de domaine gratuits. Ce type de service est couramment utilisé par les cybercriminels ou des acteurs associés à des États au cours de leurs opérations d'espionnage. Il est très suspect qu'une application exécutée en arrière-plan utilise ce type de service, veuillez enquêter." + }, + "IOC-10": { + "title": "Requête HTTP vers le domaine {} contenant une extension suspecte.", + "description": "Le nom de domaine {} utilise une extension suspecte ({}). Même si cela n'est pas malveillant en-soi, l'utilisation d'une extension non générique est l'apanage d'acteurs cybercriminels et étatiques durant leurs opérations. Veuillez vérifier la pertinance de ce domaine en le recherchant sur un moteur de recherche Internet. Si d'autres alertes sont liées à ce dernier, veuillez le considérer comme très suspect." + }, + "IOC-11": { + "title": "Connexion vers {} ({}) qui est référencé en tant que noeud TOR.", + "description": "Le serveur {} est référencé en tant que noeud sur le réseau d'anonymisation TOR. Le dispositif analysé semble utiliser TOR ou communique avec un serveur configuré comme noeud d'entrée ou de sortie TOR. Certains attaquants utilisent TOR sur leurs serveurs afin de brouiller les pistes." + }, + "IOC-12": { + "title": "Une application requête un service pouvant avoir un double emploi.", + "description": "Le serveur {} est utilisé à des fins légitimes. Toutefois, certains attaquants s'en servent pour intéragir avec leurs implants. Il est conseillé de vérifier que l'appareil analysé contient bien une application légitime utilisant ce service." + }, + "IOC-13": { + "title": "Au moins une application utilise des requêtes DNS chiffrées", + "description": "Le résolveur de noms utilisant HTTPs {} a été contacté durant la capture. Ceci semble indiquer qu'au moins une application utilise cette technique permettant de chiffrer les requêtes DNS. Cette fonctionnalité limite les capacités d'analyse de SpyGuard. Si cette fonctionnalité n'est pas activée sur le dispositif analysé, il peut être intéressant de découvrir quelle application utilise cette méthode." + }, + "ACT-01": { + "title": "Le domaine {} utilise un serveur de noms suspect ({}).", + "description": "Le nom de domaine {} utilise un serveur de noms qui a été explicitement catégorisé comme associé à des activités malveillantes. Plusieurs cybercriminels et acteurs étatiques utilisent ce type de serveurs de noms car ils autorisent les paiements anonymes grâce aux cryptomonnaies. Il est conseillé d'investiguer sur ce domaine et l'application s'y connectant en réalisant une analyse post-mortem de l'appareil analysé." + }, + "ACT-02": { + "title": "Le domaine {} a été créé récemment (il y a {} jours).", + "description": "Le nom de domaine {} est nouveau. Même ce n'est pas malveillant en soi, il est assez courant pour les attaquants de mettre en place une nouvelle infrastructure pour chaque campagne, ce qui peut conduire à l'utilisation de noms de domaine récemment enregistrés." + }, + "SSL-01": { + "title": "Connexion SSL utilisant un port non standard ({}) vers {}", + "description": "Il n'est pas commun de voir des connexions SSL issues de smartphones utiliser des ports non standards. Même si cela peut être totalement légitime, il est recommandé d'évaluer la réputation du serveur {}, en regardant son enregistrement WHOIS, son système autonome, sa date de création et en le recherchant sur Internet." + }, + "SSL-02": { + "title": "Une connexion SSL vers {} utilise un certificat gratuit.", + "description": "Les certificats gratuits — tels que Let's Encrypt - sont largement utilisés par des serveurs de commande et de contrôle associés à des implants malveillants ou à des pages Web de phishing. Nous vous recommandons de vérifier le serveur associé à ce certificat, en regardant le nom de domaine, sa date de création, ou en vérifiant sa réputation sur Internet." + }, + "SSL-03": { + "title": "Le certificat associé à {} est auto-signé.", + "description": "L'utilisation de certificats auto-signés est une chose courante pour des infrastructures d'attaque associées à des activités malveillantes. Nous vous recommandons de vérifier le serveur {} qui est associé à ce certificat, en regardant le nom de domaine (le cas échéant), son enregistrement WHOIS, sa date de création, et en vérifiant sa réputation sur Internet." + }, + "SSL-04": { + "title": "Le certificat associé à {} est lié à des activités malveillantes ({}).", + "description": "Ce certificat associé au serveur {} a été explicitement catégorisé en tant que malveillant. Votre appareil est sûrement compromis et doit être investigué plus en détails par une équipe professionnelle." + }, + "SSL-05": { + "title": "La configuration SSL de {} est associé à des activités malveillantes ({}).", + "description": "Le hash JARM lié au serveur {} a été explicitement associé à des activités malveillantes. Votre appareil est sûrement compromis et doit être investigué plus en détails par une équipe professionnelle." + }, + "ADV-01": { + "title": "Vérifiez les alertes liées au serveur {}", + "description": "Merci de vérifier la réputation et les alertes liées au serveur {}, ce dernier semble malveillant, ayant engendré {} alertes durant la session de capture." + }, + "SNORT-01": { + "title": "Règle suricata déclanchée : {}", + "description": "Une règle de détection de réseau a été déclenchée. Il est probable que votre appareil ait été compromis ou présente un comportement suspect." + } + }, + "report": { + "numbers": [ + "une", + "deux", + "trois", + "quatre", + "cinq", + "six", + "sept", + "huit", + "neuf" + ], + "suspect_title": "Communications suspectes", + "uncat_title": "Communications non catégorisées", + "whitelist_title": "Communications légitimes", + "protocol": "Protocole", + "domain": "Domaine", + "dst_ip": "Adresse IP", + "dst_port": "Port", + "device_mac": "Adresse MAC de l'appareil", + "report_generated_on": "Rapport généré le ", + "capture_duration": "Durée de la capture", + "packets_number": "Nombre de paquets", + "capture_sha1": "SHA1 de la capture", + "report_for_the_capture": "Rapport pour la capture", + "report_footer": "Ce rapport a été automatiquement généré par une instance de SpyGuard. Pour toute question et retours, n'hésitez pas à contacter contact@spyguard.io.", + "high_msg": "Votre appareil semble être compromis car vous avez {} alerte(s) élevée(s).", + "moderate_msg": "Vous avez {} alerte(s) modérée(s), votre appareil peut être compromis. Regardez ces alertes en détail.", + "low_msg": "Vous avez uniquement {} alerte(s) faibles, n'hésitez pas à les consulter.", + "none_msg": "Toute semble normal, vous avez aucune alerte. Cependant, n'hésitez pas à regarder les communications non catégorisées.", + "detection_methods": "Méthodes de détection", + "analysis_duration": "Durée d'analyse", + "instance_uuid": "Instance de SpyGuard", + "seconds" : "seconde(s)" + } +} diff --git a/analysis/locales/it.json b/analysis/locales/it.json new file mode 100755 index 0000000..bd40bed --- /dev/null +++ b/analysis/locales/it.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "{} comunicazione in uscita dalla rete locale a {}.", + "description": "Il protocollo {} è comunemente utilizzato nelle reti interne. Verificare se l'host {} ha sfruttato altri avvisi, fattore che potrebbe indicare un possibile comportamento dannoso." + }, + "PROTO-02": { + "title": "{} connessione a {} tramite una porta superiore o uguale a {}.", + "description": "Sono state rilevate {} connessioni a {} tramite la porta {}. L'utilizzo di una porta non standard a volte può essere associato ad attività dannose. È consigliabile verificare se questo host ha una buona reputazione esaminando altri avvisi ed effettuando una ricerca in Internet." + }, + "PROTO-03": { + "title": "Sono state generate comunicazioni HTTP dirette all'host {}", + "description": "Il dispositivo ha effettuato uno scambio con l'host {} utilizzando HTTP, un protocollo non criptato. Anche se questo comportamento non è dannoso in sé, è raro rilevare comunicazioni HTTP generate da applicazioni per smartphone in esecuzione in background. Controllare la reputazione dell'host effettuando una ricerca in Internet." + }, + "PROTO-04": { + "title": "Sono state rilevate comunicazioni HTTP dirette all'host {} su una porta non standard ({}).", + "description": "Il dispositivo ha effettuato uno scambio con l'host {} utilizzando HTTP, un protocollo non criptato sulla porta {}. Questo comportamento è decisamente insolito. Controllare la reputazione dell'host effettuando una ricerca in Internet." + }, + "PROTO-05": { + "title": "Il server {} non è stato risolto da nessuna query DNS durante la sessione", + "description": "Questo indica che il server {} probabilmente non è stato risolto da nessun nome di dominio o che la risoluzione è già stata memorizzata nella cache dal dispositivo. Se l'host viene visualizzato in altri avvisi, controllarlo." + }, + "IOC-01": { + "title": "È stata stabilita una connessione a {} ({}) con contrassegno {}.", + "description": "L'host {} è stato esplicitamente inserito nella blacklist per attività dannose. Probabilmente il dispositivo è compromesso e deve essere esaminato più a fondo da professionisti della sicurezza IT." + }, + "IOC-02": { + "title": "Comunicazione a {} con il CIDR {} con contrassegno {}.", + "description": "Il server {} è ospitato in una rete nota per l'hosting di attività dannose. Nonostante questo comportamento non sia dannoso in sé, è necessario verificare se l'host è menzionato anche in altri avvisi. In caso di dubbi, cercare l'host in Internet per scoprire se è legittimo o meno." + }, + "IOC-03": { + "title": "È stata effettuata una richiesta DNS a {} con contrassegno {}.", + "description": "Il nome di dominio {} visualizzato nell'acquisizione è stato esplicitamente contrassegnato come dannoso. Questo indica che il dispositivo è potenzialmente compromesso e deve essere esaminato a fondo." + }, + "IOC-04": { + "title": "È stata effettuata una richiesta DNS a {} con contrassegno {}.", + "description": "Il nome di dominio {} visualizzato nell'acquisizione è stato esplicitamente contrassegnato come Tracker. Questo indica che una delle app attive esegue la geolocalizzazione dei movimenti dell'utente." + }, + "IOC-05": { + "title": "È stata effettuata una richiesta DNS al dominio {} che è un servizio Free DNS.", + "description": "Il nome di dominio {} utilizza un servizio Free DNS. Questo tipo di servizio è comunemente utilizzato durante le operazioni di criminali informatici o autori di attacchi commissionati da stati esteri. L'utilizzo di questo tipo di servizio da parte di un'applicazione in esecuzione in background è molto sospetto e richiede ulteriori indagini." + }, + "IOC-06": { + "title": "È stata effettuata una richiesta DNS al dominio {} contenente un dominio di primo livello sospetto.", + "description": "Il nome di dominio {} utilizza un dominio di primo livello sospetto ({}). Anche se non dannoso, questo dominio di primo livello non generico viene utilizzato regolarmente durante le operazioni di criminali informatici o autori di attacchi commissionati da stati esteri. Controllare questo dominio effettuando una ricerca tramite un motore di ricerca Internet. Se altri avvisi sono correlati all'host, è necessario considerare questo elemento molto sospetto." + }, + "IOC-07": { + "title": "Nella comunicazione a {} è stato rilevato un certificato associato ad attività {}.", + "description": "Il certificato ({}) associato a {} è stato esplicitamente contrassegnato come dannoso. Questo indica che il dispositivo è potenzialmente compromesso e necessita di un'analisi forense." + }, + "IOC-08": { + "title": "È stata effettuata una richiesta HTTP a {} con contrassegno {}.", + "description": "Il nome di dominio {} visualizzato nell'acquisizione è stato esplicitamente contrassegnato come dannoso. Questo indica che il dispositivo è potenzialmente compromesso e deve essere esaminato a fondo." + }, + "IOC-09": { + "title": "È stata effettuata una richiesta HTTP al dominio {} che è un servizio Free DNS.", + "description": "Il nome di dominio {} utilizza un servizio Free DNS. Questo tipo di servizio è comunemente utilizzato durante le operazioni di criminali informatici o autori di attacchi commissionati da stati esteri. L'utilizzo di questo tipo di servizio da parte di un'applicazione in esecuzione in background è molto sospetto e richiede ulteriori indagini." + }, + "IOC-10": { + "title": "È stata effettuata una richiesta HTTP al dominio {} contenente un dominio di primo livello sospetto.", + "description": "Il nome di dominio {} utilizza un dominio di primo livello sospetto ({}). Anche se non dannoso, questo dominio di primo livello non generico viene utilizzato regolarmente durante le operazioni di criminali informatici o autori di attacchi commissionati da stati esteri. Controllare questo dominio effettuando una ricerca tramite un motore di ricerca Internet. Se altri avvisi sono correlati all'host, è necessario considerare questo elemento molto sospetto." + }, + "IOC-11": { + "title": "Connessione a {} ({}) a cui si fa riferimento come nodo TOR.", + "description": "Il server {} è un nodo della rete di anonimizzazione TOR. Il dispositivo analizzato sembra utilizzare TOR o comunicare con un server configurato come un nodo di ingresso o di uscita TOR. Alcuni attaccanti usano TOR sui loro server per coprire le loro tracce." + }, + "IOC-12": { + "title": "Un'applicazione richiede un servizio legittimo che può avere un doppio uso .", + "description": "Il server {} viene utilizzato per scopi legittimi. Tuttavia, alcuni attaccanti possono utilizzarlo per interagire con i loro impianti. Si consiglia di verificare che il dispositivo analizzato contenga un'applicazione legittima che utilizza questo servizio." + }, + "IOC-13": { + "title": "Almeno un'applicazione utilizza query DNS crittografate.", + "description": "Il DNS sul server https {} è stato contattato durante la cattura. Questo sembra indicare che almeno un'applicazione utilizza questa tecnica per crittografare le sue richieste DNS. Questa funzione limita le capacità di scansione di SpyGuard. Se questa funzione non è abilitata sul dispositivo analizzato, può essere la pena scoprire quale applicazione sta utilizzando questo metodo." + }, + "ACT-01": { + "title": "Il dominio {} utilizza un server dei nomi sospetto ({}).", + "description": "Il nome di dominio {} utilizza un server dei nomi che è stato esplicitamente contrassegnato come associato ad attività dannose. Molti criminali informatici e autori di attacchi commissionati da stati esteri utilizzano questo tipo di registrar poiché sono ammessi criptovalute e pagamenti anonimi. È consigliabile indagare su questo dominio e sull'applicazione in esecuzione associata eseguendo un'analisi forense del telefono." + }, + "ACT-02": { + "title": "Il dominio {} è stato creato di recente ({} giorni fa)", + "description": "Il nome di dominio {} è nuovo. Anche questo non è intrinsecamente dannoso, è abbastanza comune per gli aggressori impostare una nuova infrastruttura per ogni campagna, che può portare all'uso di nomi di dominio appena registrati." + }, + "SSL-01": { + "title": "Connessione SSL eseguita su una porta non standard ({}) a {}", + "description": "Non è comune rilevare connessioni SSL generate da smartphone tramite porte non standard. Anche se questo può essere del tutto legittimo, è consigliabile controllare la reputazione di {} prestando attenzione al record WHOIS, al sistema autonomo associato e alla data di creazione, nonché effettuando una ricerca in Internet." + }, + "SSL-02": { + "title": "Una connessione SSL a {} utilizza un certificato gratuito.", + "description": "I certificati gratuiti, come Let's Encrypt, sono ampiamente utilizzati dai server di comando e controllo associati a insediamenti dannosi o pagine Web di phishing. È consigliabile controllare l'host associato a questo certificato, prestando attenzione al nome di dominio e alla data di creazione o verificandone la reputazione in Internet." + }, + "SSL-03": { + "title": "Il certificato associato a {} è autofirmato.", + "description": "L'utilizzo di certificati autofirmati è una consuetudine per l'infrastruttura degli autori degli attacchi. È consigliabile controllare l'host {} associato a questo certificato, prestando attenzione all'eventuale nome di dominio, al record WHOIS e alla data di creazione, nonché verificandone la reputazione in Internet." + }, + "SSL-04": { + "title": "Il certificato associato a {} è collegato ad attività dannose ({}).", + "description": "Il certificato associato al server {} è stato esplicitamente classificato come dannoso. Il dispositivo sembra compromesso e deve essere ulteriormente indagato da un team di professionisti." + }, + "SSL-05": { + "title": "La configurazione SSL di {} è collegata ad attività dannose ({}).", + "description": "L'hash JARM relativo al server {} è stato esplicitamente associato ad attività dannose. Il dispositivo è probabilmente compromessa e deve essere ulteriormente indagato da un team di professionisti." + }, + "ADV-01": { + "title": "Controllare gli avvisi per {}", + "description": "Controllare la reputazione dell'host {}, che sembra di natura dannosa poiché ha sfruttato {} avvisi durante la sessione." + }, + "SNORT-01": { + "title": "Regola Suricata attivata: {}", + "description": "È stata attivata una regola di rilevamento della rete. È probabile che il dispositivo sia stato compromesso o che presenti comportamenti sospetti." + } + }, + "report": { + "numbers": [ + "uno", + "due", + "tre", + "quattro", + "cinque", + "sei", + "sette", + "otto", + "nove" + ], + "suspect_title": "Comunicazioni sospette", + "uncat_title": "Comunicazioni non categorizzate", + "whitelist_title": "Comunicazioni inserite nella whitelist", + "protocol": "Protocollo", + "domain": "Dominio", + "dst_ip": "Indirizzo IP di destinazione", + "dst_port": "Numero della porta di destinazione", + "device_mac": "Indirizzo MAC dispositivo", + "report_generated_on": "Rapporto generato in data", + "capture_duration": "Durata acquisizione", + "packets_number": "Numero di pacchetti", + "capture_sha1": "SHA1 acquisizione", + "report_for_the_capture": "Rapporto relativo all'acquisizione", + "report_footer": "Questo rapporto è stato generato automaticamente da un dispositivo SpyGuard. Per eventuali domande, segnalazioni di bug o feedback, contattare contact@spyguard.io.", + "high_msg": "Sembra che il dispositivo sia compromesso poiché sono presenti {} avvisi con priorità elevata.", + "moderate_msg": "Sono presenti {} avvisi con priorità moderata, è possibile che il dispositivo sia compromesso. Esaminarli con attenzione.", + "low_msg": "Sono presenti solo {} avvisi con priorità bassa da controllare.", + "none_msg": "Sembra tutto a posto, non sono presenti avvisi. Controllare eventuali comunicazioni non categorizzate.", + "detection_methods": "Metodi di rilevamento", + "analysis_duration": "Tempo di analisi", + "instance_uuid": "Istanza di SpyGuard", + "seconds" : "secondi" + } +} diff --git a/analysis/locales/pt.json b/analysis/locales/pt.json new file mode 100755 index 0000000..a60352a --- /dev/null +++ b/analysis/locales/pt.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "Comunicação {} externa à rede local para {}.", + "description": "O protocolo {} é comumente usado em redes internas. Verifique se o host {} acionou outros alertas que possam indicar um possível comportamento malicioso." + }, + "PROTO-02": { + "title": "Conexão {} a {} para uma porta maior ou igual a {}.", + "description": "Conexões {} foram detectadas por {} usando a porta {}. O uso da porta não padrão é comumente associado a atividades maliciosas. É recomendado verificar se esse host tem uma boa reputação verificando outros alertas e pesquisando-o na internet." + }, + "PROTO-03": { + "title": "Comunicações HTTP foram realizadas com o host {}", + "description": "O dispositivo foi conectado ao host {} por meio de HTTP, um protocolo não criptografado. Mesmo que esse comportamento, por si só, não seja malicioso, é incomum que comunicações HTTP sejam estabelecidas por meio de aplicativos móveis em segundo plano. Verifique a reputação do host pesquisando-o na Internet." + }, + "PROTO-04": { + "title": "Comunicações HTTP foram detectadas pelo host {} por meio de uma porta não padrão ({}).", + "description": "O dispositivo foi conectado ao host {} por meio de HTTP, um protocolo não criptografado na porta {}. Esse comportamento é incomum. Verifique a reputação do host pesquisando-o na Internet." + }, + "PROTO-05": { + "title": "O servidor {} não foi resolvido por nenhuma consulta de DNS durante a sessão", + "description": "Isso significa provavelmente que o servidor {} não foi resolvido por nenhum nome de domínio ou a resolução já foi armazenada pelo dispositivo. Se o host aparecer em outros alertas, verifique-os." + }, + "IOC-01": { + "title": "Uma conexão foi estabelecida com {} ({}) e marcada como {}.", + "description": "O host {} foi explicitamente bloqueado devido a atividades maliciosas. O dispositivo provavelmente foi comprometido e precisa ser analisado com cuidado por profissionais de segurança de TI." + }, + "IOC-02": { + "title": "Comunicação com {} com o CIDR {} marcado como {}.", + "description": "O host {} está hospedado em uma rede que é conhecida por atividades maliciosas. Mesmo que o comportamento, por si só, não seja malicioso, é necessário verificar se outros alertas são gerados para esse host. Em caso de dúvidas, pesquise esse host na internet para verificar sua autenticidade." + }, + "IOC-03": { + "title": "Uma solicitação de DNS foi feita para {}, marcado como {}.", + "description": "O nome de domínio {} visto na captura foi explicitamente marcado como malicioso. Isso indica que o dispositivo provavelmente foi comprometido e precisa ser analisado com cuidado." + }, + "IOC-04": { + "title": "Uma solicitação de DNS foi feita para {}, marcado como {}.", + "description": "O nome de domínio {} visto na captura foi explicitamente marcado como um Tracker. Isso indica que um dos aplicativos ativos está rastreando sua localização." + }, + "IOC-05": { + "title": "Uma solicitação de DNS foi feita para o domínio {}, que é um DNS gratuito.", + "description": "O nome de domínio {} está usando um serviço de DNS gratuito. Esse tipo de serviço é comumente usado por cibercriminosos ou agências de inteligência estatais no exercício de suas funções. É muito suspeito que aplicativos em execução em segundo plano usem esse tipo de serviço e isso deve ser analisado com cuidado." + }, + "IOC-06": { + "title": "Uma solicitação de DNS foi feita para o domínio {}, que contém um TLD (domínio de nível superior) suspeito.", + "description": "O nome de domínio {} está usando um TLD suspeito ({}). Mesmo não sendo malicioso, esse TLD não genérico é frequentemente usado por cibercriminosos ou agências de inteligência estatais. Analise a reputação do domínio pesquisando-o na internet. Se outros alertas forem observados, considere esse host como muito suspeito." + }, + "IOC-07": { + "title": "Um certificado associado a atividades de {} foi encontrado na comunicação para {}.", + "description": "O certificado ({}) associado a {} foi explicitamente marcado como malicioso. Isso indica que o dispositivo provavelmente foi comprometido e precisa de uma análise forense." + }, + "IOC-08": { + "title": "Uma solicitação de HTTP foi feita para {}, marcado como {}.", + "description": "O nome de domínio {} visto na captura foi explicitamente marcado como malicioso. Isso indica que o dispositivo provavelmente foi comprometido e precisa ser analisado com cuidado." + }, + "IOC-09": { + "title": "Uma solicitação de HTTP foi feita para o domínio {}, que é um DNS gratuito.", + "description": "O nome de domínio {} está usando um serviço de DNS gratuito. Esse tipo de serviço é comumente usado por cibercriminosos ou agências de inteligência estatais no exercício de suas funções. É muito suspeito que aplicativos em execução em segundo plano usem esse tipo de serviço e isso deve ser analisado com cuidado." + }, + "IOC-10": { + "title": "Uma solicitação de HTTP foi feita para o domínio {}, que contém um TLD (domínio de nível superior) suspeito.", + "description": "O nome de domínio {} está usando um TLD suspeito ({}). Mesmo não sendo malicioso, esse TLD não genérico é frequentemente usado por cibercriminosos ou agências de inteligência estatais. Analise a reputação do domínio pesquisando-o na internet. Se outros alertas forem observados, considere esse host como muito suspeito." + }, + "IOC-11": { + "title": "Conexão com {} ({}) que é referenciado como um nó TOR.", + "description": "O servidor {} é referenciado como um nó na rede de anonimização do TOR. O dispositivo analisado parece estar usando TOR ou se comunicando com um servidor configurado como um nó de entrada ou saída TOR. Alguns atacantes usam o TOR em seus servidores para cobrir seus rastros." + }, + "IOC-12": { + "title": "Um aplicativo solicita um serviço legítimo que pode ter um uso duplo", + "description": "O servidor {} é usado para fins legítimos. Contudo, alguns atacantes podem usá- lo para interagir com os seus implantes. É aconselhável verificar se o dispositivo analisado contém um aplicativo legítimo que usa esse serviço." + }, + "IOC-13": { + "title": "Pelo menos um aplicativo usa consultas DNS criptografadas.", + "description": "O servidor DNS over https {} foi contatado durante a captura. Isso parece indicar que pelo menos um aplicativo usa essa técnica para criptografar suas solicitações de DNS. Esse recurso limita os recursos de verificação do SpyGuard. Se esse recurso não estiver ativado no dispositivo analisado, pode valer a pena descobrir qual aplicativo está usando esse método." + }, + "ACT-01": { + "title": "O domínio {} está usando um servidor de nomes suspeito ({}).", + "description": "O nome de domínio {} está usando um servidor de nomes explicitamente marcado como associado a atividades maliciosas. Muitos cibercriminosos e agentes de inteligência estatais usam esse tipo de registradores porque isso permite pagamentos com criptomoedas e anônimos. É recomendável investigar esse domínio e o aplicativo em execução por meio de uma análise forense do telefone." + }, + "ACT-02": { + "title": "O domínio {} foi criado recentemente ({} dias atrás).", + "description": "O nome de domínio {} é novo. Mesmo que isso não seja intrinsecamente malicioso, é bastante comum que os invasores configurem uma nova infraestrutura para cada campanha, o que pode levar ao uso de nomes de domínio recém-registrados." + }, + "SSL-01": { + "title": "Conexão SSL feita em uma porta não padrão ({}) para {}", + "description": "Não é comum ver conexões SSL a partir de dispositivos móveis usando portas não padrão. Mesmo que a conexão pareça ser autêntica, é recomendável analisar a reputação de {} verificando pesquisando na internet o registro de domínio, o sistema autônomo associado e a data de criação." + }, + "SSL-02": { + "title": "Uma conexão SSL com {} está usando um certificado gratuito.", + "description": "Certificados gratuitos, como o Let's Encrypt, são amplamente usados por servidores de comando e controle associados a arquivos maliciosos ou páginas de phishing. É recomendável analisar o host associado a esse certificado verificando o nome de domínio, a data de criação ou pesquisando sua reputação na internet." + }, + "SSL-03": { + "title": "O certificado associado a {} é autoassinado.", + "description": "O uso de certificados autoassinados é comum na infraestrutura de invasores. É recomendável analisar o host {} que está associado a esse certificado verificando o nome e o registro de domínio (se houver), a data de criação e sua reputação na internet." + }, + "SSL-04": { + "title": "O certificado associado a {} está vinculado a atividades maliciosas ({}).", + "description": "O certificado associado ao servidor {} foi explicitamente categorizado como malicioso. Seu dispositivo parece comprometido e precisa ser investigado por uma equipe profissional." + }, + "SSL-05": { + "title": "A configuração SSL de {} está ligada à atividade maliciosa ({}).", + "description": "O hash JARM {} relacionado ao servidor foi explicitamente associado à atividade maliciosa. Seu dispositivo está possivelmente comprometido e precisa ser investigado por uma equipe profissional." + }, + "ADV-01": { + "title": "Verifique os alertas para {}", + "description": "Verifique a reputação do host {}, este parece ser malicioso, pois acionou alertas para {} durante a sessão." + }, + "SNORT-01": { + "title": "Regra do Suricata acionada: {}", + "description": "Uma regra de detecção de rede foi acionada. É provável que o dispositivo tenha sido comprometido ou apresente comportamento suspeito." + } + }, + "report": { + "numbers": [ + "um", + "dois", + "três", + "quatro", + "cinco", + "seis", + "sete", + "oito", + "nove" + ], + "suspect_title": "Comunicações suspeitas", + "uncat_title": "Comunicações não categorizadas", + "whitelist_title": "Comunicações permitidas", + "protocol": "Protocolo", + "domain": "Domínio", + "dst_ip": "Endereço IP do dst", + "dst_port": "Número da porta do dst", + "device_mac": "Endereço MAC do dispositivo", + "report_generated_on": "Relatório criado em", + "capture_duration": "Duração da captura", + "packets_number": "Número de pacotes", + "capture_sha1": "Captura SHA1", + "report_for_the_capture": "Relatório da captura", + "report_footer": "Este relatório foi gerado automaticamente por um dispositivo SpyGuard. Em caso de dúvidas, relatório de erros ou comentários, envie uma mensagem para contact@spyguard.io.", + "high_msg": "O dispositivo parece estar comprometido porque você tem {} alerta(s) crítico(s).", + "moderate_msg": "Você tem {} alerta(s) moderado(s), seu dispositivo pode estar comprometido. Analise-os com cuidado.", + "low_msg": "Você tem apenas {} alerta(s) leve(s), não deixe de verificá-los.", + "none_msg": "Tudo parece estar bem, zero alertas. Não deixe de verificar comunicações não categorizadas, se houver.", + "detection_methods": "Métodos de detecção", + "analysis_duration": "Tempo de análise", + "instance_uuid": "Instância do SpyGuard", + "seconds": "segunda(s)" + } +} diff --git a/analysis/locales/ru.json b/analysis/locales/ru.json new file mode 100755 index 0000000..e905806 --- /dev/null +++ b/analysis/locales/ru.json @@ -0,0 +1,147 @@ +{ + "alerts": { + "PROTO-01": { + "title": "Обнаружено подключение {}, ведущее за пределы локальной сети к {}.", + "description": "Протокол {} обычно используется во внутренних сетях. Проверьте, выдавало ли устройство {} другие предупреждения, которые могут свидетельствовать о вредоносной активности." + }, + "PROTO-02": { + "title": "Подключение {} к {} установлено на порте, равном или более {}.", + "description": "Обнаружено {} подключений к {} с использованием порта {}. Использование нестандартного порта иногда может свидетельствовать о вредоносной активности. Рекомендуется проверить репутацию этого устройства, просмотрев другие предупреждения и выполнив их поиск в интернете." + }, + "PROTO-03": { + "title": "Установлено HTTP-подключение к устройству {}", + "description": "Ваше устройство обменивается данными с устройством {} по незашифрованному протоколу HTTP. Даже если такое поведение само по себе не является вредоносным, фоновое исходящее HTTP-подключение является нетипичным для приложений, работающих на смартфоне в фоновом режиме. Проверьте репутацию устройства, выполнив поиск в интернете." + }, + "PROTO-04": { + "title": "Установлено HTTP-подключение к устройству {} через нестандартный порт ({}).", + "description": "Ваше устройство обменивается данными с устройством {} по незашифрованному протоколу HTTP через порт {}. Такое поведение является нетипичным. Проверьте репутацию устройства, выполнив поиск в интернете." + }, + "PROTO-05": { + "title": "Сервер {} не разрешался никакими DNS-запросами во время сеанса", + "description": "Это, вероятно, означает, что сервер {} не разрешен ни одним доменным именем или разрешение уже кешировано устройством. Если устройство фигурирует в других предупреждениях, проверьте его." + }, + "IOC-01": { + "title": "Установлено соединение с {} ({}), отмеченным как {}.", + "description": "Устройство {} было явно занесено в черный список за выполнение вредоносных действий. Ваше устройство, вероятно, взломано. Требуется более тщательное расследование специалистами по IT-безопасности." + }, + "IOC-02": { + "title": "Подключение к {}, отмеченному как {}, в рамках бесклассовой адресации {}.", + "description": "Сервер {} размещен в сети, в которой размещаются объекты, выполняющие вредоносные действия. Даже если такое поведение само по себе не является вредоносным, необходимо проверить, не упоминается ли это устройство в других предупреждениях. При наличии сомнений выполните поиск этого устройства в интернете и выясните, является ли его поведение легитимным." + }, + "IOC-03": { + "title": "Выполнен DNS-запрос к {}, отмеченному как {}.", + "description": "Доменное имя {}, обнаруженное при сборе данных, явно отмечено как вредоносное. Это указывает на то, что ваше устройство, вероятно, взломано и требуется тщательное расследование." + }, + "IOC-04": { + "title": "Выполнен DNS-запрос к {}, отмеченному как {}.", + "description": "Доменное имя {}, обнаруженное при сборе данных, явно отмечено как геотрекер. Это указывает, что одно из активных приложений отслеживает ваши перемещения." + }, + "IOC-05": { + "title": "Выполнен DNS-запрос к домену {}, использующему бесплатную службу DNS.", + "description": "Доменное имя {} использует бесплатную службу DNS. Такие службы обычно используются киберпреступниками или спонсируемыми государством злоумышленниками для атак. Очень подозрительно, что приложение, работающее в фоновом режиме, использует такую службу. Требуется расследование." + }, + "IOC-06": { + "title": "Выполнен DNS-запрос к домену {}, содержащему подозрительный домен верхнего уровня.", + "description": "Доменное имя {} использует подозрительный домен верхнего уровня ({}). Даже не являясь вредоносным, этот не универсальный домен верхнего уровня регулярно используется киберпреступниками или спонсируемыми государством злоумышленниками. Проверьте этот домен, выполнив поиск в интернете. Если с этим устройством связаны другие предупреждения, это очень подозрительно." + }, + "IOC-07": { + "title": "Сертификат, связанный с действиями {}, был обнаружен при взаимодействии с {}.", + "description": "Сертификат ({}), связанный с {}, явно отмечен как вредоносный. Это указывает на то, что ваше устройство, вероятно, взломано и требуется провести экспертный анализ." + }, + "IOC-08": { + "title": "Выполнен HTTP-запрос к {}, отмеченному как {}.", + "description": "Доменное имя {}, обнаруженное при сборе данных, явно отмечено как вредоносное. Это указывает на то, что ваше устройство, вероятно, взломано и требуется тщательное расследование." + }, + "IOC-09": { + "title": "Выполнен HTTP-запрос к домену {}, использующему бесплатную службу DNS.", + "description": "Доменное имя {} использует бесплатную службу DNS. Такие службы обычно используются киберпреступниками или спонсируемыми государством злоумышленниками для атак. Очень подозрительно, что приложение, работающее в фоновом режиме, использует такую службу. Требуется расследование." + }, + "IOC-10": { + "title": "Выполнен HTTP-запрос к домену {}, содержащему подозрительный домен верхнего уровня.", + "description": "Доменное имя {} использует подозрительный домен верхнего уровня ({}). Даже не являясь вредоносным, этот не универсальный домен верхнего уровня регулярно используется киберпреступниками или спонсируемыми государством злоумышленниками. Проверьте этот домен, выполнив поиск в интернете. Если с этим устройством связаны другие предупреждения, это очень подозрительно." + }, + "IOC-11": { + "title": "Соединение с {} ({}), которое упоминается как узел TOR.", + "description": "На сервер {} ссылаются как на узел в сети анонимизации TOR. Анализируемое устройство, по-видимому, использует TOR или взаимодействует с сервером, настроенным как входной или выходной узел TOR. Некоторые злоумышленники используют TOR на своих серверах, чтобы замести следы." + }, + "IOC-12": { + "title": "заявка запрашивает законную услугу, которая может иметь двойное назначение .", + "description": "Сервер {} используется в законных целях. Однако некоторые злоумышленники могут использовать его для взаимодействия со своими имплантатами. Рекомендуется проверить, что анализируемое устройство содержит законное приложение, которое использует эту службу." + }, + "IOC-13": { + "title": "По крайней мере одно приложение использует зашифрованные DNS запросы", + "description": "Во время захвата был установлен контакт с DNS через сервер HTPs {}. Это, кажется, указывает на то, что по крайней мере одно приложение использует эту технику для шифрования своих DNS-запросов. Эта функция ограничивает возможности сканирования SpyGuard. Если эта функция не включена на анализируемом устройстве, возможно, стоит выяснить, какое приложение использует этот метод." + }, + "ACT-01": { + "title": "Домен {} использует подозрительный сервер имен ({}).", + "description": "Доменное имя {} использует сервер имен, который явно отмечен как связанный с вредоносными действиями. Многие киберпреступники и спонсируемые государством злоумышленники пользуются такими регистраторами, поскольку они позволяют использовать криптовалюту и анонимные платежи. Рекомендуется исследовать этот домен и связанные с ним работающие приложения, выполнив экспертный анализ телефона." + }, + "ACT-02": { + "title": "Домен {} был создан недавно ({} дней назад).", + "description": "Доменное имя {} новое. Даже это не является вредоносным по своей сути, злоумышленники довольно часто создают новую инфраструктуру для каждой кампании атаки, что может привести к использованию недавно зарегистрированных доменных имен." + }, + "SSL-01": { + "title": "SSL-подключение к {} выполнено через нестандартный порт ({})", + "description": "SSL-подключение со смартфонов с использованием нестандартных портов является нетипичным. Даже если это действие является абсолютно легитимным, рекомендуется проверить репутацию {}, просмотрев его запись WHOIS, связанную автономную систему, дату создания, а также выполнив поиск в интернете." + }, + "SSL-02": { + "title": "SSL-подключение к {} использует бесплатный сертификат.", + "description": "Бесплатные сертификаты, такие как Let's Encrypt, широко используются командными серверами, связанными со встраиваемым вредоносным кодом или фишинговыми веб-страницами. Рекомендуется проверить устройство, связанное с этим сертификатом, изучив его доменное имя, дату создания и репутацию в интернете." + }, + "SSL-03": { + "title": "Сертификат, связанный с {}, является самоподписанным.", + "description": "Использование самоподписанных сертификатов типично для инфраструктуры злоумышленников. Рекомендуется проверить устройство {}, связанное с этим сертификатом, изучив его доменное имя (если имеется), запись WHOIS, дату создания и репутацию в интернете." + }, + "SSL-04": { + "title": "Сертификат, связанный с {} связан с вредоносной деятельностью ({})", + "description": "Сертификат, связанный с сервером {} был явно классифицирован как вредоносный. Ваше устройство выглядит скомпрометированным и нуждается в дальнейшем исследовании профессиональной командой." + }, + "SSL-05": { + "title": "Конфигурация SSL {} связана с вредоносной деятельностью ({}).", + "description": "Связанный с сервером хэш JARM {} был явно связан с вредоносной деятельностью. Ваше устройство, возможно, скомпрометировано и нуждается в дальнейшем расследовании профессиональной командой." + }, + "ADV-01": { + "title": "Проверьте предупреждения для {}", + "description": "Проверьте репутацию устройства {}. Оно кажется вредоносным, поскольку для него сработало {} предупрежд. во время сеанса." + }, + "SNORT-01": { + "title": "Сработало правило Suricata: {}", + "description": "Сработало правило обнаружения в сети. Вероятно, ваше устройство взломано или ведет себя подозрительно." + } + }, + "report": { + "numbers": [ + "один", + "два", + "три", + "четыре", + "пять", + "шесть", + "семь", + "восемь", + "девять" + ], + "suspect_title": "Подозрительные подключения", + "uncat_title": "Неклассифицированные подключения", + "whitelist_title": "Разрешенные подключения", + "protocol": "Протокол", + "domain": "Домен", + "dst_ip": "IP-адрес назначения", + "dst_port": "Номер порта назначения", + "device_mac": "MAC-адрес устройства", + "report_generated_on": "Дата формирования отчета", + "capture_duration": "Продолжительность сбора данных", + "packets_number": "Количество пакетов", + "capture_sha1": "Сбор данных SHA1", + "report_for_the_capture": "Отчет для сбора данных", + "report_footer": "Этот отчет был автоматически сформирован устройством SpyGuard. С любыми вопросами, сообщениями об ошибках или отзывами обращайтесь по адресу contact@spyguard.io.", + "high_msg": "Вероятно, ваше устройство взломано, поскольку у вас {} предупрежд. высокого уровня.", + "moderate_msg": "У вас {} предупрежд. среднего уровня. Возможно, ваше устройство взломано. Внимательно изучите их.", + "low_msg": "У вас {} предупрежд. низкого уровня, проверьте их.", + "none_msg": "Предупреждения отсутствуют, система выглядит защищенной. Не забывайте проверять неклассифицированные подключения, если они имеются.", + "detection_methods": "Mетоды обнаружения", + "analysis_duration": "Время анализа", + "instance_uuid": "SpyGuard Экземпляр", + "seconds": "секунды" + } +} diff --git a/analysis/utils.py b/analysis/utils.py new file mode 100755 index 0000000..1bfb486 --- /dev/null +++ b/analysis/utils.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import sqlite3 +import datetime +import yaml +import sys +import json +import os +from functools import reduce + +# I'm not going to use an ORM for that. +parent = os.path.split(os.path.dirname(os.path.abspath(sys.argv[0])))[0] +conn = sqlite3.connect(os.path.join(parent, "database.sqlite3")) +cursor = conn.cursor() + + +def get_iocs(ioc_type): + """ + Get a list of IOCs specified by their type. + :return: list of IOCs + """ + cursor.execute( + "SELECT value, tag FROM iocs WHERE type = ? ORDER BY value", (ioc_type,)) + res = cursor.fetchall() + return [[r[0], r[1]] for r in res] if res is not None else [] + + +def get_whitelist(elem_type): + """ + Get a list of whitelisted elements specified by their type. + :return: list of elements + """ + cursor.execute( + "SELECT element FROM whitelist WHERE type = ? ORDER BY element", (elem_type,)) + res = cursor.fetchall() + return [r[0] for r in res] if res is not None else [] + + +def get_config(path): + """ + Read a value from the configuration + :return: value (it can be any type) + """ + config = yaml.load(open(os.path.join(parent, "config.yaml"), + "r"), Loader=yaml.SafeLoader) + return reduce(dict.get, path, config) + + +def get_device(token): + """ + Read the device configuration from device.json file. + :return: dict - the device configuration + """ + try: + with open("/tmp/{}/device.json".format(token), "r") as f: + return json.load(f) + except: + pass + + +def get_apname(): + """ + Read the current name of the Access Point from + the hostapd configuration file + :return: str - the AP name + """ + try: + with open("/tmp/hostapd.conf", "r") as f: + for l in f.readlines(): + if "ssid=" in l: + return l.replace("ssid=", "").strip() + except: + pass diff --git a/app/.gitignore b/app/.gitignore new file mode 100755 index 0000000..624f6bb --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,105 @@ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# 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 +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port diff --git a/app/backend/.npmrc b/app/backend/.npmrc new file mode 100755 index 0000000..76c2a92 --- /dev/null +++ b/app/backend/.npmrc @@ -0,0 +1 @@ +timeout=60000 diff --git a/app/backend/babel.config.js b/app/backend/babel.config.js new file mode 100755 index 0000000..a673655 --- /dev/null +++ b/app/backend/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/app/backend/dist/css/app.b563f628.css b/app/backend/dist/css/app.b563f628.css new file mode 100644 index 0000000..9ad31e7 --- /dev/null +++ b/app/backend/dist/css/app.b563f628.css @@ -0,0 +1,5 @@ +/*! Spectre.css v0.5.9 | MIT License | github.com/picturepan2/spectre */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}address{font-style:normal}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,pre,samp{font-family:SF Mono,Segoe UI Mono,Roboto Mono,Menlo,Courier,monospace;font-size:1em}dfn{font-style:italic}small{font-size:80%;font-weight:400}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}fieldset{border:0;margin:0;padding:0}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item;outline:0}canvas{display:inline-block}[hidden],template{display:none}*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:20px;line-height:1.5;-webkit-tap-highlight-color:transparent}body{background:#fff;color:#3b4351;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:.8rem;overflow-x:hidden;text-rendering:optimizeLegibility}a{color:#303742;outline:0;text-decoration:none}a:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}a.active,a:active,a:focus,a:hover{color:#302ecd;text-decoration:underline}a:visited{color:#807fe2}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:500;line-height:1.2;margin-bottom:.5em;margin-top:0}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:500}.h1,h1{font-size:2rem}.h2,h2{font-size:1.6rem}.h3,h3{font-size:1.4rem}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.8rem}p{margin:0 0 1.2rem}a,ins,u{-webkit-text-decoration-skip:ink edges;text-decoration-skip:ink edges}abbr[title]{border-bottom:.05rem dotted;cursor:help;text-decoration:none}kbd{background:#303742;color:#fff;font-size:.7rem;line-height:1.25;padding:.1rem .2rem}kbd,mark{border-radius:.1rem}mark{background:#ffe9b3;border-bottom:.05rem solid #ffd367;color:#3b4351;padding:.05rem .1rem 0}blockquote{border-left:.1rem solid #dadee4;margin-left:0;padding:.4rem .8rem}blockquote p:last-child{margin-bottom:0}ol,ul{padding:0}ol,ol ol,ol ul,ul,ul ol,ul ul{margin:.8rem 0 .8rem .8rem}ol li,ul li{margin-top:.4rem}ul{list-style:disc inside}ul ul{list-style-type:circle}ol{list-style:decimal inside}ol ol{list-style-type:lower-alpha}dl dt{font-weight:700}dl dd{margin:.4rem 0 .8rem 0}.lang-zh,.lang-zh-hans,html:lang(zh),html:lang(zh-Hans){font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,sans-serif}.lang-zh-hant,html:lang(zh-Hant){font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,PingFang TC,Hiragino Sans CNS,Microsoft JhengHei,Helvetica Neue,sans-serif}.lang-ja,html:lang(ja){font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Hiragino Sans,Hiragino Kaku Gothic Pro,Yu Gothic,YuGothic,Meiryo,Helvetica Neue,sans-serif}.lang-ko,html:lang(ko){font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Malgun Gothic,Helvetica Neue,sans-serif}.lang-cjk ins,.lang-cjk u,:lang(ja) ins,:lang(ja) u,:lang(zh) ins,:lang(zh) u{border-bottom:.05rem solid;text-decoration:none}.lang-cjk del+del,.lang-cjk del+s,.lang-cjk ins+ins,.lang-cjk ins+u,.lang-cjk s+del,.lang-cjk s+s,.lang-cjk u+ins,.lang-cjk u+u,:lang(ja) del+del,:lang(ja) del+s,:lang(ja) ins+ins,:lang(ja) ins+u,:lang(ja) s+del,:lang(ja) s+s,:lang(ja) u+ins,:lang(ja) u+u,:lang(zh) del+del,:lang(zh) del+s,:lang(zh) ins+ins,:lang(zh) ins+u,:lang(zh) s+del,:lang(zh) s+s,:lang(zh) u+ins,:lang(zh) u+u{margin-left:.125em}.table{border-collapse:collapse;border-spacing:0;text-align:left;width:100%}.table.table-striped tbody tr:nth-of-type(odd){background:#fafafa}.table.table-hover tbody tr:hover,.table.table-striped tbody tr.active,.table tbody tr.active{background:#f0f0f0}.table.table-scroll{display:block;overflow-x:auto;padding-bottom:.75rem;white-space:nowrap}.table td,.table th{border-bottom:.05rem solid #dadee4;padding:.6rem .4rem}.table th{border-bottom-width:.1rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #303742;border-radius:.1rem;color:#303742;cursor:pointer;display:inline-block;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;text-align:center;text-decoration:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.btn:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.btn:focus,.btn:hover{background:#66758c;border-color:#636363}.btn.active,.btn:active{background:#636363;border-color:#494949}.btn.active.loading:after,.btn:active.loading:after{border-bottom-color:#fff;border-left-color:#fff}.btn.disabled,.btn:disabled,.btn[disabled]{cursor:default;opacity:.5;pointer-events:none}.btn.btn-primary{background:#303742;border-color:#636363;color:#fff}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#494949;border-color:#494949;color:#fff}.btn.btn-primary.loading:after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-success{background:#32b643;border-color:#2faa3f;color:#fff}.btn.btn-success:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.btn.btn-success:focus,.btn.btn-success:hover{background:#30ae40;border-color:#2da23c;color:#fff}.btn.btn-success.active,.btn.btn-success:active{background:#2a9a39;border-color:#278e34;color:#fff}.btn.btn-success.loading:after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-error{background:#e85600;border-color:#d95000;color:#fff}.btn.btn-error:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.btn.btn-error:focus,.btn.btn-error:hover{background:#de5200;border-color:#cf4d00;color:#fff}.btn.btn-error.active,.btn.btn-error:active{background:#c44900;border-color:#b54300;color:#fff}.btn.btn-error.loading:after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-link{background:0 0;border-color:transparent;color:#303742}.btn.btn-link.active,.btn.btn-link:active,.btn.btn-link:focus,.btn.btn-link:hover{color:#3b4351}.btn.btn-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.btn.btn-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.btn.btn-block{display:block;width:100%}.btn.btn-action{padding-left:0;padding-right:0;width:1.8rem}.btn.btn-action.btn-sm{width:1.4rem}.btn.btn-action.btn-lg{width:2rem}.btn.btn-clear{background:0 0;border:0;color:currentColor;height:1rem;line-height:.8rem;margin-left:.2rem;margin-right:-2px;opacity:1;padding:.1rem;text-decoration:none;width:1rem}.btn.btn-clear:focus,.btn.btn-clear:hover{background:rgba(247,248,249,.5);opacity:.95}.btn.btn-clear:before{content:"\2715"}.btn-group{display:inline-flex;flex-wrap:wrap}.btn-group .btn{flex:1 0 auto}.btn-group .btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.btn-group .btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.btn-group .btn.active,.btn-group .btn:active,.btn-group .btn:focus,.btn-group .btn:hover{z-index:1}.btn-group.btn-group-block{display:flex}.btn-group.btn-group-block .btn{flex:1 0 0}.form-group:not(:last-child){margin-bottom:.4rem}fieldset,legend{margin-bottom:.8rem}legend{font-size:.9rem;font-weight:500}.form-label{display:block;line-height:1.2rem;padding:.3rem 0}.form-label.label-sm{font-size:.7rem;padding:.1rem 0}.form-label.label-lg{font-size:.9rem;padding:.4rem 0}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;background-image:none;border:.05rem solid #cecece;border-radius:.1rem;color:#3b4351;display:block;font-size:.8rem;height:1.8rem;line-height:1.2rem;max-width:100%;outline:0;padding:.25rem .4rem;position:relative;transition:background .2s,border .2s,box-shadow .2s,color .2s;width:100%}.form-input:focus{border-color:#303742;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-input::-moz-placeholder{color:#cecece}.form-input::placeholder{color:#cecece}.form-input.input-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.form-input.input-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.form-input.input-inline{display:inline-block;vertical-align:middle;width:auto}.form-input[type=file],textarea.form-input,textarea.form-input.input-lg,textarea.form-input.input-sm{height:auto}.form-input-hint{color:#cecece;font-size:.7rem;margin-top:.2rem}.has-success .form-input-hint,.is-success+.form-input-hint{color:#32b643}.has-error .form-input-hint,.is-error+.form-input-hint{color:#e85600}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #cecece;border-radius:.1rem;color:inherit;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;vertical-align:middle;width:100%}.form-select:focus{border-color:#303742;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-select::-ms-expand{display:none}.form-select.select-sm{font-size:.7rem;height:1.4rem;padding:.05rem 1.1rem .05rem .3rem}.form-select.select-lg{font-size:.9rem;height:2rem;padding:.35rem 1.4rem .35rem .6rem}.form-select[multiple],.form-select[size]{height:auto;padding:.25rem .4rem}.form-select[multiple] option,.form-select[size] option{padding:.1rem .2rem}.form-select:not([multiple]):not([size]){background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center/.4rem .5rem;padding-right:1.2rem}.has-icon-left,.has-icon-right{position:relative}.has-icon-left .form-icon,.has-icon-right .form-icon{height:.8rem;margin:0 .25rem;position:absolute;top:50%;transform:translateY(-50%);width:.8rem;z-index:2}.has-icon-left .form-icon{left:.05rem}.has-icon-left .form-input{padding-left:1.3rem}.has-icon-right .form-icon{right:.05rem}.has-icon-right .form-input{padding-right:1.3rem}.form-checkbox,.form-radio,.form-switch{display:block;line-height:1.2rem;margin:.2rem 0;min-height:1.4rem;padding:.1rem .4rem .1rem 1.2rem;position:relative}.form-checkbox input,.form-radio input,.form-switch input{clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.form-checkbox input:focus+.form-icon,.form-radio input:focus+.form-icon,.form-switch input:focus+.form-icon{border-color:#303742;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-checkbox input:checked+.form-icon,.form-radio input:checked+.form-icon,.form-switch input:checked+.form-icon{background:#303742;border-color:#303742}.form-checkbox .form-icon,.form-radio .form-icon,.form-switch .form-icon{border:.05rem solid #cecece;cursor:pointer;display:inline-block;position:absolute;transition:background .2s,border .2s,box-shadow .2s,color .2s}.form-checkbox.input-sm,.form-radio.input-sm,.form-switch.input-sm{font-size:.7rem;margin:0}.form-checkbox.input-lg,.form-radio.input-lg,.form-switch.input-lg{font-size:.9rem;margin:.3rem 0}.form-checkbox .form-icon,.form-radio .form-icon{background:#fff;height:.8rem;left:0;top:.3rem;width:.8rem}.form-checkbox input:active+.form-icon,.form-radio input:active+.form-icon{background:#f0f0f0}.form-checkbox .form-icon{border-radius:.1rem}.form-checkbox input:checked+.form-icon:before{background-clip:padding-box;border:.1rem solid #fff;border-left-width:0;border-top-width:0;content:"";height:9px;left:50%;margin-left:-3px;margin-top:-6px;position:absolute;top:50%;transform:rotate(45deg);width:6px}.form-checkbox input:indeterminate+.form-icon{background:#303742;border-color:#303742}.form-checkbox input:indeterminate+.form-icon:before{background:#fff;content:"";height:2px;left:50%;margin-left:-5px;margin-top:-1px;position:absolute;top:50%;width:10px}.form-radio .form-icon{border-radius:50%}.form-radio input:checked+.form-icon:before{background:#fff;border-radius:50%;content:"";height:6px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:6px}.form-switch{padding-left:2rem}.form-switch .form-icon{background:#cecece;background-clip:padding-box;border-radius:.45rem;height:.9rem;left:0;top:.25rem;width:1.6rem}.form-switch .form-icon:before{background:#fff;border-radius:50%;content:"";display:block;height:.8rem;left:0;position:absolute;top:0;transition:background .2s,border .2s,box-shadow .2s,color .2s,left .2s;width:.8rem}.form-switch input:checked+.form-icon:before{left:14px}.form-switch input:active+.form-icon:before{background:#fafafa}.input-group{display:flex}.input-group .input-group-addon{background:#fafafa;border:.05rem solid #cecece;border-radius:.1rem;line-height:1.2rem;padding:.25rem .4rem;white-space:nowrap}.input-group .input-group-addon.addon-sm{font-size:.7rem;padding:.05rem .3rem}.input-group .input-group-addon.addon-lg{font-size:.9rem;padding:.35rem .6rem}.input-group .form-input,.input-group .form-select{flex:1 1 auto;width:1%}.input-group .input-group-btn{z-index:1}.input-group .form-input:first-child:not(:last-child),.input-group .form-select:first-child:not(:last-child),.input-group .input-group-addon:first-child:not(:last-child),.input-group .input-group-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group .form-input:not(:first-child):not(:last-child),.input-group .form-select:not(:first-child):not(:last-child),.input-group .input-group-addon:not(:first-child):not(:last-child),.input-group .input-group-btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.input-group .form-input:last-child:not(:first-child),.input-group .form-select:last-child:not(:first-child),.input-group .input-group-addon:last-child:not(:first-child),.input-group .input-group-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.input-group .form-input:focus,.input-group .form-select:focus,.input-group .input-group-addon:focus,.input-group .input-group-btn:focus{z-index:2}.input-group .form-select{width:auto}.input-group.input-inline{display:inline-flex}.form-input.is-success,.form-select.is-success,.has-success .form-input,.has-success .form-select{background:#f9fdfa;border-color:#32b643}.form-input.is-success:focus,.form-select.is-success:focus,.has-success .form-input:focus,.has-success .form-select:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.form-input.is-error,.form-select.is-error,.has-error .form-input,.has-error .form-select{background:#fffaf7;border-color:#e85600}.form-input.is-error:focus,.form-select.is-error:focus,.has-error .form-input:focus,.has-error .form-select:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error .form-icon,.form-radio.is-error .form-icon,.form-switch.is-error .form-icon,.has-error .form-checkbox .form-icon,.has-error .form-radio .form-icon,.has-error .form-switch .form-icon{border-color:#e85600}.form-checkbox.is-error input:checked+.form-icon,.form-radio.is-error input:checked+.form-icon,.form-switch.is-error input:checked+.form-icon,.has-error .form-checkbox input:checked+.form-icon,.has-error .form-radio input:checked+.form-icon,.has-error .form-switch input:checked+.form-icon{background:#e85600;border-color:#e85600}.form-checkbox.is-error input:focus+.form-icon,.form-radio.is-error input:focus+.form-icon,.form-switch.is-error input:focus+.form-icon,.has-error .form-checkbox input:focus+.form-icon,.has-error .form-radio input:focus+.form-icon,.has-error .form-switch input:focus+.form-icon{border-color:#e85600;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error input:indeterminate+.form-icon,.has-error .form-checkbox input:indeterminate+.form-icon{background:#e85600;border-color:#e85600}.form-input:not(:-moz-placeholder-shown):invalid{border-color:#e85600}.form-input:not(:placeholder-shown):invalid{border-color:#e85600}.form-input:not(:-moz-placeholder-shown):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:placeholder-shown):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:-moz-placeholder-shown):invalid+.form-input-hint{color:#e85600}.form-input:not(:placeholder-shown):invalid+.form-input-hint{color:#e85600}.form-input.disabled,.form-input:disabled,.form-select.disabled,.form-select:disabled{background-color:#f0f0f0;cursor:not-allowed;opacity:.5}.form-input[readonly]{background-color:#fafafa}input.disabled+.form-icon,input:disabled+.form-icon{background:#f0f0f0;cursor:not-allowed;opacity:.5}.form-switch input.disabled+.form-icon:before,.form-switch input:disabled+.form-icon:before{background:#fff}.form-horizontal{padding:.4rem 0}.form-horizontal .form-group{display:flex;flex-wrap:wrap}.form-inline,.label{display:inline-block}.label{background:#f0f0f0;border-radius:.1rem;color:#455060;line-height:1.25;padding:.1rem .2rem}.label.label-rounded{border-radius:5rem;padding-left:.4rem;padding-right:.4rem}.label.label-primary{background:#303742;color:#fff}.label.label-secondary{background:#66758c;color:#303742}.label.label-success{background:#32b643;color:#fff}.label.label-warning{background:#ffb700;color:#fff}.label.label-error{background:#e85600;color:#fff}code{background:#fcf2f2;color:#d73e48;font-size:85%;line-height:1.25;padding:.1rem .2rem}.code,code{border-radius:.1rem}.code{color:#3b4351;position:relative}.code:before{color:#cecece;content:attr(data-lang);font-size:.7rem;position:absolute;right:.4rem;top:.1rem}.code code{background:#fafafa;color:inherit;display:block;line-height:1.5;overflow-x:auto;padding:1rem;width:100%}.img-responsive{display:block;height:auto;max-width:100%}.img-fit-cover{-o-object-fit:cover;object-fit:cover}.img-fit-contain{-o-object-fit:contain;object-fit:contain}.video-responsive{display:block;overflow:hidden;padding:0;position:relative;width:100%}.video-responsive:before{content:"";display:block;padding-bottom:56.25%}.video-responsive embed,.video-responsive iframe,.video-responsive object{border:0;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}video.video-responsive{height:auto;max-width:100%}video.video-responsive:before{content:none}.video-responsive-4-3:before{padding-bottom:75%}.video-responsive-1-1:before{padding-bottom:100%}.figure{margin:0 0 .4rem 0}.figure .figure-caption{color:#66758c;margin-top:.4rem}.container{margin-left:auto;margin-right:auto;padding-left:.4rem;padding-right:.4rem;width:100%}.container.grid-xl{max-width:1296px}.container.grid-lg{max-width:976px}.container.grid-md{max-width:856px}.container.grid-sm{max-width:616px}.container.grid-xs{max-width:496px}.show-lg,.show-md,.show-sm,.show-xl,.show-xs{display:none!important}.cols,.columns{display:flex;flex-wrap:wrap;margin-left:-.4rem;margin-right:-.4rem}.cols.col-gapless,.columns.col-gapless{margin-left:0;margin-right:0}.cols.col-gapless>.column,.columns.col-gapless>.column{padding-left:0;padding-right:0}.cols.col-oneline,.columns.col-oneline{flex-wrap:nowrap;overflow-x:auto}.column,[class~=col-]{flex:1;max-width:100%;padding-left:.4rem;padding-right:.4rem}.column.col-1,.column.col-2,.column.col-3,.column.col-4,.column.col-5,.column.col-6,.column.col-7,.column.col-8,.column.col-9,.column.col-10,.column.col-11,.column.col-12,.column.col-auto,[class~=col-].col-1,[class~=col-].col-2,[class~=col-].col-3,[class~=col-].col-4,[class~=col-].col-5,[class~=col-].col-6,[class~=col-].col-7,[class~=col-].col-8,[class~=col-].col-9,[class~=col-].col-10,[class~=col-].col-11,[class~=col-].col-12,[class~=col-].col-auto{flex:none}.col-12{width:100%}.col-11{width:91.66666667%}.col-10{width:83.33333333%}.col-9{width:75%}.col-8{width:66.66666667%}.col-7{width:58.33333333%}.col-6{width:50%}.col-5{width:41.66666667%}.col-4{width:33.33333333%}.col-3{width:25%}.col-2{width:16.66666667%}.col-1{width:8.33333333%}.col-auto{flex:0 0 auto;max-width:none;width:auto}.col-mx-auto{margin-right:auto}.col-ml-auto,.col-mx-auto{margin-left:auto}.col-mr-auto{margin-right:auto}@media (max-width:1280px){.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{flex:none}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-auto{width:auto}.hide-xl{display:none!important}.show-xl{display:block!important}}@media (max-width:960px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto{flex:none}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-auto{width:auto}.hide-lg{display:none!important}.show-lg{display:block!important}}@media (max-width:840px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto{flex:none}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-auto{width:auto}.hide-md{display:none!important}.show-md{display:block!important}}@media (max-width:600px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto{flex:none}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-auto{width:auto}.hide-sm{display:none!important}.show-sm{display:block!important}}@media (max-width:480px){.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-auto{flex:none}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-auto{width:auto}.hide-xs{display:none!important}.show-xs{display:block!important}}.hero{display:flex;flex-direction:column;justify-content:space-between;padding-bottom:4rem;padding-top:4rem}.hero.hero-sm{padding-bottom:2rem;padding-top:2rem}.hero.hero-lg{padding-bottom:8rem;padding-top:8rem}.hero .hero-body{padding:.4rem}.navbar{align-items:stretch;display:flex;-ms-flex-align:stretch;-ms-flex-pack:justify;flex-wrap:wrap;justify-content:space-between}.navbar .navbar-section{align-items:center;display:flex;flex:1 0 0;-ms-flex-align:center}.navbar .navbar-section:not(:first-child):last-child{justify-content:flex-end}.navbar .navbar-center{align-items:center;display:flex;flex:0 0 auto;-ms-flex-align:center}.navbar .navbar-brand{font-size:.9rem;text-decoration:none}.accordion[open] .accordion-header>.icon:first-child,.accordion input:checked~.accordion-header>.icon:first-child{transform:rotate(90deg)}.accordion[open] .accordion-body,.accordion input:checked~.accordion-body{max-height:50rem}.accordion .accordion-header{display:block;padding:.2rem .4rem}.accordion .accordion-header .icon{transition:transform .25s}.accordion .accordion-body{margin-bottom:.4rem;max-height:0;overflow:hidden;transition:max-height .25s}summary.accordion-header::-webkit-details-marker{display:none}.avatar{background:#303742;border-radius:50%;color:hsla(0,0%,100%,.85);display:inline-block;font-size:.8rem;font-weight:300;height:1.6rem;line-height:1.25;margin:0;position:relative;vertical-align:middle;width:1.6rem}.avatar.avatar-xs{font-size:.4rem;height:.8rem;width:.8rem}.avatar.avatar-sm{font-size:.6rem;height:1.2rem;width:1.2rem}.avatar.avatar-lg{font-size:1.2rem;height:2.4rem;width:2.4rem}.avatar.avatar-xl{font-size:1.6rem;height:3.2rem;width:3.2rem}.avatar img{border-radius:50%;height:100%;position:relative;width:100%;z-index:1}.avatar .avatar-icon,.avatar .avatar-presence{background:#fff;bottom:14.64%;height:50%;padding:.1rem;position:absolute;right:14.64%;transform:translate(50%,50%);width:50%;z-index:2}.avatar .avatar-presence{background:#cecece;border-radius:50%;box-shadow:0 0 0 .1rem #fff;height:.5em;width:.5em}.avatar .avatar-presence.online{background:#32b643}.avatar .avatar-presence.busy{background:#e85600}.avatar .avatar-presence.away{background:#ffb700}.avatar[data-initial]:before{color:currentColor;content:attr(data-initial);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.badge{position:relative;white-space:nowrap}.badge:not([data-badge]):after,.badge[data-badge]:after{background:#303742;background-clip:padding-box;border-radius:.5rem;box-shadow:0 0 0 .1rem #fff;color:#fff;content:attr(data-badge);display:inline-block;transform:translate(-.05rem,-.5rem)}.badge[data-badge]:after{font-size:.7rem;height:.9rem;line-height:1;min-width:.9rem;padding:.1rem .2rem;text-align:center;white-space:nowrap}.badge:not([data-badge]):after,.badge[data-badge=""]:after{height:6px;min-width:6px;padding:0;width:6px}.badge.btn:after{right:0;top:0}.badge.avatar:after,.badge.btn:after{position:absolute;transform:translate(50%,-50%)}.badge.avatar:after{right:14.64%;top:14.64%;z-index:100}.breadcrumb{list-style:none;margin:.2rem 0;padding:.2rem 0}.breadcrumb .breadcrumb-item{color:#66758c;display:inline-block;margin:0;padding:.2rem 0}.breadcrumb .breadcrumb-item:not(:last-child){margin-right:.2rem}.breadcrumb .breadcrumb-item:not(:last-child) a{color:#66758c}.breadcrumb .breadcrumb-item:not(:first-child):before{color:#66758c;content:"/";padding-right:.4rem}.bar{background:#f0f0f0;border-radius:.1rem;display:flex;flex-wrap:nowrap;height:.8rem;width:100%}.bar.bar-sm{height:.2rem}.bar .bar-item{background:#303742;color:#fff;display:block;flex-shrink:0;font-size:.7rem;height:100%;line-height:.8rem;position:relative;text-align:center;width:0}.bar .bar-item:first-child{border-bottom-left-radius:.1rem;border-top-left-radius:.1rem}.bar .bar-item:last-child{border-bottom-right-radius:.1rem;border-top-right-radius:.1rem;flex-shrink:1}.bar-slider{height:.1rem;margin:.4rem 0;position:relative}.bar-slider .bar-item{left:0;padding:0;position:absolute}.bar-slider .bar-item:not(:last-child):first-child{background:#f0f0f0;z-index:1}.bar-slider .bar-slider-btn{background:#303742;border:0;border-radius:50%;height:.6rem;padding:0;position:absolute;right:0;top:50%;transform:translate(50%,-50%);width:.6rem}.bar-slider .bar-slider-btn:active{box-shadow:0 0 0 .1rem #303742}.card{background:#fff;border:.05rem solid #dadee4;border-radius:.1rem;display:flex;flex-direction:column}.card .card-body,.card .card-footer,.card .card-header{padding:.8rem;padding-bottom:0}.card .card-body:last-child,.card .card-footer:last-child,.card .card-header:last-child{padding-bottom:.8rem}.card .card-body{flex:1 1 auto}.card .card-image{padding-top:.8rem}.card .card-image:first-child{padding-top:0}.card .card-image:first-child img{border-top-left-radius:.1rem;border-top-right-radius:.1rem}.card .card-image:last-child img{border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem}.chip{align-items:center;background:#f0f0f0;border-radius:5rem;display:inline-flex;-ms-flex-align:center;font-size:90%;height:1.2rem;line-height:.8rem;margin:.1rem;max-width:320px;overflow:hidden;padding:.2rem .4rem;text-decoration:none;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.chip.active{background:#303742;color:#fff}.chip .avatar{margin-left:-.4rem;margin-right:.2rem}.chip .btn-clear{border-radius:50%;transform:scale(.75)}.dropdown{display:inline-block;position:relative}.dropdown .menu{animation:slide-down .15s ease 1;display:none;left:0;max-height:50vh;overflow-y:auto;position:absolute;top:100%}.dropdown.dropdown-right .menu{left:auto;right:0}.dropdown.active .menu,.dropdown .dropdown-toggle:focus+.menu,.dropdown .menu:hover{display:block}.dropdown .btn-group .dropdown-toggle:nth-last-child(2){border-bottom-right-radius:.1rem;border-top-right-radius:.1rem}.empty{background:#fafafa;border-radius:.1rem;color:#66758c;padding:3.2rem 1.6rem;text-align:center}.empty .empty-icon{margin-bottom:.8rem}.empty .empty-subtitle,.empty .empty-title{margin:.4rem auto}.empty .empty-action{margin-top:.8rem}.menu{background:#fff;border-radius:.1rem;box-shadow:0 .05rem .2rem rgba(48,55,66,.3);list-style:none;margin:0;min-width:180px;padding:.4rem;transform:translateY(.2rem);z-index:300}.menu.menu-nav{background:0 0;box-shadow:none}.menu .menu-item{margin-top:0;padding:0 .4rem;position:relative;text-decoration:none}.menu .menu-item>a{border-radius:.1rem;color:inherit;display:block;margin:0 -.4rem;padding:.2rem .4rem;text-decoration:none}.menu .menu-item>a.active,.menu .menu-item>a:active,.menu .menu-item>a:focus,.menu .menu-item>a:hover{background:#66758c;color:#303742}.menu .menu-item .form-checkbox,.menu .menu-item .form-radio,.menu .menu-item .form-switch{margin:.1rem 0}.menu .menu-item+.menu-item{margin-top:.2rem}.menu .menu-badge{align-items:center;display:flex;-ms-flex-align:center;height:100%;position:absolute;right:0;top:0}.menu .menu-badge .label{margin-right:.4rem}.modal{align-items:center;bottom:0;display:none;-ms-flex-align:center;justify-content:center;left:0;opacity:0;overflow:hidden;padding:.4rem;position:fixed;right:0;top:0}.modal.active,.modal:target{display:flex;opacity:1;z-index:400}.modal.active .modal-overlay,.modal:target .modal-overlay{background:rgba(247,248,249,.75);bottom:0;cursor:default;display:block;left:0;position:absolute;right:0;top:0}.modal.active .modal-container,.modal:target .modal-container{animation:slide-down .2s ease 1;z-index:1}.modal.modal-sm .modal-container{max-width:320px;padding:0 .4rem}.modal.modal-lg .modal-overlay{background:#fff}.modal.modal-lg .modal-container{box-shadow:none;max-width:960px}.modal-container{background:#fff;border-radius:.1rem;box-shadow:0 .2rem .5rem rgba(48,55,66,.3);display:flex;flex-direction:column;max-height:75vh;max-width:640px;padding:0 .8rem;width:100%}.modal-container.modal-fullheight{max-height:100vh}.modal-container .modal-header{color:#303742;padding:.8rem}.modal-container .modal-body{overflow-y:auto;padding:.8rem;position:relative}.modal-container .modal-footer{padding:.8rem;text-align:right}.nav{display:flex;flex-direction:column;list-style:none;margin:.2rem 0}.nav .nav-item a{color:#66758c;padding:.2rem .4rem;text-decoration:none}.nav .nav-item a:focus,.nav .nav-item a:hover{color:#303742}.nav .nav-item.active>a{color:#505c6e;font-weight:700}.nav .nav-item.active>a:focus,.nav .nav-item.active>a:hover{color:#303742}.nav .nav{margin-bottom:.4rem;margin-left:.8rem}.pagination{display:flex;list-style:none;margin:.2rem 0;padding:.2rem 0}.pagination .page-item{margin:.2rem .05rem}.pagination .page-item span{display:inline-block;padding:.2rem .2rem}.pagination .page-item a{border-radius:.1rem;display:inline-block;padding:.2rem .4rem;text-decoration:none}.pagination .page-item a:focus,.pagination .page-item a:hover{color:#303742}.pagination .page-item.disabled a{cursor:default;opacity:.5;pointer-events:none}.pagination .page-item.active a{background:#303742;color:#fff}.pagination .page-item.page-next,.pagination .page-item.page-prev{flex:1 0 50%}.pagination .page-item.page-next{text-align:right}.pagination .page-item .page-item-title{margin:0}.pagination .page-item .page-item-subtitle{margin:0;opacity:.5}.panel{border:.05rem solid #dadee4;border-radius:.1rem;display:flex;flex-direction:column}.panel .panel-footer,.panel .panel-header{flex:0 0 auto;padding:.8rem}.panel .panel-nav{flex:0 0 auto}.panel .panel-body{flex:1 1 auto;overflow-y:auto;padding:0 .8rem}.popover{display:inline-block;position:relative}.popover .popover-container{left:50%;opacity:0;padding:.4rem;position:absolute;top:0;transform:translate(-50%,-50%) scale(0);transition:transform .2s;width:320px;z-index:300}.popover :focus+.popover-container,.popover:hover .popover-container{display:block;opacity:1;transform:translate(-50%,-100%) scale(1)}.popover.popover-right .popover-container{left:100%;top:50%}.popover.popover-right :focus+.popover-container,.popover.popover-right:hover .popover-container{transform:translateY(-50%) scale(1)}.popover.popover-bottom .popover-container{left:50%;top:100%}.popover.popover-bottom :focus+.popover-container,.popover.popover-bottom:hover .popover-container{transform:translate(-50%) scale(1)}.popover.popover-left .popover-container{left:0;top:50%}.popover.popover-left :focus+.popover-container,.popover.popover-left:hover .popover-container{transform:translate(-100%,-50%) scale(1)}.popover .card{border:0;box-shadow:0 .2rem .5rem rgba(48,55,66,.3)}.step{display:flex;flex-wrap:nowrap;list-style:none;margin:.2rem 0;width:100%}.step .step-item{flex:1 1 0;margin-top:0;min-height:1rem;position:relative;text-align:center}.step .step-item:not(:first-child):before{background:#303742;content:"";height:2px;left:-50%;position:absolute;top:9px;width:100%}.step .step-item a{color:#303742;display:inline-block;padding:20px 10px 0;text-decoration:none}.step .step-item a:before{background:#303742;border:.1rem solid #fff;border-radius:50%;content:"";display:block;height:.6rem;left:50%;position:absolute;top:.2rem;transform:translateX(-50%);width:.6rem;z-index:1}.step .step-item.active a:before{background:#fff;border:.1rem solid #303742}.step .step-item.active~.step-item:before{background:#dadee4}.step .step-item.active~.step-item a{color:#cecece}.step .step-item.active~.step-item a:before{background:#dadee4}.tab{align-items:center;border-bottom:.05rem solid #dadee4;display:flex;-ms-flex-align:center;flex-wrap:wrap;list-style:none;margin:.2rem 0 .15rem 0}.tab .tab-item{margin-top:0}.tab .tab-item a{border-bottom:.1rem solid transparent;color:inherit;display:block;margin:0 .4rem 0 0;padding:.4rem .2rem .3rem .2rem;text-decoration:none}.tab .tab-item a:focus,.tab .tab-item a:hover{color:#303742}.tab .tab-item.active a,.tab .tab-item a.active{border-bottom-color:#303742;color:#303742}.tab .tab-item.tab-action{flex:1 0 auto;text-align:right}.tab .tab-item .btn-clear{margin-top:-.2rem}.tab.tab-block .tab-item{flex:1 0 0;text-align:center}.tab.tab-block .tab-item a{margin:0}.tab.tab-block .tab-item .badge[data-badge]:after{position:absolute;right:.1rem;top:.1rem;transform:translate(0)}.tab:not(.tab-block) .badge{padding-right:0}.tile{align-content:space-between;align-items:flex-start;display:flex;-ms-flex-align:start;-ms-flex-line-pack:justify}.tile .tile-action,.tile .tile-icon{flex:0 0 auto}.tile .tile-content{flex:1 1 auto}.tile .tile-content:not(:first-child){padding-left:.4rem}.tile .tile-content:not(:last-child){padding-right:.4rem}.tile .tile-subtitle,.tile .tile-title{line-height:1.2rem}.tile.tile-centered{align-items:center;-ms-flex-align:center}.tile.tile-centered .tile-content{overflow:hidden}.tile.tile-centered .tile-subtitle,.tile.tile-centered .tile-title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast{background:rgba(48,55,66,.95);border:.05rem solid #303742;border-color:#303742;border-radius:.1rem;color:#fff;display:block;padding:.4rem;width:100%}.toast.toast-primary{background:rgba(87,85,217,.95);border-color:#303742}.toast.toast-success{background:rgba(50,182,67,.95);border-color:#32b643}.toast.toast-warning{background:rgba(255,183,0,.95);border-color:#ffb700}.toast.toast-error{background:rgba(232,86,0,.95);border-color:#e85600}.toast a{color:#fff;text-decoration:underline}.toast a.active,.toast a:active,.toast a:focus,.toast a:hover{opacity:.75}.toast .btn-clear{margin:.1rem}.toast p:last-child{margin-bottom:0}.tooltip{position:relative}.tooltip:after{border-radius:.1rem;font-size:.7rem;padding:.2rem .4rem}.tooltip:focus:after,.tooltip:hover:after{opacity:1;transform:translate(-50%,-.2rem)}.tooltip.disabled,.tooltip[disabled]{pointer-events:auto}.tooltip.tooltip-right:after{bottom:50%;left:100%;transform:translate(-.2rem,50%)}.tooltip.tooltip-right:focus:after,.tooltip.tooltip-right:hover:after{transform:translate(.2rem,50%)}.tooltip.tooltip-bottom:after{bottom:auto;top:100%;transform:translate(-50%,-.4rem)}.tooltip.tooltip-bottom:focus:after,.tooltip.tooltip-bottom:hover:after{transform:translate(-50%,.2rem)}.tooltip.tooltip-left:after{bottom:50%;left:auto;right:100%;transform:translate(.4rem,50%)}.tooltip.tooltip-left:focus:after,.tooltip.tooltip-left:hover:after{transform:translate(-.2rem,50%)}@keyframes loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-1.6rem)}to{opacity:1;transform:translateY(0)}}.text-primary{color:#303742!important}a.text-primary:focus,a.text-primary:hover{color:#3b4351}a.text-primary:visited{color:#6c6ade}.text-secondary{color:#e5e5f9!important}a.text-secondary:focus,a.text-secondary:hover{color:#d1d0f4}a.text-secondary:visited{color:#fafafe}.text-gray{color:#cecece!important}a.text-gray:focus,a.text-gray:hover{color:#adb6c4}a.text-gray:visited{color:#cbd0d9}.text-light{color:#fff!important}a.text-light:focus,a.text-light:hover{color:#f2f2f2}a.text-light:visited{color:#fff}.text-dark{color:#3b4351!important}a.text-dark:focus,a.text-dark:hover{color:#303742}a.text-dark:visited{color:#455060}.text-success{color:#32b643!important}a.text-success:focus,a.text-success:hover{color:#2da23c}a.text-success:visited{color:#39c94b}.text-warning{color:#ffb700!important}a.text-warning:focus,a.text-warning:hover{color:#e6a500}a.text-warning:visited{color:#ffbe1a}.text-error{color:#e85600!important}a.text-error:focus,a.text-error:hover{color:#cf4d00}a.text-error:visited{color:#ff6003}.bg-primary{background:#303742!important;color:#fff}.bg-secondary{background:#66758c!important}.bg-dark{background:#303742!important;color:#fff}.bg-gray{background:#fafafa!important}.bg-success{background:#32b643!important;color:#fff}.bg-warning{background:#ffb700!important;color:#fff}.bg-error{background:#e85600!important;color:#fff}.c-hand{cursor:pointer}.c-move{cursor:move}.c-zoom-in{cursor:zoom-in}.c-zoom-out{cursor:zoom-out}.c-not-allowed{cursor:not-allowed}.c-auto{cursor:auto}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-hide,.d-none{display:none!important}.d-visible{visibility:visible}.d-invisible{visibility:hidden}.text-hide{background:0 0;border:0;color:transparent;font-size:0;line-height:0;text-shadow:none}.text-assistive{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.divider,.divider-vert{display:block;position:relative}.divider-vert[data-content]:after,.divider[data-content]:after{background:#fff;color:#cecece;content:attr(data-content);display:inline-block;font-size:.7rem;padding:0 .4rem;transform:translateY(-.65rem)}.divider{border-top:.05rem solid #f1f3f5;height:.05rem;margin:.4rem 0}.divider[data-content]{margin:.8rem 0}.divider-vert{display:block;padding:.8rem}.divider-vert:before{border-left:.05rem solid #dadee4;bottom:.4rem;content:"";display:block;left:50%;position:absolute;top:.4rem;transform:translateX(-50%)}.divider-vert[data-content]:after{left:50%;padding:.2rem 0;position:absolute;top:50%;transform:translate(-50%,-50%)}.loading{color:transparent!important;min-height:.8rem;pointer-events:none;position:relative}.loading:after{border:.1rem solid #303742}.loading.loading-lg{min-height:2rem}.clearfix:after{clear:both;content:"";display:table}.float-left{float:left!important}.float-right{float:right!important}.p-relative{position:relative!important}.p-absolute{position:absolute!important}.p-fixed{position:fixed!important}.p-sticky{position:sticky!important}.p-centered{display:block;float:none;margin-left:auto;margin-right:auto}.flex-centered{align-items:center;display:flex;-ms-flex-align:center;justify-content:center}.m-0{margin:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-bottom:0!important;margin-top:0!important}.m-1{margin:.2rem!important}.mb-1{margin-bottom:.2rem!important}.ml-1{margin-left:.2rem!important}.mr-1{margin-right:.2rem!important}.mt-1{margin-top:.2rem!important}.mx-1{margin-left:.2rem!important;margin-right:.2rem!important}.my-1{margin-bottom:.2rem!important;margin-top:.2rem!important}.m-2{margin:.4rem!important}.mb-2{margin-bottom:.4rem!important}.ml-2{margin-left:.4rem!important}.mr-2{margin-right:.4rem!important}.mt-2{margin-top:.4rem!important}.mx-2{margin-left:.4rem!important;margin-right:.4rem!important}.my-2{margin-bottom:.4rem!important;margin-top:.4rem!important}.p-0{padding:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.pr-0{padding-right:0!important}.pt-0{padding-top:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-bottom:0!important;padding-top:0!important}.p-1{padding:.2rem!important}.pb-1{padding-bottom:.2rem!important}.pl-1{padding-left:.2rem!important}.pr-1{padding-right:.2rem!important}.pt-1{padding-top:.2rem!important}.px-1{padding-left:.2rem!important;padding-right:.2rem!important}.py-1{padding-bottom:.2rem!important;padding-top:.2rem!important}.p-2{padding:.4rem!important}.pb-2{padding-bottom:.4rem!important}.pl-2{padding-left:.4rem!important}.pr-2{padding-right:.4rem!important}.pt-2{padding-top:.4rem!important}.px-2{padding-left:.4rem!important;padding-right:.4rem!important}.py-2{padding-bottom:.4rem!important;padding-top:.4rem!important}.s-rounded{border-radius:.1rem}.s-circle{border-radius:50%}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-normal{font-weight:400}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-large{font-size:1.2em}.text-small{font-size:.9em}.text-tiny{font-size:.8em}.text-muted{opacity:.8}.text-ellipsis{text-overflow:ellipsis}.text-clip,.text-ellipsis{overflow:hidden;white-space:nowrap}.text-clip{text-overflow:clip}.text-break{-webkit-hyphens:auto;hyphens:auto;word-break:break-word;word-wrap:break-word} + +/*! Spectre.css Experimentals v0.5.9 | MIT License | github.com/picturepan2/spectre */.form-autocomplete{position:relative}.form-autocomplete .form-autocomplete-input{align-content:flex-start;display:flex;-ms-flex-line-pack:start;flex-wrap:wrap;height:auto;min-height:1.6rem;padding:.1rem}.form-autocomplete .form-autocomplete-input.is-focused{border-color:#303742;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-autocomplete .form-autocomplete-input .form-input{border-color:transparent;box-shadow:none;display:inline-block;flex:1 0 auto;height:1.2rem;line-height:.8rem;margin:.1rem;width:auto}.form-autocomplete .menu{left:0;position:absolute;top:100%;width:100%}.form-autocomplete.autocomplete-oneline .form-autocomplete-input{flex-wrap:nowrap;overflow-x:auto}.form-autocomplete.autocomplete-oneline .chip{flex:1 0 auto}.calendar{border:.05rem solid #e4e4e4;border-radius:.1rem;display:block;min-width:280px}.calendar .calendar-nav{align-items:center;background:#f7f8f9;border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flex;-ms-flex-align:center;font-size:.9rem;padding:.4rem}.calendar .calendar-body,.calendar .calendar-header{display:flex;-ms-flex-pack:center;flex-wrap:wrap;justify-content:center;padding:.4rem 0}.calendar .calendar-body .calendar-date,.calendar .calendar-header .calendar-date{flex:0 0 14.28%;max-width:14.28%}.calendar .calendar-header{background:#f7f8f9;border-bottom:.05rem solid #e4e4e4;color:#cecece;font-size:.7rem;text-align:center}.calendar .calendar-body{color:#66758c}.calendar .calendar-date{border:0;padding:.2rem}.calendar .calendar-date .date-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:.05rem solid transparent;border-radius:50%;color:#66758c;cursor:pointer;font-size:.7rem;height:1.4rem;line-height:1rem;outline:0;padding:.1rem;position:relative;text-align:center;text-decoration:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;vertical-align:middle;white-space:nowrap;width:1.4rem}.calendar .calendar-date .date-item.date-today{border-color:#e5e5f9;color:#303742}.calendar .calendar-date .date-item:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.calendar .calendar-date .date-item:focus,.calendar .calendar-date .date-item:hover{background:#fefeff;border-color:#e5e5f9;color:#303742;text-decoration:none}.calendar .calendar-date .date-item.active,.calendar .calendar-date .date-item:active{background:#4b48d6;border-color:#3634d2;color:#fff}.calendar .calendar-date .date-item.badge:after{position:absolute;right:3px;top:3px;transform:translate(50%,-50%)}.calendar .calendar-date .calendar-event.disabled,.calendar .calendar-date .calendar-event:disabled,.calendar .calendar-date .date-item.disabled,.calendar .calendar-date .date-item:disabled{cursor:default;opacity:.25;pointer-events:none}.calendar .calendar-date.next-month .calendar-event,.calendar .calendar-date.next-month .date-item,.calendar .calendar-date.prev-month .calendar-event,.calendar .calendar-date.prev-month .date-item{opacity:.25}.calendar .calendar-range{position:relative}.calendar .calendar-range:before{background:#66758c;content:"";height:1.4rem;left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.calendar .calendar-range.range-start:before{left:50%}.calendar .calendar-range.range-end:before{right:50%}.calendar .calendar-range.range-end .date-item,.calendar .calendar-range.range-start .date-item{background:#4b48d6;border-color:#3634d2;color:#fff}.calendar .calendar-range .date-item{color:#303742}.calendar.calendar-lg .calendar-body{padding:0}.calendar.calendar-lg .calendar-body .calendar-date{border-bottom:.05rem solid #e4e4e4;border-right:.05rem solid #e4e4e4;display:flex;flex-direction:column;height:5.5rem;padding:0}.calendar.calendar-lg .calendar-body .calendar-date:nth-child(7n){border-right:0}.calendar.calendar-lg .calendar-body .calendar-date:nth-last-child(-n+7){border-bottom:0}.calendar.calendar-lg .date-item{align-self:flex-end;-ms-flex-item-align:end;height:1.4rem;margin-right:.2rem;margin-top:.2rem}.calendar.calendar-lg .calendar-range:before{top:19px}.calendar.calendar-lg .calendar-range.range-start:before{left:auto;width:19px}.calendar.calendar-lg .calendar-range.range-end:before{right:19px}.calendar.calendar-lg .calendar-events{flex-grow:1;-ms-flex-positive:1;line-height:1;overflow-y:auto;padding:.2rem}.calendar.calendar-lg .calendar-event{border-radius:.1rem;display:block;font-size:.7rem;margin:.1rem auto;overflow:hidden;padding:3px 4px;text-overflow:ellipsis;white-space:nowrap}.carousel .carousel-locator:first-of-type:checked~.carousel-container .carousel-item:first-of-type,.carousel .carousel-locator:nth-of-type(2):checked~.carousel-container .carousel-item:nth-of-type(2),.carousel .carousel-locator:nth-of-type(3):checked~.carousel-container .carousel-item:nth-of-type(3),.carousel .carousel-locator:nth-of-type(4):checked~.carousel-container .carousel-item:nth-of-type(4),.carousel .carousel-locator:nth-of-type(5):checked~.carousel-container .carousel-item:nth-of-type(5),.carousel .carousel-locator:nth-of-type(6):checked~.carousel-container .carousel-item:nth-of-type(6),.carousel .carousel-locator:nth-of-type(7):checked~.carousel-container .carousel-item:nth-of-type(7),.carousel .carousel-locator:nth-of-type(8):checked~.carousel-container .carousel-item:nth-of-type(8){animation:carousel-slidein .75s ease-in-out 1;opacity:1;z-index:100}.carousel .carousel-locator:first-of-type:checked~.carousel-nav .nav-item:first-of-type,.carousel .carousel-locator:nth-of-type(2):checked~.carousel-nav .nav-item:nth-of-type(2),.carousel .carousel-locator:nth-of-type(3):checked~.carousel-nav .nav-item:nth-of-type(3),.carousel .carousel-locator:nth-of-type(4):checked~.carousel-nav .nav-item:nth-of-type(4),.carousel .carousel-locator:nth-of-type(5):checked~.carousel-nav .nav-item:nth-of-type(5),.carousel .carousel-locator:nth-of-type(6):checked~.carousel-nav .nav-item:nth-of-type(6),.carousel .carousel-locator:nth-of-type(7):checked~.carousel-nav .nav-item:nth-of-type(7),.carousel .carousel-locator:nth-of-type(8):checked~.carousel-nav .nav-item:nth-of-type(8){color:#f7f8f9}.carousel{background:#f7f8f9;display:block;overflow:hidden;-webkit-overflow-scrolling:touch;position:relative;width:100%;z-index:1}.carousel .carousel-container{height:100%;left:0;position:relative}.carousel .carousel-container:before{content:"";display:block;padding-bottom:56.25%}.carousel .carousel-container .carousel-item{animation:carousel-slideout 1s ease-in-out 1;height:100%;left:0;margin:0;opacity:0;position:absolute;top:0;width:100%}.carousel .carousel-container .carousel-item:hover .item-next,.carousel .carousel-container .carousel-item:hover .item-prev{opacity:1}.carousel .carousel-container .item-next,.carousel .carousel-container .item-prev{background:rgba(247,248,249,.25);border-color:rgba(247,248,249,.5);color:#f7f8f9;opacity:0;position:absolute;top:50%;transform:translateY(-50%);transition:all .4s;z-index:100}.carousel .carousel-container .item-prev{left:1rem}.carousel .carousel-container .item-next{right:1rem}.carousel .carousel-nav{bottom:.4rem;display:flex;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);width:10rem;z-index:100}.carousel .carousel-nav .nav-item{color:rgba(247,248,249,.5);display:block;flex:1 0 auto;height:1.6rem;margin:.2rem;max-width:2.5rem;position:relative}.carousel .carousel-nav .nav-item:before{background:currentColor;content:"";display:block;height:.1rem;position:absolute;top:.5rem;width:100%}@keyframes carousel-slidein{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes carousel-slideout{0%{opacity:1;transform:translateX(0)}to{opacity:1;transform:translateX(-50%)}}.comparison-slider{height:50vh;overflow:hidden;-webkit-overflow-scrolling:touch;position:relative;width:100%}.comparison-slider .comparison-after,.comparison-slider .comparison-before{height:100%;left:0;margin:0;overflow:hidden;position:absolute;top:0}.comparison-slider .comparison-after img,.comparison-slider .comparison-before img{height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:left center;object-position:left center;position:absolute;width:100%}.comparison-slider .comparison-before{width:100%;z-index:1}.comparison-slider .comparison-before .comparison-label{right:.8rem}.comparison-slider .comparison-after{max-width:100%;min-width:0;z-index:2}.comparison-slider .comparison-after:before{background:0 0;content:"";cursor:default;height:100%;left:0;position:absolute;right:.8rem;top:0;z-index:1}.comparison-slider .comparison-after:after{background:currentColor;border-radius:50%;box-shadow:0 -5px,0 5px;color:#fff;content:"";height:3px;pointer-events:none;position:absolute;right:.4rem;top:50%;transform:translate(50%,-50%);width:3px}.comparison-slider .comparison-after .comparison-label{left:.8rem}.comparison-slider .comparison-resizer{animation:first-run 1.5s ease-in-out 1;cursor:ew-resize;height:.8rem;left:0;max-width:100%;min-width:.8rem;opacity:0;outline:0;position:relative;resize:horizontal;top:50%;transform:translateY(-50%) scaleY(30);width:0}.comparison-slider .comparison-label{background:rgba(48,55,66,.5);bottom:.8rem;color:#fff;padding:.2rem .4rem;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}@keyframes first-run{0%{width:0}25%{width:2.4rem}50%{width:.8rem}75%{width:1.2rem}to{width:0}}.filter .filter-tag#tag-0:checked~.filter-nav .chip[for=tag-0],.filter .filter-tag#tag-1:checked~.filter-nav .chip[for=tag-1],.filter .filter-tag#tag-2:checked~.filter-nav .chip[for=tag-2],.filter .filter-tag#tag-3:checked~.filter-nav .chip[for=tag-3],.filter .filter-tag#tag-4:checked~.filter-nav .chip[for=tag-4],.filter .filter-tag#tag-5:checked~.filter-nav .chip[for=tag-5],.filter .filter-tag#tag-6:checked~.filter-nav .chip[for=tag-6],.filter .filter-tag#tag-7:checked~.filter-nav .chip[for=tag-7],.filter .filter-tag#tag-8:checked~.filter-nav .chip[for=tag-8]{background:#303742;color:#fff}.filter .filter-tag#tag-1:checked~.filter-body .filter-item:not([data-tag~=tag-1]),.filter .filter-tag#tag-2:checked~.filter-body .filter-item:not([data-tag~=tag-2]),.filter .filter-tag#tag-3:checked~.filter-body .filter-item:not([data-tag~=tag-3]),.filter .filter-tag#tag-4:checked~.filter-body .filter-item:not([data-tag~=tag-4]),.filter .filter-tag#tag-5:checked~.filter-body .filter-item:not([data-tag~=tag-5]),.filter .filter-tag#tag-6:checked~.filter-body .filter-item:not([data-tag~=tag-6]),.filter .filter-tag#tag-7:checked~.filter-body .filter-item:not([data-tag~=tag-7]),.filter .filter-tag#tag-8:checked~.filter-body .filter-item:not([data-tag~=tag-8]){display:none}.filter .filter-nav{margin:.4rem 0}.filter .filter-body{display:flex;flex-wrap:wrap}.meter{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f7f8f9;border:0;border-radius:.1rem;display:block;height:.8rem;width:100%}.meter::-webkit-meter-inner-element{display:block}.meter::-webkit-meter-bar,.meter::-webkit-meter-even-less-good-value,.meter::-webkit-meter-optimum-value,.meter::-webkit-meter-suboptimum-value{border-radius:.1rem}.meter::-webkit-meter-bar{background:#f7f8f9}.meter::-webkit-meter-optimum-value{background:#32b643}.meter::-webkit-meter-suboptimum-value{background:#ffb700}.meter::-webkit-meter-even-less-good-value{background:#e85600}.meter:-moz-meter-optimum,.meter:-moz-meter-sub-optimum,.meter:-moz-meter-sub-sub-optimum,.meter::-moz-meter-bar{border-radius:.1rem}.meter:-moz-meter-optimum::-moz-meter-bar{background:#32b643}.meter:-moz-meter-sub-optimum::-moz-meter-bar{background:#ffb700}.meter:-moz-meter-sub-sub-optimum::-moz-meter-bar{background:#e85600}.off-canvas{display:flex;flex-flow:nowrap;height:100%;position:relative;width:100%}.off-canvas .off-canvas-toggle{display:block;left:.4rem;position:absolute;top:.4rem;transition:none;z-index:1}.off-canvas .off-canvas-sidebar{background:#f7f8f9;bottom:0;left:0;min-width:10rem;overflow-y:auto;position:fixed;top:0;transform:translateX(-100%);transition:transform .25s;z-index:200}.off-canvas .off-canvas-content{flex:1 1 auto;height:100%;padding:.4rem .4rem .4rem 4rem}.off-canvas .off-canvas-overlay{background:rgba(48,55,66,.1);border-color:transparent;border-radius:0;bottom:0;display:none;height:100%;left:0;position:fixed;right:0;top:0;width:100%}.off-canvas .off-canvas-sidebar.active,.off-canvas .off-canvas-sidebar:target{transform:translateX(0)}.off-canvas .off-canvas-sidebar.active~.off-canvas-overlay,.off-canvas .off-canvas-sidebar:target~.off-canvas-overlay{display:block;z-index:100}@media (min-width:960px){.off-canvas.off-canvas-sidebar-show .off-canvas-toggle{display:none}.off-canvas.off-canvas-sidebar-show .off-canvas-sidebar{flex:0 0 auto;position:relative;transform:none}.off-canvas.off-canvas-sidebar-show .off-canvas-overlay{display:none!important}}.parallax{display:block;height:auto;position:relative;width:auto}.parallax .parallax-content{box-shadow:0 1rem 2.1rem rgba(48,55,66,.3);height:auto;transform:perspective(1000px);transform-style:preserve-3d;transition:all .4s ease;width:100%}.parallax .parallax-content:before{content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%}.parallax .parallax-front{align-items:center;color:#fff;display:flex;-ms-flex-align:center;-ms-flex-pack:center;height:100%;justify-content:center;left:0;position:absolute;text-align:center;text-shadow:0 0 20px rgba(48,55,66,.75);top:0;transform:translateZ(50px) scale(.95);transition:transform .4s;width:100%;z-index:1}.parallax .parallax-top-left{height:50%;left:0;outline:0;position:absolute;top:0;width:50%;z-index:100}.parallax .parallax-top-left:focus~.parallax-content,.parallax .parallax-top-left:hover~.parallax-content{transform:perspective(1000px) rotateX(3deg) rotateY(-3deg)}.parallax .parallax-top-left:focus~.parallax-content:before,.parallax .parallax-top-left:hover~.parallax-content:before{background:linear-gradient(135deg,hsla(0,0%,100%,.35),transparent 50%)}.parallax .parallax-top-left:focus~.parallax-content .parallax-front,.parallax .parallax-top-left:hover~.parallax-content .parallax-front{transform:translate3d(4.5px,4.5px,50px) scale(.95)}.parallax .parallax-top-right{height:50%;outline:0;position:absolute;right:0;top:0;width:50%;z-index:100}.parallax .parallax-top-right:focus~.parallax-content,.parallax .parallax-top-right:hover~.parallax-content{transform:perspective(1000px) rotateX(3deg) rotateY(3deg)}.parallax .parallax-top-right:focus~.parallax-content:before,.parallax .parallax-top-right:hover~.parallax-content:before{background:linear-gradient(-135deg,hsla(0,0%,100%,.35),transparent 50%)}.parallax .parallax-top-right:focus~.parallax-content .parallax-front,.parallax .parallax-top-right:hover~.parallax-content .parallax-front{transform:translate3d(-4.5px,4.5px,50px) scale(.95)}.parallax .parallax-bottom-left{bottom:0;height:50%;left:0;outline:0;position:absolute;width:50%;z-index:100}.parallax .parallax-bottom-left:focus~.parallax-content,.parallax .parallax-bottom-left:hover~.parallax-content{transform:perspective(1000px) rotateX(-3deg) rotateY(-3deg)}.parallax .parallax-bottom-left:focus~.parallax-content:before,.parallax .parallax-bottom-left:hover~.parallax-content:before{background:linear-gradient(45deg,hsla(0,0%,100%,.35),transparent 50%)}.parallax .parallax-bottom-left:focus~.parallax-content .parallax-front,.parallax .parallax-bottom-left:hover~.parallax-content .parallax-front{transform:translate3d(4.5px,-4.5px,50px) scale(.95)}.parallax .parallax-bottom-right{bottom:0;height:50%;outline:0;position:absolute;right:0;width:50%;z-index:100}.parallax .parallax-bottom-right:focus~.parallax-content,.parallax .parallax-bottom-right:hover~.parallax-content{transform:perspective(1000px) rotateX(-3deg) rotateY(3deg)}.parallax .parallax-bottom-right:focus~.parallax-content:before,.parallax .parallax-bottom-right:hover~.parallax-content:before{background:linear-gradient(-45deg,hsla(0,0%,100%,.35),transparent 50%)}.parallax .parallax-bottom-right:focus~.parallax-content .parallax-front,.parallax .parallax-bottom-right:hover~.parallax-content .parallax-front{transform:translate3d(-4.5px,-4.5px,50px) scale(.95)}.progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#eef0f3;border:0;border-radius:.1rem;color:#303742;height:.2rem;position:relative;width:100%}.progress::-webkit-progress-bar{background:0 0;border-radius:.1rem}.progress::-webkit-progress-value{background:#303742;border-radius:.1rem}.progress::-moz-progress-bar{background:#303742;border-radius:.1rem}.progress:indeterminate{animation:progress-indeterminate 1.5s linear infinite;background:#eef0f3 linear-gradient(90deg,#303742 30%,#eef0f3 0) 0 0/150% 150% no-repeat}.progress:indeterminate::-moz-progress-bar{background:0 0}@keyframes progress-indeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;display:block;height:1.2rem;width:100%}.slider:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2);outline:0}.slider.tooltip:not([data-tooltip]):after{content:attr(value)}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:#303742;border:0;border-radius:50%;height:.6rem;margin-top:-.25rem;-webkit-transition:transform .2s;transition:transform .2s;width:.6rem}.slider::-moz-range-thumb{background:#303742;border:0;border-radius:50%;height:.6rem;-moz-transition:transform .2s;transition:transform .2s;width:.6rem}.slider::-ms-thumb{background:#303742;border:0;border-radius:50%;height:.6rem;-ms-transition:transform .2s;transition:transform .2s;width:.6rem}.slider:active::-webkit-slider-thumb{transform:scale(1.25)}.slider:active::-moz-range-thumb{transform:scale(1.25)}.slider:active::-ms-thumb{transform:scale(1.25)}.slider.disabled::-webkit-slider-thumb,.slider:disabled::-webkit-slider-thumb{background:#f7f8f9;transform:scale(1)}.slider.disabled::-moz-range-thumb,.slider:disabled::-moz-range-thumb{background:#f7f8f9;transform:scale(1)}.slider.disabled::-ms-thumb,.slider:disabled::-ms-thumb{background:#f7f8f9;transform:scale(1)}.slider::-webkit-slider-runnable-track{background:#eef0f3;border-radius:.1rem;height:.1rem;width:100%}.slider::-moz-range-track{background:#eef0f3;border-radius:.1rem;height:.1rem;width:100%}.slider::-ms-track{background:#eef0f3;border-radius:.1rem;height:.1rem;width:100%}.slider::-ms-fill-lower{background:#303742}.timeline .timeline-item{display:flex;margin-bottom:1.2rem;position:relative}.timeline .timeline-item:before{background:#e4e4e4;content:"";height:100%;left:11px;position:absolute;top:1.2rem;width:2px}.timeline .timeline-item .timeline-left{flex:0 0 auto}.timeline .timeline-item .timeline-content{flex:1 1 auto;padding:2px 0 2px .8rem}.timeline .timeline-item .timeline-icon{align-items:center;border-radius:50%;color:#fff;display:flex;-ms-flex-align:center;-ms-flex-pack:center;height:1.2rem;justify-content:center;text-align:center;width:1.2rem}.timeline .timeline-item .timeline-icon:before{border:.1rem solid #303742;border-radius:50%;content:"";display:block;height:.4rem;left:.4rem;position:absolute;top:.4rem;width:.4rem}.timeline .timeline-item .timeline-icon.icon-lg{background:#303742;line-height:1.2rem}.timeline .timeline-item .timeline-icon.icon-lg:before{content:none}.viewer-360{align-items:center;display:flex;-ms-flex-align:center;flex-direction:column}.viewer-360 .viewer-slider[max="36"][value="1"]+.viewer-image{background-position-y:0}.viewer-360 .viewer-slider[max="36"][value="2"]+.viewer-image{background-position-y:2.8571428571%}.viewer-360 .viewer-slider[max="36"][value="3"]+.viewer-image{background-position-y:5.7142857143%}.viewer-360 .viewer-slider[max="36"][value="4"]+.viewer-image{background-position-y:8.5714285714%}.viewer-360 .viewer-slider[max="36"][value="5"]+.viewer-image{background-position-y:11.4285714286%}.viewer-360 .viewer-slider[max="36"][value="6"]+.viewer-image{background-position-y:14.2857142857%}.viewer-360 .viewer-slider[max="36"][value="7"]+.viewer-image{background-position-y:17.1428571429%}.viewer-360 .viewer-slider[max="36"][value="8"]+.viewer-image{background-position-y:20%}.viewer-360 .viewer-slider[max="36"][value="9"]+.viewer-image{background-position-y:22.8571428571%}.viewer-360 .viewer-slider[max="36"][value="10"]+.viewer-image{background-position-y:25.7142857143%}.viewer-360 .viewer-slider[max="36"][value="11"]+.viewer-image{background-position-y:28.5714285714%}.viewer-360 .viewer-slider[max="36"][value="12"]+.viewer-image{background-position-y:31.4285714286%}.viewer-360 .viewer-slider[max="36"][value="13"]+.viewer-image{background-position-y:34.2857142857%}.viewer-360 .viewer-slider[max="36"][value="14"]+.viewer-image{background-position-y:37.1428571429%}.viewer-360 .viewer-slider[max="36"][value="15"]+.viewer-image{background-position-y:40%}.viewer-360 .viewer-slider[max="36"][value="16"]+.viewer-image{background-position-y:42.8571428571%}.viewer-360 .viewer-slider[max="36"][value="17"]+.viewer-image{background-position-y:45.7142857143%}.viewer-360 .viewer-slider[max="36"][value="18"]+.viewer-image{background-position-y:48.5714285714%}.viewer-360 .viewer-slider[max="36"][value="19"]+.viewer-image{background-position-y:51.4285714286%}.viewer-360 .viewer-slider[max="36"][value="20"]+.viewer-image{background-position-y:54.2857142857%}.viewer-360 .viewer-slider[max="36"][value="21"]+.viewer-image{background-position-y:57.1428571429%}.viewer-360 .viewer-slider[max="36"][value="22"]+.viewer-image{background-position-y:60%}.viewer-360 .viewer-slider[max="36"][value="23"]+.viewer-image{background-position-y:62.8571428571%}.viewer-360 .viewer-slider[max="36"][value="24"]+.viewer-image{background-position-y:65.7142857143%}.viewer-360 .viewer-slider[max="36"][value="25"]+.viewer-image{background-position-y:68.5714285714%}.viewer-360 .viewer-slider[max="36"][value="26"]+.viewer-image{background-position-y:71.4285714286%}.viewer-360 .viewer-slider[max="36"][value="27"]+.viewer-image{background-position-y:74.2857142857%}.viewer-360 .viewer-slider[max="36"][value="28"]+.viewer-image{background-position-y:77.1428571429%}.viewer-360 .viewer-slider[max="36"][value="29"]+.viewer-image{background-position-y:80%}.viewer-360 .viewer-slider[max="36"][value="30"]+.viewer-image{background-position-y:82.8571428571%}.viewer-360 .viewer-slider[max="36"][value="31"]+.viewer-image{background-position-y:85.7142857143%}.viewer-360 .viewer-slider[max="36"][value="32"]+.viewer-image{background-position-y:88.5714285714%}.viewer-360 .viewer-slider[max="36"][value="33"]+.viewer-image{background-position-y:91.4285714286%}.viewer-360 .viewer-slider[max="36"][value="34"]+.viewer-image{background-position-y:94.2857142857%}.viewer-360 .viewer-slider[max="36"][value="35"]+.viewer-image{background-position-y:97.1428571429%}.viewer-360 .viewer-slider[max="36"][value="36"]+.viewer-image{background-position-y:100%}.viewer-360 .viewer-slider{cursor:ew-resize;-ms-flex-order:2;margin:1rem;order:2;width:60%}.viewer-360 .viewer-image{background-position-y:0;background-repeat:no-repeat;background-size:100%;-ms-flex-order:1;max-width:100%;order:1} + +/*! Spectre.css Icons v0.5.9 | MIT License | github.com/picturepan2/spectre */.icon{box-sizing:border-box;display:inline-block;font-size:inherit;font-style:normal;height:1em;position:relative;text-indent:-9999px;vertical-align:middle;width:1em}.icon:after,.icon:before{content:"";display:block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.icon.icon-2x{font-size:1.6rem}.icon.icon-3x{font-size:2.4rem}.icon.icon-4x{font-size:3.2rem}.accordion .icon,.btn .icon,.menu .icon,.toast .icon{vertical-align:-10%}.btn-lg .icon{vertical-align:-15%}.icon-arrow-down:before,.icon-arrow-left:before,.icon-arrow-right:before,.icon-arrow-up:before,.icon-back:before,.icon-downward:before,.icon-forward:before,.icon-upward:before{border:.1rem solid currentColor;border-bottom:0;border-right:0;height:.65em;width:.65em}.icon-arrow-down:before{transform:translate(-50%,-75%) rotate(225deg)}.icon-arrow-left:before{transform:translate(-25%,-50%) rotate(-45deg)}.icon-arrow-right:before{transform:translate(-75%,-50%) rotate(135deg)}.icon-arrow-up:before{transform:translate(-50%,-25%) rotate(45deg)}.icon-back:after,.icon-forward:after{background:currentColor;height:.1rem;width:.8em}.icon-downward:after,.icon-upward:after{background:currentColor;height:.8em;width:.1rem}.icon-back:after{left:55%}.icon-back:before{transform:translate(-50%,-50%) rotate(-45deg)}.icon-downward:after{top:45%}.icon-downward:before{transform:translate(-50%,-50%) rotate(-135deg)}.icon-forward:after{left:45%}.icon-forward:before{transform:translate(-50%,-50%) rotate(135deg)}.icon-upward:after{top:55%}.icon-upward:before{transform:translate(-50%,-50%) rotate(45deg)}.icon-caret:before{border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid currentColor;height:0;transform:translate(-50%,-25%);width:0}.icon-menu:before{background:currentColor;box-shadow:0 -.35em,0 .35em;height:.1rem;width:100%}.icon-apps:before{background:currentColor;box-shadow:-.35em -.35em,-.35em 0,-.35em .35em,0 -.35em,0 .35em,.35em -.35em,.35em 0,.35em .35em;height:3px;width:3px}.icon-resize-horiz:after,.icon-resize-horiz:before,.icon-resize-vert:after,.icon-resize-vert:before{border:.1rem solid currentColor;border-bottom:0;border-right:0;height:.45em;width:.45em}.icon-resize-horiz:before,.icon-resize-vert:before{transform:translate(-50%,-90%) rotate(45deg)}.icon-resize-horiz:after,.icon-resize-vert:after{transform:translate(-50%,-10%) rotate(225deg)}.icon-resize-horiz:before{transform:translate(-90%,-50%) rotate(-45deg)}.icon-resize-horiz:after{transform:translate(-10%,-50%) rotate(135deg)}.icon-more-horiz:before,.icon-more-vert:before{background:currentColor;border-radius:50%;box-shadow:-.4em 0,.4em 0;height:3px;width:3px}.icon-more-vert:before{box-shadow:0 -.4em,0 .4em}.icon-cross:before,.icon-minus:before,.icon-plus:before{background:currentColor;height:.1rem;width:100%}.icon-cross:after,.icon-plus:after{background:currentColor;height:100%;width:.1rem}.icon-cross:before{width:100%}.icon-cross:after{height:100%}.icon-cross:after,.icon-cross:before{transform:translate(-50%,-50%) rotate(45deg)}.icon-check:before{border:.1rem solid currentColor;border-right:0;border-top:0;height:.5em;transform:translate(-50%,-75%) rotate(-45deg);width:.9em}.icon-stop{border:.1rem solid currentColor;border-radius:50%}.icon-stop:before{background:currentColor;height:.1rem;transform:translate(-50%,-50%) rotate(45deg);width:1em}.icon-shutdown{border:.1rem solid currentColor;border-radius:50%;border-top-color:transparent}.icon-shutdown:before{background:currentColor;content:"";height:.5em;top:.1em;width:.1rem}.icon-refresh:before{border:.1rem solid currentColor;border-radius:50%;border-right-color:transparent;height:1em;width:1em}.icon-refresh:after{border:.2em solid currentColor;border-left-color:transparent;border-top-color:transparent;height:0;left:80%;top:20%;width:0}.icon-search:before{border:.1rem solid currentColor;border-radius:50%;height:.75em;left:5%;top:5%;transform:translate(0) rotate(45deg);width:.75em}.icon-search:after{background:currentColor;height:.1rem;left:80%;top:80%;transform:translate(-50%,-50%) rotate(45deg);width:.4em}.icon-edit:before{border:.1rem solid currentColor;height:.4em;transform:translate(-40%,-60%) rotate(-45deg);width:.85em}.icon-edit:after{border:.15em solid currentColor;border-right-color:transparent;border-top-color:transparent;height:0;left:5%;top:95%;transform:translateY(-100%);width:0}.icon-delete:before{border:.1rem solid currentColor;border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top:0;height:.75em;top:60%;width:.75em}.icon-delete:after{background:currentColor;box-shadow:-.25em .2em,.25em .2em;height:.1rem;top:.05rem;width:.5em}.icon-share{border:.1rem solid currentColor;border-radius:.1rem;border-right:0;border-top:0}.icon-share:before{border:.1rem solid currentColor;border-left:0;border-top:0;height:.4em;left:100%;top:.25em;transform:translate(-125%,-50%) rotate(-45deg);width:.4em}.icon-share:after{border:.1rem solid currentColor;border-bottom:0;border-radius:75% 0;border-right:0;height:.5em;width:.6em}.icon-flag:before{background:currentColor;height:1em;left:15%;width:.1rem}.icon-flag:after{border:.1rem solid currentColor;border-bottom-right-radius:.1rem;border-left:0;border-top-right-radius:.1rem;height:.65em;left:60%;top:35%;width:.8em}.icon-bookmark:before{border:.1rem solid currentColor;border-bottom:0;border-top-left-radius:.1rem;border-top-right-radius:.1rem;height:.9em;width:.8em}.icon-bookmark:after{border:.1rem solid currentColor;border-bottom:0;border-left:0;border-radius:.1rem;height:.5em;transform:translate(-50%,35%) rotate(-45deg) skew(15deg,15deg);width:.5em}.icon-download,.icon-upload{border-bottom:.1rem solid currentColor}.icon-download:before,.icon-upload:before{border:.1rem solid currentColor;border-bottom:0;border-right:0;height:.5em;transform:translate(-50%,-60%) rotate(-135deg);width:.5em}.icon-download:after,.icon-upload:after{background:currentColor;height:.6em;top:40%;width:.1rem}.icon-upload:before{transform:translate(-50%,-60%) rotate(45deg)}.icon-upload:after{top:50%}.icon-copy:before{border:.1rem solid currentColor;border-bottom:0;border-radius:.1rem;border-right:0;height:.8em;left:40%;top:35%;width:.8em}.icon-copy:after{border:.1rem solid currentColor;border-radius:.1rem;height:.8em;left:60%;top:60%;width:.8em}.icon-time{border:.1rem solid currentColor;border-radius:50%}.icon-time:before{height:.4em;transform:translate(-50%,-75%)}.icon-time:after,.icon-time:before{background:currentColor;width:.1rem}.icon-time:after{height:.3em;transform:translate(-50%,-75%) rotate(90deg);transform-origin:50% 90%}.icon-mail:before{border:.1rem solid currentColor;border-radius:.1rem;height:.8em;width:1em}.icon-mail:after{border:.1rem solid currentColor;border-right:0;border-top:0;height:.5em;transform:translate(-50%,-90%) rotate(-45deg) skew(10deg,10deg);width:.5em}.icon-people:before{border:.1rem solid currentColor;border-radius:50%;height:.45em;top:25%;width:.45em}.icon-people:after{border:.1rem solid currentColor;border-radius:50% 50% 0 0;height:.4em;top:75%;width:.9em}.icon-message{border:.1rem solid currentColor;border-bottom:0;border-radius:.1rem;border-right:0}.icon-message:before{border:.1rem solid currentColor;border-bottom-right-radius:.1rem;border-left:0;border-top:0;height:.8em;left:65%;top:40%;width:.7em}.icon-message:after{background:currentColor;border-radius:.1rem;height:.3em;left:10%;top:100%;transform:translateY(-90%) rotate(45deg);width:.1rem}.icon-photo{border:.1rem solid currentColor;border-radius:.1rem}.icon-photo:before{border:.1rem solid currentColor;border-radius:50%;height:.25em;left:35%;top:35%;width:.25em}.icon-photo:after{border:.1rem solid currentColor;border-bottom:0;border-left:0;height:.5em;left:60%;transform:translate(-50%,25%) rotate(-45deg);width:.5em}.icon-link:after,.icon-link:before{border:.1rem solid currentColor;border-radius:5em 0 0 5em;border-right:0;height:.5em;width:.75em}.icon-link:before{transform:translate(-70%,-45%) rotate(-45deg)}.icon-link:after{transform:translate(-30%,-55%) rotate(135deg)}.icon-location:before{border:.1rem solid currentColor;border-radius:50% 50% 50% 0;height:.8em;transform:translate(-50%,-60%) rotate(-45deg);width:.8em}.icon-location:after{height:.2em;transform:translate(-50%,-80%);width:.2em}.icon-emoji,.icon-location:after{border:.1rem solid currentColor;border-radius:50%}.icon-emoji:before{border-radius:50%;box-shadow:-.17em -.1em,.17em -.1em;height:.15em;width:.15em}.icon-emoji:after{border:.1rem solid currentColor;border-bottom-color:transparent;border-radius:50%;border-right-color:transparent;height:.5em;transform:translate(-50%,-40%) rotate(-135deg);width:.5em}.off-canvas .off-canvas-toggle{font-size:1rem;left:1.5rem;position:fixed;top:1rem}.off-canvas .off-canvas-sidebar{width:12rem}.off-canvas .off-canvas-content{padding:0}.backend-container{min-height:100vh}.backend-navbar{height:3.8rem;position:fixed;right:0;top:0;z-index:100}.backend-navbar .btns{position:absolute;right:1.5rem;top:1rem;width:14rem}.backend-navbar .algolia-autocomplete{flex:1 1 auto}.backend-sidebar .backend-nav{bottom:1.5rem;-webkit-overflow-scrolling:touch;overflow-y:auto;padding:.5rem 1.5rem;position:fixed;top:3.5rem;width:12rem}.backend-sidebar .accordion{margin-bottom:.75rem}.backend-sidebar .accordion input~.accordion-header{color:#d9d9d9;font-size:.65rem;font-weight:600;text-transform:uppercase}.backend-sidebar .accordion input:checked~.accordion-header{color:#d9d9d9}.backend-sidebar .accordion .menu .menu-item{font-size:.7rem;padding-left:1rem;cursor:pointer}.backend-sidebar .accordion .menu .menu-item>span{background:0 0;color:#fafafa;display:inline-block}.backend-content{flex:1 1 auto;padding:0 4rem;width:calc(100vw - 12rem);margin-bottom:10vh}.backend-content>.container{margin-left:0;max-width:800px;padding-bottom:1.5rem}.backend-content .anchor{color:#6362dc;display:none;margin-left:.2rem;padding:0 .2rem}.backend-content .anchor:focus,.backend-content .anchor:hover{display:inline;text-decoration:none}.backend-content .s-subtitle,.backend-content .s-title{line-height:1.8rem;margin-bottom:0;padding-bottom:1rem;padding-top:1rem;position:static}@supports (position:sticky){.backend-content .s-subtitle,.backend-content .s-title{position:sticky;top:0;z-index:99}.backend-content .s-subtitle:before,.backend-content .s-title:before{background:#fff;bottom:0;content:"";display:block;left:-10px;position:absolute;right:-10px;top:-5px;z-index:-1}}.backend-content .s-subtitle:hover .anchor,.backend-content .s-title:hover .anchor{display:inline}.backend-content .s-subtitle+.backend-note,.backend-content .s-title+.backend-note{margin-top:.4rem}.backend-content .backend-demo{padding-bottom:1rem;padding-top:1rem}.backend-content .backend-demo .card{border:0;box-shadow:0 .25rem 1rem rgba(48,55,66,.15);height:100%}.backend-content .column{padding:.4rem}.backend-content .backend-block{border-radius:.1rem;padding:.4rem}.backend-content .backend-block.bg-gray{background:#eef0f3}.backend-content .backend-shape{height:4.8rem;line-height:1.2rem;padding:1.8rem 0;width:4.8rem}.backend-content .backend-dot{border-radius:50%;display:inline-block;height:.5rem;padding:0;width:.5rem}.backend-content .backend-table td,.backend-content .backend-table th{padding:.75rem .25rem}.backend-content .backend-color{border-radius:.1rem;margin:.25rem 0;padding:5rem .5rem .5rem}.backend-content .backend-color .color-subtitle{font-size:.7rem;opacity:.75}.backend-content .code .hljs-tag{color:#505c6e}.backend-content .code .hljs-comment{color:#bcc3ce}.backend-content .code .hljs-class,.backend-content .code .hljs-number,.backend-content .code .hljs-string,.backend-content .code .hljs-title{color:#5755d9}.backend-content .code .hljs-attribute,.backend-content .code .hljs-built_in,.backend-content .code .hljs-keyword,.backend-content .code .hljs-name,.backend-content .code .hljs-variable{color:#d73e48}.backend-content .code .hljs-hexcolor,.backend-content .code .hljs-value{color:#505c6e}.backend-content .c-select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.backend-content .panel{height:75vh}.backend-content .panel .tile{margin:.75rem 0}.backend-content .parallax{margin:2rem auto}.backend-content .form-autocomplete .menu{position:static}.backend-content .example-tile-icon{align-content:space-around;align-items:center;background:#5755d9;border-radius:.1rem;color:#fff;display:flex;-ms-flex-align:center;-ms-flex-line-pack:distribute;font-size:1.2rem;height:2rem;width:2rem}.backend-content .example-tile-icon .icon{margin:auto}.backend-content .comparison-slider{height:auto;padding-bottom:56.2222%}.backend-content .comparison-slider .filter-grayscale{filter:grayscale(75%)}.backend-content .off-canvas{position:relative}.backend-content .off-canvas .off-canvas-toggle{left:.4rem;position:absolute;top:.4rem;z-index:1}.backend-brand{color:#ccc;height:2rem;left:1.5rem;position:fixed;top:.85rem;width:72%;position:sticky}.backend-brand .backend-logo{align-items:center;border-radius:.1rem;display:inline-flex;-ms-flex-align:center;font-size:.7rem;height:2rem;padding:.2rem;width:auto}.backend-brand .backend-logo:focus,.backend-brand .backend-logo:hover{text-decoration:none}.backend-brand .backend-logo img{display:inline-block;height:auto;width:1.6rem}.backend-brand .backend-logo h2{display:inline-block;font-size:.8rem;font-weight:700;line-height:1.5rem;margin-bottom:0;margin-left:.5rem;margin-right:.3rem}.backend-footer{color:#bcc3ce;padding:.5rem}.backend-footer a{color:#66758c}@media (max-width:960px){.off-canvas .off-canvas-toggle{z-index:300}.off-canvas .off-canvas-content{width:100%}.backend-sidebar .backend-brand{margin:.85rem 1.5rem;padding:0;position:static}.backend-sidebar .backend-nav{margin-top:1rem;position:static}.backend-sidebar .menu .menu-item>a{padding:.3rem .4rem}.backend-navbar{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:rgba(247,248,249,.65);left:0}.backend-content{min-width:auto;padding:0 1.5rem;width:100%}.backend-content .s-subtitle,.backend-content .s-title{padding-top:5rem;position:static}.backend-content .s-subtitle:before,.backend-content .s-title:before{content:none}}@media (max-width:600px){.off-canvas .off-canvas-toggle{left:.5rem}.backend-navbar .btns{right:.9rem}.backend-sidebar .backend-brand{margin:.85rem 1rem}.backend-sidebar .backend-nav{padding:.5rem 1rem}.backend-content{padding:0 .5rem}.backend-content .backend-block{padding:.4rem .1rem}}@font-face{font-family:Lobster;font-weight:400;src:url(../fonts/Exo.73922868.ttf) format("truetype")}@font-face{font-family:Roboto-Bold;src:url(../fonts/Roboto-Bold.2e84cc2a.eot);src:url(../fonts/Roboto-Bold.2e84cc2a.eot?#iefix) format("embedded-opentype"),url(../fonts/Roboto-Bold.89b89f76.otf) format("opentype"),url(../img/Roboto-Bold.e769d982.svg) format("svg"),url(../fonts/Roboto-Bold.b19d4d24.ttf) format("truetype"),url(../fonts/Roboto-Bold.6552efba.woff) format("woff"),url(../fonts/Roboto-Bold.4f2b2ed2.woff2) format("woff2");font-weight:400;font-style:normal}.off-canvas .off-canvas-sidebar{background:#3a3a3a}h1,h2,h3{font-family:Lobster;color:#484848}h4,h5{font-family:Roboto-Bold;color:#484848}.btn{border-radius:5px}.btn:focus,.btn:hover{background:#494949;border-color:#494949;text-decoration:none;color:#dbdbdb}.btn.active,.btn:active{background:#3a3a3a;border-color:#3a3a3a;color:#fff;text-decoration:none}.px150{width:150px}.width-full{width:100%}.tab-block{margin-bottom:35px}.toast{margin-top:5px;margin-bottom:5px}.frame-export{display:none}.form-upload{position:relative;display:block}.form-upload .upload-field{position:absolute;cursor:pointer;top:0;left:0;opacity:0;z-index:1000;width:100%;height:100%}.tlp-white{font-size:.6rem;height:1.4rem;padding:.05rem .3rem;background-color:#fff;line-height:1.2rem;text-transform:uppercase;font-weight:700;border:2px solid #efefef;vertical-align:middle;border-radius:.1rem}.tlp-green{background-color:rgba(25,154,9,.8117647058823529);border:2px solid rgba(15,134,0,.8117647058823529);border-radius:.1rem}.tlp-amber,.tlp-green{font-size:.6rem;height:1.4rem;padding:.05rem .3rem;line-height:1.2rem;text-transform:uppercase;font-weight:700;vertical-align:middle;color:#fff}.tlp-amber{background-color:rgba(255,192,0,.8117647058823529);border:2px solid rgba(255,192,0,.8117647058823529);border-radius:.1rem}.tlp-red{font-size:.6rem;height:1.4rem;padding:.05rem .3rem;background-color:#f03;line-height:1.2rem;font-weight:700;border:2px solid #f03;vertical-align:middle;color:#fff;border-radius:.1rem}.title,.tlp-red{text-transform:uppercase}.title{font-family:Lobster;color:#fafafa;cursor:pointer;width:-moz-fit-content;width:fit-content;height:2rem;left:1.5rem;position:fixed;top:.85rem;font-size:1.3rem;letter-spacing:.1rem}#network-thumbnail{width:100%;margin-top:10px}.interfaces-container{margin-top:20px;margin-bottom:40px}.interface-label{text-transform:uppercase;font-size:12px;font-weight:700;margin-bottom:10px;text-align:center;display:block}.form-control:focus,.form-input:focus{border-color:inherit;box-shadow:none}.tab .tab-item a:focus{box-shadow:none}.shortcuts{position:fixed;bottom:0;left:0;z-index:20000;padding:20px;opacity:.2}.shortcut{width:40px;height:40px;margin-left:10px;cursor:pointer}.whitespace{height:100px;display:block}.alert-toaster-visible{position:fixed;right:15px;top:15px;padding:10px;background-color:#484848;border-radius:5px;color:#ccc;font-size:12px;visibility:visible;opacity:1;transition:opacity .5s linear}.alert-toaster-hidden{visibility:hidden;opacity:0;transition:visibility 0s .5s,opacity .5s linear}.comment-block{padding:10px;font-size:12px;background-color:#fafafa}.capi{text-transform:capitalize}.upper{text-transform:uppercase}.misp-form{display:grid;gap:.4em;overflow:auto;grid-template-columns:10em .5em 1fr;width:100%;border-radius:.1rem;margin-bottom:.8rem}.misp-label{grid-column:1;text-align:left;padding-top:.3em}.instance-offline{background-color:#e85600}.instance-offline,.instance-online{color:#fff;font-size:11px;border-radius:3px;padding:3px 6px 3px 6px;cursor:help}.instance-online{background-color:#64c800}.misp-name{font-size:1rem;font-family:Roboto-Bold;color:#484848}.misp-name:disabled{border-style:none;color:inherit;background-color:inherit;padding:unset}.misp-input{grid-column:3;align-self:center}.misp-input:disabled{border-style:none;color:inherit;background-color:inherit;padding:unset}.misp-button{grid-area:submit}.loading{margin-bottom:12px;display:block}.loading:after{animation:loading .5s linear infinite;background:0 0;border:.1rem solid #66758c;border-radius:50%;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:.8rem;left:50%;margin-left:-.4rem;margin-top:-.4rem;opacity:1;padding:0;position:absolute;top:50%;width:.8rem;z-index:1}.loading.loading-lg:after{height:1.6rem;margin-left:-.8rem;margin-top:-.8rem;width:1.6rem}.tooltip:after{background:rgba(48,55,66,.95);border-radius:3px;bottom:100%;color:#fff;content:attr(data-tooltip);display:block;font-size:11px;left:50%;max-width:320px;opacity:0;overflow:hidden;padding:3px 6px 3px 6px;pointer-events:none;position:absolute;text-overflow:ellipsis;transform:translate(-50%,.4rem);transition:opacity .2s,transform .2s;white-space:pre;z-index:300}.btn.btn-primary{background:#3a3a3a;border-color:#3a3a3a}.read-only{background-color:#f4f4f4;color:#aeadad}#update-banner{padding:5px 20px;background-color:#d1ff51;cursor:pointer}.version{right:0;text-align:right;background-color:#fff;border-radius:5px;font-size:9px;padding:1px 3px;color:#000;position:absolute}.fade-enter-active,.fade-leave-active{transition-duration:.3s;transition-property:opacity;transition-timing-function:ease}.fade-enter,.fade-leave-active{opacity:0} \ No newline at end of file diff --git a/app/backend/dist/favicon.ico b/app/backend/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/app/backend/dist/fonts/Exo.73922868.ttf b/app/backend/dist/fonts/Exo.73922868.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cd9e54c8ec4588763e325eff8486656e4a5f1fc9 GIT binary patch literal 90820 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 literal 0 HcmV?d00001 diff --git a/app/backend/dist/fonts/Roboto-Bold.2e84cc2a.eot b/app/backend/dist/fonts/Roboto-Bold.2e84cc2a.eot new file mode 100644 index 0000000000000000000000000000000000000000..efb59306f7476d1bd141a375bb397e87e5291638 GIT binary patch literal 134440 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%0AlCins=)KNLGc>wosgwji>>^8Ch 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 Miph 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 literal 0 HcmV?d00001 diff --git a/app/backend/dist/fonts/Roboto-Bold.89b89f76.otf b/app/backend/dist/fonts/Roboto-Bold.89b89f76.otf new file mode 100644 index 0000000000000000000000000000000000000000..41277f8009df64ca5a0e39cc8c70dd6d51c48312 GIT binary patch literal 198836 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�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 literal 0 HcmV?d00001 diff --git a/app/backend/dist/img/Roboto-Bold.e769d982.svg b/app/backend/dist/img/Roboto-Bold.e769d982.svg new file mode 100644 index 0000000..1b2b994 --- /dev/null +++ b/app/backend/dist/img/Roboto-Bold.e769d982.svg @@ -0,0 +1,11535 @@ + + + + +Created by FontForge 20170924 at Wed Mar 29 12:02:30 2017 + By www-data +Copyright 2011 Google Inc. All Rights Reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/backend/dist/img/network.33d31f9d.png b/app/backend/dist/img/network.33d31f9d.png new file mode 100644 index 0000000000000000000000000000000000000000..8d12dd0d4defa67d66cd764dbda8db8cac375fc5 GIT binary patch literal 30929 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 D@DQAK literal 0 HcmV?d00001 diff --git a/app/backend/dist/index.html b/app/backend/dist/index.html new file mode 100644 index 0000000..b47b884 --- /dev/null +++ b/app/backend/dist/index.html @@ -0,0 +1 @@ +@felixaime/spyguard-backend

\ No newline at end of file diff --git a/app/backend/dist/js/app.a3c6f292.js b/app/backend/dist/js/app.a3c6f292.js new file mode 100644 index 0000000..82af002 --- /dev/null +++ b/app/backend/dist/js/app.a3c6f292.js @@ -0,0 +1,2 @@ +(function(n){function e(e){for(var a,o,s=e[0],r=e[1],u=e[2],d=0,h=[];d{n.data.token&&(this.jwt=n.data.token)}).catch(n=>console.log(n))},get_version:function(){s.a.get("/api/update/get-version",{timeout:6e4,headers:{"X-Token":this.jwt}}).then(n=>{n.data.status&&(this.current_version=n.data.current_version)}).catch(n=>{console.log(n)})},check_update:function(){s.a.get("/api/update/check",{timeout:6e4,headers:{"X-Token":this.jwt}}).then(n=>{"A new version is available"==n.data.message&&(this.update_available=!0)}).catch(n=>{console.log(n)})}},created:function(){this.get_jwt().then(()=>{this.get_version(),this.check_update()}),setInterval(function(){let n="";this.letters.forEach(e=>{n+=e.charAt(this.generate_random(0,9))}),this.title=n,setTimeout(function(){this.title="SPYGUARD"}.bind(this),this.generate_random(30,100))}.bind(this),this.generate_random(500,1e4))}},u=r,d=(t("10f2"),t("2877")),l=Object(d["a"])(u,c,i,!1,null,null,null),h=l.exports,p=t("8c4f");a["a"].use(p["a"]);const f=[{path:"/",name:"default",component:()=>t.e("chunk-2d0cfa15").then(t.bind(null,"6511")),props:!0},{path:"/device/configuration",name:"device-configuration",component:()=>t.e("chunk-2d0c8321").then(t.bind(null,"549e")),props:!0},{path:"/engine/configuration",name:"engine-configuration",component:()=>t.e("chunk-2d22d432").then(t.bind(null,"f76a")),props:!0},{path:"/device/network",name:"device-network",component:()=>t.e("chunk-3c0d118e").then(t.bind(null,"7e11")),props:!0},{path:"/device/db",name:"db-manage",component:()=>t.e("chunk-2d0e4bf5").then(t.bind(null,"9217")),props:!0},{path:"/iocs/manage",name:"iocs-manage",component:()=>t.e("chunk-2d0c0c86").then(t.bind(null,"42f8")),props:!0},{path:"/instances/misp",name:"instance-misp",component:()=>t.e("chunk-2d0c9378").then(t.bind(null,"57cc")),props:!0},{path:"/instances/watchers",name:"instance-watchers",component:()=>t.e("chunk-2d20faf8").then(t.bind(null,"b54c")),props:!0},{path:"/iocs/search",name:"iocs-search",component:()=>t.e("chunk-2d0cc2b4").then(t.bind(null,"4d7e")),props:!0},{path:"/whitelist/manage",name:"whitelist-manage",component:()=>t.e("chunk-2d215cd3").then(t.bind(null,"c06f")),props:!0},{path:"/whitelist/search",name:"whitelist-search",component:()=>t.e("chunk-2d2245cf").then(t.bind(null,"e08f")),props:!0},{path:"/update",name:"update",component:()=>t.e("chunk-2d0a3726").then(t.bind(null,"01e4")),props:!0}],m=new p["a"]({mode:"history",base:"/",routes:f});var v=m;a["a"].config.productionTip=!0,a["a"].config.devtools=!0,new a["a"]({router:v,render:n=>n(h)}).$mount("#app")}}); +//# sourceMappingURL=app.a3c6f292.js.map \ No newline at end of file diff --git a/app/backend/dist/js/app.a3c6f292.js.map b/app/backend/dist/js/app.a3c6f292.js.map new file mode 100644 index 0000000..89970eb --- /dev/null +++ b/app/backend/dist/js/app.a3c6f292.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?4554","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/App.vue?60d0","webpack:///./src/App.vue?315a","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_c","_self","staticClass","_m","attrs","on","$event","goto_frontend","_v","_s","title","current_version","_e","$router","update_available","staticRenderFns","components","jwt","letters","methods","generate_random","rand","then","catch","get_version","axios","headers","check_update","created","setInterval","res","component","Vue","use","VueRouter","routes","path","props","router","base","process","config","productionTip","devtools","h","App","$mount"],"mappings":"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","file":"js/app.a3c6f292.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d0a3726\":\"bebe5116\",\"chunk-2d0c0c86\":\"cf098d4b\",\"chunk-2d0c8321\":\"78ca1407\",\"chunk-2d0c9378\":\"fb16a6a2\",\"chunk-2d0cc2b4\":\"6cd43049\",\"chunk-2d0cfa15\":\"4b2166d6\",\"chunk-2d0e4bf5\":\"fac73388\",\"chunk-2d20faf8\":\"c983e105\",\"chunk-2d215cd3\":\"f0d8ba06\",\"chunk-2d2245cf\":\"ea4d33bd\",\"chunk-2d22d432\":\"91ebbe55\",\"chunk-3c0d118e\":\"e3f2944c\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=6572d034&prod&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-container off-canvas off-canvas-sidebar-show\"},[_vm._m(0),_c('div',{staticClass:\"backend-sidebar off-canvas-sidebar\",attrs:{\"id\":\"sidebar\"}},[_c('div',{staticClass:\"backend-brand\"},[_c('h2',{staticClass:\"title\",on:{\"click\":function($event){return _vm.goto_frontend()}}},[_vm._v(_vm._s(_vm.title))]),(_vm.current_version)?_c('span',{staticClass:\"version\"},[_vm._v(_vm._s(_vm.current_version))]):_vm._e()]),_c('div',{staticClass:\"backend-nav\"},[_c('div',{staticClass:\"accordion-container\"},[_c('div',{staticClass:\"accordion\"},[_c('input',{attrs:{\"id\":\"accordion-configuration\",\"type\":\"checkbox\",\"name\":\"backend-accordion-checkbox\",\"hidden\":\"\"}}),_c('label',{staticClass:\"accordion-header c-hand\",attrs:{\"for\":\"accordion-configuration\"}},[_vm._v(\"Manage Device\")]),_c('div',{staticClass:\"accordion-body\"},[_c('ul',{staticClass:\"menu menu-nav\"},[_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/device/configuration')}}},[_vm._v(\"Device config\")])]),_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/engine/configuration')}}},[_vm._v(\"Analysis engine\")])]),_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/device/network')}}},[_vm._v(\"Network config\")])]),_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/device/db')}}},[_vm._v(\"Manage database\")])])])])]),_c('div',{staticClass:\"accordion\"},[_c('input',{attrs:{\"id\":\"accordion-iocs\",\"type\":\"checkbox\",\"name\":\"backend-accordion-checkbox\",\"hidden\":\"\"}}),_c('label',{staticClass:\"accordion-header c-hand\",attrs:{\"for\":\"accordion-iocs\"}},[_vm._v(\"Manage IOCs\")]),_c('div',{staticClass:\"accordion-body\"},[_c('ul',{staticClass:\"menu menu-nav\"},[_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/iocs/manage')}}},[_vm._v(\"Manage IOCs\")])]),_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/iocs/search')}}},[_vm._v(\"Search IOCs\")])])])])]),_c('div',{staticClass:\"accordion\"},[_c('input',{attrs:{\"id\":\"accordion-whitelist\",\"type\":\"checkbox\",\"name\":\"backend-accordion-checkbox\",\"hidden\":\"\"}}),_c('label',{staticClass:\"accordion-header c-hand\",attrs:{\"for\":\"accordion-whitelist\"}},[_vm._v(\"Manage Whitelist\")]),_c('div',{staticClass:\"accordion-body\"},[_c('ul',{staticClass:\"menu menu-nav\"},[_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/whitelist/manage')}}},[_vm._v(\"Manage elements\")])]),_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/whitelist/search')}}},[_vm._v(\"Search elements\")])])])])]),_c('div',{staticClass:\"accordion\"},[_c('input',{attrs:{\"id\":\"accordion-instances\",\"type\":\"checkbox\",\"name\":\"backend-accordion-checkbox\",\"hidden\":\"\"}}),_c('label',{staticClass:\"accordion-header c-hand\",attrs:{\"for\":\"accordion-instances\"}},[_vm._v(\"External sources\")]),_c('div',{staticClass:\"accordion-body\"},[_c('ul',{staticClass:\"menu menu-nav\"},[_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/instances/watchers')}}},[_vm._v(\"Watchers Instances\")])]),_c('li',{staticClass:\"menu-item\"},[_c('span',{on:{\"click\":function($event){return _vm.$router.push('/instances/misp')}}},[_vm._v(\"MISP Instances\")])])])])])])])]),_c('a',{staticClass:\"off-canvas-overlay\",attrs:{\"href\":\"#close\"}}),_c('div',{staticClass:\"off-canvas-content\"},[(_vm.update_available)?_c('div',{attrs:{\"id\":\"update-banner\"},on:{\"click\":function($event){return _vm.$router.push('/update')}}},[_vm._v(\"A new version is available, click on the banner to install it.\")]):_vm._e(),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-navbar\"},[_c('a',{staticClass:\"off-canvas-toggle btn btn-link btn-action\",attrs:{\"href\":\"#sidebar\"}},[_c('i',{staticClass:\"icon icon-menu\"})])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6572d034&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=6572d034&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\n\r\nVue.use(VueRouter)\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'default',\r\n component: () => import('../views/home.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/device/configuration',\r\n name: 'device-configuration',\r\n component: () => import('../views/edit-configuration.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/engine/configuration',\r\n name: 'engine-configuration',\r\n component: () => import('../views/analysis-engine.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/device/network',\r\n name: 'device-network',\r\n component: () => import('../views/network-manage.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/device/db',\r\n name: 'db-manage',\r\n component: () => import('../views/db-manage.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/iocs/manage',\r\n name: 'iocs-manage',\r\n component: () => import('../views/iocs-manage.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/instances/misp',\r\n name: 'instance-misp',\r\n component: () => import('../views/instance-misp.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/instances/watchers',\r\n name: 'instance-watchers',\r\n component: () => import('../views/instance-watchers.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/iocs/search',\r\n name: 'iocs-search',\r\n component: () => import('../views/iocs-search.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/whitelist/manage',\r\n name: 'whitelist-manage',\r\n component: () => import('../views/whitelist-manage.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/whitelist/search',\r\n name: 'whitelist-search',\r\n component: () => import('../views/whitelist-search.vue'),\r\n props: true\r\n },\r\n {\r\n path: '/update',\r\n name: 'update',\r\n component: () => import('../views/update.vue'),\r\n props: true\r\n }\r\n]\r\n\r\nconst router = new VueRouter({\r\n mode: 'history',\r\n base: process.env.BASE_URL,\r\n routes\r\n})\r\n\r\nexport default router\r\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nVue.config.productionTip = true\r\nVue.config.devtools = true\r\n\r\nnew Vue({\r\n router,\r\n render: h => h(App)\r\n}).$mount('#app')"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0a3726.bebe5116.js b/app/backend/dist/js/chunk-2d0a3726.bebe5116.js new file mode 100644 index 0000000..249bb75 --- /dev/null +++ b/app/backend/dist/js/chunk-2d0a3726.bebe5116.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a3726"],{"01e4":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"backend-content",attrs:{id:"content"}},[t("div",{staticClass:"column col-8 col-xs-12"},[t("br"),t("p",[t("strong",[e._v("A new SpyGuard version is available ("+e._s(e.next_version)+").")]),t("br"),e.update_launched?e._e():t("span",[e._v("Please click on the button below to update your instance.")]),e.update_launched&&!e.update_finished?t("span",[e._v("Updating SpyGuard, please wait. You'll be redirected once updated.")]):e._e(),e.update_launched&&e.update_finished?t("span",{staticClass:"color-green"},[e._v("✓ Update finished!")]):e._e()]),e.update_finished?e._e():t("button",{staticClass:"btn btn-primary",class:[e.update_launched?"loading":""],on:{click:function(t){return e.launch_update()}}},[e._v("Update Spyguard")])])])},s=[],i=n("bc3a"),o=n.n(i),c={name:"update",data(){return{translation:{},update_launched:null,check_interval:null,next_version:null,current_version:null,update_finished:!1,jwt:""}},methods:{check_version:function(){o.a.get("/api/update/get-version",{timeout:6e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status&&e.data.current_version==this.next_version&&(window.current_version=e.data.current_version,this.update_finished=!0,clearInterval(this.check_interval),setTimeout((function(){window.location.href="/"}),3e3))}).catch(e=>{console.log(e)})},launch_update:function(){o.a.get("/api/update/process",{timeout:6e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status&&"Update successfully launched"==e.data.message&&(this.update_launched=!0,this.check_interval=setInterval(function(){this.check_version()}.bind(this),3e3))}).catch(e=>{console.log(e)})},async get_jwt(){await o.a.get("/api/get-token",{timeout:1e4}).then(e=>{e.data.token&&(this.jwt=e.data.token)}).catch(e=>console.log(e))},get_versions:function(){o.a.get("/api/update/check",{timeout:6e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status&&(this.current_version=e.data.current_version,this.next_version=e.data.next_version,this.current_version==this.next_version&&(window.location.href="/"))}).catch(e=>{console.log(e)})}},created:function(){this.get_jwt().then(()=>{this.get_versions()})}},u=c,r=n("2877"),d=Object(r["a"])(u,a,s,!1,null,null,null);t["default"]=d.exports}}]); +//# sourceMappingURL=chunk-2d0a3726.bebe5116.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0a3726.bebe5116.js.map b/app/backend/dist/js/chunk-2d0a3726.bebe5116.js.map new file mode 100644 index 0000000..9ec80bb --- /dev/null +++ b/app/backend/dist/js/chunk-2d0a3726.bebe5116.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/update.vue","webpack:///src/views/update.vue","webpack:///./src/views/update.vue?500f","webpack:///./src/views/update.vue?4e38"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","_s","next_version","update_launched","_e","update_finished","class","on","$event","launch_update","staticRenderFns","name","data","translation","check_interval","current_version","jwt","methods","check_version","axios","timeout","headers","then","window","clearInterval","setTimeout","catch","console","get_versions","created","component"],"mappings":"yHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkBC,MAAM,CAAC,GAAK,YAAY,CAACH,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACF,EAAG,MAAMA,EAAG,IAAI,CAACA,EAAG,SAAS,CAACF,EAAIM,GAAG,wCAAwCN,EAAIO,GAAGP,EAAIQ,cAAc,QAAQN,EAAG,MAAQF,EAAIS,gBAAkGT,EAAIU,KAArFR,EAAG,OAAO,CAACF,EAAIM,GAAG,+DAAyEN,EAAIS,kBAAkBT,EAAIW,gBAAiBT,EAAG,OAAO,CAACF,EAAIM,GAAG,wEAAwEN,EAAIU,KAAMV,EAAIS,iBAAiBT,EAAIW,gBAAiBT,EAAG,OAAO,CAACE,YAAY,eAAe,CAACJ,EAAIM,GAAG,wBAAwBN,EAAIU,OAASV,EAAIW,gBAAmMX,EAAIU,KAAtLR,EAAG,SAAS,CAACE,YAAY,kBAAkBQ,MAAM,CAAEZ,EAAIS,gBAAkB,UAAY,IAAKI,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOd,EAAIe,mBAAmB,CAACf,EAAIM,GAAG,0BAEx1BU,EAAkB,G,qBCetB,GACAC,cACAC,OACA,OACAC,eACAV,qBACAW,oBACAZ,kBACAa,qBACAV,mBACAW,SAGAC,SACAC,yBACAC,mCAAAC,YAAAC,SAAA,sBACAC,SACA,eACA,4CACAC,8CACA,wBACAC,mCACAC,uBAAAF,2BAAA,QAIAG,UAAAC,kBAEAlB,yBACAU,+BAAAC,YAAAC,SAAA,sBACAC,SACA,eACA,iDACA,wBACA,oFAIAI,UAAAC,kBAEA,sBACA,0BAAAP,cACAE,SACA,eACA,yBAGAI,0BAEAE,wBACAT,6BAAAC,YAAAC,SAAA,sBACAC,SACA,gBACA,4CACA,sCACA,uEAGAI,UAAAC,mBAGAE,mBACA,yBACA,wBChFgV,I,YCO5UC,EAAY,eACd,EACArC,EACAiB,GACA,EACA,KACA,KACA,MAIa,aAAAoB,E","file":"js/chunk-2d0a3726.bebe5116.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('br'),_c('p',[_c('strong',[_vm._v(\"A new SpyGuard version is available (\"+_vm._s(_vm.next_version)+\").\")]),_c('br'),(!_vm.update_launched)?_c('span',[_vm._v(\"Please click on the button below to update your instance.\")]):_vm._e(),(_vm.update_launched&&!_vm.update_finished)?_c('span',[_vm._v(\"Updating SpyGuard, please wait. You'll be redirected once updated.\")]):_vm._e(),(_vm.update_launched&&_vm.update_finished)?_c('span',{staticClass:\"color-green\"},[_vm._v(\"✓ Update finished!\")]):_vm._e()]),(!_vm.update_finished)?_c('button',{staticClass:\"btn btn-primary\",class:[ _vm.update_launched ? 'loading' : '' ],on:{\"click\":function($event){return _vm.launch_update()}}},[_vm._v(\"Update Spyguard\")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./update.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./update.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./update.vue?vue&type=template&id=576c78b2&\"\nimport script from \"./update.vue?vue&type=script&lang=js&\"\nexport * from \"./update.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js b/app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js new file mode 100644 index 0000000..3116295 --- /dev/null +++ b/app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c0c86"],{"42f8":function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"backend-content",attrs:{id:"content"}},[e("div",{staticClass:"column col-8 col-xs-12"},[e("h3",{staticClass:"s-title"},[t._v("Manage IOCs")]),e("ul",{staticClass:"tab tab-block"},[e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.bulk},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("bulk")}}},[t._v("Bulk import")])]),e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.file},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("file")}}},[t._v("File import")])]),e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.export},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("export")}}},[t._v("Export IOCs")])])]),t.tabs.export?e("div",[e("iframe",{staticClass:"frame-export",attrs:{src:t.export_url}})]):t._e(),t.tabs.file?e("div",[e("label",{staticClass:"form-upload empty",attrs:{for:"upload"}},[e("input",{staticClass:"upload-field",attrs:{type:"file",id:"upload"},on:{change:t.import_from_file}}),e("p",{staticClass:"empty-title h5"},[t._v("Drop or select a file to import.")]),e("p",{staticClass:"empty-subtitle"},[t._v("The file needs to be an export from a SpyGuard instance.")])])]):t._e(),t.tabs.bulk?e("div",[e("div",{staticClass:"columns"},[e("div",{staticClass:"column col-4 col-xs-4"},[e("div",{staticClass:"form-group"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.tag,expression:"tag"}],staticClass:"form-select",on:{change:function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.tag=e.target.multiple?s:s[0]}}},[e("option",{attrs:{value:""}},[t._v("IOC(s) Tag")]),t._l(t.tags,(function(s){return e("option",{key:s,domProps:{value:s}},[t._v(" "+t._s(s.toUpperCase())+" ")])}))],2)])]),e("div",{staticClass:"column col-4 col-xs-4"},[e("div",{staticClass:"form-group"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.type,expression:"type"}],staticClass:"form-select width-full",on:{change:function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.type=e.target.multiple?s:s[0]}}},[e("option",{attrs:{value:""}},[t._v("IOC(s) Type")]),e("option",{attrs:{value:"unknown"}},[t._v("Multiple (regex parsing)")]),t._l(t.types,(function(s){return e("option",{key:s.type,domProps:{value:s.type}},[t._v(" "+t._s(s.name)+" ")])}))],2)])]),e("div",{staticClass:"column col-4 col-xs-4"},[e("div",{staticClass:"form-group"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.tlp,expression:"tlp"}],staticClass:"form-select width-full",on:{change:function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.tlp=e.target.multiple?s:s[0]}}},[e("option",{attrs:{value:""}},[t._v("IOC(s) TLP")]),e("option",{attrs:{value:"white"}},[t._v("TLP:WHITE")]),e("option",{attrs:{value:"green"}},[t._v("TLP:GREEN")]),e("option",{attrs:{value:"amber"}},[t._v("TLP:AMBER")]),e("option",{attrs:{value:"red"}},[t._v("TLP:RED")])])])])]),e("div",{staticClass:"form-group"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.iocs,expression:"iocs"}],staticClass:"form-input",attrs:{id:"input-example-3",placeholder:"Paste your Indicators of Compromise here",rows:"15"},domProps:{value:t.iocs},on:{input:function(e){e.target.composing||(t.iocs=e.target.value)}}})]),e("div",{staticClass:"form-group"},[e("button",{staticClass:"btn-primary btn col-12",on:{click:function(e){return t.import_from_bulk()}}},[t._v("Import the IOCs")])])]):t._e(),t.imported.length>0?e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-success"},[t._v(" ✓ "+t._s(t.imported.length)+" IOC"),t.errors.length>1?e("span",[t._v("s")]):t._e(),t._v(" imported successfully. ")])]):t._e(),t.errors.length>0?e("div",[e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-error"},[t._v(" ✗ "+t._s(t.errors.length)+" IOC"),t.errors.length>1?e("span",[t._v("s")]):t._e(),t._v(" not imported, see details below. ")])]),e("div",{staticClass:"form-group"},[e("table",{staticClass:"table table-striped table-hover"},[t._m(0),e("tbody",t._l(t.errors,(function(s){return e("tr",{key:s.ioc},[e("td",[t._v(t._s(s.ioc))]),e("td",[t._v(t._s(s.message))])])})),0)])])]):1==t.type_tag_error?e("div",[t._m(1),t._m(2)]):t._e()])])},i=[function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("Indicator")]),e("th",[t._v("Importation error")])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-error"},[t._v(" ✗ IOC(s) not imported, see details below. ")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"form-group"},[e("div",{staticClass:"empty"},[e("p",{staticClass:"empty-title h5"},[t._v("Please select a tag and a type.")]),e("p",{staticClass:"empty-subtitle"},[t._v('If different IOCs types, select "Unknown (regex parsing)".')])])])}],o=(s("14d9"),s("bc3a")),r=s.n(o),l={name:"manageiocs",data(){return{type:"",tag:"",tlp:"",iocs:"",types:[],tags:[],errors:[],imported:[],type_tag_error:!1,wrong_ioc_file:!1,tabs:{bulk:!0,file:!1,export:!1},jwt:"",export_url:"",config:{},watcher:""}},props:{},methods:{import_from_bulk:function(){this.errors=[],this.imported=[],""!=this.tag&&""!=this.type&&""!=this.tlp?(this.iocs.match(/[^\r\n]+/g).forEach(t=>{this.import_ioc(this.tag,this.type,this.tlp,t)}),this.iocs=""):this.type_tag_error=!0},import_ioc:function(t,e,s,a){""!=a&&"#"!=a.slice(0,1)&&("alert "!=a.slice(0,6)&&(a=a.trim(),a=a.replace(" ",""),a=a.replace("[",""),a=a.replace("]",""),a=a.replace("\\",""),a=a.replace("(",""),a=a.replace(")","")),r.a.get(`/api/ioc/add/${e.trim()}/${t.trim()}/${s.trim()}/${a}`,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.status?this.imported.push(t.data):t.data.message&&this.errors.push(t.data)}).catch(t=>console.log(t)))},delete_watcher:function(t){var e=this.config.watchers.indexOf(t);this.config.watchers.splice(e,1)},add_watcher:function(){this.config.watchers.push(this.watcher),this.watcher=""},enrich_selects:function(){r.a.get("/api/ioc/get/tags",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.tags&&(this.tags=t.data.tags)}).catch(t=>console.log(t)),r.a.get("/api/ioc/get/types",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.types&&(this.types=t.data.types)}).catch(t=>console.log(t))},switch_tab:function(t){this.errors=[],this.imported=[],Object.keys(this.tabs).forEach(e=>{this.tabs[e]=e==t})},import_from_file:function(t){this.errors=[],this.imported=[];const e=t.target.files[0],s=new FileReader;s.onload=t=>this.$emit("load",t.target.result),s.onload=()=>{try{JSON.parse(s.result).iocs.forEach(t=>{this.import_ioc(t["tag"],t["type"],t["tlp"],t["value"])})}catch(t){this.wrong_ioc_file=!0}},s.readAsText(e)},async get_jwt(){await r.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))},load_config:function(){r.a.get("/api/config/list",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data&&(this.config=t.data)}).catch(t=>console.log(t))}},created:function(){this.get_jwt().then(()=>{this.enrich_selects(),this.load_config(),this.export_url="/api/ioc/export?token="+this.jwt})}},c=l,n=s("2877"),p=Object(n["a"])(c,a,i,!1,null,null,null);e["default"]=p.exports}}]); +//# sourceMappingURL=chunk-2d0c0c86.cf098d4b.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js.map b/app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js.map new file mode 100644 index 0000000..4e83feb --- /dev/null +++ b/app/backend/dist/js/chunk-2d0c0c86.cf098d4b.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/iocs-manage.vue","webpack:///src/views/iocs-manage.vue","webpack:///./src/views/iocs-manage.vue?bd2c","webpack:///./src/views/iocs-manage.vue?d419"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","class","active","tabs","bulk","on","$event","switch_tab","file","export","export_url","_e","import_from_file","directives","name","rawName","value","tag","expression","$$selectedVal","Array","prototype","filter","call","target","options","o","selected","map","val","_value","multiple","_l","tags","t","key","domProps","_s","toUpperCase","type","types","tlp","iocs","composing","import_from_bulk","imported","length","errors","_m","e","ioc","message","type_tag_error","staticRenderFns","data","wrong_ioc_file","jwt","config","watcher","props","methods","import_ioc","axios","timeout","headers","then","catch","delete_watcher","add_watcher","enrich_selects","Object","reader","JSON","load_config","created","component"],"mappings":"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","file":"js/chunk-2d0c0c86.cf098d4b.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Manage IOCs\")]),_c('ul',{staticClass:\"tab tab-block\"},[_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.bulk },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('bulk')}}},[_vm._v(\"Bulk import\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.file },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('file')}}},[_vm._v(\"File import\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.export },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('export')}}},[_vm._v(\"Export IOCs\")])])]),(_vm.tabs.export)?_c('div',[_c('iframe',{staticClass:\"frame-export\",attrs:{\"src\":_vm.export_url}})]):_vm._e(),(_vm.tabs.file)?_c('div',[_c('label',{staticClass:\"form-upload empty\",attrs:{\"for\":\"upload\"}},[_c('input',{staticClass:\"upload-field\",attrs:{\"type\":\"file\",\"id\":\"upload\"},on:{\"change\":_vm.import_from_file}}),_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"Drop or select a file to import.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"The file needs to be an export from a SpyGuard instance.\")])])]):_vm._e(),(_vm.tabs.bulk)?_c('div',[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column col-4 col-xs-4\"},[_c('div',{staticClass:\"form-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tag),expression:\"tag\"}],staticClass:\"form-select\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.tag=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"IOC(s) Tag\")]),_vm._l((_vm.tags),function(t){return _c('option',{key:t,domProps:{\"value\":t}},[_vm._v(\" \"+_vm._s(t.toUpperCase())+\" \")])})],2)])]),_c('div',{staticClass:\"column col-4 col-xs-4\"},[_c('div',{staticClass:\"form-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],staticClass:\"form-select width-full\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.type=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"IOC(s) Type\")]),_c('option',{attrs:{\"value\":\"unknown\"}},[_vm._v(\"Multiple (regex parsing)\")]),_vm._l((_vm.types),function(t){return _c('option',{key:t.type,domProps:{\"value\":t.type}},[_vm._v(\" \"+_vm._s(t.name)+\" \")])})],2)])]),_c('div',{staticClass:\"column col-4 col-xs-4\"},[_c('div',{staticClass:\"form-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tlp),expression:\"tlp\"}],staticClass:\"form-select width-full\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.tlp=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"IOC(s) TLP\")]),_c('option',{attrs:{\"value\":\"white\"}},[_vm._v(\"TLP:WHITE\")]),_c('option',{attrs:{\"value\":\"green\"}},[_vm._v(\"TLP:GREEN\")]),_c('option',{attrs:{\"value\":\"amber\"}},[_vm._v(\"TLP:AMBER\")]),_c('option',{attrs:{\"value\":\"red\"}},[_vm._v(\"TLP:RED\")])])])])]),_c('div',{staticClass:\"form-group\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.iocs),expression:\"iocs\"}],staticClass:\"form-input\",attrs:{\"id\":\"input-example-3\",\"placeholder\":\"Paste your Indicators of Compromise here\",\"rows\":\"15\"},domProps:{\"value\":(_vm.iocs)},on:{\"input\":function($event){if($event.target.composing)return;_vm.iocs=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn-primary btn col-12\",on:{\"click\":function($event){return _vm.import_from_bulk()}}},[_vm._v(\"Import the IOCs\")])])]):_vm._e(),(_vm.imported.length>0)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-success\"},[_vm._v(\" ✓ \"+_vm._s(_vm.imported.length)+\" IOC\"),(_vm.errors.length>1)?_c('span',[_vm._v(\"s\")]):_vm._e(),_vm._v(\" imported successfully. \")])]):_vm._e(),(_vm.errors.length>0)?_c('div',[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-error\"},[_vm._v(\" ✗ \"+_vm._s(_vm.errors.length)+\" IOC\"),(_vm.errors.length>1)?_c('span',[_vm._v(\"s\")]):_vm._e(),_vm._v(\" not imported, see details below. \")])]),_c('div',{staticClass:\"form-group\"},[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',_vm._l((_vm.errors),function(e){return _c('tr',{key:e.ioc},[_c('td',[_vm._v(_vm._s(e.ioc))]),_c('td',[_vm._v(_vm._s(e.message))])])}),0)])])]):(_vm.type_tag_error==true)?_c('div',[_vm._m(1),_vm._m(2)]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Indicator\")]),_c('th',[_vm._v(\"Importation error\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-error\"},[_vm._v(\" ✗ IOC(s) not imported, see details below. \")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"empty\"},[_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"Please select a tag and a type.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"If different IOCs types, select \\\"Unknown (regex parsing)\\\".\")])])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./iocs-manage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./iocs-manage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./iocs-manage.vue?vue&type=template&id=55155ced&\"\nimport script from \"./iocs-manage.vue?vue&type=script&lang=js&\"\nexport * from \"./iocs-manage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0c8321.78ca1407.js b/app/backend/dist/js/chunk-2d0c8321.78ca1407.js new file mode 100644 index 0000000..18066fb --- /dev/null +++ b/app/backend/dist/js/chunk-2d0c8321.78ca1407.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c8321"],{"549e":function(e,t,n){"use strict";n.r(t);var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"backend-content",attrs:{id:"content"}},[t("div",{class:{"alert-toaster-visible":e.toaster.show,"alert-toaster-hidden":!e.toaster.show}},[e._v(e._s(e.toaster.message))]),t("div",{staticClass:"column col-8 col-xs-12"},[t("h3",{staticClass:"s-title"},[e._v("Configuration ")]),t("div",{staticClass:"form-group"},[t("label",{staticClass:"form-label",attrs:{for:"user-login"}},[e._v("Device UUID (read-only)")]),t("div",{staticClass:"input-group"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.device_uuid,expression:"config.device_uuid"}],staticClass:"form-input read-only",attrs:{id:"device-id",readonly:"readonly"},domProps:{value:e.config.device_uuid},on:{input:function(t){t.target.composing||e.$set(e.config,"device_uuid",t.target.value)}}})])]),t("h5",{staticClass:"s-subtitle"},[e._v("Device configuration")]),t("div",{staticClass:"form-group"},[t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.frontend.virtual_keyboard,expression:"config.frontend.virtual_keyboard"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.frontend.virtual_keyboard)?e._i(e.config.frontend.virtual_keyboard,null)>-1:e.config.frontend.virtual_keyboard},on:{change:[function(t){var n=e.config.frontend.virtual_keyboard,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.frontend,"virtual_keyboard",n.concat([i])):c>-1&&e.$set(e.config.frontend,"virtual_keyboard",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.frontend,"virtual_keyboard",s)},function(t){return e.switch_config("frontend","virtual_keyboard")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Use virtual keyboard (for touch screen) ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.frontend.shutdown_option,expression:"config.frontend.shutdown_option"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.frontend.shutdown_option)?e._i(e.config.frontend.shutdown_option,null)>-1:e.config.frontend.shutdown_option},on:{change:[function(t){var n=e.config.frontend.shutdown_option,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.frontend,"shutdown_option",n.concat([i])):c>-1&&e.$set(e.config.frontend,"shutdown_option",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.frontend,"shutdown_option",s)},function(t){return e.switch_config("frontend","shutdown_option")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Allow the end-user to shutdown the device. ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.frontend.backend_option,expression:"config.frontend.backend_option"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.frontend.backend_option)?e._i(e.config.frontend.backend_option,null)>-1:e.config.frontend.backend_option},on:{change:[function(t){var n=e.config.frontend.backend_option,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.frontend,"backend_option",n.concat([i])):c>-1&&e.$set(e.config.frontend,"backend_option",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.frontend,"backend_option",s)},function(t){return e.switch_config("frontend","backend_option")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Allow the end-user to access to the backend. ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.network.tokenized_ssids,expression:"config.network.tokenized_ssids"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.network.tokenized_ssids)?e._i(e.config.network.tokenized_ssids,null)>-1:e.config.network.tokenized_ssids},on:{change:[function(t){var n=e.config.network.tokenized_ssids,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.network,"tokenized_ssids",n.concat([i])):c>-1&&e.$set(e.config.network,"tokenized_ssids",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.network,"tokenized_ssids",s)},function(t){return e.switch_config("network","tokenized_ssids")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Use tokenized SSIDs (eg. [ssid-name]-[hex-str]). ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.frontend.download_links,expression:"config.frontend.download_links"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.frontend.download_links)?e._i(e.config.frontend.download_links,null)>-1:e.config.frontend.download_links},on:{change:[function(t){var n=e.config.frontend.download_links,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.frontend,"download_links",n.concat([i])):c>-1&&e.$set(e.config.frontend,"download_links",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.frontend,"download_links",s)},function(t){return e.switch_config("frontend","download_links")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Use in-browser download for network captures. ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.frontend.sparklines,expression:"config.frontend.sparklines"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.frontend.sparklines)?e._i(e.config.frontend.sparklines,null)>-1:e.config.frontend.sparklines},on:{change:[function(t){var n=e.config.frontend.sparklines,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.frontend,"sparklines",n.concat([i])):c>-1&&e.$set(e.config.frontend,"sparklines",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.frontend,"sparklines",s)},function(t){return e.switch_config("frontend","sparklines")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Show background sparklines during the capture. ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.frontend.remote_access,expression:"config.frontend.remote_access"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.frontend.remote_access)?e._i(e.config.frontend.remote_access,null)>-1:e.config.frontend.remote_access},on:{change:[function(t){var n=e.config.frontend.remote_access,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.frontend,"remote_access",n.concat([i])):c>-1&&e.$set(e.config.frontend,"remote_access",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.frontend,"remote_access",s)},function(t){return e.switch_config("frontend","remote_access")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Allow remote access to the frontend. ")]),t("label",{staticClass:"form-switch"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.backend.remote_access,expression:"config.backend.remote_access"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.config.backend.remote_access)?e._i(e.config.backend.remote_access,null)>-1:e.config.backend.remote_access},on:{change:[function(t){var n=e.config.backend.remote_access,o=t.target,s=!!o.checked;if(Array.isArray(n)){var i=null,c=e._i(n,i);o.checked?c<0&&e.$set(e.config.backend,"remote_access",n.concat([i])):c>-1&&e.$set(e.config.backend,"remote_access",n.slice(0,c).concat(n.slice(c+1)))}else e.$set(e.config.backend,"remote_access",s)},function(t){return e.switch_config("backend","remote_access")}]}}),t("i",{staticClass:"form-icon"}),e._v(" Allow remote access to the backend. ")])]),t("h5",{staticClass:"s-subtitle"},[e._v("User credentials")]),t("div",{staticClass:"form-group"},[t("div",{staticClass:"column col-10 col-xs-12"},[t("div",{staticClass:"form-group"},[t("label",{staticClass:"form-label",attrs:{for:"user-login"}},[e._v("User login")]),t("div",{staticClass:"input-group"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.backend.login,expression:"config.backend.login"}],staticClass:"form-input",attrs:{id:"user-login",type:"text"},domProps:{value:e.config.backend.login},on:{input:function(t){t.target.composing||e.$set(e.config.backend,"login",t.target.value)}}}),t("button",{staticClass:"btn btn-primary input-group-btn px150",on:{click:function(t){return e.change_login()}}},[e._v("Update it")])])]),t("div",{staticClass:"form-group"},[t("label",{staticClass:"form-label",attrs:{for:"user-login"}},[e._v("User password")]),t("div",{staticClass:"input-group"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.config.backend.password,expression:"config.backend.password"}],staticClass:"form-input",attrs:{id:"user-login",type:"password",placeholder:"●●●●●●"},domProps:{value:e.config.backend.password},on:{input:function(t){t.target.composing||e.$set(e.config.backend,"password",t.target.value)}}}),t("button",{staticClass:"btn btn-primary input-group-btn px150",on:{click:function(t){return e.change_password()}}},[e._v("Update it")])])]),t("div",{staticClass:"whitespace"})])])])])},s=[],i=n("bc3a"),c=n.n(i),a={name:"edit-configuration",data(){return{config:{},check_certificate:!1,certificate:"",iocs_tags:[],toaster:{show:!1,message:"",type:null}}},props:{},methods:{switch_config:function(e,t){c.a.get(`/api/config/switch/${e}/${t}`,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(n=>{n.data.status&&("Key switched to true"==n.data.message?(this.toaster={show:!0,message:"Configuration updated",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3),this.config[e][t]=!0):"Key switched to false"==n.data.message?(this.toaster={show:!0,message:"Configuration updated",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3),this.config[e][t]=!1):(this.toaster={show:!0,message:"The key doesn't exist",type:"error"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3)))}).catch(e=>console.log(e))},load_config:function(){c.a.get("/api/config/list",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data&&(this.config=e.data,this.config.backend.password="")}).catch(e=>console.log(e))},async get_jwt(){await c.a.get("/api/get-token",{timeout:1e4}).then(e=>{e.data.token&&(this.jwt=e.data.token)}).catch(e=>console.log(e))},change_login:function(){c.a.get("/api/config/edit/backend/login/"+this.config.backend.login,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status?(this.toaster={show:!0,message:"Login changed",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3)):(this.toaster={show:!0,message:"Login not changed",type:"error"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3))}).catch(e=>console.log(e))},change_password:function(){c.a.get("/api/config/edit/backend/password/"+this.config.backend.password,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status?(this.toaster={show:!0,message:"Password changed",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3)):(this.toaster={show:!0,message:"Password not changed",type:"error"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3))}).catch(e=>console.log(e))}},created:function(){this.get_jwt().then(()=>{this.load_config()})}},r=a,d=n("2877"),l=Object(d["a"])(r,o,s,!1,null,null,null);t["default"]=l.exports}}]); +//# sourceMappingURL=chunk-2d0c8321.78ca1407.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0c8321.78ca1407.js.map b/app/backend/dist/js/chunk-2d0c8321.78ca1407.js.map new file mode 100644 index 0000000..477f4d9 --- /dev/null +++ b/app/backend/dist/js/chunk-2d0c8321.78ca1407.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/edit-configuration.vue","webpack:///src/views/edit-configuration.vue","webpack:///./src/views/edit-configuration.vue?6838","webpack:///./src/views/edit-configuration.vue?2e5d"],"names":["render","_vm","this","_c","_self","staticClass","attrs","class","toaster","show","_v","_s","message","directives","name","rawName","value","config","device_uuid","expression","domProps","on","$event","target","composing","$set","frontend","virtual_keyboard","Array","isArray","_i","$$a","$$el","$$c","checked","$$v","$$i","concat","slice","switch_config","shutdown_option","backend_option","network","tokenized_ssids","download_links","sparklines","remote_access","backend","login","change_login","password","change_password","staticRenderFns","data","check_certificate","certificate","iocs_tags","type","props","methods","axios","timeout","headers","setTimeout","catch","load_config","then","created","component"],"mappings":"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","file":"js/chunk-2d0c8321.78ca1407.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{class:{ 'alert-toaster-visible' : _vm.toaster.show, 'alert-toaster-hidden' : !_vm.toaster.show }},[_vm._v(_vm._s(_vm.toaster.message))]),_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Configuration \")]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"user-login\"}},[_vm._v(\"Device UUID (read-only)\")]),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.device_uuid),expression:\"config.device_uuid\"}],staticClass:\"form-input read-only\",attrs:{\"id\":\"device-id\",\"readonly\":\"readonly\"},domProps:{\"value\":(_vm.config.device_uuid)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.config, \"device_uuid\", $event.target.value)}}})])]),_c('h5',{staticClass:\"s-subtitle\"},[_vm._v(\"Device configuration\")]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.frontend.virtual_keyboard),expression:\"config.frontend.virtual_keyboard\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.frontend.virtual_keyboard)?_vm._i(_vm.config.frontend.virtual_keyboard,null)>-1:(_vm.config.frontend.virtual_keyboard)},on:{\"change\":[function($event){var $$a=_vm.config.frontend.virtual_keyboard,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.frontend, \"virtual_keyboard\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.frontend, \"virtual_keyboard\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.frontend, \"virtual_keyboard\", $$c)}},function($event){return _vm.switch_config('frontend', 'virtual_keyboard')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use virtual keyboard (for touch screen) \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.frontend.shutdown_option),expression:\"config.frontend.shutdown_option\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.frontend.shutdown_option)?_vm._i(_vm.config.frontend.shutdown_option,null)>-1:(_vm.config.frontend.shutdown_option)},on:{\"change\":[function($event){var $$a=_vm.config.frontend.shutdown_option,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.frontend, \"shutdown_option\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.frontend, \"shutdown_option\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.frontend, \"shutdown_option\", $$c)}},function($event){return _vm.switch_config('frontend', 'shutdown_option')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Allow the end-user to shutdown the device. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.frontend.backend_option),expression:\"config.frontend.backend_option\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.frontend.backend_option)?_vm._i(_vm.config.frontend.backend_option,null)>-1:(_vm.config.frontend.backend_option)},on:{\"change\":[function($event){var $$a=_vm.config.frontend.backend_option,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.frontend, \"backend_option\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.frontend, \"backend_option\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.frontend, \"backend_option\", $$c)}},function($event){return _vm.switch_config('frontend', 'backend_option')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Allow the end-user to access to the backend. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.network.tokenized_ssids),expression:\"config.network.tokenized_ssids\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.network.tokenized_ssids)?_vm._i(_vm.config.network.tokenized_ssids,null)>-1:(_vm.config.network.tokenized_ssids)},on:{\"change\":[function($event){var $$a=_vm.config.network.tokenized_ssids,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.network, \"tokenized_ssids\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.network, \"tokenized_ssids\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.network, \"tokenized_ssids\", $$c)}},function($event){return _vm.switch_config('network', 'tokenized_ssids')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use tokenized SSIDs (eg. [ssid-name]-[hex-str]). \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.frontend.download_links),expression:\"config.frontend.download_links\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.frontend.download_links)?_vm._i(_vm.config.frontend.download_links,null)>-1:(_vm.config.frontend.download_links)},on:{\"change\":[function($event){var $$a=_vm.config.frontend.download_links,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.frontend, \"download_links\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.frontend, \"download_links\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.frontend, \"download_links\", $$c)}},function($event){return _vm.switch_config('frontend', 'download_links')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use in-browser download for network captures. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.frontend.sparklines),expression:\"config.frontend.sparklines\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.frontend.sparklines)?_vm._i(_vm.config.frontend.sparklines,null)>-1:(_vm.config.frontend.sparklines)},on:{\"change\":[function($event){var $$a=_vm.config.frontend.sparklines,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.frontend, \"sparklines\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.frontend, \"sparklines\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.frontend, \"sparklines\", $$c)}},function($event){return _vm.switch_config('frontend', 'sparklines')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Show background sparklines during the capture. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.frontend.remote_access),expression:\"config.frontend.remote_access\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.frontend.remote_access)?_vm._i(_vm.config.frontend.remote_access,null)>-1:(_vm.config.frontend.remote_access)},on:{\"change\":[function($event){var $$a=_vm.config.frontend.remote_access,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.frontend, \"remote_access\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.frontend, \"remote_access\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.frontend, \"remote_access\", $$c)}},function($event){return _vm.switch_config('frontend', 'remote_access')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Allow remote access to the frontend. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.backend.remote_access),expression:\"config.backend.remote_access\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.backend.remote_access)?_vm._i(_vm.config.backend.remote_access,null)>-1:(_vm.config.backend.remote_access)},on:{\"change\":[function($event){var $$a=_vm.config.backend.remote_access,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.backend, \"remote_access\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.backend, \"remote_access\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.backend, \"remote_access\", $$c)}},function($event){return _vm.switch_config('backend', 'remote_access')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Allow remote access to the backend. \")])]),_c('h5',{staticClass:\"s-subtitle\"},[_vm._v(\"User credentials\")]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"column col-10 col-xs-12\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"user-login\"}},[_vm._v(\"User login\")]),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.backend.login),expression:\"config.backend.login\"}],staticClass:\"form-input\",attrs:{\"id\":\"user-login\",\"type\":\"text\"},domProps:{\"value\":(_vm.config.backend.login)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.config.backend, \"login\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-primary input-group-btn px150\",on:{\"click\":function($event){return _vm.change_login()}}},[_vm._v(\"Update it\")])])]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"user-login\"}},[_vm._v(\"User password\")]),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.backend.password),expression:\"config.backend.password\"}],staticClass:\"form-input\",attrs:{\"id\":\"user-login\",\"type\":\"password\",\"placeholder\":\"●●●●●●\"},domProps:{\"value\":(_vm.config.backend.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.config.backend, \"password\", $event.target.value)}}}),_c('button',{staticClass:\"btn btn-primary input-group-btn px150\",on:{\"click\":function($event){return _vm.change_password()}}},[_vm._v(\"Update it\")])])]),_c('div',{staticClass:\"whitespace\"})])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit-configuration.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit-configuration.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./edit-configuration.vue?vue&type=template&id=603efc18&\"\nimport script from \"./edit-configuration.vue?vue&type=script&lang=js&\"\nexport * from \"./edit-configuration.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js b/app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js new file mode 100644 index 0000000..4469bbe --- /dev/null +++ b/app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c9378"],{"57cc":function(t,s,i){"use strict";i.r(s);var e=function(){var t=this,s=t._self._c;return s("div",{staticClass:"backend-content",attrs:{id:"content"}},[s("div",{staticClass:"column col-8 col-xs-12"},[s("h3",{staticClass:"s-title"},[t._v("Manage MISP instances")]),s("ul",{staticClass:"tab tab-block"},[s("li",{staticClass:"tab-item"},[s("a",{class:{active:t.tabs.addmisp},attrs:{href:"#"},on:{click:function(s){return t.switch_tab("addmisp")}}},[t._v("Add instance")])]),s("li",{staticClass:"tab-item"},[s("a",{class:{active:t.tabs.instances},attrs:{href:"#"},on:{click:function(s){return t.switch_tab("instances")}}},[t._v("Existing instances")])])]),t.tabs.addmisp?s("div",[s("div",{staticClass:"misp-form"},[s("label",{staticClass:"misp-label"},[t._v("Instance name")]),s("span"),s("input",{directives:[{name:"model",rawName:"v-model",value:t.mispinst.name,expression:"mispinst.name"}],ref:"misp_name",staticClass:"form-input",attrs:{type:"text",placeholder:"CYBERACME MISP",required:""},domProps:{value:t.mispinst.name},on:{input:function(s){s.target.composing||t.$set(t.mispinst,"name",s.target.value)}}}),s("label",{staticClass:"misp-label"},[t._v("Instance URL")]),s("span"),s("input",{directives:[{name:"model",rawName:"v-model",value:t.mispinst.url,expression:"mispinst.url"}],ref:"misp_url",staticClass:"form-input",attrs:{type:"text",placeholder:"https://misp.cyberacme.com",required:""},domProps:{value:t.mispinst.url},on:{input:function(s){s.target.composing||t.$set(t.mispinst,"url",s.target.value)}}}),s("label",{staticClass:"misp-label"},[t._v("Authentication key")]),s("span"),s("input",{directives:[{name:"model",rawName:"v-model",value:t.mispinst.key,expression:"mispinst.key"}],ref:"misp_key",staticClass:"form-input",attrs:{type:"text",placeholder:"OqHSMyAuth3ntic4t10nK3y0MyAuth3ntic4t10nK3y3iiH",required:""},domProps:{value:t.mispinst.key},on:{input:function(s){s.target.composing||t.$set(t.mispinst,"key",s.target.value)}}}),t.mispinst.url.startsWith("https://")?s("label",{staticClass:"misp-label"},[t._v("Verify certificate? ")]):t._e(),t.mispinst.url.startsWith("https://")?s("span"):t._e(),t.mispinst.url.startsWith("https://")?s("div",{staticStyle:{flex:"50%"}},[s("label",{staticClass:"form-switch"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.mispinst.ssl,expression:"mispinst.ssl"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(t.mispinst.ssl)?t._i(t.mispinst.ssl,null)>-1:t.mispinst.ssl},on:{change:function(s){var i=t.mispinst.ssl,e=s.target,a=!!e.checked;if(Array.isArray(i)){var n=null,c=t._i(i,n);e.checked?c<0&&t.$set(t.mispinst,"ssl",i.concat([n])):c>-1&&t.$set(t.mispinst,"ssl",i.slice(0,c).concat(i.slice(c+1)))}else t.$set(t.mispinst,"ssl",a)}}}),s("i",{staticClass:"form-icon"})])]):t._e()]),s("button",{staticClass:"btn-primary btn col-12",on:{click:function(s){return t.add_instance()}}},[t._v("Add MISP instance")]),t.added?s("div",{staticClass:"form-group"},[s("div",{staticClass:"toast toast-success"},[t._v(" ✓ MISP instance added successfully. Redirecting to instances in 2 seconds. ")])]):t._e(),t.error?s("div",{staticClass:"form-group"},[s("div",{staticClass:"toast toast-error"},[t._v(" ✗ MISP instance not added. "+t._s(t.error)+" ")])]):t._e()]):t._e(),t.tabs.instances?s("div",{staticClass:"form-group"},[t.instances.length?s("div",[s("table",{staticClass:"table table-striped table-hover"},[t._m(0),s("tbody",t._l(t.instances,(function(i){return s("tr",{key:i.id},[s("td",[t._v(t._s(i.name))]),s("td",[t._v(t._s(i.url.replace("https://","").replace("http://","")))]),s("td",[t._v(t._s(i.apikey.slice(0,5))+" [...] "+t._s(i.apikey.slice(35,40)))]),s("td",[i.connected?s("span",{staticClass:"instance-online tooltip",attrs:{"data-tooltip":i.lastsync}},[t._v("✓ ONLINE")]):s("span",{staticClass:"instance-offline tooltip",attrs:{"data-tooltip":i.lastsync}},[t._v("⚠ OFFLINE")])]),s("td",[s("button",{staticClass:"btn btn-sm",on:{click:function(s){return t.delete_instance(i)}}},[t._v("Delete")])])])})),0)])]):s("div",[s("div",{staticClass:"empty"},[t.loading?s("div",[t._m(1),s("p",{staticClass:"empty-subtitle"},[t._v("Testing and loading your MISP instances.")])]):s("div",[s("p",{staticClass:"empty-title h5"},[t._v("No MISP instance found.")]),s("p",{staticClass:"empty-subtitle"},[t._v("Do not hesitate to add a MISP instance.")])])])])]):t._e()])])},a=[function(){var t=this,s=t._self._c;return s("thead",[s("tr",[s("th",[t._v("Name")]),s("th",[t._v("Server")]),s("th",[t._v("Authkey")]),s("th",[t._v("Status")]),s("th",[t._v("Action")])])])},function(){var t=this,s=t._self._c;return s("p",{staticClass:"empty-title h5"},[s("span",{staticClass:"loading loading-lg"})])}],n=i("bc3a"),c=i.n(n),l={name:"managemisp",data(){return{error:!1,loading:!1,added:!1,mispinst:{name:"",url:"",key:"",ssl:!1},instances:[],tabs:{addmisp:!0,instances:!1},jwt:""}},props:{},methods:{add_instance:function(){this.added=!1,this.error=!1,this.mispinst.name&&this.mispinst.url&&this.mispinst.key&&c.a.post("/api/misp/add",{data:{instance:this.mispinst}},{headers:{"X-Token":this.jwt}}).then(t=>{t.data.status?(this.added=!0,setTimeout(function(){this.switch_tab("instances"),this.mispinst={name:"",url:"",key:"",ssl:!1},this.added=!1}.bind(this),2e3)):this.error=t.data.message}).catch(t=>console.log(t))},delete_instance(t){c.a.get("/api/misp/delete/"+t.id,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{s.data.status&&(this.instances=this.instances.filter((function(s){return s!=t})))}).catch(t=>console.log(t))},get_misp_instances(){this.loading=!0,this.instances=[],c.a.get("/api/misp/get_all",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.results&&(this.instances=t.data.results,this.instances.forEach(t=>{var s=parseInt((Date.now()/1e3-t.lastsync)/86400);t.lastsync=s?`Synchronized ${s} day(s) ago`:"Synchronized today"})),this.loading=!1}).catch(t=>console.log(t))},switch_tab:function(t){Object.keys(this.tabs).forEach(s=>{s==t?(this.tabs[s]=!0,"instances"==s&&this.get_misp_instances()):this.tabs[s]=!1})},get_jwt(){c.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))}},created:function(){this.get_jwt()}},o=l,r=i("2877"),d=Object(r["a"])(o,e,a,!1,null,null,null);s["default"]=d.exports}}]); +//# sourceMappingURL=chunk-2d0c9378.fb16a6a2.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js.map b/app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js.map new file mode 100644 index 0000000..7d76918 --- /dev/null +++ b/app/backend/dist/js/chunk-2d0c9378.fb16a6a2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/instance-misp.vue","webpack:///src/views/instance-misp.vue","webpack:///./src/views/instance-misp.vue?4ce4","webpack:///./src/views/instance-misp.vue?7ab0"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","class","active","tabs","addmisp","on","$event","switch_tab","instances","directives","name","rawName","value","mispinst","expression","ref","domProps","target","composing","$set","url","key","startsWith","_e","staticStyle","ssl","Array","isArray","_i","$$a","$$el","$$c","checked","$$v","$$i","concat","slice","add_instance","added","error","_s","length","_m","_l","i","id","replace","apikey","connected","lastsync","delete_instance","loading","staticRenderFns","data","jwt","props","methods","axios","instance","headers","setTimeout","catch","timeout","then","get_misp_instances","e","Object","get_jwt","created","component"],"mappings":"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","file":"js/chunk-2d0c9378.fb16a6a2.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Manage MISP instances\")]),_c('ul',{staticClass:\"tab tab-block\"},[_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.addmisp },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('addmisp')}}},[_vm._v(\"Add instance\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.instances },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('instances')}}},[_vm._v(\"Existing instances\")])])]),(_vm.tabs.addmisp)?_c('div',[_c('div',{staticClass:\"misp-form\"},[_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Instance name\")]),_c('span'),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mispinst.name),expression:\"mispinst.name\"}],ref:\"misp_name\",staticClass:\"form-input\",attrs:{\"type\":\"text\",\"placeholder\":\"CYBERACME MISP\",\"required\":\"\"},domProps:{\"value\":(_vm.mispinst.name)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.mispinst, \"name\", $event.target.value)}}}),_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Instance URL\")]),_c('span'),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mispinst.url),expression:\"mispinst.url\"}],ref:\"misp_url\",staticClass:\"form-input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://misp.cyberacme.com\",\"required\":\"\"},domProps:{\"value\":(_vm.mispinst.url)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.mispinst, \"url\", $event.target.value)}}}),_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Authentication key\")]),_c('span'),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mispinst.key),expression:\"mispinst.key\"}],ref:\"misp_key\",staticClass:\"form-input\",attrs:{\"type\":\"text\",\"placeholder\":\"OqHSMyAuth3ntic4t10nK3y0MyAuth3ntic4t10nK3y3iiH\",\"required\":\"\"},domProps:{\"value\":(_vm.mispinst.key)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.mispinst, \"key\", $event.target.value)}}}),(_vm.mispinst.url.startsWith('https://'))?_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Verify certificate? \")]):_vm._e(),(_vm.mispinst.url.startsWith('https://'))?_c('span'):_vm._e(),(_vm.mispinst.url.startsWith('https://'))?_c('div',{staticStyle:{\"flex\":\"50%\"}},[_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mispinst.ssl),expression:\"mispinst.ssl\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.mispinst.ssl)?_vm._i(_vm.mispinst.ssl,null)>-1:(_vm.mispinst.ssl)},on:{\"change\":function($event){var $$a=_vm.mispinst.ssl,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.mispinst, \"ssl\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.mispinst, \"ssl\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.mispinst, \"ssl\", $$c)}}}}),_c('i',{staticClass:\"form-icon\"})])]):_vm._e()]),_c('button',{staticClass:\"btn-primary btn col-12\",on:{\"click\":function($event){return _vm.add_instance()}}},[_vm._v(\"Add MISP instance\")]),(_vm.added)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-success\"},[_vm._v(\" ✓ MISP instance added successfully. Redirecting to instances in 2 seconds. \")])]):_vm._e(),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-error\"},[_vm._v(\" ✗ MISP instance not added. \"+_vm._s(_vm.error)+\" \")])]):_vm._e()]):_vm._e(),(_vm.tabs.instances)?_c('div',{staticClass:\"form-group\"},[(_vm.instances.length)?_c('div',[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',_vm._l((_vm.instances),function(i){return _c('tr',{key:i.id},[_c('td',[_vm._v(_vm._s(i.name))]),_c('td',[_vm._v(_vm._s(i.url.replace('https://', '') .replace('http://', '')))]),_c('td',[_vm._v(_vm._s(i.apikey.slice(0,5))+\" [...] \"+_vm._s(i.apikey.slice(35,40)))]),_c('td',[(i.connected)?_c('span',{staticClass:\"instance-online tooltip\",attrs:{\"data-tooltip\":i.lastsync}},[_vm._v(\"✓ ONLINE\")]):_c('span',{staticClass:\"instance-offline tooltip\",attrs:{\"data-tooltip\":i.lastsync}},[_vm._v(\"⚠ OFFLINE\")])]),_c('td',[_c('button',{staticClass:\"btn btn-sm\",on:{\"click\":function($event){return _vm.delete_instance(i)}}},[_vm._v(\"Delete\")])])])}),0)])]):_c('div',[_c('div',{staticClass:\"empty\"},[(_vm.loading)?_c('div',[_vm._m(1),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Testing and loading your MISP instances.\")])]):_c('div',[_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"No MISP instance found.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Do not hesitate to add a MISP instance.\")])])])])]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Name\")]),_c('th',[_vm._v(\"Server\")]),_c('th',[_vm._v(\"Authkey\")]),_c('th',[_vm._v(\"Status\")]),_c('th',[_vm._v(\"Action\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"empty-title h5\"},[_c('span',{staticClass:\"loading loading-lg\"})])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./instance-misp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./instance-misp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./instance-misp.vue?vue&type=template&id=63e790af&\"\nimport script from \"./instance-misp.vue?vue&type=script&lang=js&\"\nexport * from \"./instance-misp.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js b/app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js new file mode 100644 index 0000000..4ee23c4 --- /dev/null +++ b/app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0cc2b4"],{"4d7e":function(t,s,e){"use strict";e.r(s);var a=function(){var t=this,s=t._self._c;return s("div",{staticClass:"backend-content",attrs:{id:"content"}},[s("div",{staticClass:"column col-12 col-xs-12"},[s("h3",{staticClass:"s-title"},[t._v("Search IOCs")]),s("div",{staticClass:"form-group"},[s("textarea",{directives:[{name:"model",rawName:"v-model",value:t.iocs,expression:"iocs"}],staticClass:"form-input",attrs:{id:"input-example-3",placeholder:"Paste your IOCs here",rows:"3"},domProps:{value:t.iocs},on:{input:function(s){s.target.composing||(t.iocs=s.target.value)}}})]),s("div",{staticClass:"form-group"},[s("button",{staticClass:"btn btn-primary col-12",on:{click:function(s){return t.search_iocs()}}},[t._v("Search")])]),t.results.length>0?s("div",{staticClass:"form-group"},[s("table",{staticClass:"table table-striped table-hover"},[t._m(0),s("tbody",t._l(t.results,(function(e){return s("tr",{key:e.tlp},[s("td",[t._v(t._s(e.value))]),s("td",{staticClass:"upper"},[t._v(t._s(e.tag))]),s("td",[s("label",{class:["tlp-"+e.tlp]},[t._v(t._s(e.tlp))])]),s("td",{staticClass:"capi"},[t._v(t._s(e.source))]),s("td",[s("button",{staticClass:"btn btn-sm",on:{click:function(s){return t.remove(e)}}},[t._v("Delete")])])])})),0)])]):0==t.first_search?s("div",[t.loading?s("div",[t._m(1)]):s("div",[s("div",{staticClass:"empty"},[s("p",{staticClass:"empty-title h5"},[t._v("IOC"),this.iocs.match(/[^\r\n]+/g).length>1?s("span",[t._v("s")]):t._e(),t._v(" not found.")]),s("p",{staticClass:"empty-subtitle"},[t._v("Try wildcard search to expend your search.")])])])]):t._e()])])},i=[function(){var t=this,s=t._self._c;return s("thead",[s("tr",[s("th",[t._v("Indicator")]),s("th",[t._v("Tag")]),s("th",[t._v("TLP")]),s("th",[t._v("Source")]),s("th",[t._v("Action")])])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"empty"},[s("p",{staticClass:"empty-title h5"},[s("span",{staticClass:"loading loading-lg"})]),s("p",{staticClass:"empty-subtitle"},[t._v("Finding your IOC(s)...")])])}],c=e("bc3a"),o=e.n(c),n={name:"iocs-search",data(){return{results:[],first_search:!0,jwt:"",loading:!1}},props:{},methods:{search_iocs:function(){return this.results=[],this.first_search=!1,this.loading=!0,this.iocs.match(/[^\r\n]+/g).forEach(t=>{t=t.trim(),"alert "!=t.slice(0,6)&&(t=t.replace(" ",""),t=t.replace("[",""),t=t.replace("]",""),t=t.replace("\\",""),t=t.replace("(",""),t=t.replace(")","")),o.a.get("/api/ioc/search/"+t,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.results.length>0&&(this.results=[].concat(this.results,t.data.results)),this.loading=!1}).catch(t=>console.log(t))}),!0},remove:function(t){o.a.get("/api/ioc/delete/"+t.id,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{s.data.status&&(this.results=this.results.filter((function(s){return s!=t})))}).catch(t=>console.log(t))},load_config:function(){o.a.get("/api/config/list",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data&&(this.config=t.data)}).catch(t=>console.log(t))},async get_jwt(){await o.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))}},created:function(){this.get_jwt()}},l=n,r=e("2877"),u=Object(r["a"])(l,a,i,!1,null,null,null);s["default"]=u.exports}}]); +//# sourceMappingURL=chunk-2d0cc2b4.6cd43049.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js.map b/app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js.map new file mode 100644 index 0000000..2cb86b8 --- /dev/null +++ b/app/backend/dist/js/chunk-2d0cc2b4.6cd43049.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/iocs-search.vue","webpack:///src/views/iocs-search.vue","webpack:///./src/views/iocs-search.vue?4206","webpack:///./src/views/iocs-search.vue?47c0"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","directives","name","rawName","value","iocs","expression","domProps","on","$event","target","composing","search_iocs","results","length","_m","_l","r","key","tlp","_s","tag","class","source","remove","first_search","loading","match","_e","staticRenderFns","data","jwt","props","methods","ioc","axios","timeout","headers","then","catch","load_config","created","component"],"mappings":"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","file":"js/chunk-2d0cc2b4.6cd43049.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-12 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Search IOCs\")]),_c('div',{staticClass:\"form-group\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.iocs),expression:\"iocs\"}],staticClass:\"form-input\",attrs:{\"id\":\"input-example-3\",\"placeholder\":\"Paste your IOCs here\",\"rows\":\"3\"},domProps:{\"value\":(_vm.iocs)},on:{\"input\":function($event){if($event.target.composing)return;_vm.iocs=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary col-12\",on:{\"click\":function($event){return _vm.search_iocs()}}},[_vm._v(\"Search\")])]),(_vm.results.length>0 )?_c('div',{staticClass:\"form-group\"},[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',_vm._l((_vm.results),function(r){return _c('tr',{key:r.tlp},[_c('td',[_vm._v(_vm._s(r.value))]),_c('td',{staticClass:\"upper\"},[_vm._v(_vm._s(r.tag))]),_c('td',[_c('label',{class:['tlp-' + r.tlp]},[_vm._v(_vm._s(r.tlp))])]),_c('td',{staticClass:\"capi\"},[_vm._v(_vm._s(r.source))]),_c('td',[_c('button',{staticClass:\"btn btn-sm\",on:{\"click\":function($event){return _vm.remove(r)}}},[_vm._v(\"Delete\")])])])}),0)])]):(_vm.first_search==false)?_c('div',[(_vm.loading)?_c('div',[_vm._m(1)]):_c('div',[_c('div',{staticClass:\"empty\"},[_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"IOC\"),(this.iocs.match(/[^\\r\\n]+/g).length>1)?_c('span',[_vm._v(\"s\")]):_vm._e(),_vm._v(\" not found.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Try wildcard search to expend your search.\")])])])]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Indicator\")]),_c('th',[_vm._v(\"Tag\")]),_c('th',[_vm._v(\"TLP\")]),_c('th',[_vm._v(\"Source\")]),_c('th',[_vm._v(\"Action\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"empty\"},[_c('p',{staticClass:\"empty-title h5\"},[_c('span',{staticClass:\"loading loading-lg\"})]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Finding your IOC(s)...\")])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./iocs-search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./iocs-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./iocs-search.vue?vue&type=template&id=c0ab8c66&\"\nimport script from \"./iocs-search.vue?vue&type=script&lang=js&\"\nexport * from \"./iocs-search.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js b/app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js new file mode 100644 index 0000000..03b16ff --- /dev/null +++ b/app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0cfa15"],{6511:function(t,s,e){"use strict";e.r(s);var a=function(){var t=this;t._self._c;return t._m(0)},i=[function(){var t=this,s=t._self._c;return s("div",{staticClass:"backend-content",attrs:{id:"content"}},[s("div",{staticClass:"column col-8 col-xs-12"},[s("div",{staticClass:"container"},[s("h3",{staticClass:"s-title"},[t._v("Getting started")]),s("br"),s("p",[t._v("SpyGuard is a forked and enhanced version of TinyCheck, an application developed by Kaspersky. SpyGuard's main objective is to detect signs of compromise by monitoring network flows transmitted by a device.")]),s("p",[t._v("As it uses WiFi, SpyGuard can be used against a wide range of devices, such as smartphones, laptops, IOTs or workstations. To do its job, the analysis engine of SpyGuard is using Indicators of Compromise (IOCs), anomaly detection and is supported by Suricata. ")]),s("p",[t._v("This backend lets you configure your SpyGuard instance. You can push some IOCs for detection and whitelist elements which can be seen during legit communications in order to prevent false positives.")]),s("p",[t._v("_")])]),s("div",{staticClass:"backend-footer container grid-lg",attrs:{id:"copyright"}},[s("p",[t._v("For any question, bug report or feedback, please contact the "),s("a",{attrs:{href:"mailto:spyguard@protonmail.com",target:"_blank"}},[t._v("SpyGuard's Team")]),t._v(" or open an issue on the "),s("a",{attrs:{href:"https://github.com/SpyGuard/spyguard/issues",target:"_blank"}},[t._v("SpyGuard Github repository")]),t._v(".")])])])])}],n=e("2877"),o={},r=Object(n["a"])(o,a,i,!1,null,null,null);s["default"]=r.exports}}]); +//# sourceMappingURL=chunk-2d0cfa15.4b2166d6.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js.map b/app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js.map new file mode 100644 index 0000000..ac9a46a --- /dev/null +++ b/app/backend/dist/js/chunk-2d0cfa15.4b2166d6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/home.vue","webpack:///./src/views/home.vue?46ae"],"names":["render","_vm","this","_self","_c","_m","staticRenderFns","staticClass","attrs","_v","script","component"],"mappings":"uHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAQD,EAAIE,MAAMC,GAAG,OAAOH,EAAII,GAAG,IAEtEC,EAAkB,CAAC,WAAY,IAAIL,EAAIC,KAAKE,EAAGH,EAAIE,MAAMC,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,kBAAkBC,MAAM,CAAC,GAAK,YAAY,CAACJ,EAAG,MAAM,CAACG,YAAY,0BAA0B,CAACH,EAAG,MAAM,CAACG,YAAY,aAAa,CAACH,EAAG,KAAK,CAACG,YAAY,WAAW,CAACN,EAAIQ,GAAG,qBAAqBL,EAAG,MAAMA,EAAG,IAAI,CAACH,EAAIQ,GAAG,oNAAoNL,EAAG,IAAI,CAACH,EAAIQ,GAAG,0QAA0QL,EAAG,IAAI,CAACH,EAAIQ,GAAG,4MAA4ML,EAAG,IAAI,CAACH,EAAIQ,GAAG,SAASL,EAAG,MAAM,CAACG,YAAY,mCAAmCC,MAAM,CAAC,GAAK,cAAc,CAACJ,EAAG,IAAI,CAACH,EAAIQ,GAAG,iEAAiEL,EAAG,IAAI,CAACI,MAAM,CAAC,KAAO,iCAAiC,OAAS,WAAW,CAACP,EAAIQ,GAAG,qBAAqBR,EAAIQ,GAAG,6BAA6BL,EAAG,IAAI,CAACI,MAAM,CAAC,KAAO,8CAA8C,OAAS,WAAW,CAACP,EAAIQ,GAAG,gCAAgCR,EAAIQ,GAAG,e,YCDr8CC,EAAS,GAKTC,EAAY,eACdD,EACAV,EACAM,GACA,EACA,KACA,KACA,MAIa,aAAAK,E","file":"js/chunk-2d0cfa15.4b2166d6.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('div',{staticClass:\"container\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Getting started\")]),_c('br'),_c('p',[_vm._v(\"SpyGuard is a forked and enhanced version of TinyCheck, an application developed by Kaspersky. SpyGuard's main objective is to detect signs of compromise by monitoring network flows transmitted by a device.\")]),_c('p',[_vm._v(\"As it uses WiFi, SpyGuard can be used against a wide range of devices, such as smartphones, laptops, IOTs or workstations. To do its job, the analysis engine of SpyGuard is using Indicators of Compromise (IOCs), anomaly detection and is supported by Suricata. \")]),_c('p',[_vm._v(\"This backend lets you configure your SpyGuard instance. You can push some IOCs for detection and whitelist elements which can be seen during legit communications in order to prevent false positives.\")]),_c('p',[_vm._v(\"_\")])]),_c('div',{staticClass:\"backend-footer container grid-lg\",attrs:{\"id\":\"copyright\"}},[_c('p',[_vm._v(\"For any question, bug report or feedback, please contact the \"),_c('a',{attrs:{\"href\":\"mailto:spyguard@protonmail.com\",\"target\":\"_blank\"}},[_vm._v(\"SpyGuard's Team\")]),_vm._v(\" or open an issue on the \"),_c('a',{attrs:{\"href\":\"https://github.com/SpyGuard/spyguard/issues\",\"target\":\"_blank\"}},[_vm._v(\"SpyGuard Github repository\")]),_vm._v(\".\")])])])])\n}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=34abb80e&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0e4bf5.fac73388.js b/app/backend/dist/js/chunk-2d0e4bf5.fac73388.js new file mode 100644 index 0000000..7e897fb --- /dev/null +++ b/app/backend/dist/js/chunk-2d0e4bf5.fac73388.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0e4bf5"],{9217:function(t,a,e){"use strict";e.r(a);var s=function(){var t=this,a=t._self._c;return a("div",{staticClass:"backend-content",attrs:{id:"content"}},[a("div",{staticClass:"column col-8 col-xs-12"},[a("h3",{staticClass:"s-title"},[t._v("Manage database")]),a("ul",{staticClass:"tab tab-block"},[a("li",{staticClass:"tab-item"},[a("a",{class:{active:t.tabs.import},attrs:{href:"#"},on:{click:function(a){return t.switch_tab("import")}}},[t._v("Import database")])]),a("li",{staticClass:"tab-item"},[a("a",{class:{active:t.tabs.export},attrs:{href:"#"},on:{click:function(a){return t.switch_tab("export")}}},[t._v("Export database")])])]),t.tabs.export?a("div",[a("iframe",{staticClass:"frame-export",attrs:{src:t.export_url}})]):t._e(),t.tabs.import?a("div",[a("label",{staticClass:"form-upload empty",attrs:{for:"upload"}},[a("input",{staticClass:"upload-field",attrs:{type:"file",id:"upload"},on:{change:t.import_from_file}}),a("p",{staticClass:"empty-title h5"},[t._v("Drop or select a database to import.")]),a("p",{staticClass:"empty-subtitle"},[t._v("The database needs to be an export from a SpyGuard instance.")])])]):t._e()])])},i=[],o=e("bc3a"),r=e.n(o),n={name:"db-manage",data(){return{tabs:{import:!0,export:!1},jwt:""}},props:{},methods:{switch_tab:function(t){Object.keys(this.tabs).forEach(a=>{this.tabs[a]=a==t})},import_from_file:function(t){var a=new FormData;a.append("file",t.target.files[0]),r.a.post("/api/config/db/import",a,{headers:{"Content-Type":"multipart/form-data","X-Token":this.jwt}})},async get_jwt(){await r.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))}},created:function(){this.get_jwt().then(()=>{this.export_url="/api/config/db/export?token="+this.jwt})}},c=n,l=e("2877"),p=Object(l["a"])(c,s,i,!1,null,null,null);a["default"]=p.exports}}]); +//# sourceMappingURL=chunk-2d0e4bf5.fac73388.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d0e4bf5.fac73388.js.map b/app/backend/dist/js/chunk-2d0e4bf5.fac73388.js.map new file mode 100644 index 0000000..f7747ce --- /dev/null +++ b/app/backend/dist/js/chunk-2d0e4bf5.fac73388.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/db-manage.vue","webpack:///src/views/db-manage.vue","webpack:///./src/views/db-manage.vue?9845","webpack:///./src/views/db-manage.vue?7e0e"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","class","active","tabs","import","on","$event","switch_tab","export","export_url","_e","import_from_file","staticRenderFns","name","data","jwt","props","methods","Object","formData","axios","headers","timeout","then","catch","created","component"],"mappings":"uHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkBC,MAAM,CAAC,GAAK,YAAY,CAACH,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACF,EAAG,KAAK,CAACE,YAAY,WAAW,CAACJ,EAAIM,GAAG,qBAAqBJ,EAAG,KAAK,CAACE,YAAY,iBAAiB,CAACF,EAAG,KAAK,CAACE,YAAY,YAAY,CAACF,EAAG,IAAI,CAACK,MAAM,CAAEC,OAAQR,EAAIS,KAAKC,QAASL,MAAM,CAAC,KAAO,KAAKM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOZ,EAAIa,WAAW,aAAa,CAACb,EAAIM,GAAG,uBAAuBJ,EAAG,KAAK,CAACE,YAAY,YAAY,CAACF,EAAG,IAAI,CAACK,MAAM,CAAEC,OAAQR,EAAIS,KAAKK,QAAST,MAAM,CAAC,KAAO,KAAKM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOZ,EAAIa,WAAW,aAAa,CAACb,EAAIM,GAAG,yBAA0BN,EAAIS,KAAKK,OAAQZ,EAAG,MAAM,CAACA,EAAG,SAAS,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAML,EAAIe,gBAAgBf,EAAIgB,KAAMhB,EAAIS,KAAKC,OAAQR,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACE,YAAY,oBAAoBC,MAAM,CAAC,IAAM,WAAW,CAACH,EAAG,QAAQ,CAACE,YAAY,eAAeC,MAAM,CAAC,KAAO,OAAO,GAAK,UAAUM,GAAG,CAAC,OAASX,EAAIiB,oBAAoBf,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,0CAA0CJ,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,sEAAsEN,EAAIgB,UAElqCE,EAAkB,G,qBC2BP,GACfC,iBACAC,OACA,OACAX,MAAA,qBACAY,SAGAC,SACAC,SACAV,uBACAW,mCAEA,aADA,QAOAP,6BACA,mBACAQ,mCACAC,oCACAC,SACA,qCACA,uBAIA,sBACA,0BAAAC,cACAC,SACA,eACA,yBAGAC,2BAGAC,mBACA,yBACA,4DCtEmV,I,YCO/UC,EAAY,eACd,EACAjC,EACAmB,GACA,EACA,KACA,KACA,MAIa,aAAAc,E","file":"js/chunk-2d0e4bf5.fac73388.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Manage database\")]),_c('ul',{staticClass:\"tab tab-block\"},[_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.import },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('import')}}},[_vm._v(\"Import database\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.export },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('export')}}},[_vm._v(\"Export database\")])])]),(_vm.tabs.export)?_c('div',[_c('iframe',{staticClass:\"frame-export\",attrs:{\"src\":_vm.export_url}})]):_vm._e(),(_vm.tabs.import)?_c('div',[_c('label',{staticClass:\"form-upload empty\",attrs:{\"for\":\"upload\"}},[_c('input',{staticClass:\"upload-field\",attrs:{\"type\":\"file\",\"id\":\"upload\"},on:{\"change\":_vm.import_from_file}}),_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"Drop or select a database to import.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"The database needs to be an export from a SpyGuard instance.\")])])]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./db-manage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./db-manage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./db-manage.vue?vue&type=template&id=70ca1b12&\"\nimport script from \"./db-manage.vue?vue&type=script&lang=js&\"\nexport * from \"./db-manage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d20faf8.c983e105.js b/app/backend/dist/js/chunk-2d20faf8.c983e105.js new file mode 100644 index 0000000..51e6f0e --- /dev/null +++ b/app/backend/dist/js/chunk-2d20faf8.c983e105.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d20faf8"],{b54c:function(t,e,a){"use strict";a.r(e);var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"backend-content",attrs:{id:"content"}},[e("div",{staticClass:"column col-8 col-xs-12"},[e("h3",{staticClass:"s-title"},[t._v("Manage watchers instances")]),e("ul",{staticClass:"tab tab-block"},[e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.addwatcher},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("addwatcher")}}},[t._v("Add watcher")])]),e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.instances},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("instances")}}},[t._v("Existing watchers")])])]),t.tabs.addwatcher?e("div",[e("div",{staticClass:"misp-form"},[e("label",{staticClass:"misp-label"},[t._v("Watcher name")]),e("span"),e("input",{directives:[{name:"model",rawName:"v-model",value:t.watcher.name,expression:"watcher.name"}],ref:"watcher_name",staticClass:"form-input",attrs:{type:"text",placeholder:"My incredible watcher",required:""},domProps:{value:t.watcher.name},on:{input:function(e){e.target.composing||t.$set(t.watcher,"name",e.target.value)}}}),e("label",{staticClass:"misp-label"},[t._v("Watcher URL")]),e("span"),e("input",{directives:[{name:"model",rawName:"v-model",value:t.watcher.url,expression:"watcher.url"}],ref:"watcher_url",staticClass:"form-input",attrs:{type:"text",placeholder:"https://url.of.my.watcher.com/watcher.json",required:""},domProps:{value:t.watcher.url},on:{input:function(e){e.target.composing||t.$set(t.watcher,"url",e.target.value)}}}),e("label",{staticClass:"misp-label"},[t._v("Watcher Type")]),e("span"),e("select",{directives:[{name:"model",rawName:"v-model",value:t.watcher.type,expression:"watcher.type"}],staticClass:"form-select width-full",attrs:{placeholder:"test"},on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.$set(t.watcher,"type",e.target.multiple?a:a[0])}}},[e("option",{attrs:{value:"iocs"}},[t._v("IOCs")]),e("option",{attrs:{value:"whitelist"}},[t._v("Whitelist")])])]),e("button",{staticClass:"btn-primary btn col-12",on:{click:function(e){return t.add_instance()}}},[t._v("Add watcher")]),t.added?e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-success"},[t._v(" ✓ Watcher added successfully. Redirecting to watchers in 2 seconds. ")])]):t._e(),t.error?e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-error"},[t._v(" ✗ Watcher not added. "+t._s(t.error)+" ")])]):t._e()]):t._e(),t.tabs.instances?e("div",{staticClass:"form-group"},[t.instances.length?e("div",[e("table",{staticClass:"table table-striped table-hover"},[t._m(0),e("tbody",t._l(t.instances,(function(a){return e("tr",{key:a.id},[e("td",[t._v(t._s(a.type.toUpperCase()))]),e("td",[t._v(t._s(a.name))]),e("td",[a.status?e("span",{staticClass:"instance-online"},[t._v("✓ ONLINE")]):e("span",{staticClass:"instance-offline"},[t._v("⚠ OFFLINE")])]),e("td",[e("button",{staticClass:"btn btn-sm",on:{click:function(e){return t.delete_instance(a)}}},[t._v("Delete")])])])})),0)])]):e("div",[e("div",{staticClass:"empty"},[t.loading?e("div",[t._m(1),e("p",{staticClass:"empty-subtitle"},[t._v("Testing and loading the watchers.")])]):e("div",[e("p",{staticClass:"empty-title h5"},[t._v("No watcher found.")]),e("p",{staticClass:"empty-subtitle"},[t._v("Do not hesitate to add a watcher.")])])])])]):t._e()])])},i=[function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("Type")]),e("th",[t._v("Name")]),e("th",[t._v("Status")]),e("th",[t._v("Action")])])])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"empty-title h5"},[e("span",{staticClass:"loading loading-lg"})])}],n=a("bc3a"),c=a.n(n),r={name:"managewatchers",data(){return{error:!1,loading:!1,added:!1,watcher:{name:"",url:"",type:"iocs"},instances:[],tabs:{addwatcher:!0,instances:!1},jwt:""}},props:{},methods:{add_instance:function(){this.added=!1,this.error=!1,this.watcher.name&&this.watcher.url&&this.watcher.type&&c.a.post("/api/watchers/add",{data:{instance:this.watcher}},{headers:{"X-Token":this.jwt}}).then(t=>{t.data.status?(this.added=!0,setTimeout(function(){this.switch_tab("instances"),this.watcher={name:"",url:""},this.added=!1}.bind(this),2e3)):this.error=t.data.message}).catch(t=>console.log(t))},delete_instance(t){c.a.get("/api/watchers/delete/"+t.id,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status&&(this.instances=this.instances.filter((function(e){return e!=t})))}).catch(t=>console.log(t))},get_watchers_instances(){this.loading=!0,this.instances=[],c.a.get("/api/watchers/get_all",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.results&&(this.instances=t.data.results),this.loading=!1}).catch(t=>console.log(t))},switch_tab:function(t){Object.keys(this.tabs).forEach(e=>{e==t?(this.tabs[e]=!0,"instances"==e&&this.get_watchers_instances()):this.tabs[e]=!1})},get_jwt(){c.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))}},created:function(){this.get_jwt()}},l=r,o=a("2877"),d=Object(o["a"])(l,s,i,!1,null,null,null);e["default"]=d.exports}}]); +//# sourceMappingURL=chunk-2d20faf8.c983e105.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d20faf8.c983e105.js.map b/app/backend/dist/js/chunk-2d20faf8.c983e105.js.map new file mode 100644 index 0000000..f23bf9d --- /dev/null +++ b/app/backend/dist/js/chunk-2d20faf8.c983e105.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/instance-watchers.vue","webpack:///src/views/instance-watchers.vue","webpack:///./src/views/instance-watchers.vue?9352","webpack:///./src/views/instance-watchers.vue?52d4"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","class","active","tabs","addwatcher","on","$event","switch_tab","instances","directives","name","rawName","value","watcher","expression","ref","domProps","target","composing","$set","url","type","$$selectedVal","Array","prototype","filter","call","options","o","selected","map","val","_value","multiple","add_instance","added","_e","error","_s","length","_m","_l","i","key","id","toUpperCase","status","delete_instance","loading","staticRenderFns","data","jwt","props","methods","axios","instance","headers","setTimeout","catch","timeout","then","get_watchers_instances","Object","get_jwt","created","component"],"mappings":"uHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkBC,MAAM,CAAC,GAAK,YAAY,CAACH,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACF,EAAG,KAAK,CAACE,YAAY,WAAW,CAACJ,EAAIM,GAAG,+BAA+BJ,EAAG,KAAK,CAACE,YAAY,iBAAiB,CAACF,EAAG,KAAK,CAACE,YAAY,YAAY,CAACF,EAAG,IAAI,CAACK,MAAM,CAAEC,OAAQR,EAAIS,KAAKC,YAAaL,MAAM,CAAC,KAAO,KAAKM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOZ,EAAIa,WAAW,iBAAiB,CAACb,EAAIM,GAAG,mBAAmBJ,EAAG,KAAK,CAACE,YAAY,YAAY,CAACF,EAAG,IAAI,CAACK,MAAM,CAAEC,OAAQR,EAAIS,KAAKK,WAAYT,MAAM,CAAC,KAAO,KAAKM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOZ,EAAIa,WAAW,gBAAgB,CAACb,EAAIM,GAAG,2BAA4BN,EAAIS,KAAKC,WAAYR,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,QAAQ,CAACE,YAAY,cAAc,CAACJ,EAAIM,GAAG,kBAAkBJ,EAAG,QAAQA,EAAG,QAAQ,CAACa,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOlB,EAAImB,QAAQH,KAAMI,WAAW,iBAAiBC,IAAI,eAAejB,YAAY,aAAaC,MAAM,CAAC,KAAO,OAAO,YAAc,wBAAwB,SAAW,IAAIiB,SAAS,CAAC,MAAStB,EAAImB,QAAQH,MAAOL,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOW,OAAOC,WAAiBxB,EAAIyB,KAAKzB,EAAImB,QAAS,OAAQP,EAAOW,OAAOL,WAAWhB,EAAG,QAAQ,CAACE,YAAY,cAAc,CAACJ,EAAIM,GAAG,iBAAiBJ,EAAG,QAAQA,EAAG,QAAQ,CAACa,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOlB,EAAImB,QAAQO,IAAKN,WAAW,gBAAgBC,IAAI,cAAcjB,YAAY,aAAaC,MAAM,CAAC,KAAO,OAAO,YAAc,6CAA6C,SAAW,IAAIiB,SAAS,CAAC,MAAStB,EAAImB,QAAQO,KAAMf,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOW,OAAOC,WAAiBxB,EAAIyB,KAAKzB,EAAImB,QAAS,MAAOP,EAAOW,OAAOL,WAAWhB,EAAG,QAAQ,CAACE,YAAY,cAAc,CAACJ,EAAIM,GAAG,kBAAkBJ,EAAG,QAAQA,EAAG,SAAS,CAACa,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOlB,EAAImB,QAAQQ,KAAMP,WAAW,iBAAiBhB,YAAY,yBAAyBC,MAAM,CAAC,YAAc,QAAQM,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAIgB,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKpB,EAAOW,OAAOU,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAOrC,EAAIyB,KAAKzB,EAAImB,QAAS,OAAQP,EAAOW,OAAOgB,SAAWX,EAAgBA,EAAc,OAAO,CAAC1B,EAAG,SAAS,CAACG,MAAM,CAAC,MAAQ,SAAS,CAACL,EAAIM,GAAG,UAAUJ,EAAG,SAAS,CAACG,MAAM,CAAC,MAAQ,cAAc,CAACL,EAAIM,GAAG,mBAAmBJ,EAAG,SAAS,CAACE,YAAY,yBAAyBO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOZ,EAAIwC,kBAAkB,CAACxC,EAAIM,GAAG,iBAAkBN,EAAIyC,MAAOvC,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACJ,EAAIM,GAAG,6EAA6EN,EAAI0C,KAAM1C,EAAI2C,MAAOzC,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACJ,EAAIM,GAAG,yBAAyBN,EAAI4C,GAAG5C,EAAI2C,OAAO,SAAS3C,EAAI0C,OAAO1C,EAAI0C,KAAM1C,EAAIS,KAAKK,UAAWZ,EAAG,MAAM,CAACE,YAAY,cAAc,CAAEJ,EAAIc,UAAU+B,OAAQ3C,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACE,YAAY,mCAAmC,CAACJ,EAAI8C,GAAG,GAAG5C,EAAG,QAAQF,EAAI+C,GAAI/C,EAAIc,WAAW,SAASkC,GAAG,OAAO9C,EAAG,KAAK,CAAC+C,IAAID,EAAEE,IAAI,CAAChD,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAI4C,GAAGI,EAAErB,KAAKwB,kBAAkBjD,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAI4C,GAAGI,EAAEhC,SAASd,EAAG,KAAK,CAAE8C,EAAEI,OAAQlD,EAAG,OAAO,CAACE,YAAY,mBAAmB,CAACJ,EAAIM,GAAG,cAAcJ,EAAG,OAAO,CAACE,YAAY,oBAAoB,CAACJ,EAAIM,GAAG,iBAAiBJ,EAAG,KAAK,CAACA,EAAG,SAAS,CAACE,YAAY,aAAaO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOZ,EAAIqD,gBAAgBL,MAAM,CAAChD,EAAIM,GAAG,mBAAkB,OAAOJ,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,YAAY,SAAS,CAAEJ,EAAIsD,QAASpD,EAAG,MAAM,CAACF,EAAI8C,GAAG,GAAG5C,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,yCAAyCJ,EAAG,MAAM,CAACA,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,uBAAuBJ,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,+CAA+CN,EAAI0C,UAErtHa,EAAkB,CAAC,WAAY,IAAIvD,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACF,EAAIM,GAAG,UAAUJ,EAAG,KAAK,CAACF,EAAIM,GAAG,UAAUJ,EAAG,KAAK,CAACF,EAAIM,GAAG,YAAYJ,EAAG,KAAK,CAACF,EAAIM,GAAG,iBAC1L,WAAY,IAAIN,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACF,EAAG,OAAO,CAACE,YAAY,2B,qBC+EjG,GACfY,sBACAwC,OACA,OACAb,SACAW,WACAb,SACAtB,SAAAH,QAAAU,OAAAC,aACAb,aACAL,MAAA,4BACAgD,SAGAC,SACAC,SACAnB,wBAEA,cACA,cACA,wDAEAoB,8BAAAJ,MAAAK,wBAAA,CAAAC,SAAA,+BACA,eACA,cACAC,sBACA,6BACA,cAAA/C,QAAAU,QACA,eACA,iBAEA,4BAGAsC,0BAGAX,mBAEAO,sCAAAK,YAAAH,SAAA,sBACAI,SACA,gBACA,oEAGAF,0BAEAG,yBAEA,gBACA,kBACAP,iCAAAK,YAAAH,SAAA,sBACAI,SACA,iBACA,+BAEA,kBAEAF,0BAEAnD,uBACAuD,mCACA,MACA,gBACA,+CAEA,mBAIAC,UACAT,0BAAAK,cACAC,SACA,eACA,yBAGAF,2BAGAM,mBACA,iBClK2V,I,YCOvVC,EAAY,eACd,EACAxE,EACAwD,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E","file":"js/chunk-2d20faf8.c983e105.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Manage watchers instances\")]),_c('ul',{staticClass:\"tab tab-block\"},[_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.addwatcher },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('addwatcher')}}},[_vm._v(\"Add watcher\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.instances },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('instances')}}},[_vm._v(\"Existing watchers\")])])]),(_vm.tabs.addwatcher)?_c('div',[_c('div',{staticClass:\"misp-form\"},[_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Watcher name\")]),_c('span'),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.watcher.name),expression:\"watcher.name\"}],ref:\"watcher_name\",staticClass:\"form-input\",attrs:{\"type\":\"text\",\"placeholder\":\"My incredible watcher\",\"required\":\"\"},domProps:{\"value\":(_vm.watcher.name)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.watcher, \"name\", $event.target.value)}}}),_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Watcher URL\")]),_c('span'),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.watcher.url),expression:\"watcher.url\"}],ref:\"watcher_url\",staticClass:\"form-input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://url.of.my.watcher.com/watcher.json\",\"required\":\"\"},domProps:{\"value\":(_vm.watcher.url)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.watcher, \"url\", $event.target.value)}}}),_c('label',{staticClass:\"misp-label\"},[_vm._v(\"Watcher Type\")]),_c('span'),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.watcher.type),expression:\"watcher.type\"}],staticClass:\"form-select width-full\",attrs:{\"placeholder\":\"test\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.watcher, \"type\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"iocs\"}},[_vm._v(\"IOCs\")]),_c('option',{attrs:{\"value\":\"whitelist\"}},[_vm._v(\"Whitelist\")])])]),_c('button',{staticClass:\"btn-primary btn col-12\",on:{\"click\":function($event){return _vm.add_instance()}}},[_vm._v(\"Add watcher\")]),(_vm.added)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-success\"},[_vm._v(\" ✓ Watcher added successfully. Redirecting to watchers in 2 seconds. \")])]):_vm._e(),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-error\"},[_vm._v(\" ✗ Watcher not added. \"+_vm._s(_vm.error)+\" \")])]):_vm._e()]):_vm._e(),(_vm.tabs.instances)?_c('div',{staticClass:\"form-group\"},[(_vm.instances.length)?_c('div',[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',_vm._l((_vm.instances),function(i){return _c('tr',{key:i.id},[_c('td',[_vm._v(_vm._s(i.type.toUpperCase()))]),_c('td',[_vm._v(_vm._s(i.name))]),_c('td',[(i.status)?_c('span',{staticClass:\"instance-online\"},[_vm._v(\"✓ ONLINE\")]):_c('span',{staticClass:\"instance-offline\"},[_vm._v(\"⚠ OFFLINE\")])]),_c('td',[_c('button',{staticClass:\"btn btn-sm\",on:{\"click\":function($event){return _vm.delete_instance(i)}}},[_vm._v(\"Delete\")])])])}),0)])]):_c('div',[_c('div',{staticClass:\"empty\"},[(_vm.loading)?_c('div',[_vm._m(1),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Testing and loading the watchers.\")])]):_c('div',[_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"No watcher found.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Do not hesitate to add a watcher.\")])])])])]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Type\")]),_c('th',[_vm._v(\"Name\")]),_c('th',[_vm._v(\"Status\")]),_c('th',[_vm._v(\"Action\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"empty-title h5\"},[_c('span',{staticClass:\"loading loading-lg\"})])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./instance-watchers.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./instance-watchers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./instance-watchers.vue?vue&type=template&id=aa45beee&\"\nimport script from \"./instance-watchers.vue?vue&type=script&lang=js&\"\nexport * from \"./instance-watchers.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js b/app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js new file mode 100644 index 0000000..b5665d3 --- /dev/null +++ b/app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d215cd3"],{c06f:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"backend-content",attrs:{id:"content"}},[e("div",{staticClass:"column col-8 col-xs-12"},[e("h3",{staticClass:"s-title"},[t._v("Manage whitelisted elements")]),e("ul",{staticClass:"tab tab-block"},[e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.bulk},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("bulk")}}},[t._v("Bulk elements import")])]),e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.file},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("file")}}},[t._v("Import from file")])]),e("li",{staticClass:"tab-item"},[e("a",{class:{active:t.tabs.export},attrs:{href:"#"},on:{click:function(e){return t.switch_tab("export")}}},[t._v("Export elements")])])]),t.tabs.export?e("div",[e("iframe",{staticClass:"frame-export",attrs:{src:t.export_url}})]):t._e(),t.tabs.file?e("div",[e("label",{staticClass:"form-upload empty",attrs:{for:"upload"}},[e("input",{staticClass:"upload-field",attrs:{type:"file",id:"upload"},on:{change:t.import_from_file}}),e("p",{staticClass:"empty-title h5"},[t._v("Drop or select a file to import.")]),e("p",{staticClass:"empty-subtitle"},[t._v("The file needs to be an whitelist file export from a SpyGuard instance.")])])]):t._e(),t.tabs.bulk?e("div",[e("div",{staticClass:"form-group"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.type,expression:"type"}],staticClass:"form-select width-full",attrs:{placeholder:"test"},on:{change:function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.type=e.target.multiple?s:s[0]}}},[e("option",{attrs:{value:""}},[t._v("Elements Type")]),e("option",{attrs:{value:"unknown"}},[t._v("Multiple (regex parsing)")]),t._l(t.types,(function(s){return e("option",{key:s.type,domProps:{value:s.type}},[t._v(" "+t._s(s.name)+" ")])}))],2)]),e("div",{staticClass:"form-group"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.elements,expression:"elements"}],staticClass:"form-input",attrs:{id:"input-example-3",placeholder:"Paste the elements to be whitelisted here",rows:"15"},domProps:{value:t.elements},on:{input:function(e){e.target.composing||(t.elements=e.target.value)}}})]),e("div",{staticClass:"form-group"},[e("button",{staticClass:"btn-primary btn col-12",on:{click:function(e){return t.import_from_bulk()}}},[t._v("Whitelist elements")])])]):t._e(),t.imported.length>0?e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-success"},[t._v(" ✓ "+t._s(t.imported.length)+" IOC"),t.errors.length>1?e("span",[t._v("s")]):t._e(),t._v(" imported successfully. ")])]):t._e(),t.errors.length>0?e("div",[e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-error"},[t._v(" ✗ "+t._s(t.errors.length)+" IOC"),t.errors.length>1?e("span",[t._v("s")]):t._e(),t._v(" not imported, see details below. ")])]),e("div",{staticClass:"form-group"},[e("table",{staticClass:"table table-striped table-hover"},[t._m(0),e("tbody",t._l(t.errors,(function(s){return e("tr",{key:s.element},[e("td",[t._v(t._s(s.element))]),e("td",[t._v(t._s(s.message))])])})),0)])])]):1==t.type_tag_error?e("div",[t._m(1),t._m(2)]):t._e()])])},i=[function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("Element")]),e("th",[t._v("Importation error")])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"form-group"},[e("div",{staticClass:"toast toast-error"},[t._v(" ✗ IOC(s) not imported, see details below. ")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"form-group"},[e("div",{staticClass:"empty"},[e("p",{staticClass:"empty-title h5"},[t._v("Please select a tag and a type.")]),e("p",{staticClass:"empty-subtitle"},[t._v('If different IOCs types, select "Unknown (regex parsing)".')])])])}],r=(s("14d9"),s("bc3a")),o=s.n(r),l={name:"manageiocs",data(){return{type:"",elements:"",types:[],errors:[],imported:[],wrong_wh_file:!1,tabs:{bulk:!0,file:!1,export:!1},jwt:"",export_url:""}},props:{},methods:{import_from_bulk:function(){this.errors=[],this.imported=[],""!=this.type?(this.elements.match(/[^\r\n]+/g).forEach(t=>{this.import_element(this.type,t)}),this.elements=""):this.type_tag_error=!0},import_element:function(t,e){""!=e&&"#"!=e.slice(0,1)&&o.a.get(`/api/whitelist/add/${t.trim()}/${e.trim()}`,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.status?this.imported.push(t.data):t.data.message&&this.errors.push(t.data)}).catch(t=>console.log(t))},enrich_types:function(){o.a.get("/api/whitelist/get/types",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.types&&(this.types=t.data.types)}).catch(t=>console.log(t))},switch_tab:function(t){this.errors=[],this.imported=[],Object.keys(this.tabs).forEach(e=>{this.tabs[e]=e==t})},import_from_file:function(t){this.errors=[],this.imported=[];const e=t.target.files[0],s=new FileReader;s.onload=t=>this.$emit("load",t.target.result),s.onload=()=>{try{JSON.parse(s.result).elements.forEach(t=>{this.import_element(t["type"],t["element"])})}catch(t){this.wrong_wh_file=!0}},s.readAsText(e)},async get_jwt(){await o.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))}},created:function(){this.get_jwt().then(()=>{this.enrich_types(),this.export_url="/api/whitelist/export?token="+this.jwt})}},n=l,c=s("2877"),p=Object(c["a"])(n,a,i,!1,null,null,null);e["default"]=p.exports}}]); +//# sourceMappingURL=chunk-2d215cd3.f0d8ba06.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js.map b/app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js.map new file mode 100644 index 0000000..b880702 --- /dev/null +++ b/app/backend/dist/js/chunk-2d215cd3.f0d8ba06.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/whitelist-manage.vue","webpack:///src/views/whitelist-manage.vue","webpack:///./src/views/whitelist-manage.vue?21b2","webpack:///./src/views/whitelist-manage.vue?a1c1"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","class","active","tabs","bulk","on","$event","switch_tab","file","export","export_url","_e","import_from_file","directives","name","rawName","value","type","expression","$$selectedVal","Array","prototype","filter","call","target","options","o","selected","map","val","_value","multiple","_l","types","t","key","domProps","_s","elements","composing","import_from_bulk","imported","length","errors","_m","e","element","message","type_tag_error","staticRenderFns","data","wrong_wh_file","jwt","props","methods","import_element","axios","timeout","headers","catch","enrich_types","then","Object","reader","JSON","created","component"],"mappings":"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","file":"js/chunk-2d215cd3.f0d8ba06.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Manage whitelisted elements\")]),_c('ul',{staticClass:\"tab tab-block\"},[_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.bulk },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('bulk')}}},[_vm._v(\"Bulk elements import\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.file },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('file')}}},[_vm._v(\"Import from file\")])]),_c('li',{staticClass:\"tab-item\"},[_c('a',{class:{ active: _vm.tabs.export },attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.switch_tab('export')}}},[_vm._v(\"Export elements\")])])]),(_vm.tabs.export)?_c('div',[_c('iframe',{staticClass:\"frame-export\",attrs:{\"src\":_vm.export_url}})]):_vm._e(),(_vm.tabs.file)?_c('div',[_c('label',{staticClass:\"form-upload empty\",attrs:{\"for\":\"upload\"}},[_c('input',{staticClass:\"upload-field\",attrs:{\"type\":\"file\",\"id\":\"upload\"},on:{\"change\":_vm.import_from_file}}),_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"Drop or select a file to import.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"The file needs to be an whitelist file export from a SpyGuard instance.\")])])]):_vm._e(),(_vm.tabs.bulk)?_c('div',[_c('div',{staticClass:\"form-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],staticClass:\"form-select width-full\",attrs:{\"placeholder\":\"test\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.type=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"Elements Type\")]),_c('option',{attrs:{\"value\":\"unknown\"}},[_vm._v(\"Multiple (regex parsing)\")]),_vm._l((_vm.types),function(t){return _c('option',{key:t.type,domProps:{\"value\":t.type}},[_vm._v(\" \"+_vm._s(t.name)+\" \")])})],2)]),_c('div',{staticClass:\"form-group\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.elements),expression:\"elements\"}],staticClass:\"form-input\",attrs:{\"id\":\"input-example-3\",\"placeholder\":\"Paste the elements to be whitelisted here\",\"rows\":\"15\"},domProps:{\"value\":(_vm.elements)},on:{\"input\":function($event){if($event.target.composing)return;_vm.elements=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn-primary btn col-12\",on:{\"click\":function($event){return _vm.import_from_bulk()}}},[_vm._v(\"Whitelist elements\")])])]):_vm._e(),(_vm.imported.length>0)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-success\"},[_vm._v(\" ✓ \"+_vm._s(_vm.imported.length)+\" IOC\"),(_vm.errors.length>1)?_c('span',[_vm._v(\"s\")]):_vm._e(),_vm._v(\" imported successfully. \")])]):_vm._e(),(_vm.errors.length>0)?_c('div',[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-error\"},[_vm._v(\" ✗ \"+_vm._s(_vm.errors.length)+\" IOC\"),(_vm.errors.length>1)?_c('span',[_vm._v(\"s\")]):_vm._e(),_vm._v(\" not imported, see details below. \")])]),_c('div',{staticClass:\"form-group\"},[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',_vm._l((_vm.errors),function(e){return _c('tr',{key:e.element},[_c('td',[_vm._v(_vm._s(e.element))]),_c('td',[_vm._v(_vm._s(e.message))])])}),0)])])]):(_vm.type_tag_error==true)?_c('div',[_vm._m(1),_vm._m(2)]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Element\")]),_c('th',[_vm._v(\"Importation error\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"toast toast-error\"},[_vm._v(\" ✗ IOC(s) not imported, see details below. \")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"empty\"},[_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"Please select a tag and a type.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"If different IOCs types, select \\\"Unknown (regex parsing)\\\".\")])])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./whitelist-manage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./whitelist-manage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./whitelist-manage.vue?vue&type=template&id=cb356830&\"\nimport script from \"./whitelist-manage.vue?vue&type=script&lang=js&\"\nexport * from \"./whitelist-manage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js b/app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js new file mode 100644 index 0000000..fa0e083 --- /dev/null +++ b/app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d2245cf"],{e08f:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"backend-content",attrs:{id:"content"}},[e("div",{staticClass:"column col-12 col-xs-12"},[e("h3",{staticClass:"s-title"},[t._v("Search whitelisted elements")]),e("div",{staticClass:"form-group"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.elements,expression:"elements"}],staticClass:"form-input",attrs:{id:"input-example-3",placeholder:"Paste the elements here",rows:"3"},domProps:{value:t.elements},on:{input:function(e){e.target.composing||(t.elements=e.target.value)}}})]),e("div",{staticClass:"form-group"},[e("button",{staticClass:"btn btn-primary col-12",on:{click:function(e){return t.search_elements()}}},[t._v("Search")])]),t.results.length>0?e("div",{staticClass:"form-group"},[e("table",{staticClass:"table table-striped table-hover"},[t._m(0),e("tbody",t._l(t.results,(function(s){return e("tr",{key:s.element},[e("td",[t._v(t._s(s.element))]),e("td",[t._v(t._s(s.type))]),e("td",[e("button",{staticClass:"btn btn-sm",on:{click:function(e){return t.remove(s)}}},[t._v("Delete")])])])})),0)])]):0==t.first_search?e("div",[e("div",{staticClass:"empty"},[e("p",{staticClass:"empty-title h5"},[t._v("Element"),this.elements.match(/[^\r\n]+/g).length>1?e("span",[t._v("s")]):t._e(),t._v(" not found.")]),e("p",{staticClass:"empty-subtitle"},[t._v("Try wildcard search to expend your search.")])])]):t._e()])])},n=[function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("Element")]),e("th",[t._v("Element type")]),e("th")])])}],l=s("bc3a"),r=s.n(l),i={name:"elements-search",data(){return{results:[],first_search:!0,jwt:""}},props:{},methods:{search_elements:function(){return this.results=[],this.first_search=!1,this.elements.match(/[^\r\n]+/g).forEach(t=>{r.a.get("/api/whitelist/search/"+t.trim(),{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.results.length>0&&(this.results=[].concat(this.results,t.data.results))}).catch(t=>console.log(t))}),!0},remove:function(t){r.a.get("/api/whitelist/delete/"+t.id,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(e=>{e.data.status&&(this.results=this.results.filter((function(e){return e!=t})))}).catch(t=>console.log(t))},async get_jwt(){await r.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))}},created:function(){this.get_jwt()}},c=i,o=s("2877"),h=Object(o["a"])(c,a,n,!1,null,null,null);e["default"]=h.exports}}]); +//# sourceMappingURL=chunk-2d2245cf.ea4d33bd.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js.map b/app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js.map new file mode 100644 index 0000000..9f768a0 --- /dev/null +++ b/app/backend/dist/js/chunk-2d2245cf.ea4d33bd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/whitelist-search.vue","webpack:///src/views/whitelist-search.vue","webpack:///./src/views/whitelist-search.vue?52ac","webpack:///./src/views/whitelist-search.vue?d43f"],"names":["render","_vm","this","_c","_self","staticClass","attrs","_v","directives","name","rawName","value","elements","expression","domProps","on","$event","target","composing","search_elements","results","length","_m","_l","r","key","element","_s","type","remove","first_search","match","_e","staticRenderFns","data","jwt","props","methods","axios","timeout","headers","catch","then","created","component"],"mappings":"uHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkBC,MAAM,CAAC,GAAK,YAAY,CAACH,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAACF,EAAG,KAAK,CAACE,YAAY,WAAW,CAACJ,EAAIM,GAAG,iCAAiCJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,WAAW,CAACK,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOV,EAAIW,SAAUC,WAAW,aAAaR,YAAY,aAAaC,MAAM,CAAC,GAAK,kBAAkB,YAAc,0BAA0B,KAAO,KAAKQ,SAAS,CAAC,MAASb,EAAIW,UAAWG,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOC,OAAOC,YAAiBjB,EAAIW,SAASI,EAAOC,OAAON,aAAYR,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,SAAS,CAACE,YAAY,yBAAyBU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIkB,qBAAqB,CAAClB,EAAIM,GAAG,cAAeN,EAAImB,QAAQC,OAAO,EAAIlB,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACE,YAAY,mCAAmC,CAACJ,EAAIqB,GAAG,GAAGnB,EAAG,QAAQF,EAAIsB,GAAItB,EAAImB,SAAS,SAASI,GAAG,OAAOrB,EAAG,KAAK,CAACsB,IAAID,EAAEE,SAAS,CAACvB,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAI0B,GAAGH,EAAEE,YAAYvB,EAAG,KAAK,CAACF,EAAIM,GAAGN,EAAI0B,GAAGH,EAAEI,SAASzB,EAAG,KAAK,CAACA,EAAG,SAAS,CAACE,YAAY,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAI4B,OAAOL,MAAM,CAACvB,EAAIM,GAAG,mBAAkB,OAA0B,GAAlBN,EAAI6B,aAAqB3B,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,WAAYL,KAAKU,SAASmB,MAAM,aAAaV,OAAO,EAAGlB,EAAG,OAAO,CAACF,EAAIM,GAAG,OAAON,EAAI+B,KAAK/B,EAAIM,GAAG,iBAAiBJ,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACJ,EAAIM,GAAG,oDAAoDN,EAAI+B,UAEzgDC,EAAkB,CAAC,WAAY,IAAIhC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACF,EAAIM,GAAG,aAAaJ,EAAG,KAAK,CAACF,EAAIM,GAAG,kBAAkBJ,EAAG,Y,qBCuC/I,GACfM,uBACAyB,OACA,OACAd,WACAU,gBACAK,SAGAC,SACAC,SACAlB,2BAcA,OAbA,gBACA,qBACA,6CACAmB,2CACAC,YACAC,SAAA,sBACA,SACA,0BACA,uDAGAC,4BAEA,GAEAZ,mBACAS,uCACAC,YACAC,SAAA,sBACA,SACA,gBACA,gEAGAC,0BAEA,sBACA,0BAAAF,cACAG,SACA,eACA,yBAGAD,2BAGAE,mBACA,iBC1F0V,I,YCOtVC,EAAY,eACd,EACA5C,EACAiC,GACA,EACA,KACA,KACA,MAIa,aAAAW,E","file":"js/chunk-2d2245cf.ea4d33bd.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"column col-12 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Search whitelisted elements\")]),_c('div',{staticClass:\"form-group\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.elements),expression:\"elements\"}],staticClass:\"form-input\",attrs:{\"id\":\"input-example-3\",\"placeholder\":\"Paste the elements here\",\"rows\":\"3\"},domProps:{\"value\":(_vm.elements)},on:{\"input\":function($event){if($event.target.composing)return;_vm.elements=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary col-12\",on:{\"click\":function($event){return _vm.search_elements()}}},[_vm._v(\"Search\")])]),(_vm.results.length>0 )?_c('div',{staticClass:\"form-group\"},[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',_vm._l((_vm.results),function(r){return _c('tr',{key:r.element},[_c('td',[_vm._v(_vm._s(r.element))]),_c('td',[_vm._v(_vm._s(r.type))]),_c('td',[_c('button',{staticClass:\"btn btn-sm\",on:{\"click\":function($event){return _vm.remove(r)}}},[_vm._v(\"Delete\")])])])}),0)])]):(_vm.first_search==false)?_c('div',[_c('div',{staticClass:\"empty\"},[_c('p',{staticClass:\"empty-title h5\"},[_vm._v(\"Element\"),(this.elements.match(/[^\\r\\n]+/g).length>1)?_c('span',[_vm._v(\"s\")]):_vm._e(),_vm._v(\" not found.\")]),_c('p',{staticClass:\"empty-subtitle\"},[_vm._v(\"Try wildcard search to expend your search.\")])])]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Element\")]),_c('th',[_vm._v(\"Element type\")]),_c('th')])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./whitelist-search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./whitelist-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./whitelist-search.vue?vue&type=template&id=f3d90054&\"\nimport script from \"./whitelist-search.vue?vue&type=script&lang=js&\"\nexport * from \"./whitelist-search.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d22d432.91ebbe55.js b/app/backend/dist/js/chunk-2d22d432.91ebbe55.js new file mode 100644 index 0000000..739f58c --- /dev/null +++ b/app/backend/dist/js/chunk-2d22d432.91ebbe55.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d22d432"],{f76a:function(s,i,t){"use strict";t.r(i);var a=function(){var s=this,i=s._self._c;return i("div",{staticClass:"backend-content",attrs:{id:"content"}},[i("div",{class:{"alert-toaster-visible":s.toaster.show,"alert-toaster-hidden":!s.toaster.show}},[s._v(s._s(s.toaster.message))]),i("div",{staticClass:"column col-8 col-xs-12"},[i("h3",{staticClass:"s-title"},[s._v("Detection engine configuration")]),i("h5",{staticClass:"s-subtitle"},[s._v("Detection methods")]),i("div",{staticClass:"form-group"},[i("label",{staticClass:"form-switch"},[i("input",{directives:[{name:"model",rawName:"v-model",value:s.config.analysis.heuristics,expression:"config.analysis.heuristics"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(s.config.analysis.heuristics)?s._i(s.config.analysis.heuristics,null)>-1:s.config.analysis.heuristics},on:{change:[function(i){var t=s.config.analysis.heuristics,a=i.target,e=!!a.checked;if(Array.isArray(t)){var c=null,n=s._i(t,c);a.checked?n<0&&s.$set(s.config.analysis,"heuristics",t.concat([c])):n>-1&&s.$set(s.config.analysis,"heuristics",t.slice(0,n).concat(t.slice(n+1)))}else s.$set(s.config.analysis,"heuristics",e)},function(i){return s.local_analysis("analysis","heuristics")}]}}),i("i",{staticClass:"form-icon"}),s._v(" Use heuristic detection for suspect behaviour. ")]),i("label",{staticClass:"form-switch"},[i("input",{directives:[{name:"model",rawName:"v-model",value:s.config.analysis.iocs,expression:"config.analysis.iocs"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(s.config.analysis.iocs)?s._i(s.config.analysis.iocs,null)>-1:s.config.analysis.iocs},on:{change:[function(i){var t=s.config.analysis.iocs,a=i.target,e=!!a.checked;if(Array.isArray(t)){var c=null,n=s._i(t,c);a.checked?n<0&&s.$set(s.config.analysis,"iocs",t.concat([c])):n>-1&&s.$set(s.config.analysis,"iocs",t.slice(0,n).concat(t.slice(n+1)))}else s.$set(s.config.analysis,"iocs",e)},function(i){return s.local_analysis("analysis","iocs")}]}}),i("i",{staticClass:"form-icon"}),s._v(" Use Indicator of Compromise (IoC) based detection. ")]),i("label",{staticClass:"form-switch"},[i("input",{directives:[{name:"model",rawName:"v-model",value:s.config.analysis.whitelist,expression:"config.analysis.whitelist"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(s.config.analysis.whitelist)?s._i(s.config.analysis.whitelist,null)>-1:s.config.analysis.whitelist},on:{change:[function(i){var t=s.config.analysis.whitelist,a=i.target,e=!!a.checked;if(Array.isArray(t)){var c=null,n=s._i(t,c);a.checked?n<0&&s.$set(s.config.analysis,"whitelist",t.concat([c])):n>-1&&s.$set(s.config.analysis,"whitelist",t.slice(0,n).concat(t.slice(n+1)))}else s.$set(s.config.analysis,"whitelist",e)},function(i){return s.local_analysis("analysis","whitelist")}]}}),i("i",{staticClass:"form-icon"}),s._v(" Use whitelist to prevent false positives. ")]),i("label",{staticClass:"form-switch"},[i("input",{directives:[{name:"model",rawName:"v-model",value:s.config.analysis.active,expression:"config.analysis.active"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(s.config.analysis.active)?s._i(s.config.analysis.active,null)>-1:s.config.analysis.active},on:{change:[function(i){var t=s.config.analysis.active,a=i.target,e=!!a.checked;if(Array.isArray(t)){var c=null,n=s._i(t,c);a.checked?n<0&&s.$set(s.config.analysis,"active",t.concat([c])):n>-1&&s.$set(s.config.analysis,"active",t.slice(0,n).concat(t.slice(n+1)))}else s.$set(s.config.analysis,"active",e)},function(i){return s.local_analysis("analysis","active")}]}}),i("i",{staticClass:"form-icon"}),s._v(" Use active analysis (Dig, Whois, OpenSSL...). ")]),i("label",{staticClass:"form-switch"},[i("input",{attrs:{type:"checkbox"},domProps:{checked:s.config.analysis.indicators_types.includes("all")},on:{change:function(i){return s.switch_iocs_types("all")}}}),i("i",{staticClass:"form-icon"}),s._v(" Detect threats by using all IOCs. ")])]),s.config.analysis.indicators_types.includes("all")?s._e():i("div",{staticClass:"form-group"},[i("h5",{staticClass:"s-subtitle"},[s._v("IOCs categories")]),s._l(s.iocs_tags,(function(t){return i("label",{key:t,staticClass:"form-switch"},[i("input",{attrs:{type:"checkbox"},domProps:{checked:s.config.analysis.indicators_types.includes(t)},on:{change:function(i){return s.switch_iocs_types(t)}}}),i("i",{staticClass:"form-icon"}),s._v(" Use IOCs related to "+s._s(t.toUpperCase())+" threat. ")])}))],2)])])},e=[],c=t("bc3a"),n=t.n(c),o={name:"analysis-engine",data(){return{config:{},check_certificate:!1,certificate:"",iocs_tags:[],toaster:{show:!1,message:"",type:null}}},props:{},methods:{switch_config:function(s,i){n.a.get(`/api/config/switch/${s}/${i}`,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.status&&("Key switched to true"==t.data.message?(this.toaster={show:!0,message:"Configuration updated",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3),this.config[s][i]=!0):"Key switched to false"==t.data.message?(this.toaster={show:!0,message:"Configuration updated",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3),this.config[s][i]=!1):(this.toaster={show:!0,message:"The key doesn't exist",type:"error"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3)))}).catch(s=>console.log(s))},local_analysis:function(s,i){this.switch_config(s,i),0!=this.config.analysis.remote&&this.switch_config("analysis","remote")},load_config:function(){n.a.get("/api/config/list",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{s.data&&(this.config=s.data,this.config.backend.password="",console.log(this.config.analysis.indicators_types))}).catch(s=>console.log(s))},async get_jwt(){await n.a.get("/api/get-token",{timeout:1e4}).then(s=>{s.data.token&&(this.jwt=s.data.token)}).catch(s=>console.log(s))},get_iocs_tags:function(){n.a.get("/api/ioc/get/tags",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{s.data.tags&&(this.iocs_tags=s.data.tags)}).catch(s=>console.log(s))},switch_iocs_types:function(s){this.config.analysis.indicators_types.includes(s)?n.a.get("/api/config/ioc-type/delete/"+s,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{s.data.status&&this.load_config()}).catch(s=>console.log(s)):(n.a.get("/api/config/ioc-type/add/"+s,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{s.data.status&&this.load_config()}).catch(s=>console.log(s)),this.load_config())}},created:function(){this.get_jwt().then(()=>{this.load_config(),this.get_iocs_tags()})}},l=o,r=t("2877"),h=Object(r["a"])(l,a,e,!1,null,null,null);i["default"]=h.exports}}]); +//# sourceMappingURL=chunk-2d22d432.91ebbe55.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-2d22d432.91ebbe55.js.map b/app/backend/dist/js/chunk-2d22d432.91ebbe55.js.map new file mode 100644 index 0000000..c70adaf --- /dev/null +++ b/app/backend/dist/js/chunk-2d22d432.91ebbe55.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/analysis-engine.vue","webpack:///src/views/analysis-engine.vue","webpack:///./src/views/analysis-engine.vue?a0b6","webpack:///./src/views/analysis-engine.vue?058c"],"names":["render","_vm","this","_c","_self","staticClass","attrs","class","toaster","show","_v","_s","message","directives","name","rawName","value","config","analysis","heuristics","expression","domProps","Array","isArray","_i","on","$event","$$a","$$el","target","$$c","checked","$$v","$$i","$set","concat","slice","local_analysis","iocs","whitelist","active","indicators_types","includes","switch_iocs_types","_e","_l","iocs_tags","tag","key","toUpperCase","staticRenderFns","data","check_certificate","certificate","type","props","methods","switch_config","axios","timeout","headers","setTimeout","catch","load_config","console","then","get_iocs_tags","created","component"],"mappings":"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","file":"js/chunk-2d22d432.91ebbe55.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{class:{ 'alert-toaster-visible' : _vm.toaster.show, 'alert-toaster-hidden' : !_vm.toaster.show }},[_vm._v(_vm._s(_vm.toaster.message))]),_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Detection engine configuration\")]),_c('h5',{staticClass:\"s-subtitle\"},[_vm._v(\"Detection methods\")]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.analysis.heuristics),expression:\"config.analysis.heuristics\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.analysis.heuristics)?_vm._i(_vm.config.analysis.heuristics,null)>-1:(_vm.config.analysis.heuristics)},on:{\"change\":[function($event){var $$a=_vm.config.analysis.heuristics,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.analysis, \"heuristics\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.analysis, \"heuristics\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.analysis, \"heuristics\", $$c)}},function($event){return _vm.local_analysis('analysis', 'heuristics')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use heuristic detection for suspect behaviour. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.analysis.iocs),expression:\"config.analysis.iocs\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.analysis.iocs)?_vm._i(_vm.config.analysis.iocs,null)>-1:(_vm.config.analysis.iocs)},on:{\"change\":[function($event){var $$a=_vm.config.analysis.iocs,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.analysis, \"iocs\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.analysis, \"iocs\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.analysis, \"iocs\", $$c)}},function($event){return _vm.local_analysis('analysis', 'iocs')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use Indicator of Compromise (IoC) based detection. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.analysis.whitelist),expression:\"config.analysis.whitelist\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.analysis.whitelist)?_vm._i(_vm.config.analysis.whitelist,null)>-1:(_vm.config.analysis.whitelist)},on:{\"change\":[function($event){var $$a=_vm.config.analysis.whitelist,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.analysis, \"whitelist\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.analysis, \"whitelist\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.analysis, \"whitelist\", $$c)}},function($event){return _vm.local_analysis('analysis', 'whitelist')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use whitelist to prevent false positives. \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.config.analysis.active),expression:\"config.analysis.active\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.config.analysis.active)?_vm._i(_vm.config.analysis.active,null)>-1:(_vm.config.analysis.active)},on:{\"change\":[function($event){var $$a=_vm.config.analysis.active,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.config.analysis, \"active\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.config.analysis, \"active\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.config.analysis, \"active\", $$c)}},function($event){return _vm.local_analysis('analysis', 'active')}]}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use active analysis (Dig, Whois, OpenSSL...). \")]),_c('label',{staticClass:\"form-switch\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.config.analysis.indicators_types.includes('all')},on:{\"change\":function($event){return _vm.switch_iocs_types('all')}}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Detect threats by using all IOCs. \")])]),(!_vm.config.analysis.indicators_types.includes('all'))?_c('div',{staticClass:\"form-group\"},[_c('h5',{staticClass:\"s-subtitle\"},[_vm._v(\"IOCs categories\")]),_vm._l((_vm.iocs_tags),function(tag){return _c('label',{key:tag,staticClass:\"form-switch\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.config.analysis.indicators_types.includes(tag)},on:{\"change\":function($event){return _vm.switch_iocs_types(tag)}}}),_c('i',{staticClass:\"form-icon\"}),_vm._v(\" Use IOCs related to \"+_vm._s(tag.toUpperCase())+\" threat. \")])})],2):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./analysis-engine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./analysis-engine.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./analysis-engine.vue?vue&type=template&id=53a9fe9e&\"\nimport script from \"./analysis-engine.vue?vue&type=script&lang=js&\"\nexport * from \"./analysis-engine.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-3c0d118e.e3f2944c.js b/app/backend/dist/js/chunk-3c0d118e.e3f2944c.js new file mode 100644 index 0000000..9a0178e --- /dev/null +++ b/app/backend/dist/js/chunk-3c0d118e.e3f2944c.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3c0d118e"],{"42e0":function(t,e,s){t.exports=s.p+"img/network.33d31f9d.png"},"7e11":function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"backend-content",attrs:{id:"content"}},[e("div",{class:{"alert-toaster-visible":t.toaster.show,"alert-toaster-hidden":!t.toaster.show}},[t._v(t._s(t.toaster.message))]),e("div",{staticClass:"column col-8 col-xs-12"},[e("h3",{staticClass:"s-title"},[t._v("Network configuration")]),e("h5",{staticClass:"s-subtitle"},[t._v("Interfaces configuration")]),e("img",{attrs:{src:s("42e0"),id:"network-thumbnail"}}),e("div",{staticClass:"container interfaces-container"},[e("div",{staticClass:"columns"},[e("div",{staticClass:"column col-6"},[e("span",{staticClass:"interface-label"},[t._v("Wireless AP interface")]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.iface_in,expression:"iface_in"}],staticClass:"form-select width-full",on:{change:[function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.iface_in=e.target.multiple?s:s[0]},function(e){return t.change_interface("in",t.iface_in)}]}},t._l(t.config.ifaces_in,(function(s){return e("option",{key:s,domProps:{value:s}},[t._v(" "+t._s(s.toUpperCase())+" ")])})),0)]),e("div",{staticClass:"column col-6"},[e("span",{staticClass:"interface-label"},[t._v("Internet link interface")]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.iface_out,expression:"iface_out"}],staticClass:"form-select width-full",on:{change:[function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.iface_out=e.target.multiple?s:s[0]},function(e){return t.change_interface("out",t.iface_out)}]}},t._l(t.config.ifaces_out,(function(s){return e("option",{key:s,domProps:{value:s}},[t._v(" "+t._s(s.toUpperCase())+" ")])})),0)])])]),e("h5",{staticClass:"s-subtitle"},[t._v("Edit SSIDs names")]),e("div",{staticClass:"form-group"},[e("table",{staticClass:"table table-striped table-hover"},[t._m(0),e("tbody",[t._l(t.config.network.ssids,(function(s){return e("tr",{key:s},[e("td",[t._v(t._s(s))]),e("td",[e("button",{staticClass:"btn btn-sm",on:{click:function(e){return t.delete_ssid(s)}}},[t._v("Delete")])])])})),e("tr",[e("td",[e("input",{directives:[{name:"model",rawName:"v-model",value:t.ssid,expression:"ssid"}],staticClass:"form-input",attrs:{type:"text",placeholder:"SSID name"},domProps:{value:t.ssid},on:{input:function(e){e.target.composing||(t.ssid=e.target.value)}}})]),e("td",[e("button",{staticClass:"btn btn-sm",on:{click:function(e){return t.add_ssid()}}},[t._v("Add")])])])],2)])])])])},n=[function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("Network name")]),e("th",[t._v("Action")])])])}],a=(s("14d9"),s("bc3a")),o=s.n(a),c={name:"manageinterface",data(){return{config:{},ssid:"",iface_in:"",toaster:{show:!1,message:"",type:null}}},props:{},methods:{async get_jwt(){await o.a.get("/api/get-token",{timeout:1e4}).then(t=>{t.data.token&&(this.jwt=t.data.token)}).catch(t=>console.log(t))},load_config:function(){o.a.get("/api/config/list",{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data&&(this.config=t.data,this.iface_in=this.config.network.in,this.iface_out=this.config.network.out,console.log(this.iface_in))}).catch(t=>console.log(t))},delete_ssid:function(t){var e=this.config.network.ssids.indexOf(t);this.config.network.ssids.splice(e,1),this.update_ssids()},add_ssid:function(){this.config.network.ssids.push(this.ssid),this.ssid="",this.update_ssids()},update_ssids:function(){o.a.get("/api/config/edit/network/ssids/"+this.config.network.ssids.join("|"),{timeout:1e4,headers:{"X-Token":this.jwt}}).then(t=>{t.data.status&&(this.toaster={show:!0,message:"Configuration updated",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3))}).catch(t=>console.log(t))},change_interface:function(t,e){o.a.get(`/api/config/edit/network/${t}/${e}`,{timeout:1e4,headers:{"X-Token":this.jwt}}).then(s=>{this.toaster={show:!0,message:"Configuration updated",type:"success"},setTimeout(function(){this.toaster={show:!1}}.bind(this),1e3),s.data.status&&(this.config.network[t]=e)}).catch(t=>console.log(t))}},created:function(){this.get_jwt().then(()=>{this.load_config()})}},r=c,l=s("2877"),u=Object(l["a"])(r,i,n,!1,null,null,null);e["default"]=u.exports}}]); +//# sourceMappingURL=chunk-3c0d118e.e3f2944c.js.map \ No newline at end of file diff --git a/app/backend/dist/js/chunk-3c0d118e.e3f2944c.js.map b/app/backend/dist/js/chunk-3c0d118e.e3f2944c.js.map new file mode 100644 index 0000000..88a298b --- /dev/null +++ b/app/backend/dist/js/chunk-3c0d118e.e3f2944c.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/assets/network.png","webpack:///./src/views/network-manage.vue","webpack:///src/views/network-manage.vue","webpack:///./src/views/network-manage.vue?96f0","webpack:///./src/views/network-manage.vue?8f74"],"names":["module","exports","render","_vm","this","_c","_self","staticClass","attrs","class","toaster","show","_v","_s","message","require","directives","name","rawName","value","iface_in","expression","on","$event","$$selectedVal","Array","prototype","filter","call","target","options","o","selected","map","val","_value","multiple","change_interface","_l","config","ifaces_in","iface","key","domProps","toUpperCase","iface_out","ifaces_out","_m","network","ssids","ssid","delete_ssid","composing","add_ssid","staticRenderFns","data","type","props","methods","timeout","then","catch","load_config","axios","headers","console","update_ssids","setTimeout","created","component"],"mappings":"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","file":"js/chunk-3c0d118e.e3f2944c.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/network.33d31f9d.png\";","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"backend-content\",attrs:{\"id\":\"content\"}},[_c('div',{class:{ 'alert-toaster-visible' : _vm.toaster.show, 'alert-toaster-hidden' : !_vm.toaster.show }},[_vm._v(_vm._s(_vm.toaster.message))]),_c('div',{staticClass:\"column col-8 col-xs-12\"},[_c('h3',{staticClass:\"s-title\"},[_vm._v(\"Network configuration\")]),_c('h5',{staticClass:\"s-subtitle\"},[_vm._v(\"Interfaces configuration\")]),_c('img',{attrs:{\"src\":require(\"@/assets/network.png\"),\"id\":\"network-thumbnail\"}}),_c('div',{staticClass:\"container interfaces-container\"},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column col-6\"},[_c('span',{staticClass:\"interface-label\"},[_vm._v(\"Wireless AP interface\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.iface_in),expression:\"iface_in\"}],staticClass:\"form-select width-full\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.iface_in=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.change_interface('in', _vm.iface_in)}]}},_vm._l((_vm.config.ifaces_in),function(iface){return _c('option',{key:iface,domProps:{\"value\":iface}},[_vm._v(\" \"+_vm._s(iface.toUpperCase())+\" \")])}),0)]),_c('div',{staticClass:\"column col-6\"},[_c('span',{staticClass:\"interface-label\"},[_vm._v(\"Internet link interface\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.iface_out),expression:\"iface_out\"}],staticClass:\"form-select width-full\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.iface_out=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.change_interface('out', _vm.iface_out)}]}},_vm._l((_vm.config.ifaces_out),function(iface){return _c('option',{key:iface,domProps:{\"value\":iface}},[_vm._v(\" \"+_vm._s(iface.toUpperCase())+\" \")])}),0)])])]),_c('h5',{staticClass:\"s-subtitle\"},[_vm._v(\"Edit SSIDs names\")]),_c('div',{staticClass:\"form-group\"},[_c('table',{staticClass:\"table table-striped table-hover\"},[_vm._m(0),_c('tbody',[_vm._l((_vm.config.network.ssids),function(ssid){return _c('tr',{key:ssid},[_c('td',[_vm._v(_vm._s(ssid))]),_c('td',[_c('button',{staticClass:\"btn btn-sm\",on:{\"click\":function($event){return _vm.delete_ssid(ssid)}}},[_vm._v(\"Delete\")])])])}),_c('tr',[_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.ssid),expression:\"ssid\"}],staticClass:\"form-input\",attrs:{\"type\":\"text\",\"placeholder\":\"SSID name\"},domProps:{\"value\":(_vm.ssid)},on:{\"input\":function($event){if($event.target.composing)return;_vm.ssid=$event.target.value}}})]),_c('td',[_c('button',{staticClass:\"btn btn-sm\",on:{\"click\":function($event){return _vm.add_ssid()}}},[_vm._v(\"Add\")])])])],2)])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Network name\")]),_c('th',[_vm._v(\"Action\")])])])\n}]\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./network-manage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./network-manage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./network-manage.vue?vue&type=template&id=c4a78946&\"\nimport script from \"./network-manage.vue?vue&type=script&lang=js&\"\nexport * from \"./network-manage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/backend/dist/js/chunk-vendors.dbaccf43.js b/app/backend/dist/js/chunk-vendors.dbaccf43.js new file mode 100644 index 0000000..0c76a08 --- /dev/null +++ b/app/backend/dist/js/chunk-vendors.dbaccf43.js @@ -0,0 +1,8 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"04f8":function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"06cf":function(t,e,n){var r=n("83ab"),o=n("c65b"),i=n("d1e7"),a=n("5c6c"),s=n("fc6a"),c=n("a04b"),u=n("1a2d"),f=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=s(t),e=c(e),f)try{return l(t,e)}catch(n){}if(u(t,e))return a(!o(i.f,t,e),t[e])}},"07fa":function(t,e,n){var r=n("50c4");t.exports=function(t){return r(t.length)}},"0a06":function(t,e,n){"use strict";var r=n("c532"),o=n("30b5"),i=n("f6b4"),a=n("5270"),s=n("4a7b"),c=n("848b"),u=c.validators;function f(t){this.defaults=t,this.interceptors={request:new i,response:new i}}f.prototype.request=function(t){"string"===typeof t?(t=arguments[1]||{},t.url=arguments[0]):t=t||{},t=s(this.defaults,t),t.method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&c.assertOptions(e,{silentJSONParsing:u.transitional(u.boolean,"1.0.0"),forcedJSONParsing:u.transitional(u.boolean,"1.0.0"),clarifyTimeoutError:u.transitional(u.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(e){"function"===typeof e.runWhen&&!1===e.runWhen(t)||(r=r&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var o,i=[];if(this.interceptors.response.forEach((function(t){i.push(t.fulfilled,t.rejected)})),!r){var f=[a,void 0];Array.prototype.unshift.apply(f,n),f=f.concat(i),o=Promise.resolve(t);while(f.length)o=o.then(f.shift(),f.shift());return o}var l=t;while(n.length){var p=n.shift(),d=n.shift();try{l=p(l)}catch(h){d(h);break}}try{o=a(l)}catch(h){return Promise.reject(h)}while(i.length)o=o.then(i.shift(),i.shift());return o},f.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){f.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){f.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=f},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"0d51":function(t,e){var n=String;t.exports=function(t){try{return n(t)}catch(e){return"Object"}}},"0df6":function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},"13d2":function(t,e,n){var r=n("d039"),o=n("1626"),i=n("1a2d"),a=n("83ab"),s=n("5e77").CONFIGURABLE,c=n("8925"),u=n("69f3"),f=u.enforce,l=u.get,p=Object.defineProperty,d=a&&!r((function(){return 8!==p((function(){}),"length",{value:8}).length})),h=String(String).split("String"),v=t.exports=function(t,e,n){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!i(t,"name")||s&&t.name!==e)&&(a?p(t,"name",{value:e,configurable:!0}):t.name=e),d&&n&&i(n,"arity")&&t.length!==n.arity&&p(t,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?a&&p(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(o){}var r=f(t);return i(r,"source")||(r.source=h.join("string"==typeof e?e:"")),t};Function.prototype.toString=v((function(){return o(this)&&l(this).source||c(this)}),"toString")},"14d9":function(t,e,n){"use strict";var r=n("23e7"),o=n("7b0b"),i=n("07fa"),a=n("3a34"),s=n("3511"),c=n("d039"),u=c((function(){return 4294967297!==[].push.call({length:4294967296},1)})),f=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}();r({target:"Array",proto:!0,arity:1,forced:u||f},{push:function(t){var e=o(this),n=i(e),r=arguments.length;s(n+r);for(var c=0;c=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){f.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){f.headers[t]=r.merge(a)})),t.exports=f}).call(this,n("4362"))},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var f=u.render;u.render=function(t,e){return c.call(e),f(t,e)}}else{var l=u.beforeCreate;u.beforeCreate=l?[].concat(l,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2b0e":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return Qr})); +/*! + * Vue.js v2.7.13 + * (c) 2014-2022 Evan You + * Released under the MIT License. + */ +var r=Object.freeze({}),o=Array.isArray;function i(t){return void 0===t||null===t}function a(t){return void 0!==t&&null!==t}function s(t){return!0===t}function c(t){return!1===t}function u(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function f(t){return"function"===typeof t}function l(t){return null!==t&&"object"===typeof t}var p=Object.prototype.toString;function d(t){return"[object Object]"===p.call(t)}function h(t){return"[object RegExp]"===p.call(t)}function v(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function m(t){return a(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function y(t){return null==t?"":Array.isArray(t)||d(t)&&t.toString===p?JSON.stringify(t,null,2):String(t)}function g(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function C(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var k=/-(\w)/g,S=O((function(t){return t.replace(k,(function(t,e){return e?e.toUpperCase():""}))})),j=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),$=/\B([A-Z])/g,E=O((function(t){return t.replace($,"-$1").toLowerCase()}));function A(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function T(t,e){return t.bind(e)}var P=Function.prototype.bind?T:A;function R(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function N(t,e){for(var n in e)t[n]=e[n];return t}function L(t){for(var e={},n=0;n0,rt=tt&&tt.indexOf("edge/")>0;tt&&tt.indexOf("android");var ot=tt&&/iphone|ipad|ipod|ios/.test(tt);tt&&/chrome\/\d+/.test(tt),tt&&/phantomjs/.test(tt);var it,at=tt&&tt.match(/firefox\/(\d+)/),st={}.watch,ct=!1;if(Z)try{var ut={};Object.defineProperty(ut,"passive",{get:function(){ct=!0}}),window.addEventListener("test-passive",null,ut)}catch(Ya){}var ft=function(){return void 0===it&&(it=!Z&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),it},lt=Z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function pt(t){return"function"===typeof t&&/native code/.test(t.toString())}var dt,ht="undefined"!==typeof Symbol&&pt(Symbol)&&"undefined"!==typeof Reflect&&pt(Reflect.ownKeys);dt="undefined"!==typeof Set&&pt(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var vt=null;function mt(t){void 0===t&&(t=null),t||vt&&vt._scope.off(),vt=t,t&&t._scope.on()}var yt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),gt=function(t){void 0===t&&(t="");var e=new yt;return e.text=t,e.isComment=!0,e};function bt(t){return new yt(void 0,void 0,void 0,String(t))}function _t(t){var e=new yt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var wt=0,xt=[],Ct=function(){for(var t=0;t0&&(r=ce(r,"".concat(e||"","_").concat(n)),se(r[0])&&se(f)&&(l[c]=bt(f.text+r[0].text),r.shift()),l.push.apply(l,r)):u(r)?se(f)?l[c]=bt(f.text+r):""!==r&&l.push(bt(r)):se(r)&&se(f)?l[c]=bt(f.text+r.text):(s(t._isVList)&&a(r.tag)&&i(r.key)&&a(e)&&(r.key="__vlist".concat(e,"_").concat(n,"__")),l.push(r)));return l}function ue(t,e){var n,r,i,s,c=null;if(o(t)||"string"===typeof t)for(c=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,c=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&c===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=$e(t,n,u,e[u]))}else i={};for(var f in n)f in i||(i[f]=Ee(n,f));return e&&Object.isExtensible(e)&&(e._normalized=i),X(i,"$stable",s),X(i,"$key",c),X(i,"$hasNormal",a),i}function $e(t,e,n,r){var i=function(){var e=vt;mt(t);var n=arguments.length?r.apply(null,arguments):r({});n=n&&"object"===typeof n&&!o(n)?[n]:ae(n);var i=n&&n[0];return mt(e),n&&(!i||1===n.length&&i.isComment&&!Se(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function Ee(t,e){return function(){return t[e]}}function Ae(t){var e=t.$options,n=e.setup;if(n){var r=t._setupContext=Te(t);mt(t),St();var o=Ge(n,null,[t._props||Pt({}),r],t,"setup");if(jt(),mt(),f(o))e.render=o;else if(l(o))if(t._setupState=o,o.__sfc){var i=t._setupProxy={};for(var a in o)"__sfc"!==a&&Wt(i,o,a)}else for(var a in o)K(a)||Wt(t,o,a);else 0}}function Te(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};X(e,"_v_attr_proxy",!0),Pe(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){if(!t._listenersProxy){var e=t._listenersProxy={};Pe(e,t.$listeners,r,t,"$listeners")}return t._listenersProxy},get slots(){return Ne(t)},emit:P(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Wt(t,e,n)}))}}}function Pe(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,Re(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function Re(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function Ne(t){return t._slotsProxy||Le(t._slotsProxy={},t.$scopedSlots),t._slotsProxy}function Le(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}function Ie(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=Oe(e._renderChildren,o),t.$scopedSlots=n?je(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return ze(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return ze(t,e,n,r,o,!0)};var i=n&&n.data;qt(t,"$attrs",i&&i.attrs||r,null,!0),qt(t,"$listeners",e._parentListeners||r,null,!0)}var De=null;function Me(t){Ce(t.prototype),t.prototype.$nextTick=function(t){return un(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,i=n._parentVnode;i&&e._isMounted&&(e.$scopedSlots=je(e.$parent,i.data.scopedSlots,e.$slots,e.$scopedSlots),e._slotsProxy&&Le(e._slotsProxy,e.$scopedSlots)),e.$vnode=i;try{mt(e),De=e,t=r.call(e._renderProxy,e.$createElement)}catch(Ya){Xe(Ya,e,"render"),t=e._vnode}finally{De=null,mt()}return o(t)&&1===t.length&&(t=t[0]),t instanceof yt||(t=gt()),t.parent=i,t}}function Fe(t,e){return(t.__esModule||ht&&"Module"===t[Symbol.toStringTag])&&(t=t.default),l(t)?e.extend(t):t}function Ue(t,e,n,r,o){var i=gt();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}function Be(t,e){if(s(t.error)&&a(t.errorComp))return t.errorComp;if(a(t.resolved))return t.resolved;var n=De;if(n&&a(t.owners)&&-1===t.owners.indexOf(n)&&t.owners.push(n),s(t.loading)&&a(t.loadingComp))return t.loadingComp;if(n&&!a(t.owners)){var r=t.owners=[n],o=!0,c=null,u=null;n.$on("hook:destroyed",(function(){return w(r,n)}));var f=function(t){for(var e=0,n=r.length;e1?R(n):n;for(var r=R(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Hn=function(){return Vn.now()})}var zn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function Jn(){var t,e;for(qn=Hn(),Fn=!0,Ln.sort(zn),Un=0;UnUn&&Ln[n].id>t.id)n--;Ln.splice(n+1,0,t)}else Ln.push(t);Mn||(Mn=!0,un(Jn))}}function Qn(t){var e=t.$options.provide;if(e){var n=f(e)?e.call(t):e;if(!l(n))return;for(var r=Yt(t),o=ht?Reflect.ownKeys(n):Object.keys(n),i=0;i-1)if(i&&!C(o,"default"))a=!1;else if(""===a||a===E(t)){var c=Ar(String,o.type);(c<0||s-1)return this;var n=R(arguments,1);return n.unshift(this),f(t.install)?t.install.apply(t,n):f(t)&&t.apply(null,n),e.push(t),this}}function Zr(t){t.mixin=function(t){return this.options=Cr(this.options,t),this}}function to(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=or(t)||or(n.options);var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Cr(n.options,t),a["super"]=n,a.options.props&&eo(a),a.options.computed&&no(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,V.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=N({},a.options),o[r]=a,a}}function eo(t){var e=t.options.props;for(var n in e)Pr(t.prototype,"_props",n)}function no(t){var e=t.options.computed;for(var n in e)Fr(t.prototype,n,e[n])}function ro(t){V.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&d(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&f(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function oo(t){return t&&(or(t.Ctor.options)||t.tag)}function io(t,e){return o(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!h(t)&&t.test(e)}function ao(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=a.name;s&&!e(s)&&so(n,i,r,o)}}}function so(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,w(n,e)}Wr(Qr),zr(Qr),On(Qr),$n(Qr),Me(Qr);var co=[String,RegExp,Array],uo={name:"keep-alive",abstract:!0,props:{include:co,exclude:co,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,o=t.keyToCache;if(r){var i=r.tag,a=r.componentInstance,s=r.componentOptions;e[o]={name:oo(s),tag:i,componentInstance:a},n.push(o),this.max&&n.length>parseInt(this.max)&&so(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)so(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){ao(t,(function(t){return io(e,t)}))})),this.$watch("exclude",(function(e){ao(t,(function(t){return!io(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=qe(t),n=e&&e.componentOptions;if(n){var r=oo(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!io(i,r))||a&&r&&io(a,r))return e;var s=this,c=s.cache,u=s.keys,f=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;c[f]?(e.componentInstance=c[f].componentInstance,w(u,f),u.push(f)):(this.vnodeToCache=e,this.keyToCache=f),e.data.keepAlive=!0}return e||t&&t[0]}},fo={KeepAlive:uo};function lo(t){var e={get:function(){return J}};Object.defineProperty(t,"config",e),t.util={warn:pr,extend:N,mergeOptions:Cr,defineReactive:qt},t.set=Ht,t.delete=Vt,t.nextTick=un,t.observable=function(t){return Bt(t),t},t.options=Object.create(null),V.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,N(t.options.components,fo),Yr(t),Zr(t),to(t),ro(t)}lo(Qr),Object.defineProperty(Qr.prototype,"$isServer",{get:ft}),Object.defineProperty(Qr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Qr,"FunctionalRenderContext",{value:tr}),Qr.version=pn;var po=b("style,class"),ho=b("input,textarea,option,select,progress"),vo=function(t,e,n){return"value"===n&&ho(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},mo=b("contenteditable,draggable,spellcheck"),yo=b("events,caret,typing,plaintext-only"),go=function(t,e){return Co(e)||"false"===e?"false":"contenteditable"===t&&yo(e)?e:"true"},bo=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),_o="http://www.w3.org/1999/xlink",wo=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},xo=function(t){return wo(t)?t.slice(6,t.length):""},Co=function(t){return null==t||!1===t};function Oo(t){var e=t.data,n=t,r=t;while(a(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=ko(r.data,e));while(a(n=n.parent))n&&n.data&&(e=ko(e,n.data));return So(e.staticClass,e.class)}function ko(t,e){return{staticClass:jo(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function So(t,e){return a(t)||a(e)?jo(t,$o(e)):""}function jo(t,e){return t?e?t+" "+e:t:e||""}function $o(t){return Array.isArray(t)?Eo(t):l(t)?Ao(t):"string"===typeof t?t:""}function Eo(t){for(var e,n="",r=0,o=t.length;r-1?Io[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Io[t]=/HTMLUnknownElement/.test(e.toString())}var Mo=b("text,number,password,search,email,tel,url");function Fo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Uo(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function Bo(t,e){return document.createElementNS(To[t],e)}function qo(t){return document.createTextNode(t)}function Ho(t){return document.createComment(t)}function Vo(t,e,n){t.insertBefore(e,n)}function zo(t,e){t.removeChild(e)}function Jo(t,e){t.appendChild(e)}function Wo(t){return t.parentNode}function Ko(t){return t.nextSibling}function Xo(t){return t.tagName}function Go(t,e){t.textContent=e}function Qo(t,e){t.setAttribute(e,"")}var Yo=Object.freeze({__proto__:null,createElement:Uo,createElementNS:Bo,createTextNode:qo,createComment:Ho,insertBefore:Vo,removeChild:zo,appendChild:Jo,parentNode:Wo,nextSibling:Ko,tagName:Xo,setTextContent:Go,setStyleScope:Qo}),Zo={create:function(t,e){ti(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ti(t,!0),ti(e))},destroy:function(t){ti(t,!0)}};function ti(t,e){var n=t.data.ref;if(a(n)){var r=t.context,i=t.componentInstance||t.elm,s=e?null:i,c=e?void 0:i;if(f(n))Ge(n,r,[s],r,"template ref function");else{var u=t.data.refInFor,l="string"===typeof n||"number"===typeof n,p=Jt(n),d=r.$refs;if(l||p)if(u){var h=l?d[n]:n.value;e?o(h)&&w(h,i):o(h)?h.includes(i)||h.push(i):l?(d[n]=[i],ei(r,n,d[n])):n.value=[i]}else if(l){if(e&&d[n]!==i)return;d[n]=c,ei(r,n,s)}else if(p){if(e&&n.value!==i)return;n.value=s}else 0}}}function ei(t,e,n){var r=t._setupState;r&&C(r,e)&&(Jt(r[e])?r[e].value=n:r[e]=n)}var ni=new yt("",{},[]),ri=["create","activate","update","remove","destroy"];function oi(t,e){return t.key===e.key&&t.asyncFactory===e.asyncFactory&&(t.tag===e.tag&&t.isComment===e.isComment&&a(t.data)===a(e.data)&&ii(t,e)||s(t.isAsyncPlaceholder)&&i(e.asyncFactory.error))}function ii(t,e){if("input"!==t.tag)return!0;var n,r=a(n=t.data)&&a(n=n.attrs)&&n.type,o=a(n=e.data)&&a(n=n.attrs)&&n.type;return r===o||Mo(r)&&Mo(o)}function ai(t,e,n){var r,o,i={};for(r=e;r<=n;++r)o=t[r].key,a(o)&&(i[o]=r);return i}function si(t){var e,n,r={},c=t.modules,f=t.nodeOps;for(e=0;ev?(l=i(n[g+1])?null:n[g+1].elm,O(t,l,n,d,g,r)):d>g&&S(e,p,v)}function E(t,e,n,r){for(var o=n;o-1?gi(t,e,n):bo(e)?Co(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):mo(e)?t.setAttribute(e,go(e,n)):wo(e)?Co(n)?t.removeAttributeNS(_o,xo(e)):t.setAttributeNS(_o,e,n):gi(t,e,n)}function gi(t,e,n){if(Co(n))t.removeAttribute(e);else{if(et&&!nt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var bi={create:mi,update:mi};function _i(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=Oo(e),c=n._transitionClasses;a(c)&&(s=jo(s,$o(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var wi,xi={create:_i,update:_i},Ci="__r",Oi="__c";function ki(t){if(a(t[Ci])){var e=et?"change":"input";t[e]=[].concat(t[Ci],t[e]||[]),delete t[Ci]}a(t[Oi])&&(t.change=[].concat(t[Oi],t.change||[]),delete t[Oi])}function Si(t,e,n){var r=wi;return function o(){var i=e.apply(null,arguments);null!==i&&Ei(t,o,n,r)}}var ji=tn&&!(at&&Number(at[1])<=53);function $i(t,e,n,r){if(ji){var o=qn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}wi.addEventListener(t,e,ct?{capture:n,passive:r}:n)}function Ei(t,e,n,r){(r||wi).removeEventListener(t,e._wrapper||e,n)}function Ai(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};wi=e.elm||t.elm,ki(n),ee(n,r,$i,Ei,Si,e.context),wi=void 0}}var Ti,Pi={create:Ai,update:Ai,destroy:function(t){return Ai(t,ni)}};function Ri(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=N({},u)),c)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===c[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var f=i(r)?"":String(r);Ni(o,f)&&(o.value=f)}else if("innerHTML"===n&&Ro(o.tagName)&&i(o.innerHTML)){Ti=Ti||document.createElement("div"),Ti.innerHTML="".concat(r,"");var l=Ti.firstChild;while(o.firstChild)o.removeChild(o.firstChild);while(l.firstChild)o.appendChild(l.firstChild)}else if(r!==c[n])try{o[n]=r}catch(Ya){}}}}function Ni(t,e){return!t.composing&&("OPTION"===t.tagName||Li(t,e)||Ii(t,e))}function Li(t,e){var n=!0;try{n=document.activeElement!==t}catch(Ya){}return n&&t.value!==e}function Ii(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return g(n)!==g(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var Di={create:Ri,update:Ri},Mi=O((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function Fi(t){var e=Ui(t.style);return t.staticStyle?N(t.staticStyle,e):e}function Ui(t){return Array.isArray(t)?L(t):"string"===typeof t?Mi(t):t}function Bi(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=Fi(o.data))&&N(r,n)}(n=Fi(t.data))&&N(r,n);var i=t;while(i=i.parent)i.data&&(n=Fi(i.data))&&N(r,n);return r}var qi,Hi=/^--/,Vi=/\s*!important$/,zi=function(t,e,n){if(Hi.test(e))t.style.setProperty(e,n);else if(Vi.test(n))t.style.setProperty(E(e),n.replace(Vi,""),"important");else{var r=Wi(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Gi).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Yi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Gi).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Zi(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&N(e,ta(t.name||"v")),N(e,t),e}return"string"===typeof t?ta(t):void 0}}var ta=O((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),ea=Z&&!nt,na="transition",ra="animation",oa="transition",ia="transitionend",aa="animation",sa="animationend";ea&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(oa="WebkitTransition",ia="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(aa="WebkitAnimation",sa="webkitAnimationEnd"));var ca=Z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ua(t){ca((function(){ca(t)}))}function fa(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Qi(t,e))}function la(t,e){t._transitionClasses&&w(t._transitionClasses,e),Yi(t,e)}function pa(t,e,n){var r=ha(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===na?ia:sa,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=na,f=a,l=i.length):e===ra?u>0&&(n=ra,f=u,l=c.length):(f=Math.max(a,u),n=f>0?a>u?na:ra:null,l=n?n===na?i.length:c.length:0);var p=n===na&&da.test(r[oa+"Property"]);return{type:n,timeout:f,propCount:l,hasTransform:p}}function va(t,e){while(t.length1}function wa(t,e){!0!==e.data.show&&ya(e)}var xa=Z?{create:wa,activate:wa,remove:function(t,e){!0!==t.data.show?ga(t,e):e()}}:{},Ca=[bi,xi,Pi,Di,Xi,xa],Oa=Ca.concat(vi),ka=si({nodeOps:Yo,modules:Oa});nt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Ra(t,"input")}));var Sa={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?ne(n,"postpatch",(function(){Sa.componentUpdated(t,e,n)})):ja(t,e,n.context),t._vOptions=[].map.call(t.options,Aa)):("textarea"===n.tag||Mo(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Ta),t.addEventListener("compositionend",Pa),t.addEventListener("change",Pa),nt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){ja(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,Aa);if(o.some((function(t,e){return!F(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return Ea(t,o)})):e.value!==e.oldValue&&Ea(e.value,o);i&&Ra(t,"change")}}}};function ja(t,e,n){$a(t,e,n),(et||rt)&&setTimeout((function(){$a(t,e,n)}),0)}function $a(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(F(Aa(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Ea(t,e){return e.every((function(e){return!F(e,t)}))}function Aa(t){return"_value"in t?t._value:t.value}function Ta(t){t.target.composing=!0}function Pa(t){t.target.composing&&(t.target.composing=!1,Ra(t.target,"input"))}function Ra(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Na(t){return!t.componentInstance||t.data&&t.data.transition?t:Na(t.componentInstance._vnode)}var La={bind:function(t,e,n){var r=e.value;n=Na(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,ya(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=Na(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?ya(n,(function(){t.style.display=t.__vOriginalDisplay})):ga(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},Ia={model:Sa,show:La},Da={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ma(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ma(qe(e.children)):t}function Fa(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[S(r)]=o[r];return e}function Ua(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Ba(t){while(t=t.parent)if(t.data.transition)return!0}function qa(t,e){return e.key===t.key&&e.tag===t.tag}var Ha=function(t){return t.tag||Se(t)},Va=function(t){return"show"===t.name},za={name:"transition",props:Da,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Ha),n.length)){0;var r=this.mode;0;var o=n[0];if(Ba(this.$vnode))return o;var i=Ma(o);if(!i)return o;if(this._leaving)return Ua(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:u(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Fa(this),c=this._vnode,f=Ma(c);if(i.data.directives&&i.data.directives.some(Va)&&(i.data.show=!0),f&&f.data&&!qa(i,f)&&!Se(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=N({},s);if("out-in"===r)return this._leaving=!0,ne(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ua(t,o);if("in-out"===r){if(Se(i))return c;var p,d=function(){p()};ne(s,"afterEnter",d),ne(s,"enterCancelled",d),ne(l,"delayLeave",(function(t){p=t}))}}return o}}},Ja=N({tag:String,moveClass:String},Da);delete Ja.mode;var Wa={props:Ja,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Sn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Fa(this),s=0;s0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=+r[1]))),t.exports=o},"2d83":function(t,e,n){"use strict";var r=n("387f");t.exports=function(t,e,n,o,i){var a=new Error(t);return r(a,e,n,o,i)}},"2e67":function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},"30b5":function(t,e,n){"use strict";var r=n("c532");function o(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(r.isURLSearchParams(e))i=e.toString();else{var a=[];r.forEach(e,(function(t,e){null!==t&&"undefined"!==typeof t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),a.push(o(e)+"="+o(t))})))})),i=a.join("&")}if(i){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t}},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},3511:function(t,e){var n=TypeError,r=9007199254740991;t.exports=function(t){if(t>r)throw n("Maximum allowed index exceeded");return t}},"387f":function(t,e,n){"use strict";t.exports=function(t,e,n,r,o){return t.config=e,n&&(t.code=n),t.request=r,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},3934:function(t,e,n){"use strict";var r=n("c532");t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return function(){return!0}}()},"3a34":function(t,e,n){"use strict";var r=n("83ab"),o=n("e8b5"),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(o(t)&&!a(t,"length").writable)throw i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},"3a9b":function(t,e,n){var r=n("e330");t.exports=r({}.isPrototypeOf)},"40d5":function(t,e,n){var r=n("d039");t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},4362:function(t,e,n){e.nextTick=function(t){var e=Array.prototype.slice.call(arguments);e.shift(),setTimeout((function(){t.apply(null,e)}),0)},e.platform=e.arch=e.execPath=e.title="browser",e.pid=1,e.browser=!0,e.env={},e.argv=[],e.binding=function(t){throw new Error("No such module. (Possibly not yet loaded)")},function(){var t,r="/";e.cwd=function(){return r},e.chdir=function(e){t||(t=n("df7c")),r=t.resolve(e,r)}}(),e.exit=e.kill=e.umask=e.dlopen=e.uptime=e.memoryUsage=e.uvCounters=function(){},e.features={}},"44ad":function(t,e,n){var r=n("e330"),o=n("d039"),i=n("c6b6"),a=Object,s=r("".split);t.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?s(t,""):a(t)}:a},"467f":function(t,e,n){"use strict";var r=n("2d83");t.exports=function(t,e,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},"485a":function(t,e,n){var r=n("c65b"),o=n("1626"),i=n("861d"),a=TypeError;t.exports=function(t,e){var n,s;if("string"===e&&o(n=t.toString)&&!i(s=r(n,t)))return s;if(o(n=t.valueOf)&&!i(s=r(n,t)))return s;if("string"!==e&&o(n=t.toString)&&!i(s=r(n,t)))return s;throw a("Can't convert object to primitive value")}},"4a0c":function(t){t.exports=JSON.parse('{"_from":"axios@^0.21.1","_id":"axios@0.21.4","_inBundle":false,"_integrity":"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==","_location":"/axios","_phantomChildren":{},"_requested":{"type":"range","registry":true,"raw":"axios@^0.21.1","name":"axios","escapedName":"axios","rawSpec":"^0.21.1","saveSpec":null,"fetchSpec":"^0.21.1"},"_requiredBy":["/"],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz","_shasum":"c67b90dc0568e5c1cf2b0b858c43ba28e2eda575","_spec":"axios@^0.21.1","_where":"/tmp/spyguard/app/backend","author":{"name":"Matt Zabriskie"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"bugs":{"url":"https://github.com/axios/axios/issues"},"bundleDependencies":false,"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"dependencies":{"follow-redirects":"^1.14.0"},"deprecated":false,"description":"Promise based HTTP client for the browser and node.js","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"homepage":"https://axios-http.com","jsdelivr":"dist/axios.min.js","keywords":["xhr","http","ajax","promise","node"],"license":"MIT","main":"index.js","name":"axios","repository":{"type":"git","url":"git+https://github.com/axios/axios.git"},"scripts":{"build":"NODE_ENV=production grunt build","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","examples":"node ./examples/server.js","fix":"eslint --fix lib/**/*.js","postversion":"git push && git push --tags","preversion":"npm test","start":"node ./sandbox/server.js","test":"grunt test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},"typings":"./index.d.ts","unpkg":"dist/axios.min.js","version":"0.21.4"}')},"4a7b":function(t,e,n){"use strict";var r=n("c532");t.exports=function(t,e){e=e||{};var n={},o=["url","method","data"],i=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function c(t,e){return r.isPlainObject(t)&&r.isPlainObject(e)?r.merge(t,e):r.isPlainObject(e)?r.merge({},e):r.isArray(e)?e.slice():e}function u(o){r.isUndefined(e[o])?r.isUndefined(t[o])||(n[o]=c(void 0,t[o])):n[o]=c(t[o],e[o])}r.forEach(o,(function(t){r.isUndefined(e[t])||(n[t]=c(void 0,e[t]))})),r.forEach(i,u),r.forEach(a,(function(o){r.isUndefined(e[o])?r.isUndefined(t[o])||(n[o]=c(void 0,t[o])):n[o]=c(void 0,e[o])})),r.forEach(s,(function(r){r in e?n[r]=c(t[r],e[r]):r in t&&(n[r]=c(void 0,t[r]))}));var f=o.concat(i).concat(a).concat(s),l=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===f.indexOf(t)}));return r.forEach(l,u),n}},"4d64":function(t,e,n){var r=n("fc6a"),o=n("23cb"),i=n("07fa"),a=function(t){return function(e,n,a){var s,c=r(e),u=i(c),f=o(a,u);if(t&&n!=n){while(u>f)if(s=c[f++],s!=s)return!0}else for(;u>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("5926"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5270:function(t,e,n){"use strict";var r=n("c532"),o=n("c401"),i=n("2e67"),a=n("2444");function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){s(t),t.headers=t.headers||{},t.data=o.call(t,t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]}));var e=t.adapter||a.adapter;return e(t).then((function(e){return s(t),e.data=o.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(s(t),e&&e.response&&(e.response.data=o.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.26.0",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.0/LICENSE",source:"https://github.com/zloirock/core-js"})},"56ef":function(t,e,n){var r=n("d066"),o=n("e330"),i=n("241c"),a=n("7418"),s=n("825a"),c=o([].concat);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(s(t)),n=a.f;return n?c(e,n(t)):e}},5926:function(t,e,n){var r=n("b42e");t.exports=function(t){var e=+t;return e!==e||0===e?0:r(e)}},"59ed":function(t,e,n){var r=n("1626"),o=n("0d51"),i=TypeError;t.exports=function(t){if(r(t))return t;throw i(o(t)+" is not a function")}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"5e77":function(t,e,n){var r=n("83ab"),o=n("1a2d"),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);t.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},"5f02":function(t,e,n){"use strict";t.exports=function(t){return"object"===typeof t&&!0===t.isAxiosError}},6374:function(t,e,n){var r=n("da84"),o=Object.defineProperty;t.exports=function(t,e){try{o(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},"69f3":function(t,e,n){var r,o,i,a=n("cdce"),s=n("da84"),c=n("861d"),u=n("9112"),f=n("1a2d"),l=n("c6cd"),p=n("f772"),d=n("d012"),h="Object already initialized",v=s.TypeError,m=s.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},g=function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw v("Incompatible receiver, "+t+" required");return n}};if(a||l.state){var b=l.state||(l.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,r=function(t,e){if(b.has(t))throw v(h);return e.facade=t,b.set(t,e),e},o=function(t){return b.get(t)||{}},i=function(t){return b.has(t)}}else{var _=p("state");d[_]=!0,r=function(t,e){if(f(t,_))throw v(h);return e.facade=t,u(t,_,e),e},o=function(t){return f(t,_)?t[_]:{}},i=function(t){return f(t,_)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:g}},7234:function(t,e){t.exports=function(t){return null===t||void 0===t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7a77":function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},"7aac":function(t,e,n){"use strict";var r=n("c532");t.exports=r.isStandardBrowserEnv()?function(){return{write:function(t,e,n,o,i,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"7b0b":function(t,e,n){var r=n("1d80"),o=Object;t.exports=function(t){return o(r(t))}},"7d7e":function(t,e,n){var r=n("40d5"),o=Function.prototype,i=o.call,a=r&&o.bind.bind(i,i);t.exports=r?a:function(t){return function(){return i.apply(t,arguments)}}},"825a":function(t,e,n){var r=n("861d"),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw i(o(t)+" is not an object")}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"83b9":function(t,e,n){"use strict";var r=n("d925"),o=n("e683");t.exports=function(t,e){return t&&!r(e)?o(t,e):e}},"848b":function(t,e,n){"use strict";var r=n("4a0c"),o={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){o[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}}));var i={},a=r.version.split(".");function s(t,e){for(var n=e?e.split("."):a,r=t.split("."),o=0;o<3;o++){if(n[o]>r[o])return!0;if(n[o]0){var i=r[o],a=e[i];if(a){var s=t[i],c=void 0===s||a(s,i,t);if(!0!==c)throw new TypeError("option "+i+" must be "+c)}else if(!0!==n)throw Error("Unknown option "+i)}}o.transitional=function(t,e,n){var o=e&&s(e);function a(t,e){return"[Axios v"+r.version+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,s){if(!1===t)throw new Error(a(r," has been removed in "+e));return o&&!i[r]&&(i[r]=!0,console.warn(a(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,s)}},t.exports={isOlderVersion:s,assertOptions:c,validators:o}},"861d":function(t,e,n){var r=n("1626"),o=n("8ea1"),i=o.all;t.exports=o.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:r(t)||t===i}:function(t){return"object"==typeof t?null!==t:r(t)}},8925:function(t,e,n){var r=n("e330"),o=n("1626"),i=n("c6cd"),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},"8c4f":function(t,e,n){"use strict";function r(t,e){for(var n in e)t[n]=e[n];return t}n.d(e,"a",(function(){return xe}));var o=/[!'()*]/g,i=function(t){return"%"+t.charCodeAt(0).toString(16)},a=/%2C/g,s=function(t){return encodeURIComponent(t).replace(o,i).replace(a,",")};function c(t){try{return decodeURIComponent(t)}catch(e){0}return t}function u(t,e,n){void 0===e&&(e={});var r,o=n||l;try{r=o(t||"")}catch(s){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(f):f(a)}return r}var f=function(t){return null==t||"object"===typeof t?t:String(t)};function l(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=c(n.shift()),o=n.length>0?c(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function p(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return s(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(s(e)):r.push(s(e)+"="+s(t)))})),r.join("&")}return s(e)+"="+s(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var d=/\/?$/;function h(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=v(i)}catch(s){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:g(e,o),matched:t?y(t):[]};return n&&(a.redirectedFrom=g(n,o)),Object.freeze(a)}function v(t){if(Array.isArray(t))return t.map(v);if(t&&"object"===typeof t){var e={};for(var n in t)e[n]=v(t[n]);return e}return t}var m=h(null,{path:"/"});function y(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function g(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;void 0===o&&(o="");var i=e||p;return(n||"/")+i(r)+o}function b(t,e,n){return e===m?t===e:!!e&&(t.path&&e.path?t.path.replace(d,"")===e.path.replace(d,"")&&(n||t.hash===e.hash&&_(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&_(t.query,e.query)&&_(t.params,e.params))))}function _(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n],a=r[o];if(a!==n)return!1;var s=e[n];return null==i||null==s?i===s:"object"===typeof i&&"object"===typeof s?_(i,s):String(i)===String(s)}))}function w(t,e){return 0===t.path.replace(d,"/").indexOf(e.path.replace(d,"/"))&&(!e.hash||t.hash===e.hash)&&x(t.query,e.query)}function x(t,e){for(var n in e)if(!(n in t))return!1;return!0}function C(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function E(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var A=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},T=G,P=D,R=M,N=B,L=X,I=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function D(t,e){var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";while(null!=(n=I.exec(t))){var c=n[0],u=n[1],f=n.index;if(a+=t.slice(i,f),i=f+c.length,u)a+=u[1];else{var l=t[i],p=n[2],d=n[3],h=n[4],v=n[5],m=n[6],y=n[7];a&&(r.push(a),a="");var g=null!=p&&null!=l&&l!==p,b="+"===m||"*"===m,_="?"===m||"*"===m,w=n[2]||s,x=h||v;r.push({name:d||o++,prefix:p||"",delimiter:w,optional:_,repeat:b,partial:g,asterisk:!!y,pattern:x?H(x):y?".*":"[^"+q(w)+"]+?"})}}return i1||!O.length)return 0===O.length?t():t("span",{},O)}if("a"===this.tag)C.on=x,C.attrs={href:c,"aria-current":g};else{var k=at(this.$slots.default);if(k){k.isStatic=!1;var S=k.data=r({},k.data);for(var j in S.on=S.on||{},S.on){var $=S.on[j];j in x&&(S.on[j]=Array.isArray($)?$:[$])}for(var E in x)E in S.on?S.on[E].push(x[E]):S.on[E]=_;var A=k.data.attrs=r({},k.data.attrs);A.href=c,A["aria-current"]=g}else C.on=x}return t(this.tag,C,this.$slots.default)}};function it(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function at(t){if(t)for(var e,n=0;n-1&&(s.params[l]=n.params[l]);return s.path=Y(u.path,s.params,'named route "'+c+'"'),p(u,s,a)}if(s.path){s.params={};for(var d=0;d-1}function Jt(t,e){return zt(t)&&t._isRouter&&(null==e||t.type===e)}function Wt(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Kt(t){return function(e,n,r){var o=!1,i=0,a=null;Xt(t,(function(t,e,n,s){if("function"===typeof t&&void 0===t.cid){o=!0,i++;var c,u=Zt((function(e){Yt(e)&&(e=e.default),t.resolved="function"===typeof e?e:tt.extend(e),n.components[s]=e,i--,i<=0&&r()})),f=Zt((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=zt(t)?t:new Error(e),r(a))}));try{c=t(u,f)}catch(p){f(p)}if(c)if("function"===typeof c.then)c.then(u,f);else{var l=c.component;l&&"function"===typeof l.then&&l.then(u,f)}}})),o||r()}}function Xt(t,e){return Gt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Gt(t){return Array.prototype.concat.apply([],t)}var Qt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Yt(t){return t.__esModule||Qt&&"Module"===t[Symbol.toStringTag]}function Zt(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var te=function(t,e){this.router=t,this.base=ee(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ee(t){if(!t)if(ct){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function ne(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Nt&&n;r&&this.listeners.push(xt());var o=function(){var n=t.current,o=le(t.base);t.current===m&&o===t._startLocation||t.transitionTo(o,(function(t){r&&Ct(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Lt(E(r.base+t.fullPath)),Ct(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){It(E(r.base+t.fullPath)),Ct(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(le(this.base)!==this.current.fullPath){var e=E(this.base+this.current.fullPath);t?Lt(e):It(e)}},e.prototype.getCurrentLocation=function(){return le(this.base)},e}(te);function le(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(E(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var pe=function(t){function e(e,n,r){t.call(this,e,n),r&&de(this.base)||he()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,n=e.options.scrollBehavior,r=Nt&&n;r&&this.listeners.push(xt());var o=function(){var e=t.current;he()&&t.transitionTo(ve(),(function(n){r&&Ct(t.router,n,e,!0),Nt||ge(n.fullPath)}))},i=Nt?"popstate":"hashchange";window.addEventListener(i,o),this.listeners.push((function(){window.removeEventListener(i,o)}))}},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ye(t.fullPath),Ct(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ge(t.fullPath),Ct(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ve()!==e&&(t?ye(e):ge(e))},e.prototype.getCurrentLocation=function(){return ve()},e}(te);function de(t){var e=le(t);if(!/^\/#/.test(e))return window.location.replace(E(t+"/#"+e)),!0}function he(){var t=ve();return"/"===t.charAt(0)||(ge("/"+t),!1)}function ve(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function me(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ye(t){Nt?Lt(me(t)):window.location.hash=t}function ge(t){Nt?It(me(t)):window.location.replace(me(t))}var be=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){Jt(t,Dt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(te),_e=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=dt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Nt&&!1!==t.fallback,this.fallback&&(e="hash"),ct||(e="abstract"),this.mode=e,e){case"history":this.history=new fe(this,t.base);break;case"hash":this.history=new pe(this,t.base,this.fallback);break;case"abstract":this.history=new be(this,t.base);break;default:0}},we={currentRoute:{configurable:!0}};_e.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},we.currentRoute.get=function(){return this.history&&this.history.current},_e.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof fe||n instanceof pe){var r=function(t){var r=n.current,o=e.options.scrollBehavior,i=Nt&&o;i&&"fullPath"in t&&Ct(e,t,r,!1)},o=function(t){n.setupListeners(),r(t)};n.transitionTo(n.getCurrentLocation(),o,o)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},_e.prototype.beforeEach=function(t){return Ce(this.beforeHooks,t)},_e.prototype.beforeResolve=function(t){return Ce(this.resolveHooks,t)},_e.prototype.afterEach=function(t){return Ce(this.afterHooks,t)},_e.prototype.onReady=function(t,e){this.history.onReady(t,e)},_e.prototype.onError=function(t){this.history.onError(t)},_e.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},_e.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},_e.prototype.go=function(t){this.history.go(t)},_e.prototype.back=function(){this.go(-1)},_e.prototype.forward=function(){this.go(1)},_e.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},_e.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=Z(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=Oe(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},_e.prototype.getRoutes=function(){return this.matcher.getRoutes()},_e.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},_e.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(_e.prototype,we);var xe=_e;function Ce(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function Oe(t,e,n){var r="hash"===n?"#"+e:e;return t?E(t+"/"+r):r}_e.install=st,_e.version="3.6.5",_e.isNavigationFailure=Jt,_e.NavigationFailureType=Dt,_e.START_LOCATION=m,ct&&window.Vue&&window.Vue.use(_e)},"8df4":function(t,e,n){"use strict";var r=n("7a77");function o(t){if("function"!==typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t,e=new o((function(e){t=e}));return{token:e,cancel:t}},t.exports=o},"8ea1":function(t,e){var n="object"==typeof document&&document.all,r="undefined"==typeof n&&void 0!==n;t.exports={all:n,IS_HTMLDDA:r}},"90e3":function(t,e,n){var r=n("e330"),o=0,i=Math.random(),a=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++o+i,36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"94ca":function(t,e,n){var r=n("d039"),o=n("1626"),i=/#|\.prototype\./,a=function(t,e){var n=c[s(t)];return n==f||n!=u&&(o(e)?r(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",f=a.POLYFILL="P";t.exports=a},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("aed9"),a=n("825a"),s=n("a04b"),c=TypeError,u=Object.defineProperty,f=Object.getOwnPropertyDescriptor,l="enumerable",p="configurable",d="writable";e.f=r?i?function(t,e,n){if(a(t),e=s(e),a(n),"function"===typeof t&&"prototype"===e&&"value"in n&&d in n&&!n[d]){var r=f(t,e);r&&r[d]&&(t[e]=n.value,n={configurable:p in n?n[p]:r[p],enumerable:l in n?n[l]:r[l],writable:!1})}return u(t,e,n)}:u:function(t,e,n){if(a(t),e=s(e),a(n),o)try{return u(t,e,n)}catch(r){}if("get"in n||"set"in n)throw c("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},a04b:function(t,e,n){var r=n("c04e"),o=n("d9b5");t.exports=function(t){var e=r(t,"string");return o(e)?e:e+""}},aed9:function(t,e,n){var r=n("83ab"),o=n("d039");t.exports=r&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},b42e:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?r:n)(e)}},b50d:function(t,e,n){"use strict";var r=n("c532"),o=n("467f"),i=n("7aac"),a=n("30b5"),s=n("83b9"),c=n("c345"),u=n("3934"),f=n("2d83");t.exports=function(t){return new Promise((function(e,n){var l=t.data,p=t.headers,d=t.responseType;r.isFormData(l)&&delete p["Content-Type"];var h=new XMLHttpRequest;if(t.auth){var v=t.auth.username||"",m=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";p.Authorization="Basic "+btoa(v+":"+m)}var y=s(t.baseURL,t.url);function g(){if(h){var r="getAllResponseHeaders"in h?c(h.getAllResponseHeaders()):null,i=d&&"text"!==d&&"json"!==d?h.response:h.responseText,a={data:i,status:h.status,statusText:h.statusText,headers:r,config:t,request:h};o(e,n,a),h=null}}if(h.open(t.method.toUpperCase(),a(y,t.params,t.paramsSerializer),!0),h.timeout=t.timeout,"onloadend"in h?h.onloadend=g:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(g)},h.onabort=function(){h&&(n(f("Request aborted",t,"ECONNABORTED",h)),h=null)},h.onerror=function(){n(f("Network Error",t,null,h)),h=null},h.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(f(e,t,t.transitional&&t.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",h)),h=null},r.isStandardBrowserEnv()){var b=(t.withCredentials||u(y))&&t.xsrfCookieName?i.read(t.xsrfCookieName):void 0;b&&(p[t.xsrfHeaderName]=b)}"setRequestHeader"in h&&r.forEach(p,(function(t,e){"undefined"===typeof l&&"content-type"===e.toLowerCase()?delete p[e]:h.setRequestHeader(e,t)})),r.isUndefined(t.withCredentials)||(h.withCredentials=!!t.withCredentials),d&&"json"!==d&&(h.responseType=t.responseType),"function"===typeof t.onDownloadProgress&&h.addEventListener("progress",t.onDownloadProgress),"function"===typeof t.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){h&&(h.abort(),n(t),h=null)})),l||(l=null),h.send(l)}))}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("1a2d"),a=n("90e3"),s=n("04f8"),c=n("fdbf"),u=o("wks"),f=r.Symbol,l=f&&f["for"],p=c?f:f&&f.withoutSetter||a;t.exports=function(t){if(!i(u,t)||!s&&"string"!=typeof u[t]){var e="Symbol."+t;s&&i(f,t)?u[t]=f[t]:u[t]=c&&l?l(e):p(e)}return u[t]}},bc3a:function(t,e,n){t.exports=n("cee4")},c04e:function(t,e,n){var r=n("c65b"),o=n("861d"),i=n("d9b5"),a=n("dc4a"),s=n("485a"),c=n("b622"),u=TypeError,f=c("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var n,c=a(t,f);if(c){if(void 0===e&&(e="default"),n=r(c,t,e),!o(n)||i(n))return n;throw u("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},c345:function(t,e,n){"use strict";var r=n("c532"),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,i,a={};return t?(r.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=r.trim(t.substr(0,i)).toLowerCase(),n=r.trim(t.substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},c401:function(t,e,n){"use strict";var r=n("c532"),o=n("2444");t.exports=function(t,e,n){var i=this||o;return r.forEach(n,(function(n){t=n.call(i,t,e)})),t}},c430:function(t,e){t.exports=!1},c532:function(t,e,n){"use strict";var r=n("1d2b"),o=Object.prototype.toString;function i(t){return"[object Array]"===o.call(t)}function a(t){return"undefined"===typeof t}function s(t){return null!==t&&!a(t)&&null!==t.constructor&&!a(t.constructor)&&"function"===typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function c(t){return"[object ArrayBuffer]"===o.call(t)}function u(t){return"undefined"!==typeof FormData&&t instanceof FormData}function f(t){var e;return e="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer,e}function l(t){return"string"===typeof t}function p(t){return"number"===typeof t}function d(t){return null!==t&&"object"===typeof t}function h(t){if("[object Object]"!==o.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function v(t){return"[object Date]"===o.call(t)}function m(t){return"[object File]"===o.call(t)}function y(t){return"[object Blob]"===o.call(t)}function g(t){return"[object Function]"===o.call(t)}function b(t){return d(t)&&g(t.pipe)}function _(t){return"undefined"!==typeof URLSearchParams&&t instanceof URLSearchParams}function w(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function x(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)}function C(t,e){if(null!==t&&"undefined"!==typeof t)if("object"!==typeof t&&(t=[t]),i(t))for(var n=0,r=t.length;nu)o(r,n=e[u++])&&(~a(f,n)||c(f,n));return f}},cb2d:function(t,e,n){var r=n("1626"),o=n("9bf2"),i=n("13d2"),a=n("6374");t.exports=function(t,e,n,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:e;if(r(n)&&i(n,u,s),s.global)c?t[e]=n:a(e,n);else{try{s.unsafe?t[e]&&(c=!0):delete t[e]}catch(f){}c?t[e]=n:o.f(t,e,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cdce:function(t,e,n){var r=n("da84"),o=n("1626"),i=r.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},cee4:function(t,e,n){"use strict";var r=n("c532"),o=n("1d2b"),i=n("0a06"),a=n("4a7b"),s=n("2444");function c(t){var e=new i(t),n=o(i.prototype.request,e);return r.extend(n,i.prototype,e),r.extend(n,e),n}var u=c(s);u.Axios=i,u.create=function(t){return c(a(u.defaults,t))},u.Cancel=n("7a77"),u.CancelToken=n("8df4"),u.isCancel=n("2e67"),u.all=function(t){return Promise.all(t)},u.spread=n("0df6"),u.isAxiosError=n("5f02"),t.exports=u,t.exports.default=u},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("da84"),o=n("1626"),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t]):r[t]&&r[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d925:function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},d9b5:function(t,e,n){var r=n("d066"),o=n("1626"),i=n("3a9b"),a=n("fdbf"),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return o(e)&&i(e.prototype,s(t))}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},dc4a:function(t,e,n){var r=n("59ed"),o=n("7234");t.exports=function(t,e){var n=t[e];return o(n)?void 0:r(n)}},df7c:function(t,e,n){(function(t){function n(t,e){for(var n=0,r=t.length-1;r>=0;r--){var o=t[r];"."===o?t.splice(r,1):".."===o?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t){"string"!==typeof t&&(t+="");var e,n=0,r=-1,o=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!o){n=e+1;break}}else-1===r&&(o=!1,r=e+1);return-1===r?"":t.slice(n,r)}function o(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!r;i--){var a=i>=0?arguments[i]:t.cwd();if("string"!==typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,r="/"===a.charAt(0))}return e=n(o(e.split("/"),(function(t){return!!t})),!r).join("/"),(r?"/":"")+e||"."},e.normalize=function(t){var r=e.isAbsolute(t),a="/"===i(t,-1);return t=n(o(t.split("/"),(function(t){return!!t})),!r).join("/"),t||r||(t="."),t&&a&&(t+="/"),(r?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(o(t,(function(t,e){if("string"!==typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0;n--)if(""!==t[n])break;return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var o=r(t.split("/")),i=r(n.split("/")),a=Math.min(o.length,i.length),s=a,c=0;c=1;--i)if(e=t.charCodeAt(i),47===e){if(!o){r=i;break}}else o=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=r(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!==typeof t&&(t+="");for(var e=-1,n=0,r=-1,o=!0,i=0,a=t.length-1;a>=0;--a){var s=t.charCodeAt(a);if(47!==s)-1===r&&(o=!1,r=a+1),46===s?-1===e?e=a:1!==i&&(i=1):-1!==e&&(i=-1);else if(!o){n=a+1;break}}return-1===e||-1===r||0===i||1===i&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n("4362"))},e330:function(t,e,n){var r=n("c6b6"),o=n("7d7e");t.exports=function(t){if("Function"===r(t))return o(t)}},e683:function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},e893:function(t,e,n){var r=n("1a2d"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e,n){for(var s=o(e),c=a.f,u=i.f,f=0;f= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.7.13\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\nvar isArray = Array.isArray;\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\nfunction isDef(v) {\n return v !== undefined && v !== null;\n}\nfunction isTrue(v) {\n return v === true;\n}\nfunction isFalse(v) {\n return v === false;\n}\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean');\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Quick object check - this is primarily used to tell\n * objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\nfunction toRawType(value) {\n return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject(obj) {\n return _toString.call(obj) === '[object Object]';\n}\nfunction isRegExp(v) {\n return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex(val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n return (isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val);\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n var len = arr.length;\n if (len) {\n // fast path for the only / last item\n if (item === arr[len - 1]) {\n arr.length = len - 1;\n return;\n }\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx);\n }\n boundFn._length = fn.length;\n return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return (a.length === b.length &&\n a.every(function (e, i) {\n return looseEqual(e, b[i]);\n }));\n }\n else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return (keysA.length === keysB.length &&\n keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n }));\n }\n else {\n /* istanbul ignore next */\n return false;\n }\n }\n catch (e) {\n /* istanbul ignore next */\n return false;\n }\n }\n else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n }\n else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val))\n return i;\n }\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n if (x === y) {\n return x === 0 && 1 / x !== 1 / y;\n }\n else {\n return x === x || y === y;\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch',\n 'renderTracked',\n 'renderTriggered'\n];\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n /**\n * Whether to record perf\n */\n performance: false,\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj)\n return;\n obj = obj[segments[i]];\n }\n return obj;\n };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n }\n catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer =\n global['process'] && global['process'].env.VUE_ENV === 'server';\n }\n else {\n _isServer = false;\n }\n }\n return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n isNative(Symbol) &&\n typeof Reflect !== 'undefined' &&\n isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n}\nelse {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /** @class */ (function () {\n function Set() {\n this.set = Object.create(null);\n }\n Set.prototype.has = function (key) {\n return this.set[key] === true;\n };\n Set.prototype.add = function (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function () {\n this.set = Object.create(null);\n };\n return Set;\n }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n if (vm === void 0) { vm = null; }\n if (!vm)\n currentInstance && currentInstance._scope.off();\n currentInstance = vm;\n vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n }\n Object.defineProperty(VNode.prototype, \"child\", {\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n get: function () {\n return this.componentInstance;\n },\n enumerable: false,\n configurable: true\n });\n return VNode;\n}());\nvar createEmptyVNode = function (text) {\n if (text === void 0) { text = ''; }\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, \n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n for (var i = 0; i < pendingCleanupDeps.length; i++) {\n var dep = pendingCleanupDeps[i];\n dep.subs = dep.subs.filter(function (s) { return s; });\n dep._pending = false;\n }\n pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n function Dep() {\n // pending subs cleanup\n this._pending = false;\n this.id = uid$2++;\n this.subs = [];\n }\n Dep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n };\n Dep.prototype.removeSub = function (sub) {\n // #12696 deps with massive amount of subscribers are extremely slow to\n // clean up in Chromium\n // to workaround this, we unset the sub for now, and clear them on\n // next scheduler flush.\n this.subs[this.subs.indexOf(sub)] = null;\n if (!this._pending) {\n this._pending = true;\n pendingCleanupDeps.push(this);\n }\n };\n Dep.prototype.depend = function (info) {\n if (Dep.target) {\n Dep.target.addDep(this);\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n }\n }\n };\n Dep.prototype.notify = function (info) {\n // stabilize the subscriber list first\n var subs = this.subs.filter(function (s) { return s; });\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n var sub = subs[i];\n if (process.env.NODE_ENV !== 'production' && info) {\n sub.onTrigger &&\n sub.onTrigger(__assign({ effect: subs[i] }, info));\n }\n sub.update();\n }\n };\n return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted)\n ob.observeArray(inserted);\n // notify change\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n target: this,\n key: method\n });\n }\n else {\n ob.dep.notify();\n }\n return result;\n });\n});\n\nvar rawMap = new WeakMap();\nfunction reactive(target) {\n makeReactive(target, false);\n return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n makeReactive(target, true);\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n return target;\n}\nfunction makeReactive(target, shallow) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (!isReadonly(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n }\n var existingOb = target && target.__ob__;\n if (existingOb && existingOb.shallow !== shallow) {\n warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n }\n }\n var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n if (process.env.NODE_ENV !== 'production' && !ob) {\n if (target == null || isPrimitive(target)) {\n warn(\"value cannot be made reactive: \".concat(String(target)));\n }\n if (isCollectionType(target)) {\n warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n }\n }\n }\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (isObject(value)) {\n rawMap.set(value, true);\n }\n return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n var type = toRawType(value);\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INIITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n notify: noop,\n depend: noop,\n addSub: noop,\n removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n function Observer(value, shallow, mock) {\n if (shallow === void 0) { shallow = false; }\n if (mock === void 0) { mock = false; }\n this.value = value;\n this.shallow = shallow;\n this.mock = mock;\n // this.value = value\n this.dep = mock ? mockDep : new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (isArray(value)) {\n if (!mock) {\n if (hasProto) {\n value.__proto__ = arrayMethods;\n /* eslint-enable no-proto */\n }\n else {\n for (var i = 0, l = arrayKeys.length; i < l; i++) {\n var key = arrayKeys[i];\n def(value, key, arrayMethods[key]);\n }\n }\n }\n if (!shallow) {\n this.observeArray(value);\n }\n }\n else {\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n var keys = Object.keys(value);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);\n }\n }\n }\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function (value) {\n for (var i = 0, l = value.length; i < l; i++) {\n observe(value[i], false, this.mock);\n }\n };\n return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n return value.__ob__;\n }\n if (shouldObserve &&\n (ssrMockReactivity || !isServerRendering()) &&\n (isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value.__v_skip /* ReactiveFlags.SKIP */ &&\n !rawMap.has(value) &&\n !isRef(value) &&\n !(value instanceof VNode)) {\n return new Observer(value, shallow, ssrMockReactivity);\n }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock) {\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) &&\n (val === NO_INIITIAL_VALUE || arguments.length === 2)) {\n val = obj[key];\n }\n var childOb = !shallow && observe(val, false, mock);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: obj,\n type: \"get\" /* TrackOpTypes.GET */,\n key: key\n });\n }\n else {\n dep.depend();\n }\n if (childOb) {\n childOb.dep.depend();\n if (isArray(value)) {\n dependArray(value);\n }\n }\n }\n return isRef(value) && !shallow ? value.value : value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (!hasChanged(value, newVal)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n }\n else if (getter) {\n // #7981: for accessor properties without setter\n return;\n }\n else if (!shallow && isRef(value) && !isRef(newVal)) {\n value.value = newVal;\n return;\n }\n else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal, false, mock);\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: obj,\n key: key,\n newValue: newVal,\n oldValue: value\n });\n }\n else {\n dep.notify();\n }\n }\n });\n return dep;\n}\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' && warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n var ob = target.__ob__;\n if (isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n // when mocking for SSR, array methods are not hijacked\n if (ob && !ob.shallow && ob.mock) {\n observe(val, false, true);\n }\n return val;\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.');\n return val;\n }\n if (!ob) {\n target[key] = val;\n return val;\n }\n defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"add\" /* TriggerOpTypes.ADD */,\n target: target,\n key: key,\n newValue: val,\n oldValue: undefined\n });\n }\n else {\n ob.dep.notify();\n }\n return val;\n}\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n var ob = target.__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.');\n return;\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n if (!hasOwn(target, key)) {\n return;\n }\n delete target[key];\n if (!ob) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"delete\" /* TriggerOpTypes.DELETE */,\n target: target,\n key: key\n });\n }\n else {\n ob.dep.notify();\n }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n if (e && e.__ob__) {\n e.__ob__.dep.depend();\n }\n if (isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n var ref = {};\n def(ref, RefFlag, true);\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n return ref;\n}\nfunction triggerRef(ref) {\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n warn(\"received object is not a triggerable ref.\");\n }\n if (process.env.NODE_ENV !== 'production') {\n ref.dep &&\n ref.dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: ref,\n key: 'value'\n });\n }\n else {\n ref.dep && ref.dep.notify();\n }\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n if (isReactive(objectWithRefs)) {\n return objectWithRefs;\n }\n var proxy = {};\n var keys = Object.keys(objectWithRefs);\n for (var i = 0; i < keys.length; i++) {\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n }\n return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = source[key];\n if (isRef(val)) {\n return val.value;\n }\n else {\n var ob = val && val.__ob__;\n if (ob)\n ob.dep.depend();\n return val;\n }\n },\n set: function (value) {\n var oldValue = source[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n }\n else {\n source[key] = value;\n }\n }\n });\n}\nfunction customRef(factory) {\n var dep = new Dep();\n var _a = factory(function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n dep.depend();\n }\n }, function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value'\n });\n }\n else {\n dep.notify();\n }\n }), get = _a.get, set = _a.set;\n var ref = {\n get value() {\n return get();\n },\n set value(newVal) {\n set(newVal);\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\nfunction toRefs(object) {\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n warn(\"toRefs() expects a reactive object but received a plain one.\");\n }\n var ret = isArray(object) ? new Array(object.length) : {};\n for (var key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nfunction toRef(object, key, defaultValue) {\n var val = object[key];\n if (isRef(val)) {\n return val;\n }\n var ref = {\n get value() {\n var val = object[key];\n return val === undefined ? defaultValue : val;\n },\n set value(newVal) {\n object[key] = newVal;\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\n\nvar rawToReadonlyMap = new WeakMap();\nvar rawToShallowReadonlyMap = new WeakMap();\nfunction readonly(target) {\n return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n if (!isPlainObject(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Vue 2 does not support readonly arrays.\");\n }\n else if (isCollectionType(target)) {\n warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n }\n else {\n warn(\"value cannot be made readonly: \".concat(typeof target));\n }\n }\n return target;\n }\n // already a readonly object\n if (isReadonly(target)) {\n return target;\n }\n // already has a readonly proxy\n var map = shallow ? rawToShallowReadonlyMap : rawToReadonlyMap;\n var existingProxy = map.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n var proxy = Object.create(Object.getPrototypeOf(target));\n map.set(target, proxy);\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n if (isRef(target)) {\n def(proxy, RefFlag, true);\n }\n if (shallow || isShallow(target)) {\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n }\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n defineReadonlyProperty(proxy, target, keys[i], shallow);\n }\n return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n Object.defineProperty(proxy, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = target[key];\n return shallow || !isPlainObject(val) ? val : readonly(val);\n },\n set: function () {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n }\n });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n var getter;\n var setter;\n var onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = process.env.NODE_ENV !== 'production'\n ? function () {\n warn('Write operation failed: computed value is readonly');\n }\n : noop;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n var watcher = isServerRendering()\n ? null\n : new Watcher(currentInstance, getter, noop, { lazy: true });\n if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n watcher.onTrack = debugOptions.onTrack;\n watcher.onTrigger = debugOptions.onTrigger;\n }\n var ref = {\n // some libs rely on the presence effect for checking computed refs\n // from normal refs, but the implementation doesn't matter\n effect: watcher,\n get value() {\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n Dep.target.onTrack({\n effect: Dep.target,\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n watcher.depend();\n }\n return watcher.value;\n }\n else {\n return getter();\n }\n },\n set value(newVal) {\n setter(newVal);\n }\n };\n def(ref, RefFlag, true);\n def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n return ref;\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n \"supports `watch(source, cb, options?) signature.\");\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n if (process.env.NODE_ENV !== 'production' && !cb) {\n if (immediate !== undefined) {\n warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n if (deep !== undefined) {\n warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n }\n var warnInvalidSource = function (s) {\n warn(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n \"function, a ref, a reactive object, or an array of these types.\");\n };\n var instance = currentInstance;\n var call = function (fn, type, args) {\n if (args === void 0) { args = null; }\n return invokeWithErrorHandling(fn, null, args, instance, type);\n };\n var getter;\n var forceTrigger = false;\n var isMultiSource = false;\n if (isRef(source)) {\n getter = function () { return source.value; };\n forceTrigger = isShallow(source);\n }\n else if (isReactive(source)) {\n getter = function () {\n source.__ob__.dep.depend();\n return source;\n };\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n getter = function () {\n return source.map(function (s) {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return call(s, WATCHER_GETTER);\n }\n else {\n process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n }\n });\n };\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = function () { return call(source, WATCHER_GETTER); };\n }\n else {\n // no cb -> simple effect\n getter = function () {\n if (instance && instance._isDestroyed) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return call(source, WATCHER, [onCleanup]);\n };\n }\n }\n else {\n getter = noop;\n process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n }\n if (cb && deep) {\n var baseGetter_1 = getter;\n getter = function () { return traverse(baseGetter_1()); };\n }\n var cleanup;\n var onCleanup = function (fn) {\n cleanup = watcher.onStop = function () {\n call(fn, WATCHER_CLEANUP);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager\n if (isServerRendering()) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = noop;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n call(cb, WATCHER_CB, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n return noop;\n }\n var watcher = new Watcher(currentInstance, getter, noop, {\n lazy: true\n });\n watcher.noRecurse = !cb;\n var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n // overwrite default run\n watcher.run = function () {\n if (!watcher.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n var newValue = watcher.get();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some(function (v, i) {\n return hasChanged(v, oldValue[i]);\n })\n : hasChanged(newValue, oldValue))) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n call(cb, WATCHER_CB, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n watcher.get();\n }\n };\n if (flush === 'sync') {\n watcher.update = watcher.run;\n }\n else if (flush === 'post') {\n watcher.post = true;\n watcher.update = function () { return queueWatcher(watcher); };\n }\n else {\n // pre\n watcher.update = function () {\n if (instance && instance === currentInstance && !instance._isMounted) {\n // pre-watcher triggered before\n var buffer = instance._preWatchers || (instance._preWatchers = []);\n if (buffer.indexOf(watcher) < 0)\n buffer.push(watcher);\n }\n else {\n queueWatcher(watcher);\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n watcher.onTrack = onTrack;\n watcher.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n watcher.run();\n }\n else {\n oldValue = watcher.get();\n }\n }\n else if (flush === 'post' && instance) {\n instance.$once('hook:mounted', function () { return watcher.get(); });\n }\n else {\n watcher.get();\n }\n return function () {\n watcher.teardown();\n };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n function EffectScope(detached) {\n if (detached === void 0) { detached = false; }\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n EffectScope.prototype.run = function (fn) {\n if (this.active) {\n var currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"cannot run an inactive effect scope.\");\n }\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.on = function () {\n activeEffectScope = this;\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.off = function () {\n activeEffectScope = this.parent;\n };\n EffectScope.prototype.stop = function (fromParent) {\n if (this.active) {\n var i = void 0, l = void 0;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].teardown();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n var last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n };\n return EffectScope;\n}());\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n if (scope === void 0) { scope = activeEffectScope; }\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"onScopeDispose() is called when there is no active effect scope\" +\n \" to be associated with.\");\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"provide() can only be used inside setup().\");\n }\n }\n else {\n // TS doesn't allow symbol as index type\n resolveProvided(currentInstance)[key] = value;\n }\n}\nfunction resolveProvided(vm) {\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n var existing = vm._provided;\n var parentProvides = vm.$parent && vm.$parent._provided;\n if (parentProvides === existing) {\n return (vm._provided = Object.create(parentProvides));\n }\n else {\n return existing;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n var instance = currentInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n var provides = instance.$parent && instance.$parent._provided;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance)\n : defaultValue;\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"inject() can only be used inside setup() or functional components.\");\n }\n}\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once,\n capture: capture,\n passive: passive\n };\n});\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var fns = invoker.fns;\n if (isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n }\n }\n else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n invoker.fns = fns;\n return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n }\n else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n }\n else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove(event.name, oldOn[name], event.capture);\n }\n }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n function wrappedHook() {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove$2(invoker.fns, wrappedHook);\n }\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n }\n else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n }\n else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return;\n }\n var res = {};\n var attrs = data.attrs, props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n \"\".concat(formatComponentName(\n // @ts-expect-error tag is string\n tag || Ctor), \", but the declared prop name is\") +\n \" \\\"\".concat(key, \"\\\". \") +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true;\n }\n else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true;\n }\n }\n return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. \r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./capture.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./capture.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./capture.vue?vue&type=template&id=68930959&\"\nimport script from \"./capture.vue?vue&type=script&lang=js&\"\nexport * from \"./capture.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/frontend/dist/js/chunk-7cb613d5.5349d43e.js b/app/frontend/dist/js/chunk-7cb613d5.5349d43e.js new file mode 100644 index 0000000..8278edd --- /dev/null +++ b/app/frontend/dist/js/chunk-7cb613d5.5349d43e.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7cb613d5"],{"36bc":function(t,s,e){"use strict";e("d28e")},d28e:function(t,s,e){},e022:function(t,s,e){"use strict";e.r(s);e("14d9");var r=function(){var t=this,s=t._self._c;return s("div",[t.results?s("div",[t.grep_keyword("STALKERWARE","high")?s("div",{staticClass:"high-wrapper"},[s("div",{staticClass:"center"},[s("h1",{staticClass:"warning-title",domProps:{innerHTML:t._s(t.$t("report.stalkerware_msg"))}}),s("button",{staticClass:"btn btn-report-low-light",on:{click:function(s){return t.new_capture()}}},[t._v(t._s(t.$t("report.start_new_capture")))]),s("button",{staticClass:"btn btn-report-high",on:{click:function(s){t.show_report=!0,t.results=!1}}},[t._v(t._s(t.$t("report.show_full_report")))])])]):t.alerts.high.length>=1?s("div",{staticClass:"high-wrapper"},[s("div",{staticClass:"center"},[s("h1",{staticClass:"warning-title",domProps:{innerHTML:t._s(t.$t("report.high_msg",{nb:t.$i18n.messages[t.$i18n.locale].report.numbers[t.alerts.high.length]}))}}),s("button",{staticClass:"btn btn-report-low-light",on:{click:function(s){return t.new_capture()}}},[t._v(t._s(t.$t("report.start_new_capture")))]),s("button",{staticClass:"btn btn-report-high",on:{click:function(s){t.show_report=!0,t.results=!1}}},[t._v(t._s(t.$t("report.show_full_report")))])])]):t.alerts.moderate.length>=1?s("div",{staticClass:"med-wrapper"},[s("div",{staticClass:"center"},[s("h1",{staticClass:"warning-title",domProps:{innerHTML:t._s(t.$t("report.moderate_msg",{nb:t.$i18n.messages[t.$i18n.locale].report.numbers[t.alerts.moderate.length]}))}}),s("button",{staticClass:"btn btn-report-low-light",on:{click:function(s){return t.new_capture()}}},[t._v(t._s(t.$t("report.start_new_capture")))]),s("button",{staticClass:"btn btn-report-moderate",on:{click:function(s){t.show_report=!0,t.results=!1}}},[t._v(t._s(t.$t("report.show_full_report")))])])]):t.alerts.low.length>=1?s("div",{staticClass:"low-wrapper"},[s("div",{staticClass:"center"},[s("h1",{staticClass:"warning-title",domProps:{innerHTML:t._s(t.$t("report.low_msg",{nb:t.$i18n.messages[t.$i18n.locale].report.numbers[t.alerts.low.length]}))}}),s("button",{staticClass:"btn btn-report-low-light",on:{click:function(s){return t.new_capture()}}},[t._v(t._s(t.$t("report.start_new_capture")))]),s("button",{staticClass:"btn btn-report-low",on:{click:function(s){t.show_report=!0,t.results=!1}}},[t._v(t._s(t.$t("report.show_full_report")))])])]):s("div",{staticClass:"none-wrapper"},[s("div",{staticClass:"center"},[s("h1",{staticClass:"warning-title",domProps:{innerHTML:t._s(t.$t("report.fine_msg"))}}),s("button",{staticClass:"btn btn-report-low-light",on:{click:function(s){t.show_report=!0,t.results=!1}}},[t._v(t._s(t.$t("report.show_full_report")))]),s("button",{staticClass:"btn btn-report-low",on:{click:function(s){return t.new_capture()}}},[t._v(t._s(t.$t("report.start_new_capture")))])])])]):t.show_report?s("div",{staticClass:"wrapper"},[s("div",{staticClass:"report-wrapper"},[s("div",{staticClass:"device-ctx"},[s("h3",{staticStyle:{margin:"0","padding-left":"10px"}},[t._v(t._s(t.$t("report.report_of"))+" "+t._s(t.device.name))]),s("div",{staticClass:"device-ctx-legend"},[t._v(" "+t._s(t.$t("report.pcap_sha1"))+" "+t._s(t.pcap.SHA1)),s("br"),t._v(" "+t._s(t.$t("report.capture_started"))+" "+t._s(t.pcap["First packet time"].split(",")[0])),s("br"),t._v(" "+t._s(t.$t("report.capture_ended"))+" "+t._s(t.pcap["Last packet time"].split(",")[0])),s("br"),t._v(" "+t._s(t.$t("report.detection_methods"))+" "+t._s(t.detection_methods)+" ")])]),s("ul",{staticClass:"alerts"},[t._l(t.alerts.high,(function(e){return s("li",{key:e.message,staticClass:"alert"},[s("div",{staticClass:"alert-header"},[s("span",{staticClass:"high-label"},[t._v(t._s(t.$t("report.high")))]),s("span",{staticClass:"alert-id"},[t._v(t._s(e.id))]),s("span",{staticClass:"btn-whitelist",on:{click:function(s){return t.add_whitelist(e.host)}}},[t._v("Add to the whitelist")])]),s("div",{staticClass:"alert-body"},[s("span",{staticClass:"title"},[t._v(t._s(e.title))]),s("p",{staticClass:"description"},[t._v(t._s(e.description))])])])})),t._l(t.alerts.moderate,(function(e){return s("li",{key:e.message,staticClass:"alert"},[s("div",{staticClass:"alert-header"},[s("span",{staticClass:"moderate-label"},[t._v(t._s(t.$t("report.moderate")))]),s("span",{staticClass:"alert-id"},[t._v(t._s(e.id))]),s("span",{staticClass:"btn-whitelist",on:{click:function(s){return t.add_whitelist(e.host)}}},[t._v("Add to the whitelist")])]),s("div",{staticClass:"alert-body"},[s("span",{staticClass:"title"},[t._v(t._s(e.title))]),s("p",{staticClass:"description"},[t._v(t._s(e.description))])])])})),t._l(t.alerts.low,(function(e){return s("li",{key:e.message,staticClass:"alert"},[s("div",{staticClass:"alert-header"},[s("span",{staticClass:"moderate-label"},[t._v(t._s(t.$t("report.low")))]),s("span",{staticClass:"alert-id"},[t._v(t._s(e.id))]),s("span",{staticClass:"btn-whitelist",on:{click:function(s){return t.add_whitelist(e.host)}}},[t._v("Add to the whitelist")])]),s("div",{staticClass:"alert-body"},[s("span",{staticClass:"title"},[t._v(t._s(e.title))]),s("p",{staticClass:"description"},[t._v(t._s(e.description))])])])}))],2),t.uncategorized_records.length>0?s("h5",{staticClass:"title-report"},[t._v(t._s(t.$t("report.uncat_coms_table")))]):t._e(),t.uncategorized_records.length>0?s("div",[s("table",{staticClass:"table-uncat"},[s("thead",[s("tr",[s("td",[t._v(t._s(t.$t("report.protocol")))]),s("td",[t._v(t._s(t.$t("report.domain_name")))]),s("td",[t._v(t._s(t.$t("report.ip_address")))]),s("td",[t._v(t._s(t.$t("report.port")))])])]),t._l(t.uncategorized_records,(function(e){return s("tr",{key:e.ip_dst},[s("td",[t._v(t._s(Object.keys(e.protocols).map(t=>e.protocols[t].name).join(", ")))]),s("td",{on:{click:function(s){return t.add_whitelist(e.domains[0])}}},[t._v(t._s(e.domains.join(", ")))]),s("td",{on:{click:function(s){return t.add_whitelist(e.ip_dst)}}},[t._v(t._s(e.ip_dst))]),s("td",[t._v(t._s(Object.keys(e.protocols).map(t=>e.protocols[t].port).join(", ")))])])}))],2)]):t._e(),s("div",{attrs:{id:"controls-analysis"}},[s("div",{staticClass:"column col-6"},[s("button",{staticClass:"btn btn btn-primary width-100",on:{click:function(s){return t.save_capture()}}},[t._v(t._s(t.$t("report.save")))])]),s("div",{staticClass:"column col-6"},[s("button",{staticClass:"btn width-100",on:{click:function(s){return t.$router.push("generate-ap")}}},[t._v(t._s(t.$t("report.start_new_capture")))])])])])]):t._e()])},i=[],a=e("a18c"),o=e("bc3a"),n=e.n(o),c=e("56d7"),l={name:"report",data(){return{results:!0,detection_methods:"",uncategorized_records:[]}},props:{device:Object,methods:Object,pcap:Object,records:Array,alerts:Array,capture_token:String},methods:{save_capture:function(){console.log("[report.vue] Saving the capture"),a["a"].replace({name:"save-capture",params:{capture_token:this.capture_token}})},new_capture:function(){console.log("[report.vue] Deleting the capture and creating a new AP"),n.a.get("/api/misc/delete-captures",{timeout:3e4}).then(()=>{a["a"].push({name:"generate-ap"})}).catch(t=>{console.log(t)})},grep_keyword:function(t,s){try{var e,r;return!!this.alerts[s].length&&(this.alerts[s].forEach(s=>{e=s.title.indexOf(t),r||(r=e>0)}),r)}catch(i){console.log(i)}},get_detection_methods:function(){this.detection_methods+=1==this.methods.iocs?`☑ ${this.$t("report.indicators")} `:`☐ ${this.$t("report.indicators")} `,this.detection_methods+=1==this.methods.heuristics?`☑ ${this.$t("report.heuristics")} `:`☐ ${this.$t("report.heuristics")} `,this.detection_methods+=1==this.methods.active?`☑ ${this.$t("report.active")} `:`☐ ${this.$t("report.active")} `},add_whitelist:function(t){c["EventBus"].$emit("showModal",{action:"whitelist",host:t})},get_uncategorized_records:function(){this.records.forEach(t=>{t.suspicious||t.whitelisted||this.uncategorized_records.push(t)})}},created:function(){console.log("[report.vue] Showing report.vue"),this.get_detection_methods(),this.get_uncategorized_records()}},p=l,_=(e("36bc"),e("2877")),d=Object(_["a"])(p,r,i,!1,null,null,null);s["default"]=d.exports}}]); +//# sourceMappingURL=chunk-7cb613d5.5349d43e.js.map \ No newline at end of file diff --git a/app/frontend/dist/js/chunk-7cb613d5.5349d43e.js.map b/app/frontend/dist/js/chunk-7cb613d5.5349d43e.js.map new file mode 100644 index 0000000..f89ab64 --- /dev/null +++ b/app/frontend/dist/js/chunk-7cb613d5.5349d43e.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/report.vue?b493","webpack:///./src/views/report.vue","webpack:///src/views/report.vue","webpack:///./src/views/report.vue?5d61","webpack:///./src/views/report.vue?7f56"],"names":["render","_vm","this","_c","_self","results","grep_keyword","staticClass","domProps","_s","$t","on","$event","new_capture","_v","show_report","alerts","high","length","nb","$i18n","messages","locale","report","numbers","moderate","low","staticStyle","device","name","pcap","SHA1","split","detection_methods","_l","alert","key","message","id","add_whitelist","host","title","description","uncategorized_records","_e","record","ip_dst","Object","keys","protocols","map","join","domains","port","attrs","save_capture","$router","push","staticRenderFns","data","props","methods","records","capture_token","console","router","params","axios","timeout","then","catch","idx","get_detection_methods","EventBus","get_uncategorized_records","created","component"],"mappings":"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","file":"js/chunk-7cb613d5.5349d43e.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report.vue?vue&type=style&index=0&id=3588ee24&prod&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.results)?_c('div',[(_vm.grep_keyword('STALKERWARE', 'high'))?_c('div',{staticClass:\"high-wrapper\"},[_c('div',{staticClass:\"center\"},[_c('h1',{staticClass:\"warning-title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('report.stalkerware_msg'))}}),_c('button',{staticClass:\"btn btn-report-low-light\",on:{\"click\":function($event){return _vm.new_capture()}}},[_vm._v(_vm._s(_vm.$t(\"report.start_new_capture\")))]),_c('button',{staticClass:\"btn btn-report-high\",on:{\"click\":function($event){_vm.show_report=true;_vm.results=false;}}},[_vm._v(_vm._s(_vm.$t(\"report.show_full_report\")))])])]):(_vm.alerts.high.length >= 1)?_c('div',{staticClass:\"high-wrapper\"},[_c('div',{staticClass:\"center\"},[_c('h1',{staticClass:\"warning-title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('report.high_msg', { nb: _vm.$i18n.messages[_vm.$i18n.locale].report.numbers[_vm.alerts.high.length] }))}}),_c('button',{staticClass:\"btn btn-report-low-light\",on:{\"click\":function($event){return _vm.new_capture()}}},[_vm._v(_vm._s(_vm.$t(\"report.start_new_capture\")))]),_c('button',{staticClass:\"btn btn-report-high\",on:{\"click\":function($event){_vm.show_report=true;_vm.results=false;}}},[_vm._v(_vm._s(_vm.$t(\"report.show_full_report\")))])])]):(_vm.alerts.moderate.length >= 1)?_c('div',{staticClass:\"med-wrapper\"},[_c('div',{staticClass:\"center\"},[_c('h1',{staticClass:\"warning-title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('report.moderate_msg', { nb: _vm.$i18n.messages[_vm.$i18n.locale].report.numbers[_vm.alerts.moderate.length] }))}}),_c('button',{staticClass:\"btn btn-report-low-light\",on:{\"click\":function($event){return _vm.new_capture()}}},[_vm._v(_vm._s(_vm.$t(\"report.start_new_capture\")))]),_c('button',{staticClass:\"btn btn-report-moderate\",on:{\"click\":function($event){_vm.show_report=true;_vm.results=false;}}},[_vm._v(_vm._s(_vm.$t(\"report.show_full_report\")))])])]):(_vm.alerts.low.length >= 1)?_c('div',{staticClass:\"low-wrapper\"},[_c('div',{staticClass:\"center\"},[_c('h1',{staticClass:\"warning-title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('report.low_msg', { nb: _vm.$i18n.messages[_vm.$i18n.locale].report.numbers[_vm.alerts.low.length] }))}}),_c('button',{staticClass:\"btn btn-report-low-light\",on:{\"click\":function($event){return _vm.new_capture()}}},[_vm._v(_vm._s(_vm.$t(\"report.start_new_capture\")))]),_c('button',{staticClass:\"btn btn-report-low\",on:{\"click\":function($event){_vm.show_report=true;_vm.results=false;}}},[_vm._v(_vm._s(_vm.$t(\"report.show_full_report\")))])])]):_c('div',{staticClass:\"none-wrapper\"},[_c('div',{staticClass:\"center\"},[_c('h1',{staticClass:\"warning-title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('report.fine_msg'))}}),_c('button',{staticClass:\"btn btn-report-low-light\",on:{\"click\":function($event){_vm.show_report=true;_vm.results=false;}}},[_vm._v(_vm._s(_vm.$t(\"report.show_full_report\")))]),_c('button',{staticClass:\"btn btn-report-low\",on:{\"click\":function($event){return _vm.new_capture()}}},[_vm._v(_vm._s(_vm.$t(\"report.start_new_capture\")))])])])]):(_vm.show_report)?_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"report-wrapper\"},[_c('div',{staticClass:\"device-ctx\"},[_c('h3',{staticStyle:{\"margin\":\"0\",\"padding-left\":\"10px\"}},[_vm._v(_vm._s(_vm.$t(\"report.report_of\"))+\" \"+_vm._s(_vm.device.name))]),_c('div',{staticClass:\"device-ctx-legend\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"report.pcap_sha1\"))+\" \"+_vm._s(_vm.pcap.SHA1)),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"report.capture_started\"))+\" \"+_vm._s(_vm.pcap[\"First packet time\"].split(\",\")[0])),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"report.capture_ended\"))+\" \"+_vm._s(_vm.pcap[\"Last packet time\"].split(\",\")[0])),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"report.detection_methods\"))+\" \"+_vm._s(_vm.detection_methods)+\" \")])]),_c('ul',{staticClass:\"alerts\"},[_vm._l((_vm.alerts.high),function(alert){return _c('li',{key:alert.message,staticClass:\"alert\"},[_c('div',{staticClass:\"alert-header\"},[_c('span',{staticClass:\"high-label\"},[_vm._v(_vm._s(_vm.$t(\"report.high\")))]),_c('span',{staticClass:\"alert-id\"},[_vm._v(_vm._s(alert.id))]),_c('span',{staticClass:\"btn-whitelist\",on:{\"click\":function($event){return _vm.add_whitelist(alert.host)}}},[_vm._v(\"Add to the whitelist\")])]),_c('div',{staticClass:\"alert-body\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(alert.title))]),_c('p',{staticClass:\"description\"},[_vm._v(_vm._s(alert.description))])])])}),_vm._l((_vm.alerts.moderate),function(alert){return _c('li',{key:alert.message,staticClass:\"alert\"},[_c('div',{staticClass:\"alert-header\"},[_c('span',{staticClass:\"moderate-label\"},[_vm._v(_vm._s(_vm.$t(\"report.moderate\")))]),_c('span',{staticClass:\"alert-id\"},[_vm._v(_vm._s(alert.id))]),_c('span',{staticClass:\"btn-whitelist\",on:{\"click\":function($event){return _vm.add_whitelist(alert.host)}}},[_vm._v(\"Add to the whitelist\")])]),_c('div',{staticClass:\"alert-body\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(alert.title))]),_c('p',{staticClass:\"description\"},[_vm._v(_vm._s(alert.description))])])])}),_vm._l((_vm.alerts.low),function(alert){return _c('li',{key:alert.message,staticClass:\"alert\"},[_c('div',{staticClass:\"alert-header\"},[_c('span',{staticClass:\"moderate-label\"},[_vm._v(_vm._s(_vm.$t(\"report.low\")))]),_c('span',{staticClass:\"alert-id\"},[_vm._v(_vm._s(alert.id))]),_c('span',{staticClass:\"btn-whitelist\",on:{\"click\":function($event){return _vm.add_whitelist(alert.host)}}},[_vm._v(\"Add to the whitelist\")])]),_c('div',{staticClass:\"alert-body\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(alert.title))]),_c('p',{staticClass:\"description\"},[_vm._v(_vm._s(alert.description))])])])})],2),(_vm.uncategorized_records.length>0)?_c('h5',{staticClass:\"title-report\"},[_vm._v(_vm._s(_vm.$t(\"report.uncat_coms_table\")))]):_vm._e(),(_vm.uncategorized_records.length>0)?_c('div',[_c('table',{staticClass:\"table-uncat\"},[_c('thead',[_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t(\"report.protocol\")))]),_c('td',[_vm._v(_vm._s(_vm.$t(\"report.domain_name\")))]),_c('td',[_vm._v(_vm._s(_vm.$t(\"report.ip_address\")))]),_c('td',[_vm._v(_vm._s(_vm.$t(\"report.port\")))])])]),_vm._l((_vm.uncategorized_records),function(record){return _c('tr',{key:record.ip_dst},[_c('td',[_vm._v(_vm._s(Object.keys(record.protocols).map(key => record.protocols[key].name).join(\", \")))]),_c('td',{on:{\"click\":function($event){return _vm.add_whitelist(record.domains[0])}}},[_vm._v(_vm._s(record.domains.join(\", \")))]),_c('td',{on:{\"click\":function($event){return _vm.add_whitelist(record.ip_dst)}}},[_vm._v(_vm._s(record.ip_dst))]),_c('td',[_vm._v(_vm._s(Object.keys(record.protocols).map(key => record.protocols[key].port).join(\", \")))])])})],2)]):_vm._e(),_c('div',{attrs:{\"id\":\"controls-analysis\"}},[_c('div',{staticClass:\"column col-6\"},[_c('button',{staticClass:\"btn btn btn-primary width-100\",on:{\"click\":function($event){return _vm.save_capture()}}},[_vm._v(_vm._s(_vm.$t(\"report.save\")))])]),_c('div',{staticClass:\"column col-6\"},[_c('button',{staticClass:\"btn width-100\",on:{\"click\":function($event){return _vm.$router.push('generate-ap')}}},[_vm._v(_vm._s(_vm.$t(\"report.start_new_capture\")))])])])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./report.vue?vue&type=template&id=3588ee24&\"\nimport script from \"./report.vue?vue&type=script&lang=js&\"\nexport * from \"./report.vue?vue&type=script&lang=js&\"\nimport style0 from \"./report.vue?vue&type=style&index=0&id=3588ee24&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/app/frontend/dist/js/chunk-vendors.3521aad3.js b/app/frontend/dist/js/chunk-vendors.3521aad3.js new file mode 100644 index 0000000..a2c9670 --- /dev/null +++ b/app/frontend/dist/js/chunk-vendors.3521aad3.js @@ -0,0 +1,25 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"04f8":function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"06cf":function(t,e,n){var r=n("83ab"),o=n("c65b"),i=n("d1e7"),a=n("5c6c"),s=n("fc6a"),c=n("a04b"),u=n("1a2d"),l=n("0cfb"),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=s(t),e=c(e),l)try{return f(t,e)}catch(n){}if(u(t,e))return a(!o(i.f,t,e),t[e])}},"07fa":function(t,e,n){var r=n("50c4");t.exports=function(t){return r(t.length)}},"0a06":function(t,e,n){"use strict";var r=n("c532"),o=n("30b5"),i=n("f6b4"),a=n("5270"),s=n("4a7b"),c=n("848b"),u=c.validators;function l(t){this.defaults=t,this.interceptors={request:new i,response:new i}}l.prototype.request=function(t){"string"===typeof t?(t=arguments[1]||{},t.url=arguments[0]):t=t||{},t=s(this.defaults,t),t.method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&c.assertOptions(e,{silentJSONParsing:u.transitional(u.boolean,"1.0.0"),forcedJSONParsing:u.transitional(u.boolean,"1.0.0"),clarifyTimeoutError:u.transitional(u.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(e){"function"===typeof e.runWhen&&!1===e.runWhen(t)||(r=r&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var o,i=[];if(this.interceptors.response.forEach((function(t){i.push(t.fulfilled,t.rejected)})),!r){var l=[a,void 0];Array.prototype.unshift.apply(l,n),l=l.concat(i),o=Promise.resolve(t);while(l.length)o=o.then(l.shift(),l.shift());return o}var f=t;while(n.length){var p=n.shift(),h=n.shift();try{f=p(f)}catch(d){h(d);break}}try{o=a(f)}catch(d){return Promise.reject(d)}while(i.length)o=o.then(i.shift(),i.shift());return o},l.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){l.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){l.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=l},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"0d51":function(t,e){var n=String;t.exports=function(t){try{return n(t)}catch(e){return"Object"}}},"0df6":function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},"13d2":function(t,e,n){var r=n("d039"),o=n("1626"),i=n("1a2d"),a=n("83ab"),s=n("5e77").CONFIGURABLE,c=n("8925"),u=n("69f3"),l=u.enforce,f=u.get,p=Object.defineProperty,h=a&&!r((function(){return 8!==p((function(){}),"length",{value:8}).length})),d=String(String).split("String"),v=t.exports=function(t,e,n){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!i(t,"name")||s&&t.name!==e)&&(a?p(t,"name",{value:e,configurable:!0}):t.name=e),h&&n&&i(n,"arity")&&t.length!==n.arity&&p(t,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?a&&p(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(o){}var r=l(t);return i(r,"source")||(r.source=d.join("string"==typeof e?e:"")),t};Function.prototype.toString=v((function(){return o(this)&&f(this).source||c(this)}),"toString")},"14d9":function(t,e,n){"use strict";var r=n("23e7"),o=n("7b0b"),i=n("07fa"),a=n("3a34"),s=n("3511"),c=n("d039"),u=c((function(){return 4294967297!==[].push.call({length:4294967296},1)})),l=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}();r({target:"Array",proto:!0,arity:1,forced:u||l},{push:function(t){var e=o(this),n=i(e),r=arguments.length;s(n+r);for(var c=0;c=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){l.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){l.headers[t]=r.merge(a)})),t.exports=l}).call(this,n("4362"))},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2b0e":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return Zr})); +/*! + * Vue.js v2.7.13 + * (c) 2014-2022 Evan You + * Released under the MIT License. + */ +var r=Object.freeze({}),o=Array.isArray;function i(t){return void 0===t||null===t}function a(t){return void 0!==t&&null!==t}function s(t){return!0===t}function c(t){return!1===t}function u(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function l(t){return"function"===typeof t}function f(t){return null!==t&&"object"===typeof t}var p=Object.prototype.toString;function h(t){return"[object Object]"===p.call(t)}function d(t){return"[object RegExp]"===p.call(t)}function v(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function m(t){return a(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function y(t){return null==t?"":Array.isArray(t)||h(t)&&t.toString===p?JSON.stringify(t,null,2):String(t)}function g(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var k=Object.prototype.hasOwnProperty;function x(t,e){return k.call(t,e)}function C(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var O=/-(\w)/g,S=C((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),E=C((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),T=/\B([A-Z])/g,$=C((function(t){return t.replace(T,"-$1").toLowerCase()}));function j(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function A(t,e){return t.bind(e)}var P=Function.prototype.bind?A:j;function M(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function I(t,e){for(var n in e)t[n]=e[n];return t}function D(t){for(var e={},n=0;n0,rt=tt&&tt.indexOf("edge/")>0;tt&&tt.indexOf("android");var ot=tt&&/iphone|ipad|ipod|ios/.test(tt);tt&&/chrome\/\d+/.test(tt),tt&&/phantomjs/.test(tt);var it,at=tt&&tt.match(/firefox\/(\d+)/),st={}.watch,ct=!1;if(Q)try{var ut={};Object.defineProperty(ut,"passive",{get:function(){ct=!0}}),window.addEventListener("test-passive",null,ut)}catch(Ya){}var lt=function(){return void 0===it&&(it=!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),it},ft=Q&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function pt(t){return"function"===typeof t&&/native code/.test(t.toString())}var ht,dt="undefined"!==typeof Symbol&&pt(Symbol)&&"undefined"!==typeof Reflect&&pt(Reflect.ownKeys);ht="undefined"!==typeof Set&&pt(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var vt=null;function mt(t){void 0===t&&(t=null),t||vt&&vt._scope.off(),vt=t,t&&t._scope.on()}var yt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),gt=function(t){void 0===t&&(t="");var e=new yt;return e.text=t,e.isComment=!0,e};function bt(t){return new yt(void 0,void 0,void 0,String(t))}function _t(t){var e=new yt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var wt=0,kt=[],xt=function(){for(var t=0;t0&&(r=ce(r,"".concat(e||"","_").concat(n)),se(r[0])&&se(l)&&(f[c]=bt(l.text+r[0].text),r.shift()),f.push.apply(f,r)):u(r)?se(l)?f[c]=bt(l.text+r):""!==r&&f.push(bt(r)):se(r)&&se(l)?f[c]=bt(l.text+r.text):(s(t._isVList)&&a(r.tag)&&i(r.key)&&a(e)&&(r.key="__vlist".concat(e,"_").concat(n,"__")),f.push(r)));return f}function ue(t,e){var n,r,i,s,c=null;if(o(t)||"string"===typeof t)for(c=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,c=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&c===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=Te(t,n,u,e[u]))}else i={};for(var l in n)l in i||(i[l]=$e(n,l));return e&&Object.isExtensible(e)&&(e._normalized=i),G(i,"$stable",s),G(i,"$key",c),G(i,"$hasNormal",a),i}function Te(t,e,n,r){var i=function(){var e=vt;mt(t);var n=arguments.length?r.apply(null,arguments):r({});n=n&&"object"===typeof n&&!o(n)?[n]:ae(n);var i=n&&n[0];return mt(e),n&&(!i||1===n.length&&i.isComment&&!Se(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function $e(t,e){return function(){return t[e]}}function je(t){var e=t.$options,n=e.setup;if(n){var r=t._setupContext=Ae(t);mt(t),St();var o=Xe(n,null,[t._props||Pt({}),r],t,"setup");if(Et(),mt(),l(o))e.render=o;else if(f(o))if(t._setupState=o,o.__sfc){var i=t._setupProxy={};for(var a in o)"__sfc"!==a&&qt(i,o,a)}else for(var a in o)J(a)||qt(t,o,a);else 0}}function Ae(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};G(e,"_v_attr_proxy",!0),Pe(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){if(!t._listenersProxy){var e=t._listenersProxy={};Pe(e,t.$listeners,r,t,"$listeners")}return t._listenersProxy},get slots(){return Ie(t)},emit:P(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return qt(t,e,n)}))}}}function Pe(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,Me(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function Me(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function Ie(t){return t._slotsProxy||De(t._slotsProxy={},t.$scopedSlots),t._slotsProxy}function De(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}function Le(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=Ce(e._renderChildren,o),t.$scopedSlots=n?Ee(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return ze(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return ze(t,e,n,r,o,!0)};var i=n&&n.data;Ht(t,"$attrs",i&&i.attrs||r,null,!0),Ht(t,"$listeners",e._parentListeners||r,null,!0)}var Ne=null;function Re(t){xe(t.prototype),t.prototype.$nextTick=function(t){return un(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,i=n._parentVnode;i&&e._isMounted&&(e.$scopedSlots=Ee(e.$parent,i.data.scopedSlots,e.$slots,e.$scopedSlots),e._slotsProxy&&De(e._slotsProxy,e.$scopedSlots)),e.$vnode=i;try{mt(e),Ne=e,t=r.call(e._renderProxy,e.$createElement)}catch(Ya){Ge(Ya,e,"render"),t=e._vnode}finally{Ne=null,mt()}return o(t)&&1===t.length&&(t=t[0]),t instanceof yt||(t=gt()),t.parent=i,t}}function Fe(t,e){return(t.__esModule||dt&&"Module"===t[Symbol.toStringTag])&&(t=t.default),f(t)?e.extend(t):t}function Be(t,e,n,r,o){var i=gt();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}function Ue(t,e){if(s(t.error)&&a(t.errorComp))return t.errorComp;if(a(t.resolved))return t.resolved;var n=Ne;if(n&&a(t.owners)&&-1===t.owners.indexOf(n)&&t.owners.push(n),s(t.loading)&&a(t.loadingComp))return t.loadingComp;if(n&&!a(t.owners)){var r=t.owners=[n],o=!0,c=null,u=null;n.$on("hook:destroyed",(function(){return w(r,n)}));var l=function(t){for(var e=0,n=r.length;e1?M(n):n;for(var r=M(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Vn=function(){return Kn.now()})}var zn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function Wn(){var t,e;for(Hn=Vn(),Fn=!0,Dn.sort(zn),Bn=0;BnBn&&Dn[n].id>t.id)n--;Dn.splice(n+1,0,t)}else Dn.push(t);Rn||(Rn=!0,un(Wn))}}function Zn(t){var e=t.$options.provide;if(e){var n=l(e)?e.call(t):e;if(!f(n))return;for(var r=Yt(t),o=dt?Reflect.ownKeys(n):Object.keys(n),i=0;i-1)if(i&&!x(o,"default"))a=!1;else if(""===a||a===$(t)){var c=jr(String,o.type);(c<0||s-1)return this;var n=M(arguments,1);return n.unshift(this),l(t.install)?t.install.apply(t,n):l(t)&&t.apply(null,n),e.push(t),this}}function Qr(t){t.mixin=function(t){return this.options=xr(this.options,t),this}}function to(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=or(t)||or(n.options);var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=xr(n.options,t),a["super"]=n,a.options.props&&eo(a),a.options.computed&&no(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,K.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=I({},a.options),o[r]=a,a}}function eo(t){var e=t.options.props;for(var n in e)Pr(t.prototype,"_props",n)}function no(t){var e=t.options.computed;for(var n in e)Fr(t.prototype,n,e[n])}function ro(t){K.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&h(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&l(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function oo(t){return t&&(or(t.Ctor.options)||t.tag)}function io(t,e){return o(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function ao(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=a.name;s&&!e(s)&&so(n,i,r,o)}}}function so(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,w(n,e)}qr(Zr),zr(Zr),Cn(Zr),Tn(Zr),Re(Zr);var co=[String,RegExp,Array],uo={name:"keep-alive",abstract:!0,props:{include:co,exclude:co,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,o=t.keyToCache;if(r){var i=r.tag,a=r.componentInstance,s=r.componentOptions;e[o]={name:oo(s),tag:i,componentInstance:a},n.push(o),this.max&&n.length>parseInt(this.max)&&so(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)so(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){ao(t,(function(t){return io(e,t)}))})),this.$watch("exclude",(function(e){ao(t,(function(t){return!io(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=He(t),n=e&&e.componentOptions;if(n){var r=oo(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!io(i,r))||a&&r&&io(a,r))return e;var s=this,c=s.cache,u=s.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;c[l]?(e.componentInstance=c[l].componentInstance,w(u,l),u.push(l)):(this.vnodeToCache=e,this.keyToCache=l),e.data.keepAlive=!0}return e||t&&t[0]}},lo={KeepAlive:uo};function fo(t){var e={get:function(){return W}};Object.defineProperty(t,"config",e),t.util={warn:pr,extend:I,mergeOptions:xr,defineReactive:Ht},t.set=Vt,t.delete=Kt,t.nextTick=un,t.observable=function(t){return Ut(t),t},t.options=Object.create(null),K.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,I(t.options.components,lo),Yr(t),Qr(t),to(t),ro(t)}fo(Zr),Object.defineProperty(Zr.prototype,"$isServer",{get:lt}),Object.defineProperty(Zr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Zr,"FunctionalRenderContext",{value:tr}),Zr.version=pn;var po=b("style,class"),ho=b("input,textarea,option,select,progress"),vo=function(t,e,n){return"value"===n&&ho(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},mo=b("contenteditable,draggable,spellcheck"),yo=b("events,caret,typing,plaintext-only"),go=function(t,e){return xo(e)||"false"===e?"false":"contenteditable"===t&&yo(e)?e:"true"},bo=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),_o="http://www.w3.org/1999/xlink",wo=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},ko=function(t){return wo(t)?t.slice(6,t.length):""},xo=function(t){return null==t||!1===t};function Co(t){var e=t.data,n=t,r=t;while(a(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Oo(r.data,e));while(a(n=n.parent))n&&n.data&&(e=Oo(e,n.data));return So(e.staticClass,e.class)}function Oo(t,e){return{staticClass:Eo(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function So(t,e){return a(t)||a(e)?Eo(t,To(e)):""}function Eo(t,e){return t?e?t+" "+e:t:e||""}function To(t){return Array.isArray(t)?$o(t):f(t)?jo(t):"string"===typeof t?t:""}function $o(t){for(var e,n="",r=0,o=t.length;r-1?Lo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Lo[t]=/HTMLUnknownElement/.test(e.toString())}var Ro=b("text,number,password,search,email,tel,url");function Fo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Bo(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function Uo(t,e){return document.createElementNS(Ao[t],e)}function Ho(t){return document.createTextNode(t)}function Vo(t){return document.createComment(t)}function Ko(t,e,n){t.insertBefore(e,n)}function zo(t,e){t.removeChild(e)}function Wo(t,e){t.appendChild(e)}function qo(t){return t.parentNode}function Jo(t){return t.nextSibling}function Go(t){return t.tagName}function Xo(t,e){t.textContent=e}function Zo(t,e){t.setAttribute(e,"")}var Yo=Object.freeze({__proto__:null,createElement:Bo,createElementNS:Uo,createTextNode:Ho,createComment:Vo,insertBefore:Ko,removeChild:zo,appendChild:Wo,parentNode:qo,nextSibling:Jo,tagName:Go,setTextContent:Xo,setStyleScope:Zo}),Qo={create:function(t,e){ti(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ti(t,!0),ti(e))},destroy:function(t){ti(t,!0)}};function ti(t,e){var n=t.data.ref;if(a(n)){var r=t.context,i=t.componentInstance||t.elm,s=e?null:i,c=e?void 0:i;if(l(n))Xe(n,r,[s],r,"template ref function");else{var u=t.data.refInFor,f="string"===typeof n||"number"===typeof n,p=Wt(n),h=r.$refs;if(f||p)if(u){var d=f?h[n]:n.value;e?o(d)&&w(d,i):o(d)?d.includes(i)||d.push(i):f?(h[n]=[i],ei(r,n,h[n])):n.value=[i]}else if(f){if(e&&h[n]!==i)return;h[n]=c,ei(r,n,s)}else if(p){if(e&&n.value!==i)return;n.value=s}else 0}}}function ei(t,e,n){var r=t._setupState;r&&x(r,e)&&(Wt(r[e])?r[e].value=n:r[e]=n)}var ni=new yt("",{},[]),ri=["create","activate","update","remove","destroy"];function oi(t,e){return t.key===e.key&&t.asyncFactory===e.asyncFactory&&(t.tag===e.tag&&t.isComment===e.isComment&&a(t.data)===a(e.data)&&ii(t,e)||s(t.isAsyncPlaceholder)&&i(e.asyncFactory.error))}function ii(t,e){if("input"!==t.tag)return!0;var n,r=a(n=t.data)&&a(n=n.attrs)&&n.type,o=a(n=e.data)&&a(n=n.attrs)&&n.type;return r===o||Ro(r)&&Ro(o)}function ai(t,e,n){var r,o,i={};for(r=e;r<=n;++r)o=t[r].key,a(o)&&(i[o]=r);return i}function si(t){var e,n,r={},c=t.modules,l=t.nodeOps;for(e=0;ev?(f=i(n[g+1])?null:n[g+1].elm,C(t,f,n,h,g,r)):h>g&&S(e,p,v)}function $(t,e,n,r){for(var o=n;o-1?gi(t,e,n):bo(e)?xo(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):mo(e)?t.setAttribute(e,go(e,n)):wo(e)?xo(n)?t.removeAttributeNS(_o,ko(e)):t.setAttributeNS(_o,e,n):gi(t,e,n)}function gi(t,e,n){if(xo(n))t.removeAttribute(e);else{if(et&&!nt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var bi={create:mi,update:mi};function _i(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=Co(e),c=n._transitionClasses;a(c)&&(s=Eo(s,To(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var wi,ki={create:_i,update:_i},xi="__r",Ci="__c";function Oi(t){if(a(t[xi])){var e=et?"change":"input";t[e]=[].concat(t[xi],t[e]||[]),delete t[xi]}a(t[Ci])&&(t.change=[].concat(t[Ci],t.change||[]),delete t[Ci])}function Si(t,e,n){var r=wi;return function o(){var i=e.apply(null,arguments);null!==i&&$i(t,o,n,r)}}var Ei=tn&&!(at&&Number(at[1])<=53);function Ti(t,e,n,r){if(Ei){var o=Hn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}wi.addEventListener(t,e,ct?{capture:n,passive:r}:n)}function $i(t,e,n,r){(r||wi).removeEventListener(t,e._wrapper||e,n)}function ji(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};wi=e.elm||t.elm,Oi(n),ee(n,r,Ti,$i,Si,e.context),wi=void 0}}var Ai,Pi={create:ji,update:ji,destroy:function(t){return ji(t,ni)}};function Mi(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=I({},u)),c)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===c[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var l=i(r)?"":String(r);Ii(o,l)&&(o.value=l)}else if("innerHTML"===n&&Mo(o.tagName)&&i(o.innerHTML)){Ai=Ai||document.createElement("div"),Ai.innerHTML="".concat(r,"");var f=Ai.firstChild;while(o.firstChild)o.removeChild(o.firstChild);while(f.firstChild)o.appendChild(f.firstChild)}else if(r!==c[n])try{o[n]=r}catch(Ya){}}}}function Ii(t,e){return!t.composing&&("OPTION"===t.tagName||Di(t,e)||Li(t,e))}function Di(t,e){var n=!0;try{n=document.activeElement!==t}catch(Ya){}return n&&t.value!==e}function Li(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return g(n)!==g(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var Ni={create:Mi,update:Mi},Ri=C((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function Fi(t){var e=Bi(t.style);return t.staticStyle?I(t.staticStyle,e):e}function Bi(t){return Array.isArray(t)?D(t):"string"===typeof t?Ri(t):t}function Ui(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=Fi(o.data))&&I(r,n)}(n=Fi(t.data))&&I(r,n);var i=t;while(i=i.parent)i.data&&(n=Fi(i.data))&&I(r,n);return r}var Hi,Vi=/^--/,Ki=/\s*!important$/,zi=function(t,e,n){if(Vi.test(e))t.style.setProperty(e,n);else if(Ki.test(n))t.style.setProperty($(e),n.replace(Ki,""),"important");else{var r=qi(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Xi).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Yi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Xi).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Qi(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&I(e,ta(t.name||"v")),I(e,t),e}return"string"===typeof t?ta(t):void 0}}var ta=C((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),ea=Q&&!nt,na="transition",ra="animation",oa="transition",ia="transitionend",aa="animation",sa="animationend";ea&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(oa="WebkitTransition",ia="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(aa="WebkitAnimation",sa="webkitAnimationEnd"));var ca=Q?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ua(t){ca((function(){ca(t)}))}function la(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Zi(t,e))}function fa(t,e){t._transitionClasses&&w(t._transitionClasses,e),Yi(t,e)}function pa(t,e,n){var r=da(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===na?ia:sa,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=na,l=a,f=i.length):e===ra?u>0&&(n=ra,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?na:ra:null,f=n?n===na?i.length:c.length:0);var p=n===na&&ha.test(r[oa+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:p}}function va(t,e){while(t.length1}function wa(t,e){!0!==e.data.show&&ya(e)}var ka=Q?{create:wa,activate:wa,remove:function(t,e){!0!==t.data.show?ga(t,e):e()}}:{},xa=[bi,ki,Pi,Ni,Gi,ka],Ca=xa.concat(vi),Oa=si({nodeOps:Yo,modules:Ca});nt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Ma(t,"input")}));var Sa={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?ne(n,"postpatch",(function(){Sa.componentUpdated(t,e,n)})):Ea(t,e,n.context),t._vOptions=[].map.call(t.options,ja)):("textarea"===n.tag||Ro(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Aa),t.addEventListener("compositionend",Pa),t.addEventListener("change",Pa),nt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ea(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,ja);if(o.some((function(t,e){return!F(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return $a(t,o)})):e.value!==e.oldValue&&$a(e.value,o);i&&Ma(t,"change")}}}};function Ea(t,e,n){Ta(t,e,n),(et||rt)&&setTimeout((function(){Ta(t,e,n)}),0)}function Ta(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(F(ja(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function $a(t,e){return e.every((function(e){return!F(e,t)}))}function ja(t){return"_value"in t?t._value:t.value}function Aa(t){t.target.composing=!0}function Pa(t){t.target.composing&&(t.target.composing=!1,Ma(t.target,"input"))}function Ma(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ia(t){return!t.componentInstance||t.data&&t.data.transition?t:Ia(t.componentInstance._vnode)}var Da={bind:function(t,e,n){var r=e.value;n=Ia(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,ya(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=Ia(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?ya(n,(function(){t.style.display=t.__vOriginalDisplay})):ga(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},La={model:Sa,show:Da},Na={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ra(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ra(He(e.children)):t}function Fa(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[S(r)]=o[r];return e}function Ba(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Ua(t){while(t=t.parent)if(t.data.transition)return!0}function Ha(t,e){return e.key===t.key&&e.tag===t.tag}var Va=function(t){return t.tag||Se(t)},Ka=function(t){return"show"===t.name},za={name:"transition",props:Na,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Va),n.length)){0;var r=this.mode;0;var o=n[0];if(Ua(this.$vnode))return o;var i=Ra(o);if(!i)return o;if(this._leaving)return Ba(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:u(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Fa(this),c=this._vnode,l=Ra(c);if(i.data.directives&&i.data.directives.some(Ka)&&(i.data.show=!0),l&&l.data&&!Ha(i,l)&&!Se(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=I({},s);if("out-in"===r)return this._leaving=!0,ne(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ba(t,o);if("in-out"===r){if(Se(i))return c;var p,h=function(){p()};ne(s,"afterEnter",h),ne(s,"enterCancelled",h),ne(f,"delayLeave",(function(t){p=t}))}}return o}}},Wa=I({tag:String,moveClass:String},Na);delete Wa.mode;var qa={props:Wa,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Sn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Fa(this),s=0;s0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=+r[1]))),t.exports=o},"2d83":function(t,e,n){"use strict";var r=n("387f");t.exports=function(t,e,n,o,i){var a=new Error(t);return r(a,e,n,o,i)}},"2e67":function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},"30b5":function(t,e,n){"use strict";var r=n("c532");function o(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(r.isURLSearchParams(e))i=e.toString();else{var a=[];r.forEach(e,(function(t,e){null!==t&&"undefined"!==typeof t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),a.push(o(e)+"="+o(t))})))})),i=a.join("&")}if(i){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t}},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},3511:function(t,e){var n=TypeError,r=9007199254740991;t.exports=function(t){if(t>r)throw n("Maximum allowed index exceeded");return t}},"387f":function(t,e,n){"use strict";t.exports=function(t,e,n,r,o){return t.config=e,n&&(t.code=n),t.request=r,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},3934:function(t,e,n){"use strict";var r=n("c532");t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return function(){return!0}}()},"3a34":function(t,e,n){"use strict";var r=n("83ab"),o=n("e8b5"),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(o(t)&&!a(t,"length").writable)throw i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},"3a9b":function(t,e,n){var r=n("e330");t.exports=r({}.isPrototypeOf)},"40d5":function(t,e,n){var r=n("d039");t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},4362:function(t,e,n){e.nextTick=function(t){var e=Array.prototype.slice.call(arguments);e.shift(),setTimeout((function(){t.apply(null,e)}),0)},e.platform=e.arch=e.execPath=e.title="browser",e.pid=1,e.browser=!0,e.env={},e.argv=[],e.binding=function(t){throw new Error("No such module. (Possibly not yet loaded)")},function(){var t,r="/";e.cwd=function(){return r},e.chdir=function(e){t||(t=n("df7c")),r=t.resolve(e,r)}}(),e.exit=e.kill=e.umask=e.dlopen=e.uptime=e.memoryUsage=e.uvCounters=function(){},e.features={}},"44ad":function(t,e,n){var r=n("e330"),o=n("d039"),i=n("c6b6"),a=Object,s=r("".split);t.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?s(t,""):a(t)}:a},"467f":function(t,e,n){"use strict";var r=n("2d83");t.exports=function(t,e,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},"485a":function(t,e,n){var r=n("c65b"),o=n("1626"),i=n("861d"),a=TypeError;t.exports=function(t,e){var n,s;if("string"===e&&o(n=t.toString)&&!i(s=r(n,t)))return s;if(o(n=t.valueOf)&&!i(s=r(n,t)))return s;if("string"!==e&&o(n=t.toString)&&!i(s=r(n,t)))return s;throw a("Can't convert object to primitive value")}},"4a0c":function(t){t.exports=JSON.parse('{"_from":"axios@^0.21.4","_id":"axios@0.21.4","_inBundle":false,"_integrity":"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==","_location":"/axios","_phantomChildren":{},"_requested":{"type":"range","registry":true,"raw":"axios@^0.21.4","name":"axios","escapedName":"axios","rawSpec":"^0.21.4","saveSpec":null,"fetchSpec":"^0.21.4"},"_requiredBy":["/"],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz","_shasum":"c67b90dc0568e5c1cf2b0b858c43ba28e2eda575","_spec":"axios@^0.21.4","_where":"/usr/share/spyguard/app/frontend","author":{"name":"Matt Zabriskie"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"bugs":{"url":"https://github.com/axios/axios/issues"},"bundleDependencies":false,"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"dependencies":{"follow-redirects":"^1.14.0"},"deprecated":false,"description":"Promise based HTTP client for the browser and node.js","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"homepage":"https://axios-http.com","jsdelivr":"dist/axios.min.js","keywords":["xhr","http","ajax","promise","node"],"license":"MIT","main":"index.js","name":"axios","repository":{"type":"git","url":"git+https://github.com/axios/axios.git"},"scripts":{"build":"NODE_ENV=production grunt build","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","examples":"node ./examples/server.js","fix":"eslint --fix lib/**/*.js","postversion":"git push && git push --tags","preversion":"npm test","start":"node ./sandbox/server.js","test":"grunt test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},"typings":"./index.d.ts","unpkg":"dist/axios.min.js","version":"0.21.4"}')},"4a7b":function(t,e,n){"use strict";var r=n("c532");t.exports=function(t,e){e=e||{};var n={},o=["url","method","data"],i=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function c(t,e){return r.isPlainObject(t)&&r.isPlainObject(e)?r.merge(t,e):r.isPlainObject(e)?r.merge({},e):r.isArray(e)?e.slice():e}function u(o){r.isUndefined(e[o])?r.isUndefined(t[o])||(n[o]=c(void 0,t[o])):n[o]=c(t[o],e[o])}r.forEach(o,(function(t){r.isUndefined(e[t])||(n[t]=c(void 0,e[t]))})),r.forEach(i,u),r.forEach(a,(function(o){r.isUndefined(e[o])?r.isUndefined(t[o])||(n[o]=c(void 0,t[o])):n[o]=c(void 0,e[o])})),r.forEach(s,(function(r){r in e?n[r]=c(t[r],e[r]):r in t&&(n[r]=c(void 0,t[r]))}));var l=o.concat(i).concat(a).concat(s),f=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===l.indexOf(t)}));return r.forEach(f,u),n}},"4d64":function(t,e,n){var r=n("fc6a"),o=n("23cb"),i=n("07fa"),a=function(t){return function(e,n,a){var s,c=r(e),u=i(c),l=o(a,u);if(t&&n!=n){while(u>l)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("5926"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5270:function(t,e,n){"use strict";var r=n("c532"),o=n("c401"),i=n("2e67"),a=n("2444");function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){s(t),t.headers=t.headers||{},t.data=o.call(t,t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]}));var e=t.adapter||a.adapter;return e(t).then((function(e){return s(t),e.data=o.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(s(t),e&&e.response&&(e.response.data=o.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.26.0",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.0/LICENSE",source:"https://github.com/zloirock/core-js"})},"56ef":function(t,e,n){var r=n("d066"),o=n("e330"),i=n("241c"),a=n("7418"),s=n("825a"),c=o([].concat);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(s(t)),n=a.f;return n?c(e,n(t)):e}},5926:function(t,e,n){var r=n("b42e");t.exports=function(t){var e=+t;return e!==e||0===e?0:r(e)}},"59ed":function(t,e,n){var r=n("1626"),o=n("0d51"),i=TypeError;t.exports=function(t){if(r(t))return t;throw i(o(t)+" is not a function")}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"5e77":function(t,e,n){var r=n("83ab"),o=n("1a2d"),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);t.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},"5f02":function(t,e,n){"use strict";t.exports=function(t){return"object"===typeof t&&!0===t.isAxiosError}},6374:function(t,e,n){var r=n("da84"),o=Object.defineProperty;t.exports=function(t,e){try{o(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},"69f3":function(t,e,n){var r,o,i,a=n("cdce"),s=n("da84"),c=n("861d"),u=n("9112"),l=n("1a2d"),f=n("c6cd"),p=n("f772"),h=n("d012"),d="Object already initialized",v=s.TypeError,m=s.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},g=function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw v("Incompatible receiver, "+t+" required");return n}};if(a||f.state){var b=f.state||(f.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,r=function(t,e){if(b.has(t))throw v(d);return e.facade=t,b.set(t,e),e},o=function(t){return b.get(t)||{}},i=function(t){return b.has(t)}}else{var _=p("state");h[_]=!0,r=function(t,e){if(l(t,_))throw v(d);return e.facade=t,u(t,_,e),e},o=function(t){return l(t,_)?t[_]:{}},i=function(t){return l(t,_)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:g}},7234:function(t,e){t.exports=function(t){return null===t||void 0===t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7a77":function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},"7aac":function(t,e,n){"use strict";var r=n("c532");t.exports=r.isStandardBrowserEnv()?function(){return{write:function(t,e,n,o,i,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"7b0b":function(t,e,n){var r=n("1d80"),o=Object;t.exports=function(t){return o(r(t))}},"7d7e":function(t,e,n){var r=n("40d5"),o=Function.prototype,i=o.call,a=r&&o.bind.bind(i,i);t.exports=r?a:function(t){return function(){return i.apply(t,arguments)}}},"825a":function(t,e,n){var r=n("861d"),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw i(o(t)+" is not an object")}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"83b9":function(t,e,n){"use strict";var r=n("d925"),o=n("e683");t.exports=function(t,e){return t&&!r(e)?o(t,e):e}},"848b":function(t,e,n){"use strict";var r=n("4a0c"),o={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){o[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}}));var i={},a=r.version.split(".");function s(t,e){for(var n=e?e.split("."):a,r=t.split("."),o=0;o<3;o++){if(n[o]>r[o])return!0;if(n[o]0){var i=r[o],a=e[i];if(a){var s=t[i],c=void 0===s||a(s,i,t);if(!0!==c)throw new TypeError("option "+i+" must be "+c)}else if(!0!==n)throw Error("Unknown option "+i)}}o.transitional=function(t,e,n){var o=e&&s(e);function a(t,e){return"[Axios v"+r.version+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,s){if(!1===t)throw new Error(a(r," has been removed in "+e));return o&&!i[r]&&(i[r]=!0,console.warn(a(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,s)}},t.exports={isOlderVersion:s,assertOptions:c,validators:o}},"861d":function(t,e,n){var r=n("1626"),o=n("8ea1"),i=o.all;t.exports=o.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:r(t)||t===i}:function(t){return"object"==typeof t?null!==t:r(t)}},8925:function(t,e,n){var r=n("e330"),o=n("1626"),i=n("c6cd"),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},"8c4f":function(t,e,n){"use strict";function r(t,e){for(var n in e)t[n]=e[n];return t}n.d(e,"a",(function(){return ke}));var o=/[!'()*]/g,i=function(t){return"%"+t.charCodeAt(0).toString(16)},a=/%2C/g,s=function(t){return encodeURIComponent(t).replace(o,i).replace(a,",")};function c(t){try{return decodeURIComponent(t)}catch(e){0}return t}function u(t,e,n){void 0===e&&(e={});var r,o=n||f;try{r=o(t||"")}catch(s){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(l):l(a)}return r}var l=function(t){return null==t||"object"===typeof t?t:String(t)};function f(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=c(n.shift()),o=n.length>0?c(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function p(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return s(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(s(e)):r.push(s(e)+"="+s(t)))})),r.join("&")}return s(e)+"="+s(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var h=/\/?$/;function d(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=v(i)}catch(s){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:g(e,o),matched:t?y(t):[]};return n&&(a.redirectedFrom=g(n,o)),Object.freeze(a)}function v(t){if(Array.isArray(t))return t.map(v);if(t&&"object"===typeof t){var e={};for(var n in t)e[n]=v(t[n]);return e}return t}var m=d(null,{path:"/"});function y(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function g(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;void 0===o&&(o="");var i=e||p;return(n||"/")+i(r)+o}function b(t,e,n){return e===m?t===e:!!e&&(t.path&&e.path?t.path.replace(h,"")===e.path.replace(h,"")&&(n||t.hash===e.hash&&_(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&_(t.query,e.query)&&_(t.params,e.params))))}function _(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n],a=r[o];if(a!==n)return!1;var s=e[n];return null==i||null==s?i===s:"object"===typeof i&&"object"===typeof s?_(i,s):String(i)===String(s)}))}function w(t,e){return 0===t.path.replace(h,"/").indexOf(e.path.replace(h,"/"))&&(!e.hash||t.hash===e.hash)&&k(t.query,e.query)}function k(t,e){for(var n in e)if(!(n in t))return!1;return!0}function x(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function $(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var j=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},A=X,P=N,M=R,I=U,D=G,L=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function N(t,e){var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";while(null!=(n=L.exec(t))){var c=n[0],u=n[1],l=n.index;if(a+=t.slice(i,l),i=l+c.length,u)a+=u[1];else{var f=t[i],p=n[2],h=n[3],d=n[4],v=n[5],m=n[6],y=n[7];a&&(r.push(a),a="");var g=null!=p&&null!=f&&f!==p,b="+"===m||"*"===m,_="?"===m||"*"===m,w=n[2]||s,k=d||v;r.push({name:h||o++,prefix:p||"",delimiter:w,optional:_,repeat:b,partial:g,asterisk:!!y,pattern:k?V(k):y?".*":"[^"+H(w)+"]+?"})}}return i1||!C.length)return 0===C.length?t():t("span",{},C)}if("a"===this.tag)x.on=k,x.attrs={href:c,"aria-current":g};else{var O=at(this.$slots.default);if(O){O.isStatic=!1;var S=O.data=r({},O.data);for(var E in S.on=S.on||{},S.on){var T=S.on[E];E in k&&(S.on[E]=Array.isArray(T)?T:[T])}for(var $ in k)$ in S.on?S.on[$].push(k[$]):S.on[$]=_;var j=O.data.attrs=r({},O.data.attrs);j.href=c,j["aria-current"]=g}else x.on=k}return t(this.tag,x,this.$slots.default)}};function it(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function at(t){if(t)for(var e,n=0;n-1&&(s.params[f]=n.params[f]);return s.path=Y(u.path,s.params,'named route "'+c+'"'),p(u,s,a)}if(s.path){s.params={};for(var h=0;h-1}function Wt(t,e){return zt(t)&&t._isRouter&&(null==e||t.type===e)}function qt(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Jt(t){return function(e,n,r){var o=!1,i=0,a=null;Gt(t,(function(t,e,n,s){if("function"===typeof t&&void 0===t.cid){o=!0,i++;var c,u=Qt((function(e){Yt(e)&&(e=e.default),t.resolved="function"===typeof e?e:tt.extend(e),n.components[s]=e,i--,i<=0&&r()})),l=Qt((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=zt(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(p){l(p)}if(c)if("function"===typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"===typeof f.then&&f.then(u,l)}}})),o||r()}}function Gt(t,e){return Xt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Xt(t){return Array.prototype.concat.apply([],t)}var Zt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Yt(t){return t.__esModule||Zt&&"Module"===t[Symbol.toStringTag]}function Qt(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var te=function(t,e){this.router=t,this.base=ee(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ee(t){if(!t)if(ct){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function ne(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=It&&n;r&&this.listeners.push(kt());var o=function(){var n=t.current,o=fe(t.base);t.current===m&&o===t._startLocation||t.transitionTo(o,(function(t){r&&xt(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Dt($(r.base+t.fullPath)),xt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Lt($(r.base+t.fullPath)),xt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(fe(this.base)!==this.current.fullPath){var e=$(this.base+this.current.fullPath);t?Dt(e):Lt(e)}},e.prototype.getCurrentLocation=function(){return fe(this.base)},e}(te);function fe(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf($(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var pe=function(t){function e(e,n,r){t.call(this,e,n),r&&he(this.base)||de()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,n=e.options.scrollBehavior,r=It&&n;r&&this.listeners.push(kt());var o=function(){var e=t.current;de()&&t.transitionTo(ve(),(function(n){r&&xt(t.router,n,e,!0),It||ge(n.fullPath)}))},i=It?"popstate":"hashchange";window.addEventListener(i,o),this.listeners.push((function(){window.removeEventListener(i,o)}))}},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ye(t.fullPath),xt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ge(t.fullPath),xt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ve()!==e&&(t?ye(e):ge(e))},e.prototype.getCurrentLocation=function(){return ve()},e}(te);function he(t){var e=fe(t);if(!/^\/#/.test(e))return window.location.replace($(t+"/#"+e)),!0}function de(){var t=ve();return"/"===t.charAt(0)||(ge("/"+t),!1)}function ve(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function me(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ye(t){It?Dt(me(t)):window.location.hash=t}function ge(t){It?Lt(me(t)):window.location.replace(me(t))}var be=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){Wt(t,Nt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(te),_e=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ht(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!It&&!1!==t.fallback,this.fallback&&(e="hash"),ct||(e="abstract"),this.mode=e,e){case"history":this.history=new le(this,t.base);break;case"hash":this.history=new pe(this,t.base,this.fallback);break;case"abstract":this.history=new be(this,t.base);break;default:0}},we={currentRoute:{configurable:!0}};_e.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},we.currentRoute.get=function(){return this.history&&this.history.current},_e.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof le||n instanceof pe){var r=function(t){var r=n.current,o=e.options.scrollBehavior,i=It&&o;i&&"fullPath"in t&&xt(e,t,r,!1)},o=function(t){n.setupListeners(),r(t)};n.transitionTo(n.getCurrentLocation(),o,o)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},_e.prototype.beforeEach=function(t){return xe(this.beforeHooks,t)},_e.prototype.beforeResolve=function(t){return xe(this.resolveHooks,t)},_e.prototype.afterEach=function(t){return xe(this.afterHooks,t)},_e.prototype.onReady=function(t,e){this.history.onReady(t,e)},_e.prototype.onError=function(t){this.history.onError(t)},_e.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},_e.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},_e.prototype.go=function(t){this.history.go(t)},_e.prototype.back=function(){this.go(-1)},_e.prototype.forward=function(){this.go(1)},_e.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},_e.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=Q(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=Ce(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},_e.prototype.getRoutes=function(){return this.matcher.getRoutes()},_e.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},_e.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(_e.prototype,we);var ke=_e;function xe(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function Ce(t,e,n){var r="hash"===n?"#"+e:e;return t?$(t+"/"+r):r}_e.install=st,_e.version="3.6.5",_e.isNavigationFailure=Wt,_e.NavigationFailureType=Nt,_e.START_LOCATION=m,ct&&window.Vue&&window.Vue.use(_e)},"8df4":function(t,e,n){"use strict";var r=n("7a77");function o(t){if("function"!==typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t,e=new o((function(e){t=e}));return{token:e,cancel:t}},t.exports=o},"8ea1":function(t,e){var n="object"==typeof document&&document.all,r="undefined"==typeof n&&void 0!==n;t.exports={all:n,IS_HTMLDDA:r}},"90e3":function(t,e,n){var r=n("e330"),o=0,i=Math.random(),a=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++o+i,36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"94ca":function(t,e,n){var r=n("d039"),o=n("1626"),i=/#|\.prototype\./,a=function(t,e){var n=c[s(t)];return n==l||n!=u&&(o(e)?r(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";t.exports=a},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("aed9"),a=n("825a"),s=n("a04b"),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f="enumerable",p="configurable",h="writable";e.f=r?i?function(t,e,n){if(a(t),e=s(e),a(n),"function"===typeof t&&"prototype"===e&&"value"in n&&h in n&&!n[h]){var r=l(t,e);r&&r[h]&&(t[e]=n.value,n={configurable:p in n?n[p]:r[p],enumerable:f in n?n[f]:r[f],writable:!1})}return u(t,e,n)}:u:function(t,e,n){if(a(t),e=s(e),a(n),o)try{return u(t,e,n)}catch(r){}if("get"in n||"set"in n)throw c("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},a044:function(t,e,n){"use strict";e["a"]={layout:{default:["` 1 2 3 4 5 6 7 8 9 0 ° + {bksp}","{tab} a z e r t y u i o p ^ $","{lock} q s d f g h j k l m ù * {enter}","{shift} < w x c v b n , ; : ! {shift}",".com @ {space}"],shift:["² & é \" ' ( - è _ ç à ) = {bksp}","{tab} A Z E R T Y U I O P ¨ £","{lock} Q S D F G H J K L M % µ {enter}","{shift} > W X C V B N ? . / § {shift}",".com @ {space}"]}}},a04b:function(t,e,n){var r=n("c04e"),o=n("d9b5");t.exports=function(t){var e=r(t,"string");return o(e)?e:e+""}},a925:function(t,e,n){"use strict"; +/*! + * vue-i18n v8.28.2 + * (c) 2022 kazuya kawaguchi + * Released under the MIT License. + */var r=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"],o=["dateStyle","timeStyle","calendar","localeMatcher","hour12","hourCycle","timeZone","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function i(t,e){"undefined"!==typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}function a(t,e){"undefined"!==typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}var s=Array.isArray;function c(t){return null!==t&&"object"===typeof t}function u(t){return"boolean"===typeof t}function l(t){return"string"===typeof t}var f=Object.prototype.toString,p="[object Object]";function h(t){return f.call(t)===p}function d(t){return null===t||void 0===t}function v(t){return"function"===typeof t}function m(){var t=[],e=arguments.length;while(e--)t[e]=arguments[e];var n=null,r=null;return 1===t.length?c(t[0])||s(t[0])?r=t[0]:"string"===typeof t[0]&&(n=t[0]):2===t.length&&("string"===typeof t[0]&&(n=t[0]),(c(t[1])||s(t[1]))&&(r=t[1])),{locale:n,params:r}}function y(t){return JSON.parse(JSON.stringify(t))}function g(t,e){if(t.delete(e))return t}function b(t){var e=[];return t.forEach((function(t){return e.push(t)})),e}function _(t,e){return!!~t.indexOf(e)}var w=Object.prototype.hasOwnProperty;function k(t,e){return w.call(t,e)}function x(t){for(var e=arguments,n=Object(t),r=1;r/g,">").replace(/"/g,""").replace(/'/g,"'")}function S(t){return null!=t&&Object.keys(t).forEach((function(e){"string"==typeof t[e]&&(t[e]=O(t[e]))})),t}function E(t){t.prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(t){var e=[],n=arguments.length-1;while(n-- >0)e[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[t,r.locale,r._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){var n=[],r=arguments.length-2;while(r-- >0)n[r]=arguments[r+2];var o=this.$i18n;return o._tc.apply(o,[t,o.locale,o._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}}function T(t){function e(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===t&&(t=!1),t?{mounted:e}:{beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n)if(t.i18n instanceof St){if(t.__i18nBridge||t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{},n=t.__i18nBridge||t.__i18n;n.forEach((function(t){e=x(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(c){0}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(h(t.i18n)){var r=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof St?this.$root.$i18n:null;if(r&&(t.i18n.root=this.$root,t.i18n.formatter=r.formatter,t.i18n.fallbackLocale=r.fallbackLocale,t.i18n.formatFallbackMessages=r.formatFallbackMessages,t.i18n.silentTranslationWarn=r.silentTranslationWarn,t.i18n.silentFallbackWarn=r.silentFallbackWarn,t.i18n.pluralizationRules=r.pluralizationRules,t.i18n.preserveDirectiveContent=r.preserveDirectiveContent),t.__i18nBridge||t.__i18n)try{var o=t.i18n&&t.i18n.messages?t.i18n.messages:{},i=t.__i18nBridge||t.__i18n;i.forEach((function(t){o=x(o,JSON.parse(t))})),t.i18n.messages=o}catch(c){0}var a=t.i18n,s=a.sharedMessages;s&&h(s)&&(t.i18n.messages=x(t.i18n.messages,s)),this._i18n=new St(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),r&&r.onComponentInstanceCreated(this._i18n)}else 0;else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof St?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof St&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n?(t.i18n instanceof St||h(t.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof St||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof St)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:e,beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}}}var $={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(t,e){var n=e.data,r=e.parent,o=e.props,i=e.slots,a=r.$i18n;if(a){var s=o.path,c=o.locale,u=o.places,l=i(),f=a.i(s,c,j(l)||u?A(l.default,u):l),p=o.tag&&!0!==o.tag||!1===o.tag?o.tag:"span";return p?t(p,n,f):f}}};function j(t){var e;for(e in t)if("default"!==e)return!1;return Boolean(e)}function A(t,e){var n=e?P(e):{};if(!t)return n;t=t.filter((function(t){return t.tag||""!==t.text.trim()}));var r=t.every(D);return t.reduce(r?M:I,n)}function P(t){return Array.isArray(t)?t.reduce(I,{}):Object.assign({},t)}function M(t,e){return e.data&&e.data.attrs&&e.data.attrs.place&&(t[e.data.attrs.place]=e),t}function I(t,e,n){return t[n]=e,t}function D(t){return Boolean(t.data&&t.data.attrs&&t.data.attrs.place)}var L,N={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(t,e){var n=e.props,o=e.parent,i=e.data,a=o.$i18n;if(!a)return null;var s=null,u=null;l(n.format)?s=n.format:c(n.format)&&(n.format.key&&(s=n.format.key),u=Object.keys(n.format).reduce((function(t,e){var o;return _(r,e)?Object.assign({},t,(o={},o[e]=n.format[e],o)):t}),null));var f=n.locale||a.locale,p=a._ntp(n.value,f,s,u),h=p.map((function(t,e){var n,r=i.scopedSlots&&i.scopedSlots[t.type];return r?r((n={},n[t.type]=t.value,n.index=e,n.parts=p,n)):t.value})),d=n.tag&&!0!==n.tag||!1===n.tag?n.tag:"span";return d?t(d,{attrs:i.attrs,class:i["class"],staticClass:i.staticClass},h):h}};function R(t,e,n){U(t,n)&&V(t,e,n)}function F(t,e,n,r){if(U(t,n)){var o=n.context.$i18n;H(t,n)&&C(e.value,e.oldValue)&&C(t._localeMessage,o.getLocaleMessage(o.locale))||V(t,e,n)}}function B(t,e,n,r){var o=n.context;if(o){var a=n.context.$i18n||{};e.modifiers.preserve||a.preserveDirectiveContent||(t.textContent=""),t._vt=void 0,delete t["_vt"],t._locale=void 0,delete t["_locale"],t._localeMessage=void 0,delete t["_localeMessage"]}else i("Vue instance does not exists in VNode context")}function U(t,e){var n=e.context;return n?!!n.$i18n||(i("VueI18n instance does not exists in Vue instance"),!1):(i("Vue instance does not exists in VNode context"),!1)}function H(t,e){var n=e.context;return t._locale===n.$i18n.locale}function V(t,e,n){var r,o,a=e.value,s=K(a),c=s.path,u=s.locale,l=s.args,f=s.choice;if(c||u||l)if(c){var p=n.context;t._vt=t.textContent=null!=f?(r=p.$i18n).tc.apply(r,[c,f].concat(z(u,l))):(o=p.$i18n).t.apply(o,[c].concat(z(u,l))),t._locale=p.$i18n.locale,t._localeMessage=p.$i18n.getLocaleMessage(p.$i18n.locale)}else i("`path` is required in v-t directive");else i("value type not supported")}function K(t){var e,n,r,o;return l(t)?e=t:h(t)&&(e=t.path,n=t.locale,r=t.args,o=t.choice),{path:e,locale:n,args:r,choice:o}}function z(t,e){var n=[];return t&&n.push(t),e&&(Array.isArray(e)||h(e))&&n.push(e),n}function W(t,e){void 0===e&&(e={bridge:!1}),W.installed=!0,L=t;L.version&&Number(L.version.split(".")[0]);E(L),L.mixin(T(e.bridge)),L.directive("t",{bind:R,update:F,unbind:B}),L.component($.name,$),L.component(N.name,N);var n=L.config.optionMergeStrategies;n.i18n=function(t,e){return void 0===e?t:e}}var q=function(){this._caches=Object.create(null)};q.prototype.interpolate=function(t,e){if(!e)return[t];var n=this._caches[t];return n||(n=X(t),this._caches[t]=n),Z(n,e)};var J=/^(?:\d)+/,G=/^(?:\w)+/;function X(t){var e=[],n=0,r="";while(n0)f--,l=at,p[Y]();else{if(f=0,void 0===n)return!1;if(n=mt(n),!1===n)return!1;p[Q]()}};while(null!==l)if(u++,e=t[u],"\\"!==e||!h()){if(o=vt(e),s=ft[l],i=s[o]||s["else"]||lt,i===lt)return;if(l=i[0],a=p[i[1]],a&&(r=i[2],r=void 0===r?e:r,!1===a()))return;if(l===ut)return c}}var gt=function(){this._cache=Object.create(null)};gt.prototype.parsePath=function(t){var e=this._cache[t];return e||(e=yt(t),e&&(this._cache[t]=e)),e||[]},gt.prototype.getPathValue=function(t,e){if(!c(t))return null;var n=this.parsePath(e);if(0===n.length)return null;var r=n.length,o=t,i=0;while(i/,wt=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,kt=/^@(?:\.([a-zA-Z]+))?:/,xt=/[()]/g,Ct={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},Ot=new q,St=function(t){var e=this;void 0===t&&(t={}),!L&&"undefined"!==typeof window&&window.Vue&&W(window.Vue);var n=t.locale||"en-US",r=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),o=t.messages||{},i=t.dateTimeFormats||t.datetimeFormats||{},a=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||Ot,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._fallbackRootWithEmptyString=void 0===t.fallbackRootWithEmptyString||!!t.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new gt,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in t&&(this.__VUE_I18N_BRIDGE__=t.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(t,n){var r=Object.getPrototypeOf(e);if(r&&r.getChoiceIndex){var o=r.getChoiceIndex;return o.call(e,t,n)}var i=function(t,e){return t=Math.abs(t),2===e?t?t>1?1:0:1:t?Math.min(t,2):0};return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):i(t,n)},this._exist=function(t,n){return!(!t||!n)&&(!d(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(o).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,o[t])})),this._initVM({locale:n,fallbackLocale:r,messages:o,dateTimeFormats:i,numberFormats:a})},Et={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};St.prototype._checkLocaleMessage=function(t,e,n){var r=[],o=function(t,e,n,r){if(h(n))Object.keys(n).forEach((function(i){var a=n[i];h(a)?(r.push(i),r.push("."),o(t,e,a,r),r.pop(),r.pop()):(r.push(i),o(t,e,a,r),r.pop())}));else if(s(n))n.forEach((function(n,i){h(n)?(r.push("["+i+"]"),r.push("."),o(t,e,n,r),r.pop(),r.pop()):(r.push("["+i+"]"),o(t,e,n,r),r.pop())}));else if(l(n)){var c=_t.test(n);if(c){var u="Detected HTML in message '"+n+"' of keypath '"+r.join("")+"' at '"+e+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?i(u):"error"===t&&a(u)}}};o(e,t,n,r)},St.prototype._initVM=function(t){var e=L.config.silent;L.config.silent=!0,this._vm=new L({data:t,__VUE18N__INSTANCE__:!0}),L.config.silent=e},St.prototype.destroyVM=function(){this._vm.$destroy()},St.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},St.prototype.unsubscribeDataChanging=function(t){g(this._dataListeners,t)},St.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){var e=b(t._dataListeners),n=e.length;while(n--)L.nextTick((function(){e[n]&&e[n].$forceUpdate()}))}),{deep:!0})},St.prototype.watchLocale=function(t){if(t){if(!this.__VUE_I18N_BRIDGE__)return null;var e=this,n=this._vm;return this.vm.$watch("locale",(function(r){n.$set(n,"locale",r),e.__VUE_I18N_BRIDGE__&&t&&(t.locale.value=r),n.$forceUpdate()}),{immediate:!0})}if(!this._sync||!this._root)return null;var r=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){r.$set(r,"locale",t),r.$forceUpdate()}),{immediate:!0})},St.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},Et.vm.get=function(){return this._vm},Et.messages.get=function(){return y(this._getMessages())},Et.dateTimeFormats.get=function(){return y(this._getDateTimeFormats())},Et.numberFormats.get=function(){return y(this._getNumberFormats())},Et.availableLocales.get=function(){return Object.keys(this.messages).sort()},Et.locale.get=function(){return this._vm.locale},Et.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},Et.fallbackLocale.get=function(){return this._vm.fallbackLocale},Et.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},Et.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Et.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},Et.missing.get=function(){return this._missing},Et.missing.set=function(t){this._missing=t},Et.formatter.get=function(){return this._formatter},Et.formatter.set=function(t){this._formatter=t},Et.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Et.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},Et.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Et.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},Et.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Et.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},Et.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Et.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var r=this._getMessages();Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])}))}},Et.postTranslation.get=function(){return this._postTranslation},Et.postTranslation.set=function(t){this._postTranslation=t},Et.sync.get=function(){return this._sync},Et.sync.set=function(t){this._sync=t},St.prototype._getMessages=function(){return this._vm.messages},St.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},St.prototype._getNumberFormats=function(){return this._vm.numberFormats},St.prototype._warnDefault=function(t,e,n,r,o,i){if(!d(n))return n;if(this._missing){var a=this._missing.apply(null,[t,e,r,o]);if(l(a))return a}else 0;if(this._formatFallbackMessages){var s=m.apply(void 0,o);return this._render(e,i,s.params,e)}return e},St.prototype._isFallbackRoot=function(t){return(this._fallbackRootWithEmptyString?!t:d(t))&&!d(this._root)&&this._fallbackRoot},St.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},St.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},St.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},St.prototype._interpolate=function(t,e,n,r,o,i,a){if(!e)return null;var c,u=this._path.getPathValue(e,n);if(s(u)||h(u))return u;if(d(u)){if(!h(e))return null;if(c=e[n],!l(c)&&!v(c))return null}else{if(!l(u)&&!v(u))return null;c=u}return l(c)&&(c.indexOf("@:")>=0||c.indexOf("@.")>=0)&&(c=this._link(t,e,c,r,"raw",i,a)),this._render(c,o,i,n)},St.prototype._link=function(t,e,n,r,o,i,a){var c=n,u=c.match(wt);for(var l in u)if(u.hasOwnProperty(l)){var f=u[l],p=f.match(kt),h=p[0],d=p[1],v=f.replace(h,"").replace(xt,"");if(_(a,v))return c;a.push(v);var m=this._interpolate(t,e,v,r,"raw"===o?"string":o,"raw"===o?void 0:i,a);if(this._isFallbackRoot(m)){if(!this._root)throw Error("unexpected error");var y=this._root.$i18n;m=y._translate(y._getMessages(),y.locale,y.fallbackLocale,v,r,o,i)}m=this._warnDefault(t,v,m,r,s(i)?i:[i],o),this._modifiers.hasOwnProperty(d)?m=this._modifiers[d](m):Ct.hasOwnProperty(d)&&(m=Ct[d](m)),a.pop(),c=m?c.replace(f,m):c}return c},St.prototype._createMessageContext=function(t,e,n,r){var o=this,i=s(t)?t:[],a=c(t)?t:{},u=function(t){return i[t]},l=function(t){return a[t]},f=this._getMessages(),p=this.locale;return{list:u,named:l,values:t,formatter:e,path:n,messages:f,locale:p,linked:function(t){return o._interpolate(p,f[p]||{},t,null,r,void 0,[t])}}},St.prototype._render=function(t,e,n,r){if(v(t))return t(this._createMessageContext(n,this._formatter||Ot,r,e));var o=this._formatter.interpolate(t,n,r);return o||(o=Ot.interpolate(t,n,r)),"string"!==e||l(o)?o:o.join("")},St.prototype._appendItemToChain=function(t,e,n){var r=!1;return _(t,e)||(r=!0,e&&(r="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(r=n[e]))),r},St.prototype._appendLocaleToChain=function(t,e,n){var r,o=e.split("-");do{var i=o.join("-");r=this._appendItemToChain(t,i,n),o.splice(-1,1)}while(o.length&&!0===r);return r},St.prototype._appendBlockToChain=function(t,e,n){for(var r=!0,o=0;o0)i[a]=arguments[a+4];if(!t)return"";var s=m.apply(void 0,i);this._escapeParameterHtml&&(s.params=S(s.params));var c=s.locale||e,u=this._translate(n,c,this.fallbackLocale,t,r,"string",s.params);if(this._isFallbackRoot(u)){if(!this._root)throw Error("unexpected error");return(o=this._root).$t.apply(o,[t].concat(i))}return u=this._warnDefault(c,t,u,r,i,"string"),this._postTranslation&&null!==u&&void 0!==u&&(u=this._postTranslation(u,t)),u},St.prototype.t=function(t){var e,n=[],r=arguments.length-1;while(r-- >0)n[r]=arguments[r+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},St.prototype._i=function(t,e,n,r,o){var i=this._translate(n,e,this.fallbackLocale,t,r,"raw",o);if(this._isFallbackRoot(i)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,o)}return this._warnDefault(e,t,i,r,[o],"raw")},St.prototype.i=function(t,e,n){return t?(l(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},St.prototype._tc=function(t,e,n,r,o){var i,a=[],s=arguments.length-5;while(s-- >0)a[s]=arguments[s+5];if(!t)return"";void 0===o&&(o=1);var c={count:o,n:o},u=m.apply(void 0,a);return u.params=Object.assign(c,u.params),a=null===u.locale?[u.params]:[u.locale,u.params],this.fetchChoice((i=this)._t.apply(i,[t,e,n,r].concat(a)),o)},St.prototype.fetchChoice=function(t,e){if(!t||!l(t))return null;var n=t.split("|");return e=this.getChoiceIndex(e,n.length),n[e]?n[e].trim():t},St.prototype.tc=function(t,e){var n,r=[],o=arguments.length-2;while(o-- >0)r[o]=arguments[o+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(r))},St.prototype._te=function(t,e,n){var r=[],o=arguments.length-3;while(o-- >0)r[o]=arguments[o+3];var i=m.apply(void 0,r).locale||e;return this._exist(n[i],t)},St.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},St.prototype.getLocaleMessage=function(t){return y(this._vm.messages[t]||{})},St.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},St.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,x("undefined"!==typeof this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?Object.assign({},this._vm.messages[t]):{},e))},St.prototype.getDateTimeFormat=function(t){return y(this._vm.dateTimeFormats[t]||{})},St.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},St.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,x(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},St.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},St.prototype._localizeDateTime=function(t,e,n,r,o,i){for(var a=e,s=r[a],c=this._getLocaleChain(e,n),u=0;u0)e[n]=arguments[n+1];var r=this.locale,i=null,a=null;return 1===e.length?(l(e[0])?i=e[0]:c(e[0])&&(e[0].locale&&(r=e[0].locale),e[0].key&&(i=e[0].key)),a=Object.keys(e[0]).reduce((function(t,n){var r;return _(o,n)?Object.assign({},t,(r={},r[n]=e[0][n],r)):t}),null)):2===e.length&&(l(e[0])&&(i=e[0]),l(e[1])&&(r=e[1])),this._d(t,r,i,a)},St.prototype.getNumberFormat=function(t){return y(this._vm.numberFormats[t]||{})},St.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},St.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,x(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},St.prototype._clearNumberFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},St.prototype._getNumberFormatter=function(t,e,n,r,o,i){for(var a=e,s=r[a],c=this._getLocaleChain(e,n),u=0;u0)e[n]=arguments[n+1];var o=this.locale,i=null,a=null;return 1===e.length?l(e[0])?i=e[0]:c(e[0])&&(e[0].locale&&(o=e[0].locale),e[0].key&&(i=e[0].key),a=Object.keys(e[0]).reduce((function(t,n){var o;return _(r,n)?Object.assign({},t,(o={},o[n]=e[0][n],o)):t}),null)):2===e.length&&(l(e[0])&&(i=e[0]),l(e[1])&&(o=e[1])),this._n(t,o,i,a)},St.prototype._ntp=function(t,e,n,r){if(!St.availabilities.numberFormat)return[];if(!n){var o=r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e);return o.formatToParts(t)}var i=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),a=i&&i.formatToParts(t);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,n,r)}return a||[]},Object.defineProperties(St.prototype,Et),Object.defineProperty(St,"availabilities",{get:function(){if(!bt){var t="undefined"!==typeof Intl;bt={dateTimeFormat:t&&"undefined"!==typeof Intl.DateTimeFormat,numberFormat:t&&"undefined"!==typeof Intl.NumberFormat}}return bt}}),St.install=W,St.version="8.28.2",e["a"]=St},aed9:function(t,e,n){var r=n("83ab"),o=n("d039");t.exports=r&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},b42e:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?r:n)(e)}},b50d:function(t,e,n){"use strict";var r=n("c532"),o=n("467f"),i=n("7aac"),a=n("30b5"),s=n("83b9"),c=n("c345"),u=n("3934"),l=n("2d83");t.exports=function(t){return new Promise((function(e,n){var f=t.data,p=t.headers,h=t.responseType;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(t.auth){var v=t.auth.username||"",m=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";p.Authorization="Basic "+btoa(v+":"+m)}var y=s(t.baseURL,t.url);function g(){if(d){var r="getAllResponseHeaders"in d?c(d.getAllResponseHeaders()):null,i=h&&"text"!==h&&"json"!==h?d.response:d.responseText,a={data:i,status:d.status,statusText:d.statusText,headers:r,config:t,request:d};o(e,n,a),d=null}}if(d.open(t.method.toUpperCase(),a(y,t.params,t.paramsSerializer),!0),d.timeout=t.timeout,"onloadend"in d?d.onloadend=g:d.onreadystatechange=function(){d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))&&setTimeout(g)},d.onabort=function(){d&&(n(l("Request aborted",t,"ECONNABORTED",d)),d=null)},d.onerror=function(){n(l("Network Error",t,null,d)),d=null},d.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(l(e,t,t.transitional&&t.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var b=(t.withCredentials||u(y))&&t.xsrfCookieName?i.read(t.xsrfCookieName):void 0;b&&(p[t.xsrfHeaderName]=b)}"setRequestHeader"in d&&r.forEach(p,(function(t,e){"undefined"===typeof f&&"content-type"===e.toLowerCase()?delete p[e]:d.setRequestHeader(e,t)})),r.isUndefined(t.withCredentials)||(d.withCredentials=!!t.withCredentials),h&&"json"!==h&&(d.responseType=t.responseType),"function"===typeof t.onDownloadProgress&&d.addEventListener("progress",t.onDownloadProgress),"function"===typeof t.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){d&&(d.abort(),n(t),d=null)})),f||(f=null),d.send(f)}))}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("1a2d"),a=n("90e3"),s=n("04f8"),c=n("fdbf"),u=o("wks"),l=r.Symbol,f=l&&l["for"],p=c?l:l&&l.withoutSetter||a;t.exports=function(t){if(!i(u,t)||!s&&"string"!=typeof u[t]){var e="Symbol."+t;s&&i(l,t)?u[t]=l[t]:u[t]=c&&f?f(e):p(e)}return u[t]}},bc3a:function(t,e,n){t.exports=n("cee4")},c04e:function(t,e,n){var r=n("c65b"),o=n("861d"),i=n("d9b5"),a=n("dc4a"),s=n("485a"),c=n("b622"),u=TypeError,l=c("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var n,c=a(t,l);if(c){if(void 0===e&&(e="default"),n=r(c,t,e),!o(n)||i(n))return n;throw u("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},c345:function(t,e,n){"use strict";var r=n("c532"),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,i,a={};return t?(r.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=r.trim(t.substr(0,i)).toLowerCase(),n=r.trim(t.substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},c401:function(t,e,n){"use strict";var r=n("c532"),o=n("2444");t.exports=function(t,e,n){var i=this||o;return r.forEach(n,(function(n){t=n.call(i,t,e)})),t}},c430:function(t,e){t.exports=!1},c532:function(t,e,n){"use strict";var r=n("1d2b"),o=Object.prototype.toString;function i(t){return"[object Array]"===o.call(t)}function a(t){return"undefined"===typeof t}function s(t){return null!==t&&!a(t)&&null!==t.constructor&&!a(t.constructor)&&"function"===typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function c(t){return"[object ArrayBuffer]"===o.call(t)}function u(t){return"undefined"!==typeof FormData&&t instanceof FormData}function l(t){var e;return e="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer,e}function f(t){return"string"===typeof t}function p(t){return"number"===typeof t}function h(t){return null!==t&&"object"===typeof t}function d(t){if("[object Object]"!==o.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function v(t){return"[object Date]"===o.call(t)}function m(t){return"[object File]"===o.call(t)}function y(t){return"[object Blob]"===o.call(t)}function g(t){return"[object Function]"===o.call(t)}function b(t){return h(t)&&g(t.pipe)}function _(t){return"undefined"!==typeof URLSearchParams&&t instanceof URLSearchParams}function w(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function k(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)}function x(t,e){if(null!==t&&"undefined"!==typeof t)if("object"!==typeof t&&(t=[t]),i(t))for(var n=0,r=t.length;nu)o(r,n=e[u++])&&(~a(l,n)||c(l,n));return l}},cb2d:function(t,e,n){var r=n("1626"),o=n("9bf2"),i=n("13d2"),a=n("6374");t.exports=function(t,e,n,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:e;if(r(n)&&i(n,u,s),s.global)c?t[e]=n:a(e,n);else{try{s.unsafe?t[e]&&(c=!0):delete t[e]}catch(l){}c?t[e]=n:o.f(t,e,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cdce:function(t,e,n){var r=n("da84"),o=n("1626"),i=r.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},cee4:function(t,e,n){"use strict";var r=n("c532"),o=n("1d2b"),i=n("0a06"),a=n("4a7b"),s=n("2444");function c(t){var e=new i(t),n=o(i.prototype.request,e);return r.extend(n,i.prototype,e),r.extend(n,e),n}var u=c(s);u.Axios=i,u.create=function(t){return c(a(u.defaults,t))},u.Cancel=n("7a77"),u.CancelToken=n("8df4"),u.isCancel=n("2e67"),u.all=function(t){return Promise.all(t)},u.spread=n("0df6"),u.isAxiosError=n("5f02"),t.exports=u,t.exports.default=u},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("da84"),o=n("1626"),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t]):r[t]&&r[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d2db:function(t,e,n){},d925:function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},d9b5:function(t,e,n){var r=n("d066"),o=n("1626"),i=n("3a9b"),a=n("fdbf"),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return o(e)&&i(e.prototype,s(t))}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},dc4a:function(t,e,n){var r=n("59ed"),o=n("7234");t.exports=function(t,e){var n=t[e];return o(n)?void 0:r(n)}},dd7f:function(t,e,n){ +/*! + * + * simple-keyboard v2.32.131 + * https://github.com/hodgef/simple-keyboard + * + * Copyright (c) Francisco Hodge (https://github.com/hodgef) + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ +!function(e,n){t.exports=n()}(0,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=0)}([function(t,e,n){t.exports=n(1)},function(t,e,n){"use strict";function r(t,e){var n;if("undefined"===typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"===typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(t))||e&&t&&"number"===typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,c=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return s=t.done,t},e:function(t){c=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(c)throw a}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n3&&void 0!==arguments[3]?arguments[3]:n,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i=this.getOptions(),a=[n,r,o],s=e;return("{bksp}"===t||"{backspace}"===t)&&s.length>0?s=this.removeAt.apply(this,[s].concat(a)):"{space}"===t?s=this.addStringAt.apply(this,[s," "].concat(a)):"{tab}"!==t||"boolean"===typeof i.tabCharOnTab&&!1===i.tabCharOnTab?"{enter}"!==t&&"{numpadenter}"!==t||!i.newLineOnEnter?t.includes("numpad")&&Number.isInteger(Number(t[t.length-2]))?s=this.addStringAt.apply(this,[s,t[t.length-2]].concat(a)):"{numpaddivide}"===t?s=this.addStringAt.apply(this,[s,"/"].concat(a)):"{numpadmultiply}"===t?s=this.addStringAt.apply(this,[s,"*"].concat(a)):"{numpadsubtract}"===t?s=this.addStringAt.apply(this,[s,"-"].concat(a)):"{numpadadd}"===t?s=this.addStringAt.apply(this,[s,"+"].concat(a)):"{numpaddecimal}"===t?s=this.addStringAt.apply(this,[s,"."].concat(a)):"{"===t||"}"===t?s=this.addStringAt.apply(this,[s,t].concat(a)):t.includes("{")||t.includes("}")||(s=this.addStringAt.apply(this,[s,t].concat(a))):s=this.addStringAt.apply(this,[s,"\n"].concat(a)):s=this.addStringAt.apply(this,[s,"\t"].concat(a)),s}},{key:"updateCaretPos",value:function(t,e){var n=this.updateCaretPosAction(t,e);this.dispatch((function(t){t.setCaretPosition(n)}))}},{key:"updateCaretPosAction",value:function(t,e){var n=this.getOptions(),r=this.getCaretPosition();return e?r>0&&(r-=t):r+=t,n.debug&&console.log("Caret at:",r,"(".concat(this.keyboardDOMClass,")")),r}},{key:"addStringAt",value:function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length,i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return r||0===r?(n=[t.slice(0,r),e,t.slice(o)].join(""),this.isMaxLengthReached()||i&&this.updateCaretPos(e.length)):n=t+e,n}},{key:"removeAt",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.length,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(0===n&&0===r)return t;if(n===r){var i=/([\uD800-\uDBFF][\uDC00-\uDFFF])/g;n&&n>=0?t.substring(n-2,n).match(i)?(e=t.substr(0,n-2)+t.substr(n),o&&this.updateCaretPos(2,!0)):(e=t.substr(0,n-1)+t.substr(n),o&&this.updateCaretPos(1,!0)):t.slice(-2).match(i)?(e=t.slice(0,-2),o&&this.updateCaretPos(2,!0)):(e=t.slice(0,-1),o&&this.updateCaretPos(1,!0))}else e=t.slice(0,n)+t.slice(r),o&&this.dispatch((function(t){t.setCaretPosition(n)}));return e}},{key:"handleMaxLength",value:function(t,e){var n=this.getOptions(),r=n.maxLength,o=t[n.inputName],a=e.length-1>=r;if(e.length<=o.length)return!1;if(Number.isInteger(r))return n.debug&&console.log("maxLength (num) reached:",a),a?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1);if("object"===i(r)){var s=e.length-1>=r[n.inputName];return n.debug&&console.log("maxLength (obj) reached:",s),s?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1)}}},{key:"isMaxLengthReached",value:function(){return Boolean(this.maxLengthReached)}},{key:"isTouchDevice",value:function(){return"ontouchstart"in window||navigator.maxTouchPoints}},{key:"pointerEventsSupported",value:function(){return window.PointerEvent}},{key:"camelCase",value:function(t){return!!t&&t.toLowerCase().trim().split(/[.\-_\s]/g).reduce((function(t,e){return e.length?t+e[0].toUpperCase()+e.slice(1):t}))}}])&&a(e.prototype,n),o&&a(e,o),t}();u=function(){},(c="noop")in(s=l)?Object.defineProperty(s,c,{value:u,enumerable:!0,configurable:!0,writable:!0}):s[c]=u;var f=l;function p(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;n&&(this.options.preventMouseUpDefault&&n.preventDefault(),this.options.stopMouseUpPropagation&&n.stopPropagation()),this.recurseButtons((function(e){e.classList.remove(t.activeButtonClass)})),this.isMouseHold=!1,this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),e&&"function"===typeof this.options.onKeyReleased&&this.options.onKeyReleased(e)}},{key:"handleKeyboardContainerMouseDown",value:function(t){this.options.preventMouseDownDefault&&t.preventDefault()}},{key:"handleButtonHold",value:function(t){var e=this;this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),this.holdInteractionTimeout=setTimeout((function(){e.isMouseHold?(e.handleButtonClicked(t),e.handleButtonHold(t)):clearTimeout(e.holdInteractionTimeout)}),100)}},{key:"syncInstanceInputs",value:function(){var t=this;this.dispatch((function(e){e.replaceInput(t.input),e.setCaretPosition(t.caretPosition,t.caretPositionEnd)}))}},{key:"clearInput",value:function(t){t=t||this.options.inputName,this.input[t]="",this.setCaretPosition(0),this.options.syncInstanceInputs&&this.syncInstanceInputs()}},{key:"getInput",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t=t||this.options.inputName,this.options.syncInstanceInputs&&!e&&this.syncInstanceInputs(),this.options.rtl){var n=this.input[t].replace("‫","").replace("‬","");return"‫"+n+"‬"}return this.input[t]}},{key:"getAllInputs",value:function(){var t=this,e={};return Object.keys(this.input).forEach((function(n){e[n]=t.getInput(n,!0)})),e}},{key:"setInput",value:function(t,e){e=e||this.options.inputName,this.input[e]=t,this.options.syncInstanceInputs&&this.syncInstanceInputs()}},{key:"replaceInput",value:function(t){this.input=t}},{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.changedOptions(t);this.options=Object.assign(this.options,t),e.length&&(this.options.debug&&console.log("changedOptions",e),this.onSetOptions(t),this.render())}},{key:"changedOptions",value:function(t){var e=this;return Object.keys(t).filter((function(n){return JSON.stringify(t[n])!==JSON.stringify(e.options[n])}))}},{key:"onSetOptions",value:function(t){t.inputName&&(this.options.debug&&console.log("inputName changed. caretPosition reset."),this.setCaretPosition(null))}},{key:"clear",value:function(){this.keyboardDOM.innerHTML="",this.keyboardDOM.className=this.keyboardDOMClass,this.buttonElements={}}},{key:"dispatch",value:function(t){if(!window.SimpleKeyboardInstances)throw console.warn("SimpleKeyboardInstances is not defined. Dispatch cannot be called."),new Error("INSTANCES_VAR_ERROR");return Object.keys(window.SimpleKeyboardInstances).forEach((function(e){t(window.SimpleKeyboardInstances[e],e)}))}},{key:"addButtonTheme",value:function(t,e){var n=this;if(!e||!t)return!1;t.split(" ").forEach((function(r){e.split(" ").forEach((function(e){n.options.buttonTheme||(n.options.buttonTheme=[]);var o=!1;n.options.buttonTheme.map((function(t){if(t.class.split(" ").includes(e)){o=!0;var n=t.buttons.split(" ");n.includes(r)||(o=!0,n.push(r),t.buttons=n.join(" "))}return t})),o||n.options.buttonTheme.push({class:e,buttons:t})}))})),this.render()}},{key:"removeButtonTheme",value:function(t,e){var n=this;if(!t&&!e)return this.options.buttonTheme=[],this.render(),!1;t&&Array.isArray(this.options.buttonTheme)&&this.options.buttonTheme.length&&(t.split(" ").forEach((function(t){n.options.buttonTheme.map((function(r,o){if(e&&e.includes(r.class)||!e){var i=r.buttons.split(" ").filter((function(e){return e!==t}));i.length?r.buttons=i.join(" "):(n.options.buttonTheme.splice(o,1),r=null)}return r}))})),this.render())}},{key:"getButtonElement",value:function(t){var e,n=this.buttonElements[t];return n&&(e=n.length>1?n:n[0]),e}},{key:"inputPatternIsValid",value:function(t){var e,n=this.options.inputPattern;if((e=n instanceof RegExp?n:n[this.options.inputName])&&t){var r=e.test(t);return this.options.debug&&console.log('inputPattern ("'.concat(e,'"): ').concat(r?"passed":"did not pass!")),r}return!0}},{key:"setEventListeners",value:function(){!this.isFirstKeyboardInstance&&this.allKeyboardInstances||(this.options.debug&&console.log("Caret handling started (".concat(this.keyboardDOMClass,")")),document.addEventListener("keyup",this.handleKeyUp),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("mouseup",this.handleMouseUp),document.addEventListener("touchend",this.handleTouchEnd))}},{key:"handleKeyUp",value:function(t){this.caretEventHandler(t),this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyUp(t)}},{key:"handleKeyDown",value:function(t){this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyDown(t)}},{key:"handleMouseUp",value:function(t){this.caretEventHandler(t)}},{key:"handleTouchEnd",value:function(t){this.caretEventHandler(t)}},{key:"caretEventHandler",value:function(t){var e;t.target.tagName&&(e=t.target.tagName.toLowerCase()),this.dispatch((function(n){var r=t.target===n.keyboardDOM||t.target&&n.keyboardDOM.contains(t.target);n.isMouseHold&&(n.isMouseHold=!1),"textarea"!==e&&"input"!==e||!["text","search","url","tel","password"].includes(t.target.type)||n.options.disableCaretPositioning?!n.options.disableCaretPositioning&&r||n.setCaretPosition(null):(n.setCaretPosition(t.target.selectionStart,t.target.selectionEnd),n.options.debug&&console.log("Caret at: ",n.getCaretPosition(),n.getCaretPositionEnd(),t&&t.target.tagName.toLowerCase(),"(".concat(n.keyboardDOMClass,")")))}))}},{key:"recurseButtons",value:function(t){var e=this;t&&Object.keys(this.buttonElements).forEach((function(n){return e.buttonElements[n].forEach(t)}))}},{key:"destroy",value:function(){this.options.debug&&console.log("Destroying simple-keyboard instance: ".concat(this.currentInstanceName)),document.removeEventListener("keyup",this.handleKeyUp),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("touchend",this.handleTouchEnd),document.onpointerup=null,document.ontouchend=null,document.ontouchcancel=null,document.onmouseup=null;var t=function(t){t.onpointerdown=null,t.onpointerup=null,t.onpointercancel=null,t.ontouchstart=null,t.ontouchend=null,t.ontouchcancel=null,t.onclick=null,t.onmousedown=null,t.onmouseup=null,t.remove(),t=null};this.recurseButtons(t),this.recurseButtons=null,t=null,this.keyboardDOM.onpointerdown=null,this.keyboardDOM.ontouchstart=null,this.keyboardDOM.onmousedown=null,this.clear(),window.SimpleKeyboardInstances[this.currentInstanceName]=null,delete window.SimpleKeyboardInstances[this.currentInstanceName],this.initialized=!1}},{key:"getButtonThemeClasses",value:function(t){var e=this.options.buttonTheme,n=[];return Array.isArray(e)&&e.forEach((function(e){if(e.class&&"string"===typeof e.class&&e.buttons&&"string"===typeof e.buttons){var r=e.class.split(" ");e.buttons.split(" ").includes(t)&&(n=[].concat(d(n),d(r)))}else console.warn('Incorrect "buttonTheme". Please check the documentation.',e)})),n}},{key:"setDOMButtonAttributes",value:function(t,e){var n=this.options.buttonAttributes;Array.isArray(n)&&n.forEach((function(n){n.attribute&&"string"===typeof n.attribute&&n.value&&"string"===typeof n.value&&n.buttons&&"string"===typeof n.buttons?n.buttons.split(" ").includes(t)&&e(n.attribute,n.value):console.warn('Incorrect "buttonAttributes". Please check the documentation.',n)}))}},{key:"onTouchDeviceDetected",value:function(){this.processAutoTouchEvents(),this.disableContextualWindow()}},{key:"disableContextualWindow",value:function(){window.oncontextmenu=function(t){if(t.target.classList.contains("hg-button"))return t.preventDefault(),t.stopPropagation(),!1}}},{key:"processAutoTouchEvents",value:function(){this.options.autoUseTouchEvents&&(this.options.useTouchEvents=!0,this.options.debug&&console.log("autoUseTouchEvents: Touch device detected, useTouchEvents enabled."))}},{key:"onInit",value:function(){this.options.debug&&console.log("".concat(this.keyboardDOMClass," Initialized")),this.setEventListeners(),"function"===typeof this.options.onInit&&this.options.onInit()}},{key:"beforeFirstRender",value:function(){this.utilities.isTouchDevice()&&this.onTouchDeviceDetected(),"function"===typeof this.options.beforeFirstRender&&this.options.beforeFirstRender(),this.isFirstKeyboardInstance&&this.utilities.pointerEventsSupported()&&!this.options.useTouchEvents&&!this.options.useMouseEvents&&this.options.debug&&console.log("Using PointerEvents as it is supported by this browser"),this.options.useTouchEvents&&this.options.debug&&console.log("useTouchEvents has been enabled. Only touch events will be used.")}},{key:"beforeRender",value:function(){"function"===typeof this.options.beforeRender&&this.options.beforeRender()}},{key:"onRender",value:function(){"function"===typeof this.options.onRender&&this.options.onRender()}},{key:"onModulesLoaded",value:function(){"function"===typeof this.options.onModulesLoaded&&this.options.onModulesLoaded(this)}},{key:"loadModules",value:function(){var t=this;Array.isArray(this.options.modules)&&(this.options.modules.forEach((function(e){(new e).init(t)})),this.keyboardPluginClasses="modules-loaded",this.render(),this.onModulesLoaded())}},{key:"getModuleProp",value:function(t,e){return!!this.modules[t]&&this.modules[t][e]}},{key:"getModulesList",value:function(){return Object.keys(this.modules)}},{key:"parseRowDOMContainers",value:function(t,e,n,r){var o=this,i=Array.from(t.children),a=0;return i.length&&n.forEach((function(n,s){var c=r[s];if(!c||!(c>n))return!1;var u=n-a,l=c-a,f=document.createElement("div");f.className+="hg-button-container";var p="".concat(o.options.layoutName,"-r").concat(e,"c").concat(s);f.setAttribute("data-skUID",p);var h=i.splice(u,l-u+1);a=l-u,h.forEach((function(t){return f.appendChild(t)})),i.splice(u,0,f),t.innerHTML="",i.forEach((function(e){return t.appendChild(e)})),o.options.debug&&console.log("rowDOMContainer",h,u,l,a+1)})),t}},{key:"render",value:function(){var t=this;this.clear(),this.initialized||this.beforeFirstRender(),this.beforeRender();var e="hg-layout-".concat(this.options.layoutName),n=this.options.layout||{default:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","{tab} q w e r t y u i o p [ ] \\","{lock} a s d f g h j k l ; ' {enter}","{shift} z x c v b n m , . / {shift}",".com @ {space}"],shift:["~ ! @ # $ % ^ & * ( ) _ + {bksp}","{tab} Q W E R T Y U I O P { } |",'{lock} A S D F G H J K L : " {enter}',"{shift} Z X C V B N M < > ? {shift}",".com @ {space}"]},r=this.options.useTouchEvents||!1,o=r?"hg-touch-events":"",i=this.options.useMouseEvents||!1,a=this.options.disableRowButtonContainers;this.keyboardDOM.className=this.getKeyboardClassString(this.options.theme,e,this.keyboardPluginClasses,o),n[this.options.layoutName].forEach((function(e,n){var o=e.split(" "),s=document.createElement("div");s.className+="hg-row";var c=[],u=[];o.forEach((function(e,o){var l,f=!a&&"string"===typeof e&&e.length>1&&0===e.indexOf("["),p=!a&&"string"===typeof e&&e.length>1&&e.indexOf("]")===e.length-1;f&&(c.push(o),e=e.replace(/\[/g,"")),p&&(u.push(o),e=e.replace(/\]/g,""));var h=t.utilities.getButtonClass(e),v=t.utilities.getButtonDisplayName(e,t.options.display,t.options.mergeDisplay),m=t.options.useButtonTag?"button":"div",y=document.createElement(m);y.className+="hg-button ".concat(h),(l=y.classList).add.apply(l,d(t.getButtonThemeClasses(e))),t.setDOMButtonAttributes(e,(function(t,e){y.setAttribute(t,e)})),t.activeButtonClass="hg-activeButton",!t.utilities.pointerEventsSupported()||r||i?r?(y.ontouchstart=function(n){t.handleButtonClicked(e),t.handleButtonMouseDown(e,n)},y.ontouchend=function(n){t.handleButtonMouseUp(e,n)},y.ontouchcancel=function(n){t.handleButtonMouseUp(e,n)}):(y.onclick=function(){t.isMouseHold=!1,t.handleButtonClicked(e)},y.onmousedown=function(n){t.handleButtonMouseDown(e,n)},y.onmouseup=function(n){t.handleButtonMouseUp(e,n)}):(y.onpointerdown=function(n){t.handleButtonClicked(e),t.handleButtonMouseDown(e,n)},y.onpointerup=function(n){t.handleButtonMouseUp(e,n)},y.onpointercancel=function(n){t.handleButtonMouseUp(e,n)}),y.setAttribute("data-skBtn",e);var g="".concat(t.options.layoutName,"-r").concat(n,"b").concat(o);y.setAttribute("data-skBtnUID",g);var b=document.createElement("span");b.innerHTML=v,y.appendChild(b),t.buttonElements[e]||(t.buttonElements[e]=[]),t.buttonElements[e].push(y),s.appendChild(y)})),s=t.parseRowDOMContainers(s,n,c,u),t.keyboardDOM.appendChild(s)})),this.onRender(),this.initialized||(this.initialized=!0,!this.utilities.pointerEventsSupported()||r||i?r?(document.ontouchend=function(){return t.handleButtonMouseUp()},document.ontouchcancel=function(){return t.handleButtonMouseUp()},this.keyboardDOM.ontouchstart=function(e){return t.handleKeyboardContainerMouseDown(e)}):r||(document.onmouseup=function(){return t.handleButtonMouseUp()},this.keyboardDOM.onmousedown=function(e){return t.handleKeyboardContainerMouseDown(e)}):(document.onpointerup=function(){return t.handleButtonMouseUp()},this.keyboardDOM.onpointerdown=function(e){return t.handleKeyboardContainerMouseDown(e)}),this.onInit())}}])&&y(e.prototype,n),r&&y(e,r),t}();e.default=b}])}))},df7c:function(t,e,n){(function(t){function n(t,e){for(var n=0,r=t.length-1;r>=0;r--){var o=t[r];"."===o?t.splice(r,1):".."===o?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t){"string"!==typeof t&&(t+="");var e,n=0,r=-1,o=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!o){n=e+1;break}}else-1===r&&(o=!1,r=e+1);return-1===r?"":t.slice(n,r)}function o(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!r;i--){var a=i>=0?arguments[i]:t.cwd();if("string"!==typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,r="/"===a.charAt(0))}return e=n(o(e.split("/"),(function(t){return!!t})),!r).join("/"),(r?"/":"")+e||"."},e.normalize=function(t){var r=e.isAbsolute(t),a="/"===i(t,-1);return t=n(o(t.split("/"),(function(t){return!!t})),!r).join("/"),t||r||(t="."),t&&a&&(t+="/"),(r?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(o(t,(function(t,e){if("string"!==typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0;n--)if(""!==t[n])break;return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var o=r(t.split("/")),i=r(n.split("/")),a=Math.min(o.length,i.length),s=a,c=0;c=1;--i)if(e=t.charCodeAt(i),47===e){if(!o){r=i;break}}else o=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=r(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!==typeof t&&(t+="");for(var e=-1,n=0,r=-1,o=!0,i=0,a=t.length-1;a>=0;--a){var s=t.charCodeAt(a);if(47!==s)-1===r&&(o=!1,r=a+1),46===s?-1===e?e=a:1!==i&&(i=1):-1!==e&&(i=-1);else if(!o){n=a+1;break}}return-1===e||-1===r||0===i||1===i&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n("4362"))},e330:function(t,e,n){var r=n("c6b6"),o=n("7d7e");t.exports=function(t){if("Function"===r(t))return o(t)}},e683:function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},e893:function(t,e,n){var r=n("1a2d"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e,n){for(var s=o(e),c=a.f,u=i.f,l=0;l= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.7.13\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\nvar isArray = Array.isArray;\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\nfunction isDef(v) {\n return v !== undefined && v !== null;\n}\nfunction isTrue(v) {\n return v === true;\n}\nfunction isFalse(v) {\n return v === false;\n}\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean');\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Quick object check - this is primarily used to tell\n * objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\nfunction toRawType(value) {\n return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject(obj) {\n return _toString.call(obj) === '[object Object]';\n}\nfunction isRegExp(v) {\n return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex(val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n return (isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val);\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n var len = arr.length;\n if (len) {\n // fast path for the only / last item\n if (item === arr[len - 1]) {\n arr.length = len - 1;\n return;\n }\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx);\n }\n boundFn._length = fn.length;\n return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return (a.length === b.length &&\n a.every(function (e, i) {\n return looseEqual(e, b[i]);\n }));\n }\n else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return (keysA.length === keysB.length &&\n keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n }));\n }\n else {\n /* istanbul ignore next */\n return false;\n }\n }\n catch (e) {\n /* istanbul ignore next */\n return false;\n }\n }\n else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n }\n else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val))\n return i;\n }\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n if (x === y) {\n return x === 0 && 1 / x !== 1 / y;\n }\n else {\n return x === x || y === y;\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch',\n 'renderTracked',\n 'renderTriggered'\n];\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n /**\n * Whether to record perf\n */\n performance: false,\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj)\n return;\n obj = obj[segments[i]];\n }\n return obj;\n };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n }\n catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer =\n global['process'] && global['process'].env.VUE_ENV === 'server';\n }\n else {\n _isServer = false;\n }\n }\n return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n isNative(Symbol) &&\n typeof Reflect !== 'undefined' &&\n isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n}\nelse {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /** @class */ (function () {\n function Set() {\n this.set = Object.create(null);\n }\n Set.prototype.has = function (key) {\n return this.set[key] === true;\n };\n Set.prototype.add = function (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function () {\n this.set = Object.create(null);\n };\n return Set;\n }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n if (vm === void 0) { vm = null; }\n if (!vm)\n currentInstance && currentInstance._scope.off();\n currentInstance = vm;\n vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n }\n Object.defineProperty(VNode.prototype, \"child\", {\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n get: function () {\n return this.componentInstance;\n },\n enumerable: false,\n configurable: true\n });\n return VNode;\n}());\nvar createEmptyVNode = function (text) {\n if (text === void 0) { text = ''; }\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, \n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n for (var i = 0; i < pendingCleanupDeps.length; i++) {\n var dep = pendingCleanupDeps[i];\n dep.subs = dep.subs.filter(function (s) { return s; });\n dep._pending = false;\n }\n pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n function Dep() {\n // pending subs cleanup\n this._pending = false;\n this.id = uid$2++;\n this.subs = [];\n }\n Dep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n };\n Dep.prototype.removeSub = function (sub) {\n // #12696 deps with massive amount of subscribers are extremely slow to\n // clean up in Chromium\n // to workaround this, we unset the sub for now, and clear them on\n // next scheduler flush.\n this.subs[this.subs.indexOf(sub)] = null;\n if (!this._pending) {\n this._pending = true;\n pendingCleanupDeps.push(this);\n }\n };\n Dep.prototype.depend = function (info) {\n if (Dep.target) {\n Dep.target.addDep(this);\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n }\n }\n };\n Dep.prototype.notify = function (info) {\n // stabilize the subscriber list first\n var subs = this.subs.filter(function (s) { return s; });\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n var sub = subs[i];\n if (process.env.NODE_ENV !== 'production' && info) {\n sub.onTrigger &&\n sub.onTrigger(__assign({ effect: subs[i] }, info));\n }\n sub.update();\n }\n };\n return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted)\n ob.observeArray(inserted);\n // notify change\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n target: this,\n key: method\n });\n }\n else {\n ob.dep.notify();\n }\n return result;\n });\n});\n\nvar rawMap = new WeakMap();\nfunction reactive(target) {\n makeReactive(target, false);\n return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n makeReactive(target, true);\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n return target;\n}\nfunction makeReactive(target, shallow) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (!isReadonly(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n }\n var existingOb = target && target.__ob__;\n if (existingOb && existingOb.shallow !== shallow) {\n warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n }\n }\n var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n if (process.env.NODE_ENV !== 'production' && !ob) {\n if (target == null || isPrimitive(target)) {\n warn(\"value cannot be made reactive: \".concat(String(target)));\n }\n if (isCollectionType(target)) {\n warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n }\n }\n }\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (isObject(value)) {\n rawMap.set(value, true);\n }\n return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n var type = toRawType(value);\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INIITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n notify: noop,\n depend: noop,\n addSub: noop,\n removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n function Observer(value, shallow, mock) {\n if (shallow === void 0) { shallow = false; }\n if (mock === void 0) { mock = false; }\n this.value = value;\n this.shallow = shallow;\n this.mock = mock;\n // this.value = value\n this.dep = mock ? mockDep : new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (isArray(value)) {\n if (!mock) {\n if (hasProto) {\n value.__proto__ = arrayMethods;\n /* eslint-enable no-proto */\n }\n else {\n for (var i = 0, l = arrayKeys.length; i < l; i++) {\n var key = arrayKeys[i];\n def(value, key, arrayMethods[key]);\n }\n }\n }\n if (!shallow) {\n this.observeArray(value);\n }\n }\n else {\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n var keys = Object.keys(value);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);\n }\n }\n }\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function (value) {\n for (var i = 0, l = value.length; i < l; i++) {\n observe(value[i], false, this.mock);\n }\n };\n return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n return value.__ob__;\n }\n if (shouldObserve &&\n (ssrMockReactivity || !isServerRendering()) &&\n (isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value.__v_skip /* ReactiveFlags.SKIP */ &&\n !rawMap.has(value) &&\n !isRef(value) &&\n !(value instanceof VNode)) {\n return new Observer(value, shallow, ssrMockReactivity);\n }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock) {\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) &&\n (val === NO_INIITIAL_VALUE || arguments.length === 2)) {\n val = obj[key];\n }\n var childOb = !shallow && observe(val, false, mock);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: obj,\n type: \"get\" /* TrackOpTypes.GET */,\n key: key\n });\n }\n else {\n dep.depend();\n }\n if (childOb) {\n childOb.dep.depend();\n if (isArray(value)) {\n dependArray(value);\n }\n }\n }\n return isRef(value) && !shallow ? value.value : value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (!hasChanged(value, newVal)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n }\n else if (getter) {\n // #7981: for accessor properties without setter\n return;\n }\n else if (!shallow && isRef(value) && !isRef(newVal)) {\n value.value = newVal;\n return;\n }\n else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal, false, mock);\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: obj,\n key: key,\n newValue: newVal,\n oldValue: value\n });\n }\n else {\n dep.notify();\n }\n }\n });\n return dep;\n}\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' && warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n var ob = target.__ob__;\n if (isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n // when mocking for SSR, array methods are not hijacked\n if (ob && !ob.shallow && ob.mock) {\n observe(val, false, true);\n }\n return val;\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.');\n return val;\n }\n if (!ob) {\n target[key] = val;\n return val;\n }\n defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"add\" /* TriggerOpTypes.ADD */,\n target: target,\n key: key,\n newValue: val,\n oldValue: undefined\n });\n }\n else {\n ob.dep.notify();\n }\n return val;\n}\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n var ob = target.__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.');\n return;\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n if (!hasOwn(target, key)) {\n return;\n }\n delete target[key];\n if (!ob) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"delete\" /* TriggerOpTypes.DELETE */,\n target: target,\n key: key\n });\n }\n else {\n ob.dep.notify();\n }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n if (e && e.__ob__) {\n e.__ob__.dep.depend();\n }\n if (isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n var ref = {};\n def(ref, RefFlag, true);\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n return ref;\n}\nfunction triggerRef(ref) {\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n warn(\"received object is not a triggerable ref.\");\n }\n if (process.env.NODE_ENV !== 'production') {\n ref.dep &&\n ref.dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: ref,\n key: 'value'\n });\n }\n else {\n ref.dep && ref.dep.notify();\n }\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n if (isReactive(objectWithRefs)) {\n return objectWithRefs;\n }\n var proxy = {};\n var keys = Object.keys(objectWithRefs);\n for (var i = 0; i < keys.length; i++) {\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n }\n return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = source[key];\n if (isRef(val)) {\n return val.value;\n }\n else {\n var ob = val && val.__ob__;\n if (ob)\n ob.dep.depend();\n return val;\n }\n },\n set: function (value) {\n var oldValue = source[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n }\n else {\n source[key] = value;\n }\n }\n });\n}\nfunction customRef(factory) {\n var dep = new Dep();\n var _a = factory(function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n dep.depend();\n }\n }, function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value'\n });\n }\n else {\n dep.notify();\n }\n }), get = _a.get, set = _a.set;\n var ref = {\n get value() {\n return get();\n },\n set value(newVal) {\n set(newVal);\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\nfunction toRefs(object) {\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n warn(\"toRefs() expects a reactive object but received a plain one.\");\n }\n var ret = isArray(object) ? new Array(object.length) : {};\n for (var key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nfunction toRef(object, key, defaultValue) {\n var val = object[key];\n if (isRef(val)) {\n return val;\n }\n var ref = {\n get value() {\n var val = object[key];\n return val === undefined ? defaultValue : val;\n },\n set value(newVal) {\n object[key] = newVal;\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\n\nvar rawToReadonlyMap = new WeakMap();\nvar rawToShallowReadonlyMap = new WeakMap();\nfunction readonly(target) {\n return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n if (!isPlainObject(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Vue 2 does not support readonly arrays.\");\n }\n else if (isCollectionType(target)) {\n warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n }\n else {\n warn(\"value cannot be made readonly: \".concat(typeof target));\n }\n }\n return target;\n }\n // already a readonly object\n if (isReadonly(target)) {\n return target;\n }\n // already has a readonly proxy\n var map = shallow ? rawToShallowReadonlyMap : rawToReadonlyMap;\n var existingProxy = map.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n var proxy = Object.create(Object.getPrototypeOf(target));\n map.set(target, proxy);\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n if (isRef(target)) {\n def(proxy, RefFlag, true);\n }\n if (shallow || isShallow(target)) {\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n }\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n defineReadonlyProperty(proxy, target, keys[i], shallow);\n }\n return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n Object.defineProperty(proxy, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = target[key];\n return shallow || !isPlainObject(val) ? val : readonly(val);\n },\n set: function () {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n }\n });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n var getter;\n var setter;\n var onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = process.env.NODE_ENV !== 'production'\n ? function () {\n warn('Write operation failed: computed value is readonly');\n }\n : noop;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n var watcher = isServerRendering()\n ? null\n : new Watcher(currentInstance, getter, noop, { lazy: true });\n if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n watcher.onTrack = debugOptions.onTrack;\n watcher.onTrigger = debugOptions.onTrigger;\n }\n var ref = {\n // some libs rely on the presence effect for checking computed refs\n // from normal refs, but the implementation doesn't matter\n effect: watcher,\n get value() {\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n Dep.target.onTrack({\n effect: Dep.target,\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n watcher.depend();\n }\n return watcher.value;\n }\n else {\n return getter();\n }\n },\n set value(newVal) {\n setter(newVal);\n }\n };\n def(ref, RefFlag, true);\n def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n return ref;\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n \"supports `watch(source, cb, options?) signature.\");\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n if (process.env.NODE_ENV !== 'production' && !cb) {\n if (immediate !== undefined) {\n warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n if (deep !== undefined) {\n warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n }\n var warnInvalidSource = function (s) {\n warn(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n \"function, a ref, a reactive object, or an array of these types.\");\n };\n var instance = currentInstance;\n var call = function (fn, type, args) {\n if (args === void 0) { args = null; }\n return invokeWithErrorHandling(fn, null, args, instance, type);\n };\n var getter;\n var forceTrigger = false;\n var isMultiSource = false;\n if (isRef(source)) {\n getter = function () { return source.value; };\n forceTrigger = isShallow(source);\n }\n else if (isReactive(source)) {\n getter = function () {\n source.__ob__.dep.depend();\n return source;\n };\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n getter = function () {\n return source.map(function (s) {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return call(s, WATCHER_GETTER);\n }\n else {\n process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n }\n });\n };\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = function () { return call(source, WATCHER_GETTER); };\n }\n else {\n // no cb -> simple effect\n getter = function () {\n if (instance && instance._isDestroyed) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return call(source, WATCHER, [onCleanup]);\n };\n }\n }\n else {\n getter = noop;\n process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n }\n if (cb && deep) {\n var baseGetter_1 = getter;\n getter = function () { return traverse(baseGetter_1()); };\n }\n var cleanup;\n var onCleanup = function (fn) {\n cleanup = watcher.onStop = function () {\n call(fn, WATCHER_CLEANUP);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager\n if (isServerRendering()) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = noop;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n call(cb, WATCHER_CB, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n return noop;\n }\n var watcher = new Watcher(currentInstance, getter, noop, {\n lazy: true\n });\n watcher.noRecurse = !cb;\n var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n // overwrite default run\n watcher.run = function () {\n if (!watcher.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n var newValue = watcher.get();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some(function (v, i) {\n return hasChanged(v, oldValue[i]);\n })\n : hasChanged(newValue, oldValue))) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n call(cb, WATCHER_CB, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n watcher.get();\n }\n };\n if (flush === 'sync') {\n watcher.update = watcher.run;\n }\n else if (flush === 'post') {\n watcher.post = true;\n watcher.update = function () { return queueWatcher(watcher); };\n }\n else {\n // pre\n watcher.update = function () {\n if (instance && instance === currentInstance && !instance._isMounted) {\n // pre-watcher triggered before\n var buffer = instance._preWatchers || (instance._preWatchers = []);\n if (buffer.indexOf(watcher) < 0)\n buffer.push(watcher);\n }\n else {\n queueWatcher(watcher);\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n watcher.onTrack = onTrack;\n watcher.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n watcher.run();\n }\n else {\n oldValue = watcher.get();\n }\n }\n else if (flush === 'post' && instance) {\n instance.$once('hook:mounted', function () { return watcher.get(); });\n }\n else {\n watcher.get();\n }\n return function () {\n watcher.teardown();\n };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n function EffectScope(detached) {\n if (detached === void 0) { detached = false; }\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n EffectScope.prototype.run = function (fn) {\n if (this.active) {\n var currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"cannot run an inactive effect scope.\");\n }\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.on = function () {\n activeEffectScope = this;\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.off = function () {\n activeEffectScope = this.parent;\n };\n EffectScope.prototype.stop = function (fromParent) {\n if (this.active) {\n var i = void 0, l = void 0;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].teardown();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n var last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n };\n return EffectScope;\n}());\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n if (scope === void 0) { scope = activeEffectScope; }\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"onScopeDispose() is called when there is no active effect scope\" +\n \" to be associated with.\");\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"provide() can only be used inside setup().\");\n }\n }\n else {\n // TS doesn't allow symbol as index type\n resolveProvided(currentInstance)[key] = value;\n }\n}\nfunction resolveProvided(vm) {\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n var existing = vm._provided;\n var parentProvides = vm.$parent && vm.$parent._provided;\n if (parentProvides === existing) {\n return (vm._provided = Object.create(parentProvides));\n }\n else {\n return existing;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n var instance = currentInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n var provides = instance.$parent && instance.$parent._provided;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance)\n : defaultValue;\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"inject() can only be used inside setup() or functional components.\");\n }\n}\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once,\n capture: capture,\n passive: passive\n };\n});\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var fns = invoker.fns;\n if (isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n }\n }\n else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n invoker.fns = fns;\n return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n }\n else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n }\n else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove(event.name, oldOn[name], event.capture);\n }\n }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n function wrappedHook() {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove$2(invoker.fns, wrappedHook);\n }\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n }\n else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n }\n else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return;\n }\n var res = {};\n var attrs = data.attrs, props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n \"\".concat(formatComponentName(\n // @ts-expect-error tag is string\n tag || Ctor), \", but the declared prop name is\") +\n \" \\\"\".concat(key, \"\\\". \") +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true;\n }\n else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true;\n }\n }\n return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.