Commit 503bca902a45e0863542955945ea80f37428a314

Authored by Igor Kulikov
1 parent 6440f9ac

Minor refactoring

Showing 25 changed files with 1924 additions and 565 deletions
... ... @@ -4,6 +4,152 @@
4 4 "lockfileVersion": 1,
5 5 "requires": true,
6 6 "dependencies": {
  7 + "@azure/abort-controller": {
  8 + "version": "1.0.1",
  9 + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.1.tgz",
  10 + "integrity": "sha512-wP2Jw6uPp8DEDy0n4KNidvwzDjyVV2xnycEIq7nPzj1rHyb/r+t3OPeNT1INZePP2wy5ZqlwyuyOMTi0ePyY1A==",
  11 + "requires": {
  12 + "tslib": "^1.9.3"
  13 + }
  14 + },
  15 + "@azure/amqp-common": {
  16 + "version": "1.0.0-preview.13",
  17 + "resolved": "https://registry.npmjs.org/@azure/amqp-common/-/amqp-common-1.0.0-preview.13.tgz",
  18 + "integrity": "sha512-v19NGXFm8Hzr2bj/DSWYc2anaDcoAeFQXJGuBT8QO7eS13vaELQNGaynOGipEcI313A1778R/FFCk4o+dylIiw==",
  19 + "requires": {
  20 + "@types/async-lock": "^1.1.0",
  21 + "@types/is-buffer": "^2.0.0",
  22 + "async-lock": "^1.1.3",
  23 + "buffer": "^5.2.1",
  24 + "debug": "^3.1.0",
  25 + "events": "^3.0.0",
  26 + "is-buffer": "^2.0.3",
  27 + "jssha": "^2.3.1",
  28 + "process": "^0.11.10",
  29 + "rhea": "^1.0.18",
  30 + "rhea-promise": "^0.1.15",
  31 + "stream-browserify": "^2.0.2",
  32 + "tslib": "^1.9.3",
  33 + "url": "^0.11.0",
  34 + "util": "^0.11.1"
  35 + },
  36 + "dependencies": {
  37 + "is-buffer": {
  38 + "version": "2.0.4",
  39 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
  40 + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
  41 + }
  42 + }
  43 + },
  44 + "@azure/core-auth": {
  45 + "version": "1.1.2",
  46 + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.1.2.tgz",
  47 + "integrity": "sha512-IUbP/f3v96dpHgXUwsAjUwDzjlUjawyUhWhGKKB6Qxy+iqppC/pVBPyc6kdpyTe7H30HN+4H3f0lar7Wp9Hx6A==",
  48 + "requires": {
  49 + "@azure/abort-controller": "^1.0.0",
  50 + "@azure/core-tracing": "1.0.0-preview.8",
  51 + "@opentelemetry/api": "^0.6.1",
  52 + "tslib": "^1.10.0"
  53 + }
  54 + },
  55 + "@azure/core-http": {
  56 + "version": "1.1.1",
  57 + "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-1.1.1.tgz",
  58 + "integrity": "sha512-yBxH5CtYaCj0f1CKoi3OjQw5C5Go8TbgNA6Q2rX7XsDpN2eeKu0n3kRvzZnKW+brtO1u3YnBBuBLF2KcGoZv6g==",
  59 + "requires": {
  60 + "@azure/abort-controller": "^1.0.0",
  61 + "@azure/core-auth": "^1.1.2",
  62 + "@azure/core-tracing": "1.0.0-preview.8",
  63 + "@azure/logger": "^1.0.0",
  64 + "@opentelemetry/api": "^0.6.1",
  65 + "@types/node-fetch": "^2.5.0",
  66 + "@types/tunnel": "^0.0.1",
  67 + "cross-env": "^6.0.3",
  68 + "form-data": "^3.0.0",
  69 + "node-fetch": "^2.6.0",
  70 + "process": "^0.11.10",
  71 + "tough-cookie": "^3.0.1",
  72 + "tslib": "^1.10.0",
  73 + "tunnel": "^0.0.6",
  74 + "uuid": "^3.3.2",
  75 + "xml2js": "^0.4.19"
  76 + },
  77 + "dependencies": {
  78 + "form-data": {
  79 + "version": "3.0.0",
  80 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
  81 + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
  82 + "requires": {
  83 + "asynckit": "^0.4.0",
  84 + "combined-stream": "^1.0.8",
  85 + "mime-types": "^2.1.12"
  86 + }
  87 + },
  88 + "tough-cookie": {
  89 + "version": "3.0.1",
  90 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
  91 + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
  92 + "requires": {
  93 + "ip-regex": "^2.1.0",
  94 + "psl": "^1.1.28",
  95 + "punycode": "^2.1.1"
  96 + }
  97 + }
  98 + }
  99 + },
  100 + "@azure/core-tracing": {
  101 + "version": "1.0.0-preview.8",
  102 + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.8.tgz",
  103 + "integrity": "sha512-ZKUpCd7Dlyfn7bdc+/zC/sf0aRIaNQMDuSj2RhYRFe3p70hVAnYGp3TX4cnG2yoEALp/LTj/XnZGQ8Xzf6Ja/Q==",
  104 + "requires": {
  105 + "@opencensus/web-types": "0.0.7",
  106 + "@opentelemetry/api": "^0.6.1",
  107 + "tslib": "^1.10.0"
  108 + }
  109 + },
  110 + "@azure/logger": {
  111 + "version": "1.0.0",
  112 + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.0.tgz",
  113 + "integrity": "sha512-g2qLDgvmhyIxR3JVS8N67CyIOeFRKQlX/llxYJQr1OSGQqM3HTpVP8MjmjcEKbL/OIt2N9C9UFaNQuKOw1laOA==",
  114 + "requires": {
  115 + "tslib": "^1.9.3"
  116 + }
  117 + },
  118 + "@azure/service-bus": {
  119 + "version": "1.1.6",
  120 + "resolved": "https://registry.npmjs.org/@azure/service-bus/-/service-bus-1.1.6.tgz",
  121 + "integrity": "sha512-eCJXcJZGWdlVwLEqMcoIqtUrh/NtyFcDDfq/y8gdCOy3Dzuv8JkPTxjdjcxDthwG9mc5Qter3dGOTwh0U8gwiw==",
  122 + "requires": {
  123 + "@azure/amqp-common": "1.0.0-preview.13",
  124 + "@azure/core-http": "^1.0.0",
  125 + "@opentelemetry/types": "^0.2.0",
  126 + "@types/is-buffer": "^2.0.0",
  127 + "@types/long": "^4.0.0",
  128 + "buffer": "^5.2.1",
  129 + "debug": "^4.1.1",
  130 + "is-buffer": "^2.0.3",
  131 + "long": "^4.0.0",
  132 + "process": "^0.11.10",
  133 + "rhea": "^1.0.18",
  134 + "rhea-promise": "^0.1.15",
  135 + "tslib": "^1.10.0"
  136 + },
  137 + "dependencies": {
  138 + "debug": {
  139 + "version": "4.1.1",
  140 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
  141 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
  142 + "requires": {
  143 + "ms": "^2.1.1"
  144 + }
  145 + },
  146 + "is-buffer": {
  147 + "version": "2.0.4",
  148 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
  149 + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
  150 + }
  151 + }
  152 + },
7 153 "@babel/parser": {
8 154 "version": "7.8.4",
9 155 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
... ... @@ -19,6 +165,69 @@
19 165 "regenerator-runtime": "^0.13.2"
20 166 }
21 167 },
  168 + "@google-cloud/paginator": {
  169 + "version": "2.0.3",
  170 + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz",
  171 + "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==",
  172 + "requires": {
  173 + "arrify": "^2.0.0",
  174 + "extend": "^3.0.2"
  175 + }
  176 + },
  177 + "@google-cloud/precise-date": {
  178 + "version": "1.0.3",
  179 + "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-1.0.3.tgz",
  180 + "integrity": "sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ=="
  181 + },
  182 + "@google-cloud/projectify": {
  183 + "version": "1.0.4",
  184 + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz",
  185 + "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg=="
  186 + },
  187 + "@google-cloud/promisify": {
  188 + "version": "1.0.4",
  189 + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz",
  190 + "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ=="
  191 + },
  192 + "@google-cloud/pubsub": {
  193 + "version": "1.7.2",
  194 + "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-1.7.2.tgz",
  195 + "integrity": "sha512-/TziioDSV4FS4wKF1sIaQ+1gvE+um83oHz1nRsZ3L87uWSoOciBjJAcocgPjqrpnW441+Nuw4w0QdSUV1Lka/g==",
  196 + "requires": {
  197 + "@google-cloud/paginator": "^2.0.0",
  198 + "@google-cloud/precise-date": "^1.0.0",
  199 + "@google-cloud/projectify": "^1.0.0",
  200 + "@google-cloud/promisify": "^1.0.0",
  201 + "@types/duplexify": "^3.6.0",
  202 + "@types/long": "^4.0.0",
  203 + "arrify": "^2.0.0",
  204 + "async-each": "^1.0.1",
  205 + "extend": "^3.0.2",
  206 + "google-auth-library": "^5.5.0",
  207 + "google-gax": "^1.14.2",
  208 + "is-stream-ended": "^0.1.4",
  209 + "lodash.snakecase": "^4.1.1",
  210 + "p-defer": "^3.0.0",
  211 + "protobufjs": "^6.8.1"
  212 + }
  213 + },
  214 + "@grpc/grpc-js": {
  215 + "version": "1.0.3",
  216 + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.0.3.tgz",
  217 + "integrity": "sha512-JKV3f5Bv2TZxK6eJSB9EarsZrnLxrvcFNwI9goq0YRXa3S6NNoCSnI3cG3lkXVIJ03Wng1WXe76kc2JQtRe7AQ==",
  218 + "requires": {
  219 + "semver": "^6.2.0"
  220 + }
  221 + },
  222 + "@grpc/proto-loader": {
  223 + "version": "0.5.4",
  224 + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.4.tgz",
  225 + "integrity": "sha512-HTM4QpI9B2XFkPz7pjwMyMgZchJ93TVkL3kWPW8GDMDKYxsMnmf4w2TNMJK7+KNiYHS5cJrCEAFlF+AwtXWVPA==",
  226 + "requires": {
  227 + "lodash.camelcase": "^4.3.0",
  228 + "protobufjs": "^6.8.6"
  229 + }
  230 + },
22 231 "@nodelib/fs.scandir": {
23 232 "version": "2.1.3",
24 233 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
... ... @@ -45,23 +254,193 @@
45 254 "fastq": "^1.6.0"
46 255 }
47 256 },
  257 + "@opencensus/web-types": {
  258 + "version": "0.0.7",
  259 + "resolved": "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz",
  260 + "integrity": "sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g=="
  261 + },
  262 + "@opentelemetry/api": {
  263 + "version": "0.6.1",
  264 + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-0.6.1.tgz",
  265 + "integrity": "sha512-wpufGZa7tTxw7eAsjXJtiyIQ42IWQdX9iUQp7ACJcKo1hCtuhLU+K2Nv1U6oRwT1oAlZTE6m4CgWKZBhOiau3Q==",
  266 + "requires": {
  267 + "@opentelemetry/context-base": "^0.6.1"
  268 + }
  269 + },
  270 + "@opentelemetry/context-base": {
  271 + "version": "0.6.1",
  272 + "resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.6.1.tgz",
  273 + "integrity": "sha512-5bHhlTBBq82ti3qPT15TRxkYTFPPQWbnkkQkmHPtqiS1XcTB69cEKd3Jm7Cfi/vkPoyxapmePE9tyA7EzLt8SQ=="
  274 + },
  275 + "@opentelemetry/types": {
  276 + "version": "0.2.0",
  277 + "resolved": "https://registry.npmjs.org/@opentelemetry/types/-/types-0.2.0.tgz",
  278 + "integrity": "sha512-GtwNB6BNDdsIPAYEdpp3JnOGO/3AJxjPvny53s3HERBdXSJTGQw8IRhiaTEX0b3w9P8+FwFZde4k+qkjn67aVw=="
  279 + },
  280 + "@protobufjs/aspromise": {
  281 + "version": "1.1.2",
  282 + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
  283 + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
  284 + },
  285 + "@protobufjs/base64": {
  286 + "version": "1.1.2",
  287 + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
  288 + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
  289 + },
  290 + "@protobufjs/codegen": {
  291 + "version": "2.0.4",
  292 + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
  293 + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
  294 + },
  295 + "@protobufjs/eventemitter": {
  296 + "version": "1.1.0",
  297 + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
  298 + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
  299 + },
  300 + "@protobufjs/fetch": {
  301 + "version": "1.1.0",
  302 + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
  303 + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
  304 + "requires": {
  305 + "@protobufjs/aspromise": "^1.1.1",
  306 + "@protobufjs/inquire": "^1.1.0"
  307 + }
  308 + },
  309 + "@protobufjs/float": {
  310 + "version": "1.0.2",
  311 + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
  312 + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
  313 + },
  314 + "@protobufjs/inquire": {
  315 + "version": "1.1.0",
  316 + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
  317 + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
  318 + },
  319 + "@protobufjs/path": {
  320 + "version": "1.1.2",
  321 + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
  322 + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
  323 + },
  324 + "@protobufjs/pool": {
  325 + "version": "1.1.0",
  326 + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
  327 + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
  328 + },
  329 + "@protobufjs/utf8": {
  330 + "version": "1.1.0",
  331 + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
  332 + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
  333 + },
  334 + "@types/async-lock": {
  335 + "version": "1.1.2",
  336 + "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.1.2.tgz",
  337 + "integrity": "sha512-j9n4bb6RhgFIydBe0+kpjnBPYumDaDyU8zvbWykyVMkku+c2CSu31MZkLeaBfqIwU+XCxlDpYDfyMQRkM0AkeQ=="
  338 + },
48 339 "@types/color-name": {
49 340 "version": "1.1.1",
50 341 "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
51 342 "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
52 343 "dev": true
53 344 },
  345 + "@types/duplexify": {
  346 + "version": "3.6.0",
  347 + "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz",
  348 + "integrity": "sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A==",
  349 + "requires": {
  350 + "@types/node": "*"
  351 + }
  352 + },
  353 + "@types/fs-extra": {
  354 + "version": "8.1.0",
  355 + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz",
  356 + "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==",
  357 + "requires": {
  358 + "@types/node": "*"
  359 + }
  360 + },
  361 + "@types/is-buffer": {
  362 + "version": "2.0.0",
  363 + "resolved": "https://registry.npmjs.org/@types/is-buffer/-/is-buffer-2.0.0.tgz",
  364 + "integrity": "sha512-0f7N/e3BAz32qDYvgB4d2cqv1DqUwvGxHkXsrucICn8la1Vb6Yl6Eg8mPScGwUiqHJeE7diXlzaK+QMA9m4Gxw==",
  365 + "requires": {
  366 + "@types/node": "*"
  367 + }
  368 + },
  369 + "@types/long": {
  370 + "version": "4.0.1",
  371 + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
  372 + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
  373 + },
  374 + "@types/node": {
  375 + "version": "13.13.4",
  376 + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz",
  377 + "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA=="
  378 + },
  379 + "@types/node-fetch": {
  380 + "version": "2.5.7",
  381 + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz",
  382 + "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==",
  383 + "requires": {
  384 + "@types/node": "*",
  385 + "form-data": "^3.0.0"
  386 + },
  387 + "dependencies": {
  388 + "form-data": {
  389 + "version": "3.0.0",
  390 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
  391 + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
  392 + "requires": {
  393 + "asynckit": "^0.4.0",
  394 + "combined-stream": "^1.0.8",
  395 + "mime-types": "^2.1.12"
  396 + }
  397 + }
  398 + }
  399 + },
  400 + "@types/tunnel": {
  401 + "version": "0.0.1",
  402 + "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz",
  403 + "integrity": "sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==",
  404 + "requires": {
  405 + "@types/node": "*"
  406 + }
  407 + },
54 408 "abbrev": {
55 409 "version": "1.1.1",
56 410 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
57 411 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
58 412 "dev": true
59 413 },
  414 + "abort-controller": {
  415 + "version": "3.0.0",
  416 + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
  417 + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
  418 + "requires": {
  419 + "event-target-shim": "^5.0.0"
  420 + }
  421 + },
  422 + "agent-base": {
  423 + "version": "6.0.0",
  424 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
  425 + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
  426 + "requires": {
  427 + "debug": "4"
  428 + },
  429 + "dependencies": {
  430 + "debug": {
  431 + "version": "4.1.1",
  432 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
  433 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
  434 + "requires": {
  435 + "ms": "^2.1.1"
  436 + }
  437 + }
  438 + }
  439 + },
60 440 "ajv": {
61 441 "version": "6.11.0",
62 442 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
63 443 "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",
64   - "dev": true,
65 444 "requires": {
66 445 "fast-deep-equal": "^3.1.1",
67 446 "fast-json-stable-stringify": "^2.0.0",
... ... @@ -69,6 +448,47 @@
69 448 "uri-js": "^4.2.2"
70 449 }
71 450 },
  451 + "amqplib": {
  452 + "version": "0.5.5",
  453 + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.5.tgz",
  454 + "integrity": "sha512-sWx1hbfHbyKMw6bXOK2k6+lHL8TESWxjAx5hG8fBtT7wcxoXNIsFxZMnFyBjxt3yL14vn7WqBDe5U6BGOadtLg==",
  455 + "requires": {
  456 + "bitsyntax": "~0.1.0",
  457 + "bluebird": "^3.5.2",
  458 + "buffer-more-ints": "~1.0.0",
  459 + "readable-stream": "1.x >=1.1.9",
  460 + "safe-buffer": "~5.1.2",
  461 + "url-parse": "~1.4.3"
  462 + },
  463 + "dependencies": {
  464 + "isarray": {
  465 + "version": "0.0.1",
  466 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
  467 + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
  468 + },
  469 + "readable-stream": {
  470 + "version": "1.1.14",
  471 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
  472 + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
  473 + "requires": {
  474 + "core-util-is": "~1.0.0",
  475 + "inherits": "~2.0.1",
  476 + "isarray": "0.0.1",
  477 + "string_decoder": "~0.10.x"
  478 + }
  479 + },
  480 + "safe-buffer": {
  481 + "version": "5.1.2",
  482 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  483 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  484 + },
  485 + "string_decoder": {
  486 + "version": "0.10.31",
  487 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
  488 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
  489 + }
  490 + }
  491 + },
72 492 "ansi-align": {
73 493 "version": "2.0.0",
74 494 "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
... ... @@ -152,11 +572,15 @@
152 572 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
153 573 "dev": true
154 574 },
  575 + "arrify": {
  576 + "version": "2.0.1",
  577 + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
  578 + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
  579 + },
155 580 "asn1": {
156 581 "version": "0.2.4",
157 582 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
158 583 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
159   - "dev": true,
160 584 "requires": {
161 585 "safer-buffer": "~2.1.0"
162 586 }
... ... @@ -164,8 +588,7 @@
164 588 "assert-plus": {
165 589 "version": "1.0.0",
166 590 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
167   - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
168   - "dev": true
  591 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
169 592 },
170 593 "assign-symbols": {
171 594 "version": "1.0.0",
... ... @@ -184,14 +607,17 @@
184 607 "async-each": {
185 608 "version": "1.0.3",
186 609 "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
187   - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
188   - "dev": true
  610 + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ=="
  611 + },
  612 + "async-lock": {
  613 + "version": "1.2.2",
  614 + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.2.2.tgz",
  615 + "integrity": "sha512-uczz62z2fMWOFbyo6rG4NlV2SdxugJT6sZA2QcfB1XaSjEiOh8CuOb/TttyMnYQCda6nkWecJe465tGQDPJiKw=="
189 616 },
190 617 "asynckit": {
191 618 "version": "0.4.0",
192 619 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
193   - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
194   - "dev": true
  620 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
195 621 },
196 622 "atob": {
197 623 "version": "2.1.2",
... ... @@ -199,17 +625,126 @@
199 625 "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
200 626 "dev": true
201 627 },
  628 + "aws-sdk": {
  629 + "version": "2.669.0",
  630 + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.669.0.tgz",
  631 + "integrity": "sha512-kuVcSRpDzvkgmeSmMX6Q32eTOb8UeihhUdavMrvUOP6fzSU19cNWS9HAIkYOi/jrEDK85cCZxXjxqE3JGZIGcw==",
  632 + "requires": {
  633 + "buffer": "4.9.1",
  634 + "events": "1.1.1",
  635 + "ieee754": "1.1.13",
  636 + "jmespath": "0.15.0",
  637 + "querystring": "0.2.0",
  638 + "sax": "1.2.1",
  639 + "url": "0.10.3",
  640 + "uuid": "3.3.2",
  641 + "xml2js": "0.4.19"
  642 + },
  643 + "dependencies": {
  644 + "buffer": {
  645 + "version": "4.9.1",
  646 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
  647 + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
  648 + "requires": {
  649 + "base64-js": "^1.0.2",
  650 + "ieee754": "^1.1.4",
  651 + "isarray": "^1.0.0"
  652 + }
  653 + },
  654 + "events": {
  655 + "version": "1.1.1",
  656 + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
  657 + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
  658 + },
  659 + "punycode": {
  660 + "version": "1.3.2",
  661 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
  662 + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
  663 + },
  664 + "sax": {
  665 + "version": "1.2.1",
  666 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
  667 + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
  668 + },
  669 + "url": {
  670 + "version": "0.10.3",
  671 + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
  672 + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
  673 + "requires": {
  674 + "punycode": "1.3.2",
  675 + "querystring": "0.2.0"
  676 + }
  677 + },
  678 + "uuid": {
  679 + "version": "3.3.2",
  680 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
  681 + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
  682 + },
  683 + "xml2js": {
  684 + "version": "0.4.19",
  685 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
  686 + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
  687 + "requires": {
  688 + "sax": ">=0.6.0",
  689 + "xmlbuilder": "~9.0.1"
  690 + }
  691 + },
  692 + "xmlbuilder": {
  693 + "version": "9.0.7",
  694 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
  695 + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
  696 + }
  697 + }
  698 + },
202 699 "aws-sign2": {
203 700 "version": "0.7.0",
204 701 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
205   - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
206   - "dev": true
  702 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
207 703 },
208 704 "aws4": {
209 705 "version": "1.9.1",
210 706 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
211   - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==",
212   - "dev": true
  707 + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
  708 + },
  709 + "azure-common": {
  710 + "version": "0.9.22",
  711 + "resolved": "https://registry.npmjs.org/azure-common/-/azure-common-0.9.22.tgz",
  712 + "integrity": "sha512-0r9tK9D+1xl2/VPVtfmGmtkMqfooiBLS87fX+Ab0hOCPVVe/6CgVC4in0wSf2Ta8r65DbvxV5P4/t8fp8Q3EsQ==",
  713 + "requires": {
  714 + "dateformat": "1.0.2-1.2.3",
  715 + "duplexer": "~0.1.1",
  716 + "envconf": "~0.0.4",
  717 + "request": "^2.81.0",
  718 + "through": "~2.3.4",
  719 + "tunnel": "~0.0.2",
  720 + "underscore": "1.4.x",
  721 + "validator": "^9.4.1",
  722 + "xml2js": "^0.4.19",
  723 + "xmlbuilder": "0.4.3"
  724 + },
  725 + "dependencies": {
  726 + "underscore": {
  727 + "version": "1.4.4",
  728 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
  729 + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
  730 + },
  731 + "xmlbuilder": {
  732 + "version": "0.4.3",
  733 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.3.tgz",
  734 + "integrity": "sha1-xGFLp04K0ZbmCcknLNnh3bKKilg="
  735 + }
  736 + }
  737 + },
  738 + "azure-sb": {
  739 + "version": "0.11.1",
  740 + "resolved": "https://registry.npmjs.org/azure-sb/-/azure-sb-0.11.1.tgz",
  741 + "integrity": "sha512-ZYgPeSDMD99i/Em+6wT78zvBkJ/dbh2ypb4DbqQ1Flaif5vWJFzC/iKxxcq/vq+THWoO3+UbqWa0JNXnW3zAvw==",
  742 + "requires": {
  743 + "azure-common": "^0.9.22",
  744 + "mpns": "2.1.3",
  745 + "underscore": "^1.8.3",
  746 + "wns": "~0.5.3"
  747 + }
213 748 },
214 749 "balanced-match": {
215 750 "version": "1.0.0",
... ... @@ -272,15 +807,24 @@
272 807 }
273 808 }
274 809 },
  810 + "base64-js": {
  811 + "version": "1.3.1",
  812 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
  813 + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
  814 + },
275 815 "bcrypt-pbkdf": {
276 816 "version": "1.0.2",
277 817 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
278 818 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
279   - "dev": true,
280 819 "requires": {
281 820 "tweetnacl": "^0.14.3"
282 821 }
283 822 },
  823 + "bignumber.js": {
  824 + "version": "7.2.1",
  825 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz",
  826 + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ=="
  827 + },
284 828 "binary-extensions": {
285 829 "version": "1.13.1",
286 830 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
... ... @@ -297,6 +841,41 @@
297 841 "file-uri-to-path": "1.0.0"
298 842 }
299 843 },
  844 + "bitsyntax": {
  845 + "version": "0.1.0",
  846 + "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz",
  847 + "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
  848 + "requires": {
  849 + "buffer-more-ints": "~1.0.0",
  850 + "debug": "~2.6.9",
  851 + "safe-buffer": "~5.1.2"
  852 + },
  853 + "dependencies": {
  854 + "debug": {
  855 + "version": "2.6.9",
  856 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  857 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  858 + "requires": {
  859 + "ms": "2.0.0"
  860 + }
  861 + },
  862 + "ms": {
  863 + "version": "2.0.0",
  864 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  865 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  866 + },
  867 + "safe-buffer": {
  868 + "version": "5.1.2",
  869 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  870 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  871 + }
  872 + }
  873 + },
  874 + "bluebird": {
  875 + "version": "3.7.2",
  876 + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
  877 + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
  878 + },
300 879 "boxen": {
301 880 "version": "1.3.0",
302 881 "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
... ... @@ -351,6 +930,25 @@
351 930 }
352 931 }
353 932 },
  933 + "buffer": {
  934 + "version": "5.6.0",
  935 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
  936 + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
  937 + "requires": {
  938 + "base64-js": "^1.0.2",
  939 + "ieee754": "^1.1.4"
  940 + }
  941 + },
  942 + "buffer-equal-constant-time": {
  943 + "version": "1.0.1",
  944 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
  945 + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
  946 + },
  947 + "buffer-more-ints": {
  948 + "version": "1.0.0",
  949 + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
  950 + "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
  951 + },
354 952 "byline": {
355 953 "version": "5.0.0",
356 954 "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
... ... @@ -389,8 +987,7 @@
389 987 "caseless": {
390 988 "version": "0.12.0",
391 989 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
392   - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
393   - "dev": true
  990 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
394 991 },
395 992 "chalk": {
396 993 "version": "2.4.2",
... ... @@ -522,7 +1119,6 @@
522 1119 "version": "1.0.8",
523 1120 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
524 1121 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
525   - "dev": true,
526 1122 "requires": {
527 1123 "delayed-stream": "~1.0.0"
528 1124 }
... ... @@ -581,6 +1177,52 @@
581 1177 "capture-stack-trace": "^1.0.0"
582 1178 }
583 1179 },
  1180 + "cross-env": {
  1181 + "version": "6.0.3",
  1182 + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz",
  1183 + "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==",
  1184 + "requires": {
  1185 + "cross-spawn": "^7.0.0"
  1186 + },
  1187 + "dependencies": {
  1188 + "cross-spawn": {
  1189 + "version": "7.0.2",
  1190 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz",
  1191 + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==",
  1192 + "requires": {
  1193 + "path-key": "^3.1.0",
  1194 + "shebang-command": "^2.0.0",
  1195 + "which": "^2.0.1"
  1196 + }
  1197 + },
  1198 + "path-key": {
  1199 + "version": "3.1.1",
  1200 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
  1201 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
  1202 + },
  1203 + "shebang-command": {
  1204 + "version": "2.0.0",
  1205 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
  1206 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
  1207 + "requires": {
  1208 + "shebang-regex": "^3.0.0"
  1209 + }
  1210 + },
  1211 + "shebang-regex": {
  1212 + "version": "3.0.0",
  1213 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
  1214 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
  1215 + },
  1216 + "which": {
  1217 + "version": "2.0.2",
  1218 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
  1219 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
  1220 + "requires": {
  1221 + "isexe": "^2.0.0"
  1222 + }
  1223 + }
  1224 + }
  1225 + },
584 1226 "cross-spawn": {
585 1227 "version": "5.1.0",
586 1228 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
... ... @@ -607,16 +1249,19 @@
607 1249 "version": "1.14.1",
608 1250 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
609 1251 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
610   - "dev": true,
611 1252 "requires": {
612 1253 "assert-plus": "^1.0.0"
613 1254 }
614 1255 },
  1256 + "dateformat": {
  1257 + "version": "1.0.2-1.2.3",
  1258 + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
  1259 + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk="
  1260 + },
615 1261 "debug": {
616 1262 "version": "3.2.6",
617 1263 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
618 1264 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
619   - "dev": true,
620 1265 "requires": {
621 1266 "ms": "^2.1.1"
622 1267 }
... ... @@ -683,8 +1328,7 @@
683 1328 "delayed-stream": {
684 1329 "version": "1.0.0",
685 1330 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
686   - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
687   - "dev": true
  1331 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
688 1332 },
689 1333 "diagnostics": {
690 1334 "version": "1.1.1",
... ... @@ -714,22 +1358,74 @@
714 1358 "is-obj": "^1.0.0"
715 1359 }
716 1360 },
717   - "duplexer3": {
718   - "version": "0.1.4",
719   - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
720   - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
721   - "dev": true
722   - },
  1361 + "duplexer": {
  1362 + "version": "0.1.1",
  1363 + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
  1364 + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
  1365 + },
  1366 + "duplexer3": {
  1367 + "version": "0.1.4",
  1368 + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
  1369 + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
  1370 + "dev": true
  1371 + },
  1372 + "duplexify": {
  1373 + "version": "3.7.1",
  1374 + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
  1375 + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
  1376 + "requires": {
  1377 + "end-of-stream": "^1.0.0",
  1378 + "inherits": "^2.0.1",
  1379 + "readable-stream": "^2.0.0",
  1380 + "stream-shift": "^1.0.0"
  1381 + },
  1382 + "dependencies": {
  1383 + "readable-stream": {
  1384 + "version": "2.3.7",
  1385 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
  1386 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
  1387 + "requires": {
  1388 + "core-util-is": "~1.0.0",
  1389 + "inherits": "~2.0.3",
  1390 + "isarray": "~1.0.0",
  1391 + "process-nextick-args": "~2.0.0",
  1392 + "safe-buffer": "~5.1.1",
  1393 + "string_decoder": "~1.1.1",
  1394 + "util-deprecate": "~1.0.1"
  1395 + }
  1396 + },
  1397 + "safe-buffer": {
  1398 + "version": "5.1.2",
  1399 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  1400 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  1401 + },
  1402 + "string_decoder": {
  1403 + "version": "1.1.1",
  1404 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
  1405 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
  1406 + "requires": {
  1407 + "safe-buffer": "~5.1.0"
  1408 + }
  1409 + }
  1410 + }
  1411 + },
723 1412 "ecc-jsbn": {
724 1413 "version": "0.1.2",
725 1414 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
726 1415 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
727   - "dev": true,
728 1416 "requires": {
729 1417 "jsbn": "~0.1.0",
730 1418 "safer-buffer": "^2.1.0"
731 1419 }
732 1420 },
  1421 + "ecdsa-sig-formatter": {
  1422 + "version": "1.0.11",
  1423 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
  1424 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
  1425 + "requires": {
  1426 + "safe-buffer": "^5.0.1"
  1427 + }
  1428 + },
733 1429 "enabled": {
734 1430 "version": "1.0.2",
735 1431 "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
... ... @@ -738,11 +1434,24 @@
738 1434 "env-variable": "0.0.x"
739 1435 }
740 1436 },
  1437 + "end-of-stream": {
  1438 + "version": "1.4.4",
  1439 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
  1440 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
  1441 + "requires": {
  1442 + "once": "^1.4.0"
  1443 + }
  1444 + },
741 1445 "env-variable": {
742 1446 "version": "0.0.6",
743 1447 "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz",
744 1448 "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg=="
745 1449 },
  1450 + "envconf": {
  1451 + "version": "0.0.4",
  1452 + "resolved": "https://registry.npmjs.org/envconf/-/envconf-0.0.4.tgz",
  1453 + "integrity": "sha1-hWda+6I3xD+Y3i1GrcDlMqTc9Is="
  1454 + },
746 1455 "escape-string-regexp": {
747 1456 "version": "1.0.5",
748 1457 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
... ... @@ -788,6 +1497,16 @@
788 1497 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
789 1498 "dev": true
790 1499 },
  1500 + "event-target-shim": {
  1501 + "version": "5.0.1",
  1502 + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
  1503 + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
  1504 + },
  1505 + "events": {
  1506 + "version": "3.1.0",
  1507 + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
  1508 + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg=="
  1509 + },
791 1510 "execa": {
792 1511 "version": "0.7.0",
793 1512 "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
... ... @@ -862,8 +1581,7 @@
862 1581 "extend": {
863 1582 "version": "3.0.2",
864 1583 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
865   - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
866   - "dev": true
  1584 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
867 1585 },
868 1586 "extend-shallow": {
869 1587 "version": "3.0.2",
... ... @@ -954,14 +1672,12 @@
954 1672 "extsprintf": {
955 1673 "version": "1.3.0",
956 1674 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
957   - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
958   - "dev": true
  1675 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
959 1676 },
960 1677 "fast-deep-equal": {
961 1678 "version": "3.1.1",
962 1679 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
963   - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
964   - "dev": true
  1680 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
965 1681 },
966 1682 "fast-glob": {
967 1683 "version": "3.1.1",
... ... @@ -1033,8 +1749,7 @@
1033 1749 "fast-json-stable-stringify": {
1034 1750 "version": "2.1.0",
1035 1751 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1036   - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1037   - "dev": true
  1752 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
1038 1753 },
1039 1754 "fast-levenshtein": {
1040 1755 "version": "2.0.6",
... ... @@ -1047,6 +1762,11 @@
1047 1762 "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
1048 1763 "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
1049 1764 },
  1765 + "fast-text-encoding": {
  1766 + "version": "1.0.2",
  1767 + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.2.tgz",
  1768 + "integrity": "sha512-5rQdinSsycpzvAoHga2EDn+LRX1d5xLFsuNG0Kg61JrAT/tASXcLL0nf/33v+sAxlQcfYmWbTURa1mmAf55jGw=="
  1769 + },
1050 1770 "fastq": {
1051 1771 "version": "1.6.0",
1052 1772 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
... ... @@ -1108,14 +1828,12 @@
1108 1828 "forever-agent": {
1109 1829 "version": "0.6.1",
1110 1830 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1111   - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
1112   - "dev": true
  1831 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
1113 1832 },
1114 1833 "form-data": {
1115 1834 "version": "2.3.3",
1116 1835 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
1117 1836 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
1118   - "dev": true,
1119 1837 "requires": {
1120 1838 "asynckit": "^0.4.0",
1121 1839 "combined-stream": "^1.0.6",
... ... @@ -1226,12 +1944,14 @@
1226 1944 "balanced-match": {
1227 1945 "version": "1.0.0",
1228 1946 "bundled": true,
1229   - "dev": true
  1947 + "dev": true,
  1948 + "optional": true
1230 1949 },
1231 1950 "brace-expansion": {
1232 1951 "version": "1.1.11",
1233 1952 "bundled": true,
1234 1953 "dev": true,
  1954 + "optional": true,
1235 1955 "requires": {
1236 1956 "balanced-match": "^1.0.0",
1237 1957 "concat-map": "0.0.1"
... ... @@ -1251,7 +1971,8 @@
1251 1971 "concat-map": {
1252 1972 "version": "0.0.1",
1253 1973 "bundled": true,
1254   - "dev": true
  1974 + "dev": true,
  1975 + "optional": true
1255 1976 },
1256 1977 "console-control-strings": {
1257 1978 "version": "1.1.0",
... ... @@ -1399,6 +2120,7 @@
1399 2120 "version": "3.0.4",
1400 2121 "bundled": true,
1401 2122 "dev": true,
  2123 + "optional": true,
1402 2124 "requires": {
1403 2125 "brace-expansion": "^1.1.7"
1404 2126 }
... ... @@ -1723,6 +2445,34 @@
1723 2445 }
1724 2446 }
1725 2447 },
  2448 + "gaxios": {
  2449 + "version": "2.3.4",
  2450 + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
  2451 + "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
  2452 + "requires": {
  2453 + "abort-controller": "^3.0.0",
  2454 + "extend": "^3.0.2",
  2455 + "https-proxy-agent": "^5.0.0",
  2456 + "is-stream": "^2.0.0",
  2457 + "node-fetch": "^2.3.0"
  2458 + },
  2459 + "dependencies": {
  2460 + "is-stream": {
  2461 + "version": "2.0.0",
  2462 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
  2463 + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
  2464 + }
  2465 + }
  2466 + },
  2467 + "gcp-metadata": {
  2468 + "version": "3.5.0",
  2469 + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
  2470 + "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
  2471 + "requires": {
  2472 + "gaxios": "^2.1.0",
  2473 + "json-bigint": "^0.3.0"
  2474 + }
  2475 + },
1726 2476 "get-stream": {
1727 2477 "version": "3.0.0",
1728 2478 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
... ... @@ -1739,7 +2489,6 @@
1739 2489 "version": "0.1.7",
1740 2490 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
1741 2491 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
1742   - "dev": true,
1743 2492 "requires": {
1744 2493 "assert-plus": "^1.0.0"
1745 2494 }
... ... @@ -1788,6 +2537,67 @@
1788 2537 "slash": "^3.0.0"
1789 2538 }
1790 2539 },
  2540 + "google-auth-library": {
  2541 + "version": "5.10.1",
  2542 + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
  2543 + "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
  2544 + "requires": {
  2545 + "arrify": "^2.0.0",
  2546 + "base64-js": "^1.3.0",
  2547 + "ecdsa-sig-formatter": "^1.0.11",
  2548 + "fast-text-encoding": "^1.0.0",
  2549 + "gaxios": "^2.1.0",
  2550 + "gcp-metadata": "^3.4.0",
  2551 + "gtoken": "^4.1.0",
  2552 + "jws": "^4.0.0",
  2553 + "lru-cache": "^5.0.0"
  2554 + },
  2555 + "dependencies": {
  2556 + "lru-cache": {
  2557 + "version": "5.1.1",
  2558 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
  2559 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
  2560 + "requires": {
  2561 + "yallist": "^3.0.2"
  2562 + }
  2563 + },
  2564 + "yallist": {
  2565 + "version": "3.1.1",
  2566 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
  2567 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
  2568 + }
  2569 + }
  2570 + },
  2571 + "google-gax": {
  2572 + "version": "1.15.3",
  2573 + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz",
  2574 + "integrity": "sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==",
  2575 + "requires": {
  2576 + "@grpc/grpc-js": "~1.0.3",
  2577 + "@grpc/proto-loader": "^0.5.1",
  2578 + "@types/fs-extra": "^8.0.1",
  2579 + "@types/long": "^4.0.0",
  2580 + "abort-controller": "^3.0.0",
  2581 + "duplexify": "^3.6.0",
  2582 + "google-auth-library": "^5.0.0",
  2583 + "is-stream-ended": "^0.1.4",
  2584 + "lodash.at": "^4.6.0",
  2585 + "lodash.has": "^4.5.2",
  2586 + "node-fetch": "^2.6.0",
  2587 + "protobufjs": "^6.8.9",
  2588 + "retry-request": "^4.0.0",
  2589 + "semver": "^6.0.0",
  2590 + "walkdir": "^0.4.0"
  2591 + }
  2592 + },
  2593 + "google-p12-pem": {
  2594 + "version": "2.0.4",
  2595 + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
  2596 + "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
  2597 + "requires": {
  2598 + "node-forge": "^0.9.0"
  2599 + }
  2600 + },
1791 2601 "got": {
1792 2602 "version": "6.7.1",
1793 2603 "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
... ... @@ -1813,17 +2623,26 @@
1813 2623 "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
1814 2624 "dev": true
1815 2625 },
  2626 + "gtoken": {
  2627 + "version": "4.1.4",
  2628 + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
  2629 + "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
  2630 + "requires": {
  2631 + "gaxios": "^2.1.0",
  2632 + "google-p12-pem": "^2.0.0",
  2633 + "jws": "^4.0.0",
  2634 + "mime": "^2.2.0"
  2635 + }
  2636 + },
1816 2637 "har-schema": {
1817 2638 "version": "2.0.0",
1818 2639 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
1819   - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
1820   - "dev": true
  2640 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
1821 2641 },
1822 2642 "har-validator": {
1823 2643 "version": "5.1.3",
1824 2644 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
1825 2645 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
1826   - "dev": true,
1827 2646 "requires": {
1828 2647 "ajv": "^6.5.5",
1829 2648 "har-schema": "^2.0.0"
... ... @@ -1871,13 +2690,36 @@
1871 2690 "version": "1.2.0",
1872 2691 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1873 2692 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1874   - "dev": true,
1875 2693 "requires": {
1876 2694 "assert-plus": "^1.0.0",
1877 2695 "jsprim": "^1.2.2",
1878 2696 "sshpk": "^1.7.0"
1879 2697 }
1880 2698 },
  2699 + "https-proxy-agent": {
  2700 + "version": "5.0.0",
  2701 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
  2702 + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
  2703 + "requires": {
  2704 + "agent-base": "6",
  2705 + "debug": "4"
  2706 + },
  2707 + "dependencies": {
  2708 + "debug": {
  2709 + "version": "4.1.1",
  2710 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
  2711 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
  2712 + "requires": {
  2713 + "ms": "^2.1.1"
  2714 + }
  2715 + }
  2716 + }
  2717 + },
  2718 + "ieee754": {
  2719 + "version": "1.1.13",
  2720 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
  2721 + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
  2722 + },
1881 2723 "ignore": {
1882 2724 "version": "5.1.4",
1883 2725 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
... ... @@ -1923,6 +2765,11 @@
1923 2765 "p-is-promise": "^3.0.0"
1924 2766 }
1925 2767 },
  2768 + "ip-regex": {
  2769 + "version": "2.1.0",
  2770 + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
  2771 + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
  2772 + },
1926 2773 "is-accessor-descriptor": {
1927 2774 "version": "0.1.6",
1928 2775 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
... ... @@ -2115,11 +2962,15 @@
2115 2962 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
2116 2963 "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
2117 2964 },
  2965 + "is-stream-ended": {
  2966 + "version": "0.1.4",
  2967 + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
  2968 + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw=="
  2969 + },
2118 2970 "is-typedarray": {
2119 2971 "version": "1.0.0",
2120 2972 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
2121   - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
2122   - "dev": true
  2973 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
2123 2974 },
2124 2975 "is-windows": {
2125 2976 "version": "1.0.2",
... ... @@ -2135,8 +2986,7 @@
2135 2986 "isexe": {
2136 2987 "version": "2.0.0",
2137 2988 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2138   - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2139   - "dev": true
  2989 + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
2140 2990 },
2141 2991 "isobject": {
2142 2992 "version": "3.0.1",
... ... @@ -2147,8 +2997,12 @@
2147 2997 "isstream": {
2148 2998 "version": "0.1.2",
2149 2999 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
2150   - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
2151   - "dev": true
  3000 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
  3001 + },
  3002 + "jmespath": {
  3003 + "version": "0.15.0",
  3004 + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
  3005 + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
2152 3006 },
2153 3007 "js-yaml": {
2154 3008 "version": "3.13.1",
... ... @@ -2162,26 +3016,30 @@
2162 3016 "jsbn": {
2163 3017 "version": "0.1.1",
2164 3018 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
2165   - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
2166   - "dev": true
  3019 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
  3020 + },
  3021 + "json-bigint": {
  3022 + "version": "0.3.0",
  3023 + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz",
  3024 + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=",
  3025 + "requires": {
  3026 + "bignumber.js": "^7.0.0"
  3027 + }
2167 3028 },
2168 3029 "json-schema": {
2169 3030 "version": "0.2.3",
2170 3031 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
2171   - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
2172   - "dev": true
  3032 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
2173 3033 },
2174 3034 "json-schema-traverse": {
2175 3035 "version": "0.4.1",
2176 3036 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2177   - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2178   - "dev": true
  3037 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
2179 3038 },
2180 3039 "json-stringify-safe": {
2181 3040 "version": "5.0.1",
2182 3041 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
2183   - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
2184   - "dev": true
  3042 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
2185 3043 },
2186 3044 "json5": {
2187 3045 "version": "1.0.1",
... ... @@ -2204,7 +3062,6 @@
2204 3062 "version": "1.4.1",
2205 3063 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
2206 3064 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
2207   - "dev": true,
2208 3065 "requires": {
2209 3066 "assert-plus": "1.0.0",
2210 3067 "extsprintf": "1.3.0",
... ... @@ -2212,6 +3069,30 @@
2212 3069 "verror": "1.10.0"
2213 3070 }
2214 3071 },
  3072 + "jssha": {
  3073 + "version": "2.4.2",
  3074 + "resolved": "https://registry.npmjs.org/jssha/-/jssha-2.4.2.tgz",
  3075 + "integrity": "sha512-/jsi/9C0S70zfkT/4UlKQa5E1xKurDnXcQizcww9JSR/Fv+uIbWM2btG+bFcL3iNoK9jIGS0ls9HWLr1iw0kFg=="
  3076 + },
  3077 + "jwa": {
  3078 + "version": "2.0.0",
  3079 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
  3080 + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
  3081 + "requires": {
  3082 + "buffer-equal-constant-time": "1.0.1",
  3083 + "ecdsa-sig-formatter": "1.0.11",
  3084 + "safe-buffer": "^5.0.1"
  3085 + }
  3086 + },
  3087 + "jws": {
  3088 + "version": "4.0.0",
  3089 + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
  3090 + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
  3091 + "requires": {
  3092 + "jwa": "^2.0.0",
  3093 + "safe-buffer": "^5.0.1"
  3094 + }
  3095 + },
2215 3096 "kafkajs": {
2216 3097 "version": "1.12.0",
2217 3098 "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-1.12.0.tgz",
... ... @@ -2258,6 +3139,26 @@
2258 3139 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
2259 3140 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
2260 3141 },
  3142 + "lodash.at": {
  3143 + "version": "4.6.0",
  3144 + "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz",
  3145 + "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g="
  3146 + },
  3147 + "lodash.camelcase": {
  3148 + "version": "4.3.0",
  3149 + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
  3150 + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
  3151 + },
  3152 + "lodash.has": {
  3153 + "version": "4.5.2",
  3154 + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
  3155 + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI="
  3156 + },
  3157 + "lodash.snakecase": {
  3158 + "version": "4.1.1",
  3159 + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
  3160 + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40="
  3161 + },
2261 3162 "logform": {
2262 3163 "version": "2.1.2",
2263 3164 "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz",
... ... @@ -2342,17 +3243,20 @@
2342 3243 "to-regex": "^3.0.2"
2343 3244 }
2344 3245 },
  3246 + "mime": {
  3247 + "version": "2.4.5",
  3248 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz",
  3249 + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w=="
  3250 + },
2345 3251 "mime-db": {
2346 3252 "version": "1.43.0",
2347 3253 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
2348   - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
2349   - "dev": true
  3254 + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
2350 3255 },
2351 3256 "mime-types": {
2352 3257 "version": "2.1.26",
2353 3258 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
2354 3259 "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
2355   - "dev": true,
2356 3260 "requires": {
2357 3261 "mime-db": "1.43.0"
2358 3262 }
... ... @@ -2414,6 +3318,11 @@
2414 3318 "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
2415 3319 "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
2416 3320 },
  3321 + "mpns": {
  3322 + "version": "2.1.3",
  3323 + "resolved": "https://registry.npmjs.org/mpns/-/mpns-2.1.3.tgz",
  3324 + "integrity": "sha512-gPLNoVqwYoKUmNYZ2shMSdaE2XvHSRxWNzyG4DUi6Av7MSujyeOw/nj61nnQeuV/vke5E0Dni468xn0qxTHIZQ=="
  3325 + },
2417 3326 "ms": {
2418 3327 "version": "2.1.2",
2419 3328 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
... ... @@ -2487,6 +3396,16 @@
2487 3396 "to-regex": "^3.0.1"
2488 3397 }
2489 3398 },
  3399 + "node-fetch": {
  3400 + "version": "2.6.0",
  3401 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
  3402 + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
  3403 + },
  3404 + "node-forge": {
  3405 + "version": "0.9.1",
  3406 + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
  3407 + "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ=="
  3408 + },
2490 3409 "nodemon": {
2491 3410 "version": "1.19.4",
2492 3411 "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.19.4.tgz",
... ... @@ -2540,8 +3459,7 @@
2540 3459 "oauth-sign": {
2541 3460 "version": "0.9.0",
2542 3461 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
2543   - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
2544   - "dev": true
  3462 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
2545 3463 },
2546 3464 "object-copy": {
2547 3465 "version": "0.1.0",
... ... @@ -2597,6 +3515,14 @@
2597 3515 "isobject": "^3.0.1"
2598 3516 }
2599 3517 },
  3518 + "once": {
  3519 + "version": "1.4.0",
  3520 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
  3521 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
  3522 + "requires": {
  3523 + "wrappy": "1"
  3524 + }
  3525 + },
2600 3526 "one-time": {
2601 3527 "version": "0.0.4",
2602 3528 "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
... ... @@ -2622,6 +3548,11 @@
2622 3548 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2623 3549 "dev": true
2624 3550 },
  3551 + "p-defer": {
  3552 + "version": "3.0.0",
  3553 + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz",
  3554 + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw=="
  3555 + },
2625 3556 "p-finally": {
2626 3557 "version": "1.0.0",
2627 3558 "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
... ... @@ -2699,8 +3630,7 @@
2699 3630 "performance-now": {
2700 3631 "version": "2.1.0",
2701 3632 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
2702   - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
2703   - "dev": true
  3633 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
2704 3634 },
2705 3635 "picomatch": {
2706 3636 "version": "2.2.1",
... ... @@ -2898,6 +3828,11 @@
2898 3828 "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
2899 3829 "dev": true
2900 3830 },
  3831 + "process": {
  3832 + "version": "0.11.10",
  3833 + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
  3834 + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
  3835 + },
2901 3836 "process-nextick-args": {
2902 3837 "version": "2.0.1",
2903 3838 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
... ... @@ -2909,6 +3844,26 @@
2909 3844 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2910 3845 "dev": true
2911 3846 },
  3847 + "protobufjs": {
  3848 + "version": "6.9.0",
  3849 + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.9.0.tgz",
  3850 + "integrity": "sha512-LlGVfEWDXoI/STstRDdZZKb/qusoAWUnmLg9R8OLSO473mBLWHowx8clbX5/+mKDEI+v7GzjoK9tRPZMMcoTrg==",
  3851 + "requires": {
  3852 + "@protobufjs/aspromise": "^1.1.2",
  3853 + "@protobufjs/base64": "^1.1.2",
  3854 + "@protobufjs/codegen": "^2.0.4",
  3855 + "@protobufjs/eventemitter": "^1.1.0",
  3856 + "@protobufjs/fetch": "^1.1.0",
  3857 + "@protobufjs/float": "^1.0.2",
  3858 + "@protobufjs/inquire": "^1.1.0",
  3859 + "@protobufjs/path": "^1.1.2",
  3860 + "@protobufjs/pool": "^1.1.0",
  3861 + "@protobufjs/utf8": "^1.1.0",
  3862 + "@types/long": "^4.0.1",
  3863 + "@types/node": "^13.7.0",
  3864 + "long": "^4.0.0"
  3865 + }
  3866 + },
2912 3867 "pseudomap": {
2913 3868 "version": "1.0.2",
2914 3869 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
... ... @@ -2918,8 +3873,7 @@
2918 3873 "psl": {
2919 3874 "version": "1.7.0",
2920 3875 "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
2921   - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==",
2922   - "dev": true
  3876 + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
2923 3877 },
2924 3878 "pstree.remy": {
2925 3879 "version": "1.1.7",
... ... @@ -2930,14 +3884,22 @@
2930 3884 "punycode": {
2931 3885 "version": "2.1.1",
2932 3886 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2933   - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2934   - "dev": true
  3887 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
2935 3888 },
2936 3889 "qs": {
2937 3890 "version": "6.5.2",
2938 3891 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
2939   - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
2940   - "dev": true
  3892 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
  3893 + },
  3894 + "querystring": {
  3895 + "version": "0.2.0",
  3896 + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
  3897 + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
  3898 + },
  3899 + "querystringify": {
  3900 + "version": "2.1.1",
  3901 + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
  3902 + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA=="
2941 3903 },
2942 3904 "rc": {
2943 3905 "version": "1.2.8",
... ... @@ -3061,7 +4023,6 @@
3061 4023 "version": "2.88.2",
3062 4024 "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
3063 4025 "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
3064   - "dev": true,
3065 4026 "requires": {
3066 4027 "aws-sign2": "~0.7.0",
3067 4028 "aws4": "^1.8.0",
... ... @@ -3094,6 +4055,11 @@
3094 4055 "throttleit": "^1.0.0"
3095 4056 }
3096 4057 },
  4058 + "requires-port": {
  4059 + "version": "1.0.0",
  4060 + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
  4061 + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
  4062 + },
3097 4063 "resolve": {
3098 4064 "version": "1.15.1",
3099 4065 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
... ... @@ -3115,12 +4081,49 @@
3115 4081 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
3116 4082 "dev": true
3117 4083 },
  4084 + "retry-request": {
  4085 + "version": "4.1.1",
  4086 + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz",
  4087 + "integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==",
  4088 + "requires": {
  4089 + "debug": "^4.1.1",
  4090 + "through2": "^3.0.1"
  4091 + },
  4092 + "dependencies": {
  4093 + "debug": {
  4094 + "version": "4.1.1",
  4095 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
  4096 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
  4097 + "requires": {
  4098 + "ms": "^2.1.1"
  4099 + }
  4100 + }
  4101 + }
  4102 + },
3118 4103 "reusify": {
3119 4104 "version": "1.0.4",
3120 4105 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
3121 4106 "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
3122 4107 "dev": true
3123 4108 },
  4109 + "rhea": {
  4110 + "version": "1.0.20",
  4111 + "resolved": "https://registry.npmjs.org/rhea/-/rhea-1.0.20.tgz",
  4112 + "integrity": "sha512-qj4LSEykJ0SEYESQLg9Vee6VXH5xHN1pYj7ozPeUk+l+S1OaGKx1FugAu+g+3pPwK46WXV1PJD9XiRx8+tS4cw==",
  4113 + "requires": {
  4114 + "debug": "0.8.0 - 3.5.0"
  4115 + }
  4116 + },
  4117 + "rhea-promise": {
  4118 + "version": "0.1.15",
  4119 + "resolved": "https://registry.npmjs.org/rhea-promise/-/rhea-promise-0.1.15.tgz",
  4120 + "integrity": "sha512-+6uilZXSJGyiqVeHQI3Krv6NTAd8cWRCY2uyCxmzR4/5IFtBqqFem1HV2OiwSj0Gu7OFChIJDfH2JyjN7J0vRA==",
  4121 + "requires": {
  4122 + "debug": "^3.1.0",
  4123 + "rhea": "^1.0.4",
  4124 + "tslib": "^1.9.3"
  4125 + }
  4126 + },
3124 4127 "run-parallel": {
3125 4128 "version": "1.1.9",
3126 4129 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
... ... @@ -3144,8 +4147,12 @@
3144 4147 "safer-buffer": {
3145 4148 "version": "2.1.2",
3146 4149 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3147   - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
3148   - "dev": true
  4150 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
  4151 + },
  4152 + "sax": {
  4153 + "version": "1.2.4",
  4154 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
  4155 + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
3149 4156 },
3150 4157 "semver": {
3151 4158 "version": "6.3.0",
... ... @@ -3392,7 +4399,6 @@
3392 4399 "version": "1.16.1",
3393 4400 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
3394 4401 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
3395   - "dev": true,
3396 4402 "requires": {
3397 4403 "asn1": "~0.2.3",
3398 4404 "assert-plus": "^1.0.0",
... ... @@ -3431,6 +4437,44 @@
3431 4437 }
3432 4438 }
3433 4439 },
  4440 + "stream-browserify": {
  4441 + "version": "2.0.2",
  4442 + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
  4443 + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
  4444 + "requires": {
  4445 + "inherits": "~2.0.1",
  4446 + "readable-stream": "^2.0.2"
  4447 + },
  4448 + "dependencies": {
  4449 + "readable-stream": {
  4450 + "version": "2.3.7",
  4451 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
  4452 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
  4453 + "requires": {
  4454 + "core-util-is": "~1.0.0",
  4455 + "inherits": "~2.0.3",
  4456 + "isarray": "~1.0.0",
  4457 + "process-nextick-args": "~2.0.0",
  4458 + "safe-buffer": "~5.1.1",
  4459 + "string_decoder": "~1.1.1",
  4460 + "util-deprecate": "~1.0.1"
  4461 + }
  4462 + },
  4463 + "safe-buffer": {
  4464 + "version": "5.1.2",
  4465 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  4466 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  4467 + },
  4468 + "string_decoder": {
  4469 + "version": "1.1.1",
  4470 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
  4471 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
  4472 + "requires": {
  4473 + "safe-buffer": "~5.1.0"
  4474 + }
  4475 + }
  4476 + }
  4477 + },
3434 4478 "stream-meter": {
3435 4479 "version": "1.0.4",
3436 4480 "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz",
... ... @@ -3472,6 +4516,11 @@
3472 4516 }
3473 4517 }
3474 4518 },
  4519 + "stream-shift": {
  4520 + "version": "1.0.1",
  4521 + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
  4522 + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
  4523 + },
3475 4524 "string-width": {
3476 4525 "version": "2.1.1",
3477 4526 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
... ... @@ -3540,6 +4589,19 @@
3540 4589 "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
3541 4590 "dev": true
3542 4591 },
  4592 + "through": {
  4593 + "version": "2.3.8",
  4594 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
  4595 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
  4596 + },
  4597 + "through2": {
  4598 + "version": "3.0.1",
  4599 + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
  4600 + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
  4601 + "requires": {
  4602 + "readable-stream": "2 || 3"
  4603 + }
  4604 + },
3543 4605 "timed-out": {
3544 4606 "version": "4.0.1",
3545 4607 "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
... ... @@ -3601,7 +4663,6 @@
3601 4663 "version": "2.5.0",
3602 4664 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
3603 4665 "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
3604   - "dev": true,
3605 4666 "requires": {
3606 4667 "psl": "^1.1.28",
3607 4668 "punycode": "^2.1.1"
... ... @@ -3612,11 +4673,20 @@
3612 4673 "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
3613 4674 "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
3614 4675 },
  4676 + "tslib": {
  4677 + "version": "1.11.1",
  4678 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
  4679 + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA=="
  4680 + },
  4681 + "tunnel": {
  4682 + "version": "0.0.6",
  4683 + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
  4684 + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
  4685 + },
3615 4686 "tunnel-agent": {
3616 4687 "version": "0.6.0",
3617 4688 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
3618 4689 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
3619   - "dev": true,
3620 4690 "requires": {
3621 4691 "safe-buffer": "^5.0.1"
3622 4692 }
... ... @@ -3624,8 +4694,7 @@
3624 4694 "tweetnacl": {
3625 4695 "version": "0.14.5",
3626 4696 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
3627   - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
3628   - "dev": true
  4697 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
3629 4698 },
3630 4699 "type-check": {
3631 4700 "version": "0.3.2",
... ... @@ -3668,6 +4737,11 @@
3668 4737 }
3669 4738 }
3670 4739 },
  4740 + "underscore": {
  4741 + "version": "1.10.2",
  4742 + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz",
  4743 + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg=="
  4744 + },
3671 4745 "union-value": {
3672 4746 "version": "1.0.1",
3673 4747 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
... ... @@ -3780,7 +4854,6 @@
3780 4854 "version": "4.2.2",
3781 4855 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
3782 4856 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
3783   - "dev": true,
3784 4857 "requires": {
3785 4858 "punycode": "^2.1.0"
3786 4859 }
... ... @@ -3791,6 +4864,31 @@
3791 4864 "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
3792 4865 "dev": true
3793 4866 },
  4867 + "url": {
  4868 + "version": "0.11.0",
  4869 + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
  4870 + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
  4871 + "requires": {
  4872 + "punycode": "1.3.2",
  4873 + "querystring": "0.2.0"
  4874 + },
  4875 + "dependencies": {
  4876 + "punycode": {
  4877 + "version": "1.3.2",
  4878 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
  4879 + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
  4880 + }
  4881 + }
  4882 + },
  4883 + "url-parse": {
  4884 + "version": "1.4.7",
  4885 + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
  4886 + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
  4887 + "requires": {
  4888 + "querystringify": "^2.1.1",
  4889 + "requires-port": "^1.0.0"
  4890 + }
  4891 + },
3794 4892 "url-parse-lax": {
3795 4893 "version": "1.0.0",
3796 4894 "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
... ... @@ -3806,6 +4904,21 @@
3806 4904 "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
3807 4905 "dev": true
3808 4906 },
  4907 + "util": {
  4908 + "version": "0.11.1",
  4909 + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
  4910 + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
  4911 + "requires": {
  4912 + "inherits": "2.0.3"
  4913 + },
  4914 + "dependencies": {
  4915 + "inherits": {
  4916 + "version": "2.0.3",
  4917 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
  4918 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
  4919 + }
  4920 + }
  4921 + },
3809 4922 "util-deprecate": {
3810 4923 "version": "1.0.2",
3811 4924 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
... ... @@ -3814,25 +4927,38 @@
3814 4927 "uuid": {
3815 4928 "version": "3.4.0",
3816 4929 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
3817   - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
3818   - "dev": true
  4930 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
3819 4931 },
3820 4932 "uuid-parse": {
3821 4933 "version": "1.1.0",
3822 4934 "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz",
3823 4935 "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A=="
3824 4936 },
  4937 + "uuid-random": {
  4938 + "version": "1.3.0",
  4939 + "resolved": "https://registry.npmjs.org/uuid-random/-/uuid-random-1.3.0.tgz",
  4940 + "integrity": "sha512-FSIlv8RFRPOjcHeDYStV7u6aJRfp+THrcWkbAJpw51JCyQLDxsFz+4dHgTYP8hSpZeSMXBpb/1qrK4bodXpSRA=="
  4941 + },
  4942 + "validator": {
  4943 + "version": "9.4.1",
  4944 + "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz",
  4945 + "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA=="
  4946 + },
3825 4947 "verror": {
3826 4948 "version": "1.10.0",
3827 4949 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
3828 4950 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
3829   - "dev": true,
3830 4951 "requires": {
3831 4952 "assert-plus": "^1.0.0",
3832 4953 "core-util-is": "1.0.2",
3833 4954 "extsprintf": "^1.2.0"
3834 4955 }
3835 4956 },
  4957 + "walkdir": {
  4958 + "version": "0.4.1",
  4959 + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz",
  4960 + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ=="
  4961 + },
3836 4962 "which": {
3837 4963 "version": "1.3.1",
3838 4964 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
... ... @@ -3942,12 +5068,22 @@
3942 5068 }
3943 5069 }
3944 5070 },
  5071 + "wns": {
  5072 + "version": "0.5.4",
  5073 + "resolved": "https://registry.npmjs.org/wns/-/wns-0.5.4.tgz",
  5074 + "integrity": "sha512-WYiJ7khIwUGBD5KAm+YYmwJDDRzFRs4YGAjtbFSoRIdbn9Jcix3p9khJmpvBTXGommaKkvduAn+pc9l4d9yzVQ=="
  5075 + },
3945 5076 "word-wrap": {
3946 5077 "version": "1.2.3",
3947 5078 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
3948 5079 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
3949 5080 "dev": true
3950 5081 },
  5082 + "wrappy": {
  5083 + "version": "1.0.2",
  5084 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
  5085 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
  5086 + },
3951 5087 "write-file-atomic": {
3952 5088 "version": "2.4.3",
3953 5089 "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
... ... @@ -3965,6 +5101,20 @@
3965 5101 "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
3966 5102 "dev": true
3967 5103 },
  5104 + "xml2js": {
  5105 + "version": "0.4.23",
  5106 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
  5107 + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
  5108 + "requires": {
  5109 + "sax": ">=0.6.0",
  5110 + "xmlbuilder": "~11.0.0"
  5111 + }
  5112 + },
  5113 + "xmlbuilder": {
  5114 + "version": "11.0.1",
  5115 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
  5116 + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
  5117 + },
3968 5118 "yallist": {
3969 5119 "version": "2.1.2",
3970 5120 "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
... ...
... ... @@ -40,21 +40,21 @@
40 40 }
41 41 },
42 42 "@angular-devkit/build-angular": {
43   - "version": "0.901.3",
44   - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.3.tgz",
45   - "integrity": "sha512-0ivl+rxiFWY/cWpAhflaJfUmTGNRZn3m4gyt0YNFyHh7oJcwKFVpd9lxJAM4t47Xfyj0ICpTL99UBi4aeo3lEg==",
  43 + "version": "0.901.4",
  44 + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.4.tgz",
  45 + "integrity": "sha512-Vod4bc6d38fuvqauIDQxKMe9hKW9m4QNzPKxEc+Dv5Xkv95WaGzkbUVu8M8t4E//sDDMpmcPdYOXSdR27WBi2Q==",
46 46 "dev": true,
47 47 "requires": {
48   - "@angular-devkit/architect": "0.901.3",
49   - "@angular-devkit/build-optimizer": "0.901.3",
50   - "@angular-devkit/build-webpack": "0.901.3",
51   - "@angular-devkit/core": "9.1.3",
  48 + "@angular-devkit/architect": "0.901.4",
  49 + "@angular-devkit/build-optimizer": "0.901.4",
  50 + "@angular-devkit/build-webpack": "0.901.4",
  51 + "@angular-devkit/core": "9.1.4",
52 52 "@babel/core": "7.9.0",
53 53 "@babel/generator": "7.9.3",
54 54 "@babel/preset-env": "7.9.0",
55 55 "@babel/template": "7.8.6",
56 56 "@jsdevtools/coverage-istanbul-loader": "3.0.3",
57   - "@ngtools/webpack": "9.1.3",
  57 + "@ngtools/webpack": "9.1.4",
58 58 "ajv": "6.12.0",
59 59 "autoprefixer": "9.7.4",
60 60 "babel-loader": "8.0.6",
... ... @@ -108,6 +108,29 @@
108 108 "worker-plugin": "4.0.2"
109 109 },
110 110 "dependencies": {
  111 + "@angular-devkit/architect": {
  112 + "version": "0.901.4",
  113 + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.4.tgz",
  114 + "integrity": "sha512-w4RMj7eLhUSh70HUy5tW4EXjLQFXk0Lfr9WiSy5gvPGp+zzYxknI+Wn4Xid1wU/WS+4tuMv5nJIaNaH2sABESQ==",
  115 + "dev": true,
  116 + "requires": {
  117 + "@angular-devkit/core": "9.1.4",
  118 + "rxjs": "6.5.4"
  119 + }
  120 + },
  121 + "@angular-devkit/core": {
  122 + "version": "9.1.4",
  123 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  124 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  125 + "dev": true,
  126 + "requires": {
  127 + "ajv": "6.12.0",
  128 + "fast-json-stable-stringify": "2.1.0",
  129 + "magic-string": "0.25.7",
  130 + "rxjs": "6.5.4",
  131 + "source-map": "0.7.3"
  132 + }
  133 + },
111 134 "core-js": {
112 135 "version": "3.6.4",
113 136 "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz",
... ... @@ -138,9 +161,9 @@
138 161 }
139 162 },
140 163 "@angular-devkit/build-optimizer": {
141   - "version": "0.901.3",
142   - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.3.tgz",
143   - "integrity": "sha512-fLRiQ1egH1qsmj5GMJ4ZWawtUYLwpIz1hKJ3WwAIFEFJF2+CDWhO1feUaXZRxPf5qwoj8S+8cSWjdcnKLf/mBw==",
  164 + "version": "0.901.4",
  165 + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.4.tgz",
  166 + "integrity": "sha512-iDMlNRwd8ICMBKnycfw55hdnL5kCiqUjQn+aK/4uOMJMz49tiYMNJAaznXX2BFKmYSmbapKjEbzx9yMYRi9Y7w==",
144 167 "dev": true,
145 168 "requires": {
146 169 "loader-utils": "2.0.0",
... ... @@ -159,16 +182,39 @@
159 182 }
160 183 },
161 184 "@angular-devkit/build-webpack": {
162   - "version": "0.901.3",
163   - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.3.tgz",
164   - "integrity": "sha512-tZOiVNCrKaEAo7SuyXPpOoaPy/pbX70G8NFtyhKvoGt5dPbgybWTlibACyzOciBI9wUlGSaJiGPZzKTgL4O5OA==",
  185 + "version": "0.901.4",
  186 + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.4.tgz",
  187 + "integrity": "sha512-YBOufI4TGAtIDCS6erFygYJX/fkd8xwI58d+7iFIBmtIJC4/fpGjX6qkHMCBgh8HXAkEPSORBCYQn9O44J1ZXQ==",
165 188 "dev": true,
166 189 "requires": {
167   - "@angular-devkit/architect": "0.901.3",
168   - "@angular-devkit/core": "9.1.3",
  190 + "@angular-devkit/architect": "0.901.4",
  191 + "@angular-devkit/core": "9.1.4",
169 192 "rxjs": "6.5.4"
170 193 },
171 194 "dependencies": {
  195 + "@angular-devkit/architect": {
  196 + "version": "0.901.4",
  197 + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.4.tgz",
  198 + "integrity": "sha512-w4RMj7eLhUSh70HUy5tW4EXjLQFXk0Lfr9WiSy5gvPGp+zzYxknI+Wn4Xid1wU/WS+4tuMv5nJIaNaH2sABESQ==",
  199 + "dev": true,
  200 + "requires": {
  201 + "@angular-devkit/core": "9.1.4",
  202 + "rxjs": "6.5.4"
  203 + }
  204 + },
  205 + "@angular-devkit/core": {
  206 + "version": "9.1.4",
  207 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  208 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  209 + "dev": true,
  210 + "requires": {
  211 + "ajv": "6.12.0",
  212 + "fast-json-stable-stringify": "2.1.0",
  213 + "magic-string": "0.25.7",
  214 + "rxjs": "6.5.4",
  215 + "source-map": "0.7.3"
  216 + }
  217 + },
172 218 "rxjs": {
173 219 "version": "6.5.4",
174 220 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
... ... @@ -205,16 +251,29 @@
205 251 }
206 252 },
207 253 "@angular-devkit/schematics": {
208   - "version": "9.1.3",
209   - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.3.tgz",
210   - "integrity": "sha512-nNRoQPqoin5jzLKmTabIPLSqVw2Zjnk78XC4AhAM7rSisWMsZ6pw5+BNDITiKfq0LkSXfOs0DoJV/Vr9mLkn/A==",
  254 + "version": "9.1.4",
  255 + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.4.tgz",
  256 + "integrity": "sha512-RAbdnUEZ3JTLmWSBiXT5trsVx8Fi72fxN9CiRaluM09Cytg6BUc1wC5XCO0YPvhI400+3Ro1nwjPXezjg7LXzQ==",
211 257 "dev": true,
212 258 "requires": {
213   - "@angular-devkit/core": "9.1.3",
  259 + "@angular-devkit/core": "9.1.4",
214 260 "ora": "4.0.3",
215 261 "rxjs": "6.5.4"
216 262 },
217 263 "dependencies": {
  264 + "@angular-devkit/core": {
  265 + "version": "9.1.4",
  266 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  267 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  268 + "dev": true,
  269 + "requires": {
  270 + "ajv": "6.12.0",
  271 + "fast-json-stable-stringify": "2.1.0",
  272 + "magic-string": "0.25.7",
  273 + "rxjs": "6.5.4",
  274 + "source-map": "0.7.3"
  275 + }
  276 + },
218 277 "rxjs": {
219 278 "version": "6.5.4",
220 279 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
... ... @@ -227,29 +286,29 @@
227 286 }
228 287 },
229 288 "@angular/animations": {
230   - "version": "9.1.3",
231   - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.3.tgz",
232   - "integrity": "sha512-QTQZSnXxr9SCgrN2SZsTMzS/UldrZ65y6Kuqs9yyghNc694eMbabgiPdeegjvcKlDhVPCN2x9Bjfb1vXPOfdvQ=="
  289 + "version": "9.1.4",
  290 + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.4.tgz",
  291 + "integrity": "sha512-gMo/DbCm5BDArladMAeC7/75T2DvhLr4CSUGJt/P/aimTEG2ywoAALs3pzwSSe4qxrHiR0OIksVW3l4km3iXEw=="
233 292 },
234 293 "@angular/cdk": {
235   - "version": "9.2.1",
236   - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.1.tgz",
237   - "integrity": "sha512-aSG1UNPszkSnpNuDCNd7ZgT29oQ8vqHPmoqjvJI0JkEv3i6uEs5tRuhWl3TK39wDNuwdlq0AY47XTa/0Ppb5RQ==",
  294 + "version": "9.2.2",
  295 + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.2.tgz",
  296 + "integrity": "sha512-VNd+KuMN6cBcy4/8OyMxqYaxdjPP6IyCqIVijB2JREkc5Sg4VWmPgx2L3rHt/DzjsVBVRgx35uqOMymDezG3jQ==",
238 297 "requires": {
239 298 "parse5": "^5.0.0"
240 299 }
241 300 },
242 301 "@angular/cli": {
243   - "version": "9.1.3",
244   - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.3.tgz",
245   - "integrity": "sha512-/7yHOuiyMgpcoBuADPrF4Eo9VDysA57fsyrMlOH2WZmKdsjW032StS9EIOue5RNQ7y0DwrtgtnkjbpZ6nYo3Pw==",
  302 + "version": "9.1.4",
  303 + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.4.tgz",
  304 + "integrity": "sha512-H9MqoT4zyIv+Yo3cvRVkzafWGHsqt7jUvtvGwMHIDMTfEX+Q8yiYlDLL6WM3Eb6/hDmLcRGC/GI495sKS1z5qA==",
246 305 "dev": true,
247 306 "requires": {
248   - "@angular-devkit/architect": "0.901.3",
249   - "@angular-devkit/core": "9.1.3",
250   - "@angular-devkit/schematics": "9.1.3",
251   - "@schematics/angular": "9.1.3",
252   - "@schematics/update": "0.901.3",
  307 + "@angular-devkit/architect": "0.901.4",
  308 + "@angular-devkit/core": "9.1.4",
  309 + "@angular-devkit/schematics": "9.1.4",
  310 + "@schematics/angular": "9.1.4",
  311 + "@schematics/update": "0.901.4",
253 312 "@yarnpkg/lockfile": "1.1.0",
254 313 "ansi-colors": "4.1.1",
255 314 "debug": "4.1.1",
... ... @@ -267,12 +326,44 @@
267 326 "uuid": "7.0.2"
268 327 },
269 328 "dependencies": {
  329 + "@angular-devkit/architect": {
  330 + "version": "0.901.4",
  331 + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.4.tgz",
  332 + "integrity": "sha512-w4RMj7eLhUSh70HUy5tW4EXjLQFXk0Lfr9WiSy5gvPGp+zzYxknI+Wn4Xid1wU/WS+4tuMv5nJIaNaH2sABESQ==",
  333 + "dev": true,
  334 + "requires": {
  335 + "@angular-devkit/core": "9.1.4",
  336 + "rxjs": "6.5.4"
  337 + }
  338 + },
  339 + "@angular-devkit/core": {
  340 + "version": "9.1.4",
  341 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  342 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  343 + "dev": true,
  344 + "requires": {
  345 + "ajv": "6.12.0",
  346 + "fast-json-stable-stringify": "2.1.0",
  347 + "magic-string": "0.25.7",
  348 + "rxjs": "6.5.4",
  349 + "source-map": "0.7.3"
  350 + }
  351 + },
270 352 "ansi-colors": {
271 353 "version": "4.1.1",
272 354 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
273 355 "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
274 356 "dev": true
275 357 },
  358 + "rxjs": {
  359 + "version": "6.5.4",
  360 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
  361 + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
  362 + "dev": true,
  363 + "requires": {
  364 + "tslib": "^1.9.0"
  365 + }
  366 + },
276 367 "semver": {
277 368 "version": "7.1.3",
278 369 "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz",
... ... @@ -288,19 +379,19 @@
288 379 }
289 380 },
290 381 "@angular/common": {
291   - "version": "9.1.3",
292   - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.3.tgz",
293   - "integrity": "sha512-OGrd/x+WoceskeJWZI3ur+KqVoBHn2kmbg57RyJ8Ng/BkdDVYiXzQ/UvvX1WYGH/YzmiiVdlnVq55xkHkzGaXw=="
  382 + "version": "9.1.4",
  383 + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.4.tgz",
  384 + "integrity": "sha512-JvCoCWVbx0tF7l/0WTi24ui/mc2SElyVSNchR4VK/FViARnkvnSBdI/Ef5QWXrsPyKU4PYBtnWWgyxRspH+FBA=="
294 385 },
295 386 "@angular/compiler": {
296   - "version": "9.1.3",
297   - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.3.tgz",
298   - "integrity": "sha512-NTqGZUwwdm/RIG1rWPIqQwNyyRcPOmNlv+t1KpydFtycpTut0lAh0shiu57h83Cl2LgaFV4veyiAAtNmxFmqXA=="
  387 + "version": "9.1.4",
  388 + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.4.tgz",
  389 + "integrity": "sha512-B+f3lviFNEJtL9V9exSKYPSz2Ddb6dxgPzQR7GSjGikDo+fKMtC1PjNwgJooS9gavhQx30uwkEEMIPYQbM6nNA=="
299 390 },
300 391 "@angular/compiler-cli": {
301   - "version": "9.1.3",
302   - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.3.tgz",
303   - "integrity": "sha512-FqDPmEbJQmzzxqF08CJfqT9XKJFPYdyZuFFStKkJEZ5s1JrjrBlgQSqdF0qp5jWNsjTB87USLHC5zAlzJtMKxQ==",
  392 + "version": "9.1.4",
  393 + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.4.tgz",
  394 + "integrity": "sha512-n3PzqNnPD7s/AF9mv5CnarK0sgfoq4txFncHjJWBSltuTQoz6BDZyjuEdqsSLUvgAZPeLsmohemOzEE38HYHZA==",
304 395 "dev": true,
305 396 "requires": {
306 397 "canonical-path": "1.0.0",
... ... @@ -501,9 +592,9 @@
501 592 }
502 593 },
503 594 "@angular/core": {
504   - "version": "9.1.3",
505   - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.3.tgz",
506   - "integrity": "sha512-r+GyeCuBw9SUBzpPWhKxzTOkNYotYp3gANSWndihLC9P6W5T8Hfyg8uYcxKy7L42bpx8eXZOXFq91cioVwZtqA=="
  595 + "version": "9.1.4",
  596 + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.4.tgz",
  597 + "integrity": "sha512-ND240vncmVD2KVe/KSQU3d/DxxoRipFg1+jFOFZGt0n0orCBHk/V1fu9iaG1sRyldL0+rCQ+fTI+1N4DTmMnxA=="
507 598 },
508 599 "@angular/flex-layout": {
509 600 "version": "9.0.0-beta.29",
... ... @@ -511,35 +602,35 @@
511 602 "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA=="
512 603 },
513 604 "@angular/forms": {
514   - "version": "9.1.3",
515   - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.3.tgz",
516   - "integrity": "sha512-t3BexN5EHgCK6q0R04AuyNb6ZUP6sd9fJ+ER98yWws3HXV6FT+J5IB7dVnhelLoU1GTnql4TJSS+LTVradKZ7g=="
  605 + "version": "9.1.4",
  606 + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.4.tgz",
  607 + "integrity": "sha512-Njt+pMLfPBchL0/ayIjJqXL6ZfM4Ccvf7KO1wS1HMzh3QlmfNa0JSgc4pfrbRJAMN9g7V/FYLyKejs1bJZkenA=="
517 608 },
518 609 "@angular/language-service": {
519   - "version": "9.1.3",
520   - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.3.tgz",
521   - "integrity": "sha512-mcZDO6C2BpDinMjDeMAdohTefpFxNu/S0JEqewYQIQ8TXtKm77xDPUdNdNb4qD4zYW+c46f7UXNMX/tbYCicQw==",
  610 + "version": "9.1.4",
  611 + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.4.tgz",
  612 + "integrity": "sha512-eyVxxiegdb4ESdFGfkuDN+YfUbOVHRQLjIl6ACFJQDNHzVXzbmuqpyr5hIJANIVady103/7+dqRxxJo1DdIdTQ==",
522 613 "dev": true
523 614 },
524 615 "@angular/material": {
525   - "version": "9.2.1",
526   - "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.1.tgz",
527   - "integrity": "sha512-nqn/0Eg04DxwnkRGSM1xnmGgtfHYOBcEPbFeTu8c1qAbjFEozd6tpw4y6dQrCCL/JLNIRQPsxsUsVnKeWDF/4Q=="
  616 + "version": "9.2.2",
  617 + "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.2.tgz",
  618 + "integrity": "sha512-gdQiMJ6PtW/5fd+0mglHFyzxULDCBGjn9RTET3sUq2rkc9+jBXr4OvnsUyBWSnqqv97XqotVDIx5JgE4/YX/Rw=="
528 619 },
529 620 "@angular/platform-browser": {
530   - "version": "9.1.3",
531   - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.3.tgz",
532   - "integrity": "sha512-ts6b7QBp4+UpuQS0Eb+FOT4MZVPUwWtWH4iIfBILJaG/0Bk4jHZeXuLFcpgeZkwMNCZEt9f0JrhnHfvuLCez5g=="
  621 + "version": "9.1.4",
  622 + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.4.tgz",
  623 + "integrity": "sha512-mBCHfTl+5tQfaUiGlDujP7mFBzovFc54Zi2kcCE8DSdSSVQ2TPBo6hXa6y2cL3hJPFZzQ7mC4ORFrsGADhHn/w=="
533 624 },
534 625 "@angular/platform-browser-dynamic": {
535   - "version": "9.1.3",
536   - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.3.tgz",
537   - "integrity": "sha512-9U8PkBflnQtKIZ4t0AqYUaKLg7Kx1BvJ1D/S8FZo/V5kBJK6NkGVu58XddWVc+dtO3V+vCC/VLG7fb2PMf/V5g=="
  626 + "version": "9.1.4",
  627 + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.4.tgz",
  628 + "integrity": "sha512-YtVbnxyS6FU7xNpA6A95tmSfrB8+WC7OH3mbP8M9NaGk0OYz8B/JOe1HByP4JRpEGCvBtXdJ2NSW/MpLIT8SiQ=="
538 629 },
539 630 "@angular/router": {
540   - "version": "9.1.3",
541   - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.3.tgz",
542   - "integrity": "sha512-NmOazeJ2WVT5eTyNHXYxBRAHic6i6Ku5DgsGWBgjUIR/Qmwb/i/xpagbA9WQQZ2OrGbp4ICEYgGkikeIrlQLPA=="
  631 + "version": "9.1.4",
  632 + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.4.tgz",
  633 + "integrity": "sha512-yUyjCgG2P2Jh8MvoyC6yirmAtx1Qe7MKLuLvsa9WOB571QNEcNLTYMfAMHUKsQTcE/+o984QyLlneoibgI9wFA=="
543 634 },
544 635 "@auth0/angular-jwt": {
545 636 "version": "4.0.0",
... ... @@ -559,12 +650,12 @@
559 650 }
560 651 },
561 652 "@babel/compat-data": {
562   - "version": "7.9.0",
563   - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz",
564   - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==",
  653 + "version": "7.9.6",
  654 + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.6.tgz",
  655 + "integrity": "sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g==",
565 656 "dev": true,
566 657 "requires": {
567   - "browserslist": "^4.9.1",
  658 + "browserslist": "^4.11.1",
568 659 "invariant": "^2.2.4",
569 660 "semver": "^5.5.0"
570 661 }
... ... @@ -641,13 +732,13 @@
641 732 }
642 733 },
643 734 "@babel/helper-compilation-targets": {
644   - "version": "7.8.7",
645   - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz",
646   - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==",
  735 + "version": "7.9.6",
  736 + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz",
  737 + "integrity": "sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw==",
647 738 "dev": true,
648 739 "requires": {
649   - "@babel/compat-data": "^7.8.6",
650   - "browserslist": "^4.9.1",
  740 + "@babel/compat-data": "^7.9.6",
  741 + "browserslist": "^4.11.1",
651 742 "invariant": "^2.2.4",
652 743 "levenary": "^1.1.1",
653 744 "semver": "^5.5.0"
... ... @@ -785,15 +876,69 @@
785 876 }
786 877 },
787 878 "@babel/helper-replace-supers": {
788   - "version": "7.8.6",
789   - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
790   - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
  879 + "version": "7.9.6",
  880 + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz",
  881 + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==",
791 882 "dev": true,
792 883 "requires": {
793 884 "@babel/helper-member-expression-to-functions": "^7.8.3",
794 885 "@babel/helper-optimise-call-expression": "^7.8.3",
795   - "@babel/traverse": "^7.8.6",
796   - "@babel/types": "^7.8.6"
  886 + "@babel/traverse": "^7.9.6",
  887 + "@babel/types": "^7.9.6"
  888 + },
  889 + "dependencies": {
  890 + "@babel/generator": {
  891 + "version": "7.9.6",
  892 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz",
  893 + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==",
  894 + "dev": true,
  895 + "requires": {
  896 + "@babel/types": "^7.9.6",
  897 + "jsesc": "^2.5.1",
  898 + "lodash": "^4.17.13",
  899 + "source-map": "^0.5.0"
  900 + }
  901 + },
  902 + "@babel/parser": {
  903 + "version": "7.9.6",
  904 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz",
  905 + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==",
  906 + "dev": true
  907 + },
  908 + "@babel/traverse": {
  909 + "version": "7.9.6",
  910 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz",
  911 + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==",
  912 + "dev": true,
  913 + "requires": {
  914 + "@babel/code-frame": "^7.8.3",
  915 + "@babel/generator": "^7.9.6",
  916 + "@babel/helper-function-name": "^7.9.5",
  917 + "@babel/helper-split-export-declaration": "^7.8.3",
  918 + "@babel/parser": "^7.9.6",
  919 + "@babel/types": "^7.9.6",
  920 + "debug": "^4.1.0",
  921 + "globals": "^11.1.0",
  922 + "lodash": "^4.17.13"
  923 + }
  924 + },
  925 + "@babel/types": {
  926 + "version": "7.9.6",
  927 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
  928 + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
  929 + "dev": true,
  930 + "requires": {
  931 + "@babel/helper-validator-identifier": "^7.9.5",
  932 + "lodash": "^4.17.13",
  933 + "to-fast-properties": "^2.0.0"
  934 + }
  935 + },
  936 + "source-map": {
  937 + "version": "0.5.7",
  938 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
  939 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
  940 + "dev": true
  941 + }
797 942 }
798 943 },
799 944 "@babel/helper-simple-access": {
... ... @@ -834,14 +979,68 @@
834 979 }
835 980 },
836 981 "@babel/helpers": {
837   - "version": "7.9.2",
838   - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
839   - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
  982 + "version": "7.9.6",
  983 + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz",
  984 + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==",
840 985 "dev": true,
841 986 "requires": {
842 987 "@babel/template": "^7.8.3",
843   - "@babel/traverse": "^7.9.0",
844   - "@babel/types": "^7.9.0"
  988 + "@babel/traverse": "^7.9.6",
  989 + "@babel/types": "^7.9.6"
  990 + },
  991 + "dependencies": {
  992 + "@babel/generator": {
  993 + "version": "7.9.6",
  994 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz",
  995 + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==",
  996 + "dev": true,
  997 + "requires": {
  998 + "@babel/types": "^7.9.6",
  999 + "jsesc": "^2.5.1",
  1000 + "lodash": "^4.17.13",
  1001 + "source-map": "^0.5.0"
  1002 + }
  1003 + },
  1004 + "@babel/parser": {
  1005 + "version": "7.9.6",
  1006 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz",
  1007 + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==",
  1008 + "dev": true
  1009 + },
  1010 + "@babel/traverse": {
  1011 + "version": "7.9.6",
  1012 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz",
  1013 + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==",
  1014 + "dev": true,
  1015 + "requires": {
  1016 + "@babel/code-frame": "^7.8.3",
  1017 + "@babel/generator": "^7.9.6",
  1018 + "@babel/helper-function-name": "^7.9.5",
  1019 + "@babel/helper-split-export-declaration": "^7.8.3",
  1020 + "@babel/parser": "^7.9.6",
  1021 + "@babel/types": "^7.9.6",
  1022 + "debug": "^4.1.0",
  1023 + "globals": "^11.1.0",
  1024 + "lodash": "^4.17.13"
  1025 + }
  1026 + },
  1027 + "@babel/types": {
  1028 + "version": "7.9.6",
  1029 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
  1030 + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
  1031 + "dev": true,
  1032 + "requires": {
  1033 + "@babel/helper-validator-identifier": "^7.9.5",
  1034 + "lodash": "^4.17.13",
  1035 + "to-fast-properties": "^2.0.0"
  1036 + }
  1037 + },
  1038 + "source-map": {
  1039 + "version": "0.5.7",
  1040 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
  1041 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
  1042 + "dev": true
  1043 + }
845 1044 }
846 1045 },
847 1046 "@babel/highlight": {
... ... @@ -913,9 +1112,9 @@
913 1112 }
914 1113 },
915 1114 "@babel/plugin-proposal-object-rest-spread": {
916   - "version": "7.9.5",
917   - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz",
918   - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==",
  1115 + "version": "7.9.6",
  1116 + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz",
  1117 + "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==",
919 1118 "dev": true,
920 1119 "requires": {
921 1120 "@babel/helper-plugin-utils": "^7.8.3",
... ... @@ -1174,38 +1373,38 @@
1174 1373 }
1175 1374 },
1176 1375 "@babel/plugin-transform-modules-amd": {
1177   - "version": "7.9.0",
1178   - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
1179   - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
  1376 + "version": "7.9.6",
  1377 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz",
  1378 + "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==",
1180 1379 "dev": true,
1181 1380 "requires": {
1182 1381 "@babel/helper-module-transforms": "^7.9.0",
1183 1382 "@babel/helper-plugin-utils": "^7.8.3",
1184   - "babel-plugin-dynamic-import-node": "^2.3.0"
  1383 + "babel-plugin-dynamic-import-node": "^2.3.3"
1185 1384 }
1186 1385 },
1187 1386 "@babel/plugin-transform-modules-commonjs": {
1188   - "version": "7.9.0",
1189   - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz",
1190   - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==",
  1387 + "version": "7.9.6",
  1388 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz",
  1389 + "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==",
1191 1390 "dev": true,
1192 1391 "requires": {
1193 1392 "@babel/helper-module-transforms": "^7.9.0",
1194 1393 "@babel/helper-plugin-utils": "^7.8.3",
1195 1394 "@babel/helper-simple-access": "^7.8.3",
1196   - "babel-plugin-dynamic-import-node": "^2.3.0"
  1395 + "babel-plugin-dynamic-import-node": "^2.3.3"
1197 1396 }
1198 1397 },
1199 1398 "@babel/plugin-transform-modules-systemjs": {
1200   - "version": "7.9.0",
1201   - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
1202   - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
  1399 + "version": "7.9.6",
  1400 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz",
  1401 + "integrity": "sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg==",
1203 1402 "dev": true,
1204 1403 "requires": {
1205 1404 "@babel/helper-hoist-variables": "^7.8.3",
1206 1405 "@babel/helper-module-transforms": "^7.9.0",
1207 1406 "@babel/helper-plugin-utils": "^7.8.3",
1208   - "babel-plugin-dynamic-import-node": "^2.3.0"
  1407 + "babel-plugin-dynamic-import-node": "^2.3.3"
1209 1408 }
1210 1409 },
1211 1410 "@babel/plugin-transform-modules-umd": {
... ... @@ -1572,14 +1771,14 @@
1572 1771 "integrity": "sha512-Eqy2vuhgTY+BeqjOiXBBmbGPRC4HTa4nBSo9NcyZ8Z0MoaKo9YCbqC4CNCEPYqRbJeDUeBwfejnHR94eVMB2cw=="
1573 1772 },
1574 1773 "@material-ui/core": {
1575   - "version": "4.9.12",
1576   - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.9.12.tgz",
1577   - "integrity": "sha512-JtRm1iNw3PRg+bzULS1uRKhdIJ2jhKO3/5ptO6kTADARsv5KmhzMbM+PYmVS09qm9Yu3ilwka4dYrtjqea53Lw==",
  1774 + "version": "4.9.13",
  1775 + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.9.13.tgz",
  1776 + "integrity": "sha512-GEXNwUr+laZ0N+F1efmHB64Fyg+uQIRXLqbSejg3ebSXgLYNpIjnMOPRfWdu4rICq0dAIgvvNXGkKDMcf3AMpA==",
1578 1777 "requires": {
1579 1778 "@babel/runtime": "^7.4.4",
1580 1779 "@material-ui/react-transition-group": "^4.3.0",
1581   - "@material-ui/styles": "^4.9.10",
1582   - "@material-ui/system": "^4.9.10",
  1780 + "@material-ui/styles": "^4.9.13",
  1781 + "@material-ui/system": "^4.9.13",
1583 1782 "@material-ui/types": "^5.0.1",
1584 1783 "@material-ui/utils": "^4.9.12",
1585 1784 "@types/react-transition-group": "^4.2.0",
... ... @@ -1631,15 +1830,15 @@
1631 1830 }
1632 1831 },
1633 1832 "@material-ui/styles": {
1634   - "version": "4.9.10",
1635   - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.9.10.tgz",
1636   - "integrity": "sha512-EXIXlqVyFDnjXF6tj72y6ZxiSy+mHtrsCo3Srkm3XUeu3Z01aftDBy7ZSr3TQ02gXHTvDSBvegp3Le6p/tl7eA==",
  1833 + "version": "4.9.13",
  1834 + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.9.13.tgz",
  1835 + "integrity": "sha512-lWlXJanBdHQ18jW/yphedRokHcvZD1GdGzUF/wQxKDsHwDDfO45ZkAxuSBI202dG+r1Ph483Z3pFykO2obeSRA==",
1637 1836 "requires": {
1638 1837 "@babel/runtime": "^7.4.4",
1639 1838 "@emotion/hash": "^0.8.0",
1640 1839 "@material-ui/types": "^5.0.1",
1641 1840 "@material-ui/utils": "^4.9.6",
1642   - "clsx": "^1.0.2",
  1841 + "clsx": "^1.0.4",
1643 1842 "csstype": "^2.5.2",
1644 1843 "hoist-non-react-statics": "^3.3.2",
1645 1844 "jss": "^10.0.3",
... ... @@ -1654,9 +1853,9 @@
1654 1853 }
1655 1854 },
1656 1855 "@material-ui/system": {
1657   - "version": "4.9.10",
1658   - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.10.tgz",
1659   - "integrity": "sha512-E+t0baX2TBZk6ALm8twG6objpsxLdMM4MDm1++LMt2m7CetCAEc3aIAfDaprk4+tm5hFT1Cah5dRWk8EeIFQYw==",
  1856 + "version": "4.9.13",
  1857 + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.13.tgz",
  1858 + "integrity": "sha512-6AlpvdW6KJJ5bF1Xo2OD13sCN8k+nlL36412/bWnWZOKIfIMo/Lb8c8d1DOIaT/RKWxTEUaWnKZjabVnA3eZjA==",
1660 1859 "requires": {
1661 1860 "@babel/runtime": "^7.4.4",
1662 1861 "@material-ui/utils": "^4.9.6",
... ... @@ -1694,17 +1893,30 @@
1694 1893 "integrity": "sha512-KDvuNBxfTgDHjESiouEoPXq8GCUYbHnA+jOs8MzzwVDmxNLeZuDy3amaVzKv9Q5nncI6mNGcXOzTKWzapET8Sw=="
1695 1894 },
1696 1895 "@ngtools/webpack": {
1697   - "version": "9.1.3",
1698   - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.3.tgz",
1699   - "integrity": "sha512-yQ7LHqICC1Xf4E4Jw1jDCAJHYwPX7T7mRFxMd+R/0EBDcz1XBSh85+vnVs2PoJHVH+8ONOEkZKKSjABe1CZUvg==",
  1896 + "version": "9.1.4",
  1897 + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.4.tgz",
  1898 + "integrity": "sha512-CDlQzMnWraxf/dT3G5L+0N0VniWHWdzjLRP8pWBoyV0xlzWS1yL/lj8Mas2jEIuaUxZ8bi29mE7xa8prqewtBQ==",
1700 1899 "dev": true,
1701 1900 "requires": {
1702   - "@angular-devkit/core": "9.1.3",
  1901 + "@angular-devkit/core": "9.1.4",
1703 1902 "enhanced-resolve": "4.1.1",
1704 1903 "rxjs": "6.5.4",
1705 1904 "webpack-sources": "1.4.3"
1706 1905 },
1707 1906 "dependencies": {
  1907 + "@angular-devkit/core": {
  1908 + "version": "9.1.4",
  1909 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  1910 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  1911 + "dev": true,
  1912 + "requires": {
  1913 + "ajv": "6.12.0",
  1914 + "fast-json-stable-stringify": "2.1.0",
  1915 + "magic-string": "0.25.7",
  1916 + "rxjs": "6.5.4",
  1917 + "source-map": "0.7.3"
  1918 + }
  1919 + },
1708 1920 "rxjs": {
1709 1921 "version": "6.5.4",
1710 1922 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
... ... @@ -1738,23 +1950,47 @@
1738 1950 }
1739 1951 },
1740 1952 "@schematics/angular": {
1741   - "version": "9.1.3",
1742   - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.3.tgz",
1743   - "integrity": "sha512-3vxrPyvcIWvyWgbx/fpeQvMThXlmcnHTXVn2dpTcE2BzstAYdG17W3qouhvmlqd6m28orxkKKiZaJYMNTtnV/A==",
  1953 + "version": "9.1.4",
  1954 + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.4.tgz",
  1955 + "integrity": "sha512-7nbiYBRgXc+f0sa5iXTcF6/VMy/Xq0wyKKnDFiLCb2aFYR7EXRHWF2GuwDIg2bvFugLuCBDoNnXeddLE1TXGWg==",
1744 1956 "dev": true,
1745 1957 "requires": {
1746   - "@angular-devkit/core": "9.1.3",
1747   - "@angular-devkit/schematics": "9.1.3"
  1958 + "@angular-devkit/core": "9.1.4",
  1959 + "@angular-devkit/schematics": "9.1.4"
  1960 + },
  1961 + "dependencies": {
  1962 + "@angular-devkit/core": {
  1963 + "version": "9.1.4",
  1964 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  1965 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  1966 + "dev": true,
  1967 + "requires": {
  1968 + "ajv": "6.12.0",
  1969 + "fast-json-stable-stringify": "2.1.0",
  1970 + "magic-string": "0.25.7",
  1971 + "rxjs": "6.5.4",
  1972 + "source-map": "0.7.3"
  1973 + }
  1974 + },
  1975 + "rxjs": {
  1976 + "version": "6.5.4",
  1977 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
  1978 + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
  1979 + "dev": true,
  1980 + "requires": {
  1981 + "tslib": "^1.9.0"
  1982 + }
  1983 + }
1748 1984 }
1749 1985 },
1750 1986 "@schematics/update": {
1751   - "version": "0.901.3",
1752   - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.3.tgz",
1753   - "integrity": "sha512-kwfc9LMMi6ryN2oiat9vTqGMK1jKwI1c45Nm1xala35nsbQSQ12qeL3MrVmnSCeI14+cinFUbp8mWI9/3M+/Lg==",
  1987 + "version": "0.901.4",
  1988 + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.4.tgz",
  1989 + "integrity": "sha512-jCtZY2Fbj502gKN5gdu1brnRy/ssyzTrWm69Ty73V+t8uL7nLr+/hny/VBJ8CiQnKQvxcgVl1xgvI1cXzpysVA==",
1754 1990 "dev": true,
1755 1991 "requires": {
1756   - "@angular-devkit/core": "9.1.3",
1757   - "@angular-devkit/schematics": "9.1.3",
  1992 + "@angular-devkit/core": "9.1.4",
  1993 + "@angular-devkit/schematics": "9.1.4",
1758 1994 "@yarnpkg/lockfile": "1.1.0",
1759 1995 "ini": "1.3.5",
1760 1996 "npm-package-arg": "^8.0.0",
... ... @@ -1764,6 +2000,19 @@
1764 2000 "semver-intersect": "1.4.0"
1765 2001 },
1766 2002 "dependencies": {
  2003 + "@angular-devkit/core": {
  2004 + "version": "9.1.4",
  2005 + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.4.tgz",
  2006 + "integrity": "sha512-OPFQDmT4XabLMSRDgmnzedlOrc83DzQIgLcfoh/UhZ7aJKf/2Vq4l09p/DkMNI36vN5BRL0zDZt7TjvKNgyYgA==",
  2007 + "dev": true,
  2008 + "requires": {
  2009 + "ajv": "6.12.0",
  2010 + "fast-json-stable-stringify": "2.1.0",
  2011 + "magic-string": "0.25.7",
  2012 + "rxjs": "6.5.4",
  2013 + "source-map": "0.7.3"
  2014 + }
  2015 + },
1767 2016 "rxjs": {
1768 2017 "version": "6.5.4",
1769 2018 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
... ... @@ -1846,9 +2095,9 @@
1846 2095 }
1847 2096 },
1848 2097 "@types/jquery": {
1849   - "version": "3.3.36",
1850   - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.36.tgz",
1851   - "integrity": "sha512-jHL8J5y5fJ0+C9zCTkeOvX4zqRnPug3r6JhAqAYl2YyBCYHiXTbZSH0MRCpayZADed5TigPjH92dEKczUFT2TQ==",
  2098 + "version": "3.3.38",
  2099 + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.38.tgz",
  2100 + "integrity": "sha512-nkDvmx7x/6kDM5guu/YpXkGZ/Xj/IwGiLDdKM99YA5Vag7pjGyTJ8BNUh/6hxEn/sEu5DKtyRgnONJ7EmOoKrA==",
1852 2101 "requires": {
1853 2102 "@types/sizzle": "*"
1854 2103 }
... ... @@ -3223,9 +3472,9 @@
3223 3472 }
3224 3473 },
3225 3474 "caniuse-lite": {
3226   - "version": "1.0.30001048",
3227   - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz",
3228   - "integrity": "sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==",
  3475 + "version": "1.0.30001051",
  3476 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz",
  3477 + "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw==",
3229 3478 "dev": true
3230 3479 },
3231 3480 "canonical-path": {
... ... @@ -4873,9 +5122,9 @@
4873 5122 "dev": true
4874 5123 },
4875 5124 "electron-to-chromium": {
4876   - "version": "1.3.421",
4877   - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.421.tgz",
4878   - "integrity": "sha512-ogxgmvHGfDuLA+GtgfK0jkFWlBb4MCZK2U1MM+l98sf4U3Ixtrfw1iC9w4mQqNvo+lHgM4pR62TqoT4QrvKJCw==",
  5125 + "version": "1.3.428",
  5126 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.428.tgz",
  5127 + "integrity": "sha512-u3+5jEfgLKq/hGO96YfAoOAM1tgFnRDTCD5mLuev44tttcXix+INtVegAkmGzUcfDsnzkPt51XXurXZLLwXt0w==",
4879 5128 "dev": true
4880 5129 },
4881 5130 "elliptic": {
... ... @@ -6084,13 +6333,33 @@
6084 6333 }
6085 6334 },
6086 6335 "hash-base": {
6087   - "version": "3.0.4",
6088   - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
6089   - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
  6336 + "version": "3.1.0",
  6337 + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
  6338 + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
6090 6339 "dev": true,
6091 6340 "requires": {
6092   - "inherits": "^2.0.1",
6093   - "safe-buffer": "^5.0.1"
  6341 + "inherits": "^2.0.4",
  6342 + "readable-stream": "^3.6.0",
  6343 + "safe-buffer": "^5.2.0"
  6344 + },
  6345 + "dependencies": {
  6346 + "readable-stream": {
  6347 + "version": "3.6.0",
  6348 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
  6349 + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
  6350 + "dev": true,
  6351 + "requires": {
  6352 + "inherits": "^2.0.3",
  6353 + "string_decoder": "^1.1.1",
  6354 + "util-deprecate": "^1.0.1"
  6355 + }
  6356 + },
  6357 + "safe-buffer": {
  6358 + "version": "5.2.0",
  6359 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
  6360 + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
  6361 + "dev": true
  6362 + }
6094 6363 }
6095 6364 },
6096 6365 "hash.js": {
... ... @@ -6900,10 +7169,13 @@
6900 7169 "dev": true
6901 7170 },
6902 7171 "is-wsl": {
6903   - "version": "2.1.1",
6904   - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz",
6905   - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==",
6906   - "dev": true
  7172 + "version": "2.2.0",
  7173 + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
  7174 + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
  7175 + "dev": true,
  7176 + "requires": {
  7177 + "is-docker": "^2.0.0"
  7178 + }
6907 7179 },
6908 7180 "isarray": {
6909 7181 "version": "1.0.0",
... ... @@ -7172,9 +7444,9 @@
7172 7444 }
7173 7445 },
7174 7446 "jquery": {
7175   - "version": "3.5.0",
7176   - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz",
7177   - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ=="
  7447 + "version": "3.5.1",
  7448 + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
  7449 + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
7178 7450 },
7179 7451 "jquery.terminal": {
7180 7452 "version": "2.15.4",
... ... @@ -9777,9 +10049,9 @@
9777 10049 "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
9778 10050 },
9779 10051 "portfinder": {
9780   - "version": "1.0.25",
9781   - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
9782   - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
  10052 + "version": "1.0.26",
  10053 + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz",
  10054 + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==",
9783 10055 "dev": true,
9784 10056 "requires": {
9785 10057 "async": "^2.6.2",
... ... @@ -10942,9 +11214,9 @@
10942 11214 }
10943 11215 },
10944 11216 "rc-select": {
10945   - "version": "10.2.4",
10946   - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-10.2.4.tgz",
10947   - "integrity": "sha512-PtfAHQRXof5gX1qEYQc8GIgroajtzU3mcMGbqM1aE1jqaZ4r+p0GJy3rabXoNANsKH7jUV5+zYJb5VhTxj2vmQ==",
  11217 + "version": "10.2.5",
  11218 + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-10.2.5.tgz",
  11219 + "integrity": "sha512-E5cdq+8kuTMdvDUmVXGdlHb4D0Effj/Xu988kUWSoALJtEAAdnUbuCJGhu04ehWtKMotGN5I9qlkLR4OdiLrgg==",
10948 11220 "requires": {
10949 11221 "classnames": "2.x",
10950 11222 "rc-animate": "^2.10.0",
... ... @@ -14526,9 +14798,9 @@
14526 14798 }
14527 14799 },
14528 14800 "mime": {
14529   - "version": "2.4.4",
14530   - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
14531   - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
  14801 + "version": "2.4.5",
  14802 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz",
  14803 + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==",
14532 14804 "dev": true
14533 14805 },
14534 14806 "mkdirp": {
... ...
... ... @@ -13,24 +13,24 @@
13 13 },
14 14 "private": true,
15 15 "dependencies": {
16   - "@angular/animations": "^9.1.2",
17   - "@angular/cdk": "^9.1.3",
18   - "@angular/common": "^9.1.2",
19   - "@angular/compiler": "^9.1.2",
20   - "@angular/core": "^9.1.2",
  16 + "@angular/animations": "^9.1.4",
  17 + "@angular/cdk": "^9.2.2",
  18 + "@angular/common": "^9.1.4",
  19 + "@angular/compiler": "^9.1.4",
  20 + "@angular/core": "^9.1.4",
21 21 "@angular/flex-layout": "^9.0.0-beta.29",
22   - "@angular/forms": "^9.1.2",
23   - "@angular/material": "^9.2.1",
24   - "@angular/platform-browser": "^9.1.2",
25   - "@angular/platform-browser-dynamic": "^9.1.2",
26   - "@angular/router": "^9.1.2",
  22 + "@angular/forms": "^9.1.4",
  23 + "@angular/material": "^9.2.2",
  24 + "@angular/platform-browser": "^9.1.4",
  25 + "@angular/platform-browser-dynamic": "^9.1.4",
  26 + "@angular/router": "^9.1.4",
27 27 "@auth0/angular-jwt": "^4.0.0",
28 28 "@date-io/date-fns": "^2.6.1",
29 29 "@flowjs/flow.js": "^2.14.0",
30 30 "@flowjs/ngx-flow": "^0.4.3",
31 31 "@juggle/resize-observer": "^3.1.3",
32 32 "@mat-datetimepicker/core": "^4.1.0",
33   - "@material-ui/core": "^4.9.11",
  33 + "@material-ui/core": "^4.9.13",
34 34 "@material-ui/icons": "^4.9.1",
35 35 "@material-ui/pickers": "^3.2.10",
36 36 "@ngrx/effects": "^9.1.0",
... ... @@ -50,7 +50,7 @@
50 50 "flot": "git://github.com/thingsboard/flot.git#0.9-work",
51 51 "flot.curvedlines": "git://github.com/MichaelZinsmaier/CurvedLines.git#master",
52 52 "font-awesome": "^4.7.0",
53   - "jquery": "^3.5.0",
  53 + "jquery": "^3.5.1",
54 54 "jquery.terminal": "^2.15.4",
55 55 "js-beautify": "^1.11.0",
56 56 "json-schema-defaults": "^0.4.0",
... ... @@ -75,7 +75,7 @@
75 75 "objectpath": "^2.0.0",
76 76 "prop-types": "^15.7.2",
77 77 "raphael": "^2.3.0",
78   - "rc-select": "^10.2.4",
  78 + "rc-select": "^10.2.5",
79 79 "react": "^16.13.1",
80 80 "react-ace": "^8.1.0",
81 81 "react-dom": "^16.13.1",
... ... @@ -95,21 +95,21 @@
95 95 },
96 96 "devDependencies": {
97 97 "@angular-builders/custom-webpack": "^9.1.0",
98   - "@angular-devkit/build-angular": "^0.901.1",
99   - "@angular/cli": "^9.1.1",
100   - "@angular/compiler-cli": "^9.1.2",
101   - "@angular/language-service": "^9.1.2",
  98 + "@angular-devkit/build-angular": "^0.901.4",
  99 + "@angular/cli": "^9.1.4",
  100 + "@angular/compiler-cli": "^9.1.4",
  101 + "@angular/language-service": "^9.1.4",
102 102 "@types/canvas-gauges": "^2.1.2",
103 103 "@types/flot": "^0.0.31",
104 104 "@types/jasmine": "^3.5.10",
105 105 "@types/jasminewd2": "^2.0.8",
106   - "@types/jquery": "^3.3.35",
  106 + "@types/jquery": "^3.3.38",
107 107 "@types/js-beautify": "^1.8.2",
108 108 "@types/jstree": "^3.3.39",
109 109 "@types/jszip": "^3.1.7",
110 110 "@types/leaflet": "^1.5.12",
111   - "@types/leaflet-polylinedecorator": "^1.6.0",
112 111 "@types/leaflet-markercluster": "^1.0.3",
  112 + "@types/leaflet-polylinedecorator": "^1.6.0",
113 113 "@types/lodash": "^4.14.150",
114 114 "@types/raphael": "^2.3.0",
115 115 "@types/react": "^16.9.34",
... ...
... ... @@ -28,7 +28,7 @@ import {
28 28 } from '@shared/models/telemetry/telemetry.models';
29 29 import { DatasourceListener } from './datasource.service';
30 30 import { AggregationType, SubscriptionTimewindow, YEAR } from '@shared/models/time/time.models';
31   -import { deepClone, isDefinedAndNotNull, isObject } from '@core/utils';
  31 +import { deepClone, isDefinedAndNotNull, isObject, objectHashCode } from '@core/utils';
32 32 import { UtilsService } from '@core/services/utils.service';
33 33 import { EntityType } from '@shared/models/entity-type.models';
34 34 import { DataAggregator } from '@core/api/data-aggregator';
... ... @@ -120,7 +120,7 @@ export class DatasourceSubscription {
120 120 data: []
121 121 };
122 122 } else {
123   - key = String(this.utils.objectHashCode(dataKey));
  123 + key = String(objectHashCode(dataKey));
124 124 this.datasourceData[key] = {
125 125 data: []
126 126 };
... ...
... ... @@ -25,7 +25,7 @@ import {
25 25 DatasourceSubscriptionOptions,
26 26 SubscriptionDataKey
27 27 } from '@core/api/datasource-subcription';
28   -import { deepClone } from '@core/utils';
  28 +import { deepClone, objectHashCode } from '@core/utils';
29 29
30 30 export interface DatasourceListener {
31 31 subscriptionType: widgetType;
... ... @@ -79,7 +79,7 @@ export class DatasourceService {
79 79 datasourceSubscriptionOptions.entityType = listener.entityType;
80 80 datasourceSubscriptionOptions.entityId = listener.entityId;
81 81 }
82   - listener.datasourceSubscriptionKey = this.utils.objectHashCode(datasourceSubscriptionOptions);
  82 + listener.datasourceSubscriptionKey = objectHashCode(datasourceSubscriptionOptions);
83 83 let subscription: DatasourceSubscription;
84 84 if (this.subscriptions[listener.datasourceSubscriptionKey]) {
85 85 subscription = this.subscriptions[listener.datasourceSubscriptionKey];
... ...
... ... @@ -163,32 +163,6 @@ export class UtilsService {
163 163 return obj;
164 164 }
165 165
166   - public hashCode(str: string): number {
167   - let hash = 0;
168   - let i: number;
169   - let char: number;
170   - if (str.length === 0) {
171   - return hash;
172   - }
173   - for (i = 0; i < str.length; i++) {
174   - char = str.charCodeAt(i);
175   - // tslint:disable-next-line:no-bitwise
176   - hash = ((hash << 5) - hash) + char;
177   - // tslint:disable-next-line:no-bitwise
178   - hash = hash & hash; // Convert to 32bit integer
179   - }
180   - return hash;
181   - }
182   -
183   - public objectHashCode(obj: any): number {
184   - let hash = 0;
185   - if (obj) {
186   - const str = JSON.stringify(obj);
187   - hash = this.hashCode(str);
188   - }
189   - return hash;
190   - }
191   -
192 166 public processWidgetException(exception: any): ExceptionData {
193 167 const data = this.parseException(exception, -6);
194 168 if (this.widgetEditMode) {
... ...
... ... @@ -15,11 +15,10 @@
15 15 ///
16 16
17 17 import _ from 'lodash';
18   -import { Observable, Observer, of, Subject } from 'rxjs';
19   -import { finalize, map, share } from 'rxjs/operators';
  18 +import { Observable, Subject } from 'rxjs';
  19 +import { finalize, share } from 'rxjs/operators';
20 20 import base64js from 'base64-js';
21 21 import { Datasource } from '@app/shared/models/widget.models';
22   -import { FormattedData } from '@app/modules/home/components/widget/lib/maps/map-models';
23 22
24 23 export function onParentScrollOrWindowResize(el: Node): Observable<Event> {
25 24 const scrollSubject = new Subject<Event>();
... ... @@ -33,7 +32,7 @@ export function onParentScrollOrWindowResize(el: Node): Observable<Event> {
33 32 scrollParentNode.addEventListener('scroll', eventListenerObject);
34 33 });
35 34 window.addEventListener('resize', eventListenerObject);
36   - const shared = scrollSubject.pipe(
  35 + return scrollSubject.pipe(
37 36 finalize(() => {
38 37 scrollParentNodes.forEach((scrollParentNode) => {
39 38 scrollParentNode.removeEventListener('scroll', eventListenerObject);
... ... @@ -42,18 +41,13 @@ export function onParentScrollOrWindowResize(el: Node): Observable<Event> {
42 41 }),
43 42 share()
44 43 );
45   - return shared;
46 44 }
47 45
48 46 export function isLocalUrl(url: string): boolean {
49 47 const parser = document.createElement('a');
50 48 parser.href = url;
51 49 const host = parser.hostname;
52   - if (host === 'localhost' || host === '127.0.0.1') {
53   - return true;
54   - } else {
55   - return false;
56   - }
  50 + return host === 'localhost' || host === '127.0.0.1';
57 51 }
58 52
59 53 export function animatedScroll(element: HTMLElement, scrollTop: number, delay?: number) {
... ... @@ -68,8 +62,7 @@ export function animatedScroll(element: HTMLElement, scrollTop: number, delay?:
68 62 element.scrollTop = to;
69 63 } else {
70 64 currentTime += increment;
71   - const val = easeInOut(currentTime, start, remaining, duration);
72   - element.scrollTop = val;
  65 + element.scrollTop = easeInOut(currentTime, start, remaining, duration);
73 66 if (currentTime < duration) {
74 67 setTimeout(animateScroll, increment);
75 68 }
... ... @@ -118,7 +111,7 @@ export function formatValue(value: any, dec?: number, units?: string, showZeroDe
118 111 formatted = formatted.toFixed(dec);
119 112 }
120 113 if (!showZeroDecimals) {
121   - formatted = (Number(formatted) * 1);
  114 + formatted = (Number(formatted));
122 115 }
123 116 formatted = formatted.toString();
124 117 if (isDefined(units) && units.length > 0) {
... ... @@ -154,15 +147,13 @@ export function deleteNullProperties(obj: any) {
154 147 export function objToBase64(obj: any): string {
155 148 const json = JSON.stringify(obj);
156 149 const encoded = utf8Encode(json);
157   - const b64Encoded: string = base64js.fromByteArray(encoded);
158   - return b64Encoded;
  150 + return base64js.fromByteArray(encoded);
159 151 }
160 152
161 153 export function base64toObj(b64Encoded: string): any {
162 154 const encoded: Uint8Array | number[] = base64js.toByteArray(b64Encoded);
163 155 const json = utf8Decode(encoded);
164   - const obj = JSON.parse(json);
165   - return obj;
  156 + return JSON.parse(json);
166 157 }
167 158
168 159 function utf8Encode(str: string): Uint8Array | number[] {
... ... @@ -223,11 +214,13 @@ function scrollParents(node: Node): Node[] {
223 214 return scrollParentNodes;
224 215 }
225 216
226   -function hashCode(str) {
  217 +export function hashCode(str: string): number {
227 218 let hash = 0;
228   - let i;
229   - let char;
230   - if (str.length === 0) return hash;
  219 + let i: number;
  220 + let char: number;
  221 + if (str.length === 0) {
  222 + return hash;
  223 + }
231 224 for (i = 0; i < str.length; i++) {
232 225 char = str.charCodeAt(i);
233 226 // tslint:disable-next-line:no-bitwise
... ... @@ -238,6 +231,15 @@ function hashCode(str) {
238 231 return hash;
239 232 }
240 233
  234 +export function objectHashCode(obj: any): number {
  235 + let hash = 0;
  236 + if (obj) {
  237 + const str = JSON.stringify(obj);
  238 + hash = hashCode(str);
  239 + }
  240 + return hash;
  241 +}
  242 +
241 243 function easeInOut(
242 244 currentTime: number,
243 245 startTime: number,
... ... @@ -433,29 +435,8 @@ export function getDescendantProp(obj: any, path: string): any {
433 435 return path.split('.').reduce((acc, part) => acc && acc[part], obj);
434 436 }
435 437
436   -export function imageLoader(imageUrl: string): Observable<HTMLImageElement> {
437   - return new Observable((observer: Observer<HTMLImageElement>) => {
438   - const image = new Image();
439   - image.style.position = 'absolute';
440   - image.style.left = '-99999px';
441   - image.style.top = '-99999px';
442   - image.onload = () => {
443   - observer.next(image);
444   - document.body.removeChild(image);
445   - observer.complete();
446   - };
447   - image.onerror = err => {
448   - observer.error(err);
449   - document.body.removeChild(image);
450   - observer.complete();
451   - };
452   - document.body.appendChild(image)
453   - image.src = imageUrl;
454   - });
455   -}
456   -
457 438 export function createLabelFromDatasource(datasource: Datasource, pattern: string) {
458   - const varsRegex = /\$\{([^}]*)\}/g;
  439 + const varsRegex = /\${([^}]*)}/g;
459 440 let label = pattern;
460 441 if (!datasource) {
461 442 return label;
... ... @@ -482,142 +463,6 @@ export function createLabelFromDatasource(datasource: Datasource, pattern: strin
482 463 return label;
483 464 }
484 465
485   -const imageAspectMap = {};
486   -
487   -export function aspectCache(imageUrl: string): Observable<number> {
488   - if (imageUrl?.length) {
489   - const hash = hashCode(imageUrl);
490   - let aspect = imageAspectMap[hash];
491   - if (aspect) {
492   - return of(aspect);
493   - }
494   - else return imageLoader(imageUrl).pipe(map(image => {
495   - aspect = image.width / image.height;
496   - imageAspectMap[hash] = aspect;
497   - return aspect;
498   - }))
499   - }
500   -}
501   -
502   -export function parseArray(input: any[]): any[] {
503   - return _(input).groupBy(el => el?.datasource?.entityName)
504   - .values().value().map((entityArray, dsIndex) =>
505   - entityArray[0].data.map((el, i) => {
506   - const obj = {
507   - entityName: entityArray[0]?.datasource?.entityName,
508   - $datasource: entityArray[0]?.datasource,
509   - dsIndex,
510   - time: el[0],
511   - deviceType: null
512   - };
513   - entityArray.filter(el => el.data.length).forEach(entity => {
514   - obj[entity?.dataKey?.label] = entity?.data[i][1];
515   - obj[entity?.dataKey?.label + '|ts'] = entity?.data[0][0];
516   - if (entity?.dataKey?.label === 'type') {
517   - obj.deviceType = entity?.data[0][1];
518   - }
519   - });
520   - return obj;
521   - })
522   - );
523   -}
524   -
525   -export function parseData(input: any[]): FormattedData[] {
526   - return _(input).groupBy(el => el?.datasource?.entityName)
527   - .values().value().map((entityArray, i) => {
528   - const obj = {
529   - entityName: entityArray[0]?.datasource?.entityName,
530   - $datasource: entityArray[0]?.datasource as Datasource,
531   - dsIndex: i,
532   - deviceType: null
533   - };
534   - entityArray.filter(el => el.data.length).forEach(el => {
535   - obj[el?.dataKey?.label] = el?.data[0][1];
536   - obj[el?.dataKey?.label + '|ts'] = el?.data[0][0];
537   - if (el?.dataKey?.label === 'type') {
538   - obj.deviceType = el?.data[0][1];
539   - }
540   - });
541   - return obj;
542   - });
543   -}
544   -
545   -export function safeExecute(func: Function, params = []) {
546   - let res = null;
547   - if (func && typeof (func) === 'function') {
548   - try {
549   - res = func(...params);
550   - }
551   - catch (err) {
552   - console.log('error in external function:', err);
553   - res = null;
554   - }
555   - }
556   - return res;
557   -}
558   -
559   -export function parseFunction(source: any, params: string[] = ['def']): Function {
560   - let res = null;
561   - if (source?.length) {
562   - try {
563   - res = new Function(...params, source);
564   - }
565   - catch (err) {
566   - res = null;
567   - }
568   - }
569   - return res;
570   -}
571   -
572   -export function parseTemplate(template: string, data: { $datasource?: Datasource, [key: string]: any },
573   - translateFn?: (key: string) => string) {
574   - let res = '';
575   - try {
576   - if (template.match(/<link-act/g)) {
577   - template = template.replace(/<link-act/g, '<a').replace(/link-act>/g, 'a>')
578   - .replace(/name=(\'|")(.*?)(\'|")/g, `class='tb-custom-action' id='$2'`);
579   - }
580   - if (translateFn) {
581   - template = translateFn(template);
582   - }
583   - template = createLabelFromDatasource(data.$datasource, template);
584   - const formatted = template.match(/\$\{([^}]*)\:\d*\}/g);
585   - if (formatted)
586   - formatted.forEach(value => {
587   - const [variable, digits] = value.replace('${', '').replace('}', '').split(':');
588   - data[variable] = padValue(data[variable], +digits);
589   - if (data[variable] === 'NaN') data[variable] = '';
590   - template = template.replace(value, '${' + variable + '}');
591   - });
592   - const variables = template.match(/\$\{.*?\}/g);
593   - if (variables) {
594   - variables.forEach(variable => {
595   - variable = variable.replace('${', '').replace('}', '');
596   - if (!data[variable])
597   - data[variable] = '';
598   - })
599   - }
600   - const compiled = _.template(template);
601   - res = compiled(data);
602   - }
603   - catch (ex) {
604   - console.log(ex, template)
605   - }
606   - return res;
607   -}
608   -
609   -export let parseWithTranslation = {
610   - translate(): string {
611   - throw console.error('Translate not assigned');
612   - },
613   - parseTemplate(template: string, data: object, forceTranslate = false): string {
614   - return parseTemplate(forceTranslate ? this.translate(template) : template, data, this?.translate);
615   - },
616   - setTranslate(translateFn: (key: string, defaultTranslation?: string) => string) {
617   - this.translate = translateFn;
618   - }
619   -}
620   -
621 466 export function padValue(val: any, dec: number): string {
622 467 let strVal;
623 468 let n;
... ...
... ... @@ -33,7 +33,7 @@ import { Datasource, WidgetActionDescriptor, WidgetConfig } from '@shared/models
33 33 import { IWidgetSubscription } from '@core/api/widget-api.models';
34 34 import { UtilsService } from '@core/services/utils.service';
35 35 import { TranslateService } from '@ngx-translate/core';
36   -import { deepClone, isDefined, isNumber, createLabelFromDatasource } from '@core/utils';
  36 +import { deepClone, isDefined, isNumber, createLabelFromDatasource, hashCode } from '@core/utils';
37 37 import cssjs from '@core/css/css';
38 38 import { PageLink } from '@shared/models/page/page-link';
39 39 import { Direction, SortOrder, sortOrderFromString } from '@shared/models/page/sort-order';
... ... @@ -304,7 +304,7 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
304 304 const cssString = constructTableCssString(this.widgetConfig);
305 305 const cssParser = new cssjs();
306 306 cssParser.testMode = false;
307   - const namespace = 'alarms-table-' + this.utils.hashCode(cssString);
  307 + const namespace = 'alarms-table-' + hashCode(cssString);
308 308 cssParser.cssPreviewNamespace = namespace;
309 309 cssParser.createStyleElement(namespace, cssString);
310 310 $(this.elementRef.nativeElement).addClass(namespace);
... ...
... ... @@ -37,7 +37,7 @@ import {
37 37 import { BaseData } from '@shared/models/base-data';
38 38 import { EntityId } from '@shared/models/id/entity-id';
39 39 import { EntityType } from '@shared/models/entity-type.models';
40   -import { deepClone } from '@core/utils';
  40 +import { deepClone, hashCode } from '@core/utils';
41 41 import {
42 42 defaultNodeIconFunction,
43 43 defaultNodeOpenedFunction,
... ... @@ -186,7 +186,7 @@ export class EntitiesHierarchyWidgetComponent extends PageComponent implements O
186 186 const cssString = constructTableCssString(this.widgetConfig);
187 187 const cssParser = new cssjs();
188 188 cssParser.testMode = false;
189   - const namespace = 'entities-hierarchy-' + this.utils.hashCode(cssString);
  189 + const namespace = 'entities-hierarchy-' + hashCode(cssString);
190 190 cssParser.cssPreviewNamespace = namespace;
191 191 cssParser.createStyleElement(namespace, cssString);
192 192 $(this.elementRef.nativeElement).addClass(namespace);
... ...
... ... @@ -39,7 +39,7 @@ import {
39 39 import { IWidgetSubscription } from '@core/api/widget-api.models';
40 40 import { UtilsService } from '@core/services/utils.service';
41 41 import { TranslateService } from '@ngx-translate/core';
42   -import { deepClone, isDefined, isNumber, createLabelFromDatasource } from '@core/utils';
  42 +import { deepClone, isDefined, isNumber, createLabelFromDatasource, hashCode } from '@core/utils';
43 43 import cssjs from '@core/css/css';
44 44 import { PageLink } from '@shared/models/page/page-link';
45 45 import { Direction, SortOrder, sortOrderFromString } from '@shared/models/page/sort-order';
... ... @@ -226,7 +226,7 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni
226 226 const cssString = constructTableCssString(this.widgetConfig);
227 227 const cssParser = new cssjs();
228 228 cssParser.testMode = false;
229   - const namespace = 'entities-table-' + this.utils.hashCode(cssString);
  229 + const namespace = 'entities-table-' + hashCode(cssString);
230 230 cssParser.cssPreviewNamespace = namespace;
231 231 cssParser.createStyleElement(namespace, cssString);
232 232 $(this.elementRef.nativeElement).addClass(namespace);
... ...
... ... @@ -14,19 +14,26 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import L, { LatLngTuple, LatLngBounds, Point, MarkerClusterGroupOptions, markerClusterGroup } from 'leaflet';
  17 +import L, { LatLngBounds, LatLngTuple, markerClusterGroup, MarkerClusterGroupOptions } from 'leaflet';
18 18
19 19 import 'leaflet-providers';
20 20 import 'leaflet.markercluster/dist/leaflet.markercluster';
21 21
22   -import { MapSettings, MarkerSettings, FormattedData, UnitedMapSettings, PolygonSettings, PolylineSettings } from './map-models';
  22 +import {
  23 + FormattedData,
  24 + MapSettings,
  25 + MarkerSettings,
  26 + PolygonSettings,
  27 + PolylineSettings,
  28 + UnitedMapSettings
  29 +} from './map-models';
23 30 import { Marker } from './markers';
24 31 import { BehaviorSubject, Observable } from 'rxjs';
25 32 import { filter } from 'rxjs/operators';
26 33 import { Polyline } from './polyline';
27 34 import { Polygon } from './polygon';
28 35 import { DatasourceData } from '@app/shared/models/widget.models';
29   -import { safeExecute } from '@app/core/utils';
  36 +import { safeExecute } from '@home/components/widget/lib/maps/maps-utils';
30 37
31 38 export default abstract class LeafletMap {
32 39
... ... @@ -38,13 +45,11 @@ export default abstract class LeafletMap {
38 45 map$: BehaviorSubject<L.Map> = new BehaviorSubject(null);
39 46 ready$: Observable<L.Map> = this.map$.pipe(filter(map => !!map));
40 47 options: UnitedMapSettings;
41   - isMarketCluster: boolean;
42 48 bounds: L.LatLngBounds;
43   - newMarker: L.Marker;
44 49 datasources: FormattedData[];
45 50 markersCluster;
46 51
47   - constructor(public $container: HTMLElement, options: UnitedMapSettings) {
  52 + protected constructor(public $container: HTMLElement, options: UnitedMapSettings) {
48 53 this.options = options;
49 54 }
50 55
... ... @@ -125,7 +130,7 @@ export default abstract class LeafletMap {
125 130 addMarker.setPosition('topright')
126 131 }
127 132 L.Control.AddMarker = L.Control.extend({
128   - onAdd(map) {
  133 + onAdd() {
129 134 const img = L.DomUtil.create('img') as any;
130 135 img.src = `assets/add_location.svg`;
131 136 img.style.width = '32px';
... ... @@ -138,7 +143,7 @@ export default abstract class LeafletMap {
138 143 draggableImg.on('dragend', dragListener)
139 144 return img;
140 145 },
141   - onRemove(map) {
  146 + onRemove() {
142 147 },
143 148 dragMarker: this.dragMarker
144 149 } as any);
... ... @@ -166,7 +171,7 @@ export default abstract class LeafletMap {
166 171 this.datasources = dataSources;
167 172 }
168 173
169   - public saveMarkerLocation(e) {
  174 + public saveMarkerLocation(_e) {
170 175
171 176 }
172 177
... ...
... ... @@ -14,7 +14,7 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { LatLngTuple, LeafletMouseEvent } from 'leaflet';
  17 +import { LatLngTuple } from 'leaflet';
18 18 import { Datasource } from '@app/shared/models/widget.models';
19 19
20 20 export type GenericFunction = (data: FormattedData, dsData: FormattedData[], dsIndex: number) => string;
... ... @@ -116,7 +116,7 @@ export type PolygonSettings = {
116 116 autocloseTooltip: boolean;
117 117 tooltipFunction: GenericFunction;
118 118 showTooltipAction: string;
119   - tooltipAction: object;
  119 + tooltipAction: { [name: string]: actionsHandler };
120 120 tooltipPattern: string;
121 121 useTooltipFunction: boolean;
122 122 polygonClick: { [name: string]: actionsHandler };
... ... @@ -152,6 +152,6 @@ export interface HistorySelectSettings {
152 152 buttonColor: string;
153 153 }
154 154
155   -export type actionsHandler = ($event: Event | LeafletMouseEvent, datasource: Datasource) => void;
  155 +export type actionsHandler = ($event: Event, datasource: Datasource) => void;
156 156
157 157 export type UnitedMapSettings = MapSettings & PolygonSettings & MarkerSettings & PolylineSettings;
... ...
... ... @@ -31,11 +31,10 @@ import {
31 31 } from './schemes';
32 32 import { MapWidgetStaticInterface, MapWidgetInterface } from './map-widget.interface';
33 33 import { OpenStreetMap, TencentMap, GoogleMap, HEREMap, ImageMap } from './providers';
34   -import { parseFunction, parseArray, parseData, parseWithTranslation } from '@core/utils';
35 34 import { initSchema, addToSchema, mergeSchemes, addCondition, addGroupInfo } from '@core/schema-utils';
36 35 import { of, Subject } from 'rxjs';
37 36 import { WidgetContext } from '@app/modules/home/models/widget-component.models';
38   -import { getDefCenterPosition } from './maps-utils';
  37 +import { getDefCenterPosition, parseArray, parseData, parseFunction, parseWithTranslation } from './maps-utils';
39 38 import { JsonSettingsSchema, WidgetActionDescriptor, DatasourceType, widgetType, Datasource } from '@shared/models/widget.models';
40 39 import { EntityId } from '@shared/models/id/entity-id';
41 40 import { AttributeScope, DataKeyType, LatestTelemetry } from '@shared/models/telemetry/telemetry.models';
... ... @@ -138,7 +137,7 @@ export class MapWidgetController implements MapWidgetInterface {
138 137 else return '';
139 138 }
140 139
141   - getDescriptors(name: string): { [name: string]: ($event: Event) => void } {
  140 + getDescriptors(name: string): { [name: string]: ($event: Event, datasource: Datasource) => void } {
142 141 const descriptors = this.ctx.actionsApi.getActionDescriptors(name);
143 142 const actions = {};
144 143 descriptors.forEach(descriptor => {
... ... @@ -150,9 +149,10 @@ export class MapWidgetController implements MapWidgetInterface {
150 149 onInit() {
151 150 }
152 151
153   - private onCustomAction(descriptor: WidgetActionDescriptor, $event: any, entityInfo: Datasource) {
154   - if ($event && $event.stopPropagation) {
155   - $event?.stopPropagation();
  152 + private onCustomAction(descriptor: WidgetActionDescriptor, $event: Event, entityInfo: Datasource) {
  153 + if ($event) {
  154 + $event.preventDefault();
  155 + $event.stopPropagation();
156 156 }
157 157 const { entityId, entityName, entityLabel, entityType } = entityInfo;
158 158 this.ctx.actionsApi.handleWidgetAction($event, descriptor, {
... ...
... ... @@ -15,8 +15,12 @@
15 15 ///
16 16
17 17 import L from 'leaflet';
18   -import { MarkerSettings, PolygonSettings, PolylineSettings } from './map-models';
  18 +import { FormattedData, MarkerSettings, PolygonSettings, PolylineSettings } from './map-models';
19 19 import { Datasource } from '@app/shared/models/widget.models';
  20 +import _ from 'lodash';
  21 +import { Observable, Observer, of } from 'rxjs';
  22 +import { map } from 'rxjs/operators';
  23 +import { createLabelFromDatasource, hashCode, padValue } from '@core/utils';
20 24
21 25 export function createTooltip(target: L.Layer,
22 26 settings: MarkerSettings | PolylineSettings | PolygonSettings,
... ... @@ -49,7 +53,7 @@ export function createTooltip(target: L.Layer,
49 53
50 54 export function getRatio(firsMoment: number, secondMoment: number, intermediateMoment: number): number {
51 55 return (intermediateMoment - firsMoment) / (secondMoment - firsMoment);
52   -};
  56 +}
53 57
54 58 export function findAngle(startPoint, endPoint) {
55 59 let angle = -Math.atan2(endPoint.latitude - startPoint.latitude, endPoint.longitude - startPoint.longitude);
... ... @@ -65,3 +69,170 @@ export function getDefCenterPosition(position) {
65 69 return position;
66 70 return [0, 0];
67 71 }
  72 +
  73 +
  74 +const imageAspectMap = {};
  75 +
  76 +function imageLoader(imageUrl: string): Observable<HTMLImageElement> {
  77 + return new Observable((observer: Observer<HTMLImageElement>) => {
  78 + const image = new Image();
  79 + image.style.position = 'absolute';
  80 + image.style.left = '-99999px';
  81 + image.style.top = '-99999px';
  82 + image.onload = () => {
  83 + observer.next(image);
  84 + document.body.removeChild(image);
  85 + observer.complete();
  86 + };
  87 + image.onerror = err => {
  88 + observer.error(err);
  89 + document.body.removeChild(image);
  90 + observer.complete();
  91 + };
  92 + document.body.appendChild(image)
  93 + image.src = imageUrl;
  94 + });
  95 +}
  96 +
  97 +export function aspectCache(imageUrl: string): Observable<number> {
  98 + if (imageUrl?.length) {
  99 + const hash = hashCode(imageUrl);
  100 + let aspect = imageAspectMap[hash];
  101 + if (aspect) {
  102 + return of(aspect);
  103 + }
  104 + else return imageLoader(imageUrl).pipe(map(image => {
  105 + aspect = image.width / image.height;
  106 + imageAspectMap[hash] = aspect;
  107 + return aspect;
  108 + }))
  109 + }
  110 +}
  111 +
  112 +function parseTemplate(template: string, data: { $datasource?: Datasource, [key: string]: any },
  113 + translateFn?: (key: string) => string) {
  114 + let res = '';
  115 + try {
  116 + if (template.match(/<link-act/g)) {
  117 + template = template.replace(/<link-act/g, '<a href="#"').replace(/link-act>/g, 'a>')
  118 + .replace(/name=(['"])(.*?)(['"])/g, `class='tb-custom-action' id='$2'`);
  119 + }
  120 + if (translateFn) {
  121 + template = translateFn(template);
  122 + }
  123 + template = createLabelFromDatasource(data.$datasource, template);
  124 + const formatted = template.match(/\${([^}]*):\d*}/g);
  125 + if (formatted)
  126 + formatted.forEach(value => {
  127 + const [variable, digits] = value.replace('${', '').replace('}', '').split(':');
  128 + data[variable] = padValue(data[variable], +digits);
  129 + if (data[variable] === 'NaN') data[variable] = '';
  130 + template = template.replace(value, '${' + variable + '}');
  131 + });
  132 + const variables = template.match(/\${.*?}/g);
  133 + if (variables) {
  134 + variables.forEach(variable => {
  135 + variable = variable.replace('${', '').replace('}', '');
  136 + if (!data[variable])
  137 + data[variable] = '';
  138 + })
  139 + }
  140 + const compiled = _.template(template);
  141 + res = compiled(data);
  142 + }
  143 + catch (ex) {
  144 + console.log(ex, template)
  145 + }
  146 + return res;
  147 +}
  148 +
  149 +type TranslateFunc = (key: string, defaultTranslation?: string) => string;
  150 +
  151 +export const parseWithTranslation = {
  152 +
  153 + translateFn: null,
  154 +
  155 + translate(key: string, defaultTranslation?: string): string {
  156 + if (this.translateFn) {
  157 + return this.translateFn(key, defaultTranslation);
  158 + } else {
  159 + throw console.error('Translate not assigned');
  160 + }
  161 + },
  162 + parseTemplate(template: string, data: object, forceTranslate = false): string {
  163 + return parseTemplate(forceTranslate ? this.translate(template) : template, data, this.translate.bind(this));
  164 + },
  165 + setTranslate(translateFn: TranslateFunc) {
  166 + this.translateFn = translateFn;
  167 + }
  168 +}
  169 +
  170 +export function parseData(input: any[]): FormattedData[] {
  171 + return _(input).groupBy(el => el?.datasource?.entityName)
  172 + .values().value().map((entityArray, i) => {
  173 + const obj = {
  174 + entityName: entityArray[0]?.datasource?.entityName,
  175 + $datasource: entityArray[0]?.datasource as Datasource,
  176 + dsIndex: i,
  177 + deviceType: null
  178 + };
  179 + entityArray.filter(el => el.data.length).forEach(el => {
  180 + obj[el?.dataKey?.label] = el?.data[0][1];
  181 + obj[el?.dataKey?.label + '|ts'] = el?.data[0][0];
  182 + if (el?.dataKey?.label === 'type') {
  183 + obj.deviceType = el?.data[0][1];
  184 + }
  185 + });
  186 + return obj;
  187 + });
  188 +}
  189 +
  190 +export function parseArray(input: any[]): any[] {
  191 + return _(input).groupBy(el => el?.datasource?.entityName)
  192 + .values().value().map((entityArray, dsIndex) =>
  193 + entityArray[0].data.map((el, i) => {
  194 + const obj = {
  195 + entityName: entityArray[0]?.datasource?.entityName,
  196 + $datasource: entityArray[0]?.datasource,
  197 + dsIndex,
  198 + time: el[0],
  199 + deviceType: null
  200 + };
  201 + entityArray.filter(e => e.data.length).forEach(entity => {
  202 + obj[entity?.dataKey?.label] = entity?.data[i][1];
  203 + obj[entity?.dataKey?.label + '|ts'] = entity?.data[0][0];
  204 + if (entity?.dataKey?.label === 'type') {
  205 + obj.deviceType = entity?.data[0][1];
  206 + }
  207 + });
  208 + return obj;
  209 + })
  210 + );
  211 +}
  212 +
  213 +export function parseFunction(source: any, params: string[] = ['def']): (...args: any[]) => any {
  214 + let res = null;
  215 + if (source?.length) {
  216 + try {
  217 + res = new Function(...params, source);
  218 + }
  219 + catch (err) {
  220 + res = null;
  221 + }
  222 + }
  223 + return res;
  224 +}
  225 +
  226 +export function safeExecute(func: (...args: any[]) => any, params = []) {
  227 + let res = null;
  228 + if (func && typeof (func) === 'function') {
  229 + try {
  230 + res = func(...params);
  231 + }
  232 + catch (err) {
  233 + console.log('error in external function:', err);
  234 + res = null;
  235 + }
  236 + }
  237 + return res;
  238 +}
... ...
... ... @@ -14,10 +14,9 @@
14 14 /// limitations under the License.
15 15 ///
16 16
17   -import { aspectCache, parseWithTranslation, safeExecute } from '@app/core/utils';
18 17 import L, { LeafletMouseEvent } from 'leaflet';
19 18 import { FormattedData, MarkerSettings } from './map-models';
20   -import { createTooltip } from './maps-utils';
  19 +import { aspectCache, createTooltip, parseWithTranslation, safeExecute } from './maps-utils';
21 20 import tinycolor from 'tinycolor2';
22 21
23 22 export class Marker {
... ... @@ -50,7 +49,7 @@ export class Marker {
50 49 this.leafletMarker.on('click', (event: LeafletMouseEvent) => {
51 50 for (const action in this.settings.markerClick) {
52 51 if (typeof (this.settings.markerClick[action]) === 'function') {
53   - this.settings.markerClick[action](event, this.data.$datasource);
  52 + this.settings.markerClick[action](event.originalEvent, this.data.$datasource);
54 53 }
55 54 }
56 55 });
... ... @@ -184,4 +183,4 @@ export class Marker {
184 183 setMarkerPosition(latLng) {
185 184 this.leafletMarker.setLatLng(latLng);
186 185 }
187   -}
\ No newline at end of file
  186 +}
... ...
... ... @@ -15,10 +15,9 @@
15 15 ///
16 16
17 17 import L, { LatLngExpression, LatLngTuple, LeafletMouseEvent } from 'leaflet';
18   -import { createTooltip } from './maps-utils';
19   -import { PolygonSettings, FormattedData } from './map-models';
  18 +import { createTooltip, parseWithTranslation, safeExecute } from './maps-utils';
  19 +import { PolygonSettings } from './map-models';
20 20 import { DatasourceData } from '@app/shared/models/widget.models';
21   -import { safeExecute, parseWithTranslation } from '@app/core/utils';
22 21
23 22 export class Polygon {
24 23
... ... @@ -46,7 +45,7 @@ export class Polygon {
46 45 this.leafletPoly.on('click', (event: LeafletMouseEvent) => {
47 46 for (const action in this.settings.polygonClick) {
48 47 if (typeof (this.settings.polygonClick[action]) === 'function') {
49   - this.settings.polygonClick[action](event, polyData.datasource);
  48 + this.settings.polygonClick[action](event.originalEvent, polyData.datasource);
50 49 }
51 50 }
52 51 });
... ...
... ... @@ -17,8 +17,8 @@
17 17 import L, { PolylineDecoratorOptions } from 'leaflet';
18 18 import 'leaflet-polylinedecorator';
19 19
20   -import { safeExecute } from '@app/core/utils';
21 20 import { PolylineSettings } from './map-models';
  21 +import { safeExecute } from '@home/components/widget/lib/maps/maps-utils';
22 22
23 23 export class Polyline {
24 24
... ... @@ -95,4 +95,4 @@ export class Polyline {
95 95 setPolylineLatLngs(latLngs) {
96 96 this.leafletPoly.setLatLngs(latLngs);
97 97 }
98   -}
\ No newline at end of file
  98 +}
... ...
... ... @@ -29,7 +29,7 @@ export class GoogleMap extends LeafletMap {
29 29 super($container, options);
30 30 this.loadGoogle(() => {
31 31 const map = L.map($container).setView(options?.defaultCenterPosition, options?.defaultZoomLevel);
32   - const roads = (L.gridLayer as any).googleMutant({
  32 + (L.gridLayer as any).googleMutant({
33 33 type: options?.gmDefaultMapType || 'roadmap'
34 34 }).addTo(map);
35 35 super.setMap(map);
... ...
... ... @@ -17,9 +17,9 @@
17 17 import L, { LatLngLiteral, LatLngBounds, LatLngTuple } from 'leaflet';
18 18 import LeafletMap from '../leaflet-map';
19 19 import { UnitedMapSettings } from '../map-models';
20   -import { aspectCache, parseFunction } from '@app/core/utils';
21 20 import { Observable } from 'rxjs';
22 21 import { map, filter, switchMap } from 'rxjs/operators';
  22 +import { aspectCache, parseFunction } from '@home/components/widget/lib/maps/maps-utils';
23 23
24 24 const maxZoom = 4;// ?
25 25
... ...
... ... @@ -558,32 +558,6 @@ export const markerClusteringSettingsSchema =
558 558 ]
559 559 };
560 560
561   -export const markerClusteringSettingsSchemaGoogle =
562   -{
563   - schema: {
564   - title: 'Marker Clustering Configuration Google',
565   - type: 'object',
566   - properties: {
567   - gridSize: {
568   - title: 'Maximum radius that a cluster will cover in pixels',
569   - type: 'number',
570   - default: 60
571   - },
572   - minimumClusterSize: {
573   - title: 'The minimum number of markers in a cluster',
574   - type: 'number'
575   - }
576   - },
577   - required: []
578   - },
579   - form: [
580   - 'gridSize',
581   - 'minimumClusterSize'
582   - ]
583   -};
584   -
585   -
586   -
587 561 export const markerClusteringSettingsSchemaLeaflet =
588 562 {
589 563 schema: {
... ... @@ -1271,4 +1245,4 @@ export const tripAnimationSchema = {
1271 1245 }
1272 1246 ]
1273 1247 }]
1274   -}
\ No newline at end of file
  1248 +}
... ...
... ... @@ -40,7 +40,7 @@ import {
40 40 } from '@shared/models/widget.models';
41 41 import { UtilsService } from '@core/services/utils.service';
42 42 import { TranslateService } from '@ngx-translate/core';
43   -import { isDefined, isNumber } from '@core/utils';
  43 +import { hashCode, isDefined, isNumber } from '@core/utils';
44 44 import cssjs from '@core/css/css';
45 45 import { PageLink } from '@shared/models/page/page-link';
46 46 import { Direction, SortOrder, sortOrderFromString } from '@shared/models/page/sort-order';
... ... @@ -230,7 +230,7 @@ export class TimeseriesTableWidgetComponent extends PageComponent implements OnI
230 230
231 231 const cssParser = new cssjs();
232 232 cssParser.testMode = false;
233   - const namespace = 'ts-table-' + this.utils.hashCode(cssString);
  233 + const namespace = 'ts-table-' + hashCode(cssString);
234 234 cssParser.cssPreviewNamespace = namespace;
235 235 cssParser.createStyleElement(namespace, cssString);
236 236 $(this.elementRef.nativeElement).addClass(namespace);
... ...
... ... @@ -22,12 +22,11 @@ import { interpolateOnPointSegment } from 'leaflet-geometryutil';
22 22 import { AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, SecurityContext, ViewChild } from '@angular/core';
23 23 import { MapWidgetController, TbMapWidgetV2 } from '../lib/maps/map-widget2';
24 24 import { MapProviders } from '../lib/maps/map-models';
25   -import { parseArray, parseWithTranslation, safeExecute, parseTemplate } from '@app/core/utils';
26 25 import { initSchema, addToSchema, addGroupInfo } from '@app/core/schema-utils';
27 26 import { tripAnimationSchema } from '../lib/maps/schemes';
28 27 import { DomSanitizer } from '@angular/platform-browser';
29 28 import { WidgetContext } from '@app/modules/home/models/widget-component.models';
30   -import { findAngle, getRatio } from '../lib/maps/maps-utils';
  29 +import { findAngle, getRatio, parseArray, parseWithTranslation, safeExecute } from '../lib/maps/maps-utils';
31 30 import { JsonSettingsSchema, WidgetConfig } from '@shared/models/widget.models';
32 31 import moment from 'moment';
33 32
... ...
... ... @@ -20,4 +20,3 @@ export * from './keyboard-shortcut.pipe';
20 20 export * from './milliseconds-to-time-string.pipe';
21 21 export * from './nospace.pipe';
22 22 export * from './truncate.pipe';
23   -export * from './template.pipe';
... ...
1   -///
2   -/// Copyright © 2016-2020 The Thingsboard Authors
3   -///
4   -/// Licensed under the Apache License, Version 2.0 (the "License");
5   -/// you may not use this file except in compliance with the License.
6   -/// You may obtain a copy of the License at
7   -///
8   -/// http://www.apache.org/licenses/LICENSE-2.0
9   -///
10   -/// Unless required by applicable law or agreed to in writing, software
11   -/// distributed under the License is distributed on an "AS IS" BASIS,
12   -/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   -/// See the License for the specific language governing permissions and
14   -/// limitations under the License.
15   -///
16   -
17   -import { Pipe, PipeTransform } from '@angular/core';
18   -import { parseTemplate, parseWithTranslation } from '@app/core/utils';
19   -
20   -@Pipe({ name: 'tbParseTemplate' })
21   -export class TbTemplatePipe implements PipeTransform {
22   - transform(template, data): string {
23   - return parseWithTranslation.parseTemplate(template, data);
24   - }
25   -}
... ... @@ -131,7 +131,6 @@ import { LedLightComponent } from '@shared/components/led-light.component';
131 131 import { TbJsonToStringDirective } from '@shared/components/directives/tb-json-to-string.directive';
132 132 import { JsonObjectEditDialogComponent } from '@shared/components/dialog/json-object-edit-dialog.component';
133 133 import { HistorySelectorComponent } from './components/time/history-selector/history-selector.component';
134   -import { TbTemplatePipe } from '@shared/pipe/template.pipe';
135 134 import { EntityGatewaySelectComponent } from '@shared/components/entity/entity-gateway-select.component';
136 135 import { QueueTypeListComponent } from '@shared/components/queue/queue-type-list.component';
137 136
... ... @@ -215,7 +214,6 @@ import { QueueTypeListComponent } from '@shared/components/queue/queue-type-list
215 214 HighlightPipe,
216 215 TruncatePipe,
217 216 TbJsonPipe,
218   - TbTemplatePipe,
219 217 KeyboardShortcutPipe,
220 218 TbJsonToStringDirective,
221 219 JsonObjectEditDialogComponent,
... ... @@ -377,7 +375,6 @@ import { QueueTypeListComponent } from '@shared/components/queue/queue-type-list
377 375 HighlightPipe,
378 376 TruncatePipe,
379 377 TbJsonPipe,
380   - TbTemplatePipe,
381 378 KeyboardShortcutPipe,
382 379 TranslateModule,
383 380 JsonObjectEditDialogComponent,
... ...