@igo2/core 1.15.3 → 1.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__ivy_ngcc__/locale/en.auth.json +29 -29
- package/__ivy_ngcc__/locale/en.common.json +43 -43
- package/__ivy_ngcc__/locale/en.context.json +199 -199
- package/__ivy_ngcc__/locale/en.core.json +29 -29
- package/__ivy_ngcc__/locale/en.geo.json +805 -805
- package/__ivy_ngcc__/locale/en.integration.json +123 -123
- package/__ivy_ngcc__/locale/fr.auth.json +32 -32
- package/__ivy_ngcc__/locale/fr.common.json +43 -43
- package/__ivy_ngcc__/locale/fr.context.json +199 -199
- package/__ivy_ngcc__/locale/fr.core.json +29 -29
- package/__ivy_ngcc__/locale/fr.geo.json +805 -805
- package/__ivy_ngcc__/locale/fr.integration.json +125 -125
- package/esm2020/igo2-core.mjs +4 -4
- package/esm2020/lib/activity/activity.interceptor.mjs +30 -30
- package/esm2020/lib/activity/activity.module.mjs +30 -30
- package/esm2020/lib/activity/activity.service.mjs +33 -33
- package/esm2020/lib/activity/index.mjs +3 -3
- package/esm2020/lib/analytics/index.mjs +2 -2
- package/esm2020/lib/analytics/shared/analytics.interface.mjs +2 -2
- package/esm2020/lib/analytics/shared/analytics.service.mjs +81 -81
- package/esm2020/lib/analytics/shared/index.mjs +3 -3
- package/esm2020/lib/compression/compressedData.interface.mjs +2 -2
- package/esm2020/lib/compression/compression.service.mjs +140 -140
- package/esm2020/lib/compression/index.mjs +3 -3
- package/esm2020/lib/config/config.interface.mjs +2 -2
- package/esm2020/lib/config/config.module.mjs +23 -23
- package/esm2020/lib/config/config.provider.mjs +21 -21
- package/esm2020/lib/config/config.service.mjs +52 -52
- package/esm2020/lib/config/index.mjs +4 -4
- package/esm2020/lib/config/version.mjs +5 -5
- package/esm2020/lib/core.module.mjs +92 -92
- package/esm2020/lib/gesture/gesture.module.mjs +30 -30
- package/esm2020/lib/gesture/gesture.provider.mjs +16 -16
- package/esm2020/lib/language/index.mjs +2 -2
- package/esm2020/lib/language/language.module.mjs +39 -39
- package/esm2020/lib/language/shared/index.mjs +5 -5
- package/esm2020/lib/language/shared/language.interface.mjs +2 -2
- package/esm2020/lib/language/shared/language.loader.mjs +26 -26
- package/esm2020/lib/language/shared/language.provider.mjs +22 -22
- package/esm2020/lib/language/shared/language.service.mjs +32 -32
- package/esm2020/lib/language/shared/missing-translation.guard.mjs +16 -16
- package/esm2020/lib/media/index.mjs +3 -3
- package/esm2020/lib/media/media.enum.mjs +12 -12
- package/esm2020/lib/media/media.service.mjs +76 -76
- package/esm2020/lib/message/index.mjs +2 -2
- package/esm2020/lib/message/message.module.mjs +56 -56
- package/esm2020/lib/message/shared/index.mjs +4 -4
- package/esm2020/lib/message/shared/message.enum.mjs +10 -10
- package/esm2020/lib/message/shared/message.interface.mjs +2 -2
- package/esm2020/lib/message/shared/message.service.mjs +201 -201
- package/esm2020/lib/network/index.mjs +3 -3
- package/esm2020/lib/network/network.interfaces.mjs +2 -2
- package/esm2020/lib/network/network.service.mjs +60 -60
- package/esm2020/lib/regex/index.mjs +3 -3
- package/esm2020/lib/regex/regex.interface.mjs +2 -2
- package/esm2020/lib/regex/regex.service.mjs +27 -27
- package/esm2020/lib/request/error.interceptor.mjs +66 -66
- package/esm2020/lib/request/error.module.mjs +39 -39
- package/esm2020/lib/request/index.mjs +3 -3
- package/esm2020/lib/request/logging.interceptor.mjs +29 -29
- package/esm2020/lib/request/logging.module.mjs +30 -30
- package/esm2020/lib/route/route.interface.mjs +2 -2
- package/esm2020/lib/route/route.service.mjs +71 -71
- package/esm2020/lib/storage/index.mjs +3 -3
- package/esm2020/lib/storage/storage.interface.mjs +13 -13
- package/esm2020/lib/storage/storage.service.mjs +79 -79
- package/esm2020/public_api.mjs +28 -28
- package/fesm2015/igo2-core.mjs +1330 -1330
- package/fesm2015/igo2-core.mjs.map +1 -1
- package/fesm2020/igo2-core.mjs +1275 -1275
- package/fesm2020/igo2-core.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/activity/activity.interceptor.d.ts +11 -11
- package/lib/activity/activity.module.d.ts +8 -8
- package/lib/activity/activity.service.d.ts +11 -11
- package/lib/activity/index.d.ts +2 -2
- package/lib/analytics/index.d.ts +1 -1
- package/lib/analytics/shared/analytics.interface.d.ts +6 -6
- package/lib/analytics/shared/analytics.service.d.ts +23 -23
- package/lib/analytics/shared/index.d.ts +2 -2
- package/lib/compression/compressedData.interface.d.ts +5 -5
- package/lib/compression/compression.service.d.ts +15 -15
- package/lib/compression/index.d.ts +2 -2
- package/lib/config/config.interface.d.ts +6 -6
- package/lib/config/config.module.d.ts +8 -8
- package/lib/config/config.provider.d.ts +15 -15
- package/lib/config/config.service.d.ts +18 -18
- package/lib/config/index.d.ts +3 -3
- package/lib/config/version.d.ts +5 -5
- package/lib/core.module.d.ts +19 -19
- package/lib/gesture/gesture.module.d.ts +9 -9
- package/lib/gesture/gesture.provider.d.ts +7 -7
- package/lib/language/index.d.ts +1 -1
- package/lib/language/language.module.d.ts +9 -9
- package/lib/language/shared/index.d.ts +4 -4
- package/lib/language/shared/language.interface.d.ts +3 -3
- package/lib/language/shared/language.loader.d.ts +11 -11
- package/lib/language/shared/language.provider.d.ts +15 -15
- package/lib/language/shared/language.service.d.ts +13 -13
- package/lib/language/shared/missing-translation.guard.d.ts +4 -4
- package/lib/media/index.d.ts +2 -2
- package/lib/media/media.enum.d.ts +9 -9
- package/lib/media/media.service.d.ts +16 -16
- package/lib/message/index.d.ts +1 -1
- package/lib/message/message.module.d.ts +10 -10
- package/lib/message/shared/index.d.ts +4 -4
- package/lib/message/shared/message.enum.d.ts +8 -8
- package/lib/message/shared/message.interface.d.ts +21 -21
- package/lib/message/shared/message.service.d.ts +31 -31
- package/lib/network/index.d.ts +2 -2
- package/lib/network/network.interfaces.d.ts +3 -3
- package/lib/network/network.service.d.ts +21 -21
- package/lib/regex/index.d.ts +2 -2
- package/lib/regex/regex.interface.d.ts +3 -3
- package/lib/regex/regex.service.d.ts +12 -12
- package/lib/request/error.interceptor.d.ts +14 -14
- package/lib/request/error.module.d.ts +9 -9
- package/lib/request/index.d.ts +2 -2
- package/lib/request/logging.interceptor.d.ts +8 -8
- package/lib/request/logging.module.d.ts +8 -8
- package/lib/route/route.interface.d.ts +23 -23
- package/lib/route/route.service.d.ts +19 -19
- package/lib/storage/index.d.ts +2 -2
- package/lib/storage/storage.interface.d.ts +20 -20
- package/lib/storage/storage.service.d.ts +19 -19
- package/locale/en.auth.json +29 -29
- package/locale/en.common.json +43 -43
- package/locale/en.context.json +199 -199
- package/locale/en.core.json +29 -29
- package/locale/en.geo.json +805 -805
- package/locale/en.integration.json +123 -123
- package/locale/fr.auth.json +32 -32
- package/locale/fr.common.json +43 -43
- package/locale/fr.context.json +199 -199
- package/locale/fr.core.json +29 -29
- package/locale/fr.geo.json +805 -805
- package/locale/fr.integration.json +125 -125
- package/package.json +2 -2
- package/public_api.d.ts +24 -24
- package/style/all.theming.scss +5 -5
- package/style/core.theming.scss +9 -9
- package/style/foreground.scss +20 -20
- package/style/index.theming.scss +780 -780
- package/style/material.font.scss +9 -9
- package/style/partial/core.variables.scss +4 -4
- package/style/partial/media.scss +80 -80
- package/style/setup.scss +2 -2
- package/style/themes/blue.theme.scss +19 -19
- package/style/themes/bluedark.theme.scss +51 -51
- package/style/themes/bluedq.theme.scss +52 -52
- package/style/themes/bluegrey.theme.scss +16 -16
- package/style/themes/dark.theme.scss +16 -16
- package/style/themes/deeppurple.theme.scss +16 -16
- package/style/themes/indigo.theme.scss +16 -16
- package/style/themes/orange.theme.scss +16 -16
- package/style/themes/teal.theme.scss +16 -16
- package/style/theming.scss +5 -5
- package/style/typography.scss +17 -17
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../config/config.service";
|
|
4
|
-
export class AnalyticsService {
|
|
5
|
-
constructor(config) {
|
|
6
|
-
this.config = config;
|
|
7
|
-
this.options = this.config.getConfig('analytics') || {};
|
|
8
|
-
if (this.options.provider === 'matomo') {
|
|
9
|
-
this.initMatomo();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
get paq() {
|
|
13
|
-
return (window._paq = window._paq || []);
|
|
14
|
-
}
|
|
15
|
-
initMatomo() {
|
|
16
|
-
if (!this.options.url || !this.options.id) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const url = this.options.url.substr(-1) === '/'
|
|
20
|
-
? this.options.url + 'matomo'
|
|
21
|
-
: this.options.url;
|
|
22
|
-
// this.paq.push(['trackPageView']);
|
|
23
|
-
// this.paq.push(['enableLinkTracking']);
|
|
24
|
-
(() => {
|
|
25
|
-
this.paq.push(['setTrackerUrl', url + '.php']);
|
|
26
|
-
this.paq.push(['setSiteId', this.options.id]);
|
|
27
|
-
const g = document.createElement('script');
|
|
28
|
-
const s = document.getElementsByTagName('script')[0];
|
|
29
|
-
g.type = 'text/javascript';
|
|
30
|
-
g.async = true;
|
|
31
|
-
g.defer = true;
|
|
32
|
-
g.src = url + '.js';
|
|
33
|
-
s.parentNode.insertBefore(g, s);
|
|
34
|
-
})();
|
|
35
|
-
}
|
|
36
|
-
setUser(user, profils) {
|
|
37
|
-
if (this.options.provider === 'matomo') {
|
|
38
|
-
if (!user) {
|
|
39
|
-
this.paq.push(['resetUserId']);
|
|
40
|
-
this.paq.push(['deleteCustomVariable', 1, 'user']);
|
|
41
|
-
this.paq.push(['deleteCustomVariable', 2, 'name']);
|
|
42
|
-
this.paq.push(['deleteCustomVariable', 3, 'profils']);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.paq.push(['setUserId', user.id]);
|
|
46
|
-
const name = `${user.firstName} ${user.lastName}`;
|
|
47
|
-
this.paq.push(['setCustomVariable', 1, 'user', user.sourceId, 'visit']);
|
|
48
|
-
this.paq.push(['setCustomVariable', 2, 'name', name, 'visit']);
|
|
49
|
-
this.paq.push(['setCustomVariable', 3, 'profils', profils, 'visit']);
|
|
50
|
-
}
|
|
51
|
-
this.paq.push(['trackPageView']);
|
|
52
|
-
this.paq.push(['enableLinkTracking']);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
trackSearch(term, nbResults) {
|
|
56
|
-
if (this.options.provider === 'matomo') {
|
|
57
|
-
this.paq.push(['trackSiteSearch', term, false, nbResults]);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
trackEvent(category, action, name) {
|
|
61
|
-
if (this.options.provider === 'matomo') {
|
|
62
|
-
this.paq.push(['trackEvent', category, action, name]);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Function that tracks layers added to the map
|
|
67
|
-
*/
|
|
68
|
-
trackLayer(category, action, parameters) {
|
|
69
|
-
if (this.options.provider === 'matomo')
|
|
70
|
-
this.paq.push(['trackEvent', category, action, parameters]);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
AnalyticsService.ɵfac = function AnalyticsService_Factory(t) { return new (t || AnalyticsService)(i0.ɵɵinject(i1.ConfigService)); };
|
|
74
|
-
AnalyticsService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AnalyticsService, factory: AnalyticsService.ɵfac, providedIn: 'root' });
|
|
75
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsService, [{
|
|
76
|
-
type: Injectable,
|
|
77
|
-
args: [{
|
|
78
|
-
providedIn: 'root'
|
|
79
|
-
}]
|
|
80
|
-
}], function () { return [{ type: i1.ConfigService }]; }, null); })();
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../config/config.service";
|
|
4
|
+
export class AnalyticsService {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.options = this.config.getConfig('analytics') || {};
|
|
8
|
+
if (this.options.provider === 'matomo') {
|
|
9
|
+
this.initMatomo();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
get paq() {
|
|
13
|
+
return (window._paq = window._paq || []);
|
|
14
|
+
}
|
|
15
|
+
initMatomo() {
|
|
16
|
+
if (!this.options.url || !this.options.id) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const url = this.options.url.substr(-1) === '/'
|
|
20
|
+
? this.options.url + 'matomo'
|
|
21
|
+
: this.options.url;
|
|
22
|
+
// this.paq.push(['trackPageView']);
|
|
23
|
+
// this.paq.push(['enableLinkTracking']);
|
|
24
|
+
(() => {
|
|
25
|
+
this.paq.push(['setTrackerUrl', url + '.php']);
|
|
26
|
+
this.paq.push(['setSiteId', this.options.id]);
|
|
27
|
+
const g = document.createElement('script');
|
|
28
|
+
const s = document.getElementsByTagName('script')[0];
|
|
29
|
+
g.type = 'text/javascript';
|
|
30
|
+
g.async = true;
|
|
31
|
+
g.defer = true;
|
|
32
|
+
g.src = url + '.js';
|
|
33
|
+
s.parentNode.insertBefore(g, s);
|
|
34
|
+
})();
|
|
35
|
+
}
|
|
36
|
+
setUser(user, profils) {
|
|
37
|
+
if (this.options.provider === 'matomo') {
|
|
38
|
+
if (!user) {
|
|
39
|
+
this.paq.push(['resetUserId']);
|
|
40
|
+
this.paq.push(['deleteCustomVariable', 1, 'user']);
|
|
41
|
+
this.paq.push(['deleteCustomVariable', 2, 'name']);
|
|
42
|
+
this.paq.push(['deleteCustomVariable', 3, 'profils']);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.paq.push(['setUserId', user.id]);
|
|
46
|
+
const name = `${user.firstName} ${user.lastName}`;
|
|
47
|
+
this.paq.push(['setCustomVariable', 1, 'user', user.sourceId, 'visit']);
|
|
48
|
+
this.paq.push(['setCustomVariable', 2, 'name', name, 'visit']);
|
|
49
|
+
this.paq.push(['setCustomVariable', 3, 'profils', profils, 'visit']);
|
|
50
|
+
}
|
|
51
|
+
this.paq.push(['trackPageView']);
|
|
52
|
+
this.paq.push(['enableLinkTracking']);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
trackSearch(term, nbResults) {
|
|
56
|
+
if (this.options.provider === 'matomo') {
|
|
57
|
+
this.paq.push(['trackSiteSearch', term, false, nbResults]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
trackEvent(category, action, name) {
|
|
61
|
+
if (this.options.provider === 'matomo') {
|
|
62
|
+
this.paq.push(['trackEvent', category, action, name]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Function that tracks layers added to the map
|
|
67
|
+
*/
|
|
68
|
+
trackLayer(category, action, parameters) {
|
|
69
|
+
if (this.options.provider === 'matomo')
|
|
70
|
+
this.paq.push(['trackEvent', category, action, parameters]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
AnalyticsService.ɵfac = function AnalyticsService_Factory(t) { return new (t || AnalyticsService)(i0.ɵɵinject(i1.ConfigService)); };
|
|
74
|
+
AnalyticsService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AnalyticsService, factory: AnalyticsService.ɵfac, providedIn: 'root' });
|
|
75
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsService, [{
|
|
76
|
+
type: Injectable,
|
|
77
|
+
args: [{
|
|
78
|
+
providedIn: 'root'
|
|
79
|
+
}]
|
|
80
|
+
}], function () { return [{ type: i1.ConfigService }]; }, null); })();
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvYW5hbHl0aWNzL3NoYXJlZC9hbmFseXRpY3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTM0MsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUFvQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFWRCxJQUFJLEdBQUc7UUFDTCxPQUFPLENBQUUsTUFBYyxDQUFDLElBQUksR0FBSSxNQUFjLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFVTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE9BQU87U0FDUjtRQUNELE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLFFBQVE7WUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBRXZCLG9DQUFvQztRQUNwQyx5Q0FBeUM7UUFDekMsQ0FBQyxHQUFHLEVBQUU7WUFDSixJ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QUFDLFFBQWdCLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDOUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLFFBQWdCLEVBQUUsTUFBYyxFQUFFLFVBQWU7UUFDakUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVoRSxDQUFDOztnRkF2Rk0sZ0JBQWdCO3NFQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCLG1CQUZmLE1BQU07dUZBRVAsZ0JBQWdCO2NBSDVCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5cbmltcG9ydCB7IEFuYWx5dGljc09wdGlvbnMgfSBmcm9tICcuL2FuYWx5dGljcy5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBvcHRpb25zOiBBbmFseXRpY3NPcHRpb25zO1xuXG4gIGdldCBwYXEoKSB7XG4gICAgcmV0dXJuICgod2luZG93IGFzIGFueSkuX3BhcSA9ICh3aW5kb3cgYXMgYW55KS5fcGFxIHx8IFtdKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlKSB7XG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhbmFseXRpY3MnKSB8fCB7fTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvdmlkZXIgPT09ICdtYXRvbW8nKSB7XG4gICAgICB0aGlzLmluaXRNYXRvbW8oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRNYXRvbW8oKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudXJsIHx8ICF0aGlzLm9wdGlvbnMuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdXJsID1cbiAgICAgIHRoaXMub3B0aW9ucy51cmwuc3Vic3RyKC0xKSA9PT0gJy8nXG4gICAgICAgID8gdGhpcy5vcHRpb25zLnVybCArICdtYXRvbW8nXG4gICAgICAgIDogdGhpcy5vcHRpb25zLnVybDtcblxuICAgIC8vIHRoaXMucGFxLnB1c2goWyd0cmFja1BhZ2VWaWV3J10pO1xuICAgIC8vIHRoaXMucGFxLnB1c2goWydlbmFibGVMaW5rVHJhY2tpbmcnXSk7XG4gICAgKCgpID0+IHtcbiAgICAgIHRoaXMucGFxLnB1c2goWydzZXRUcmFja2VyVXJsJywgdXJsICsgJy5waHAnXSk7XG4gICAgICB0aGlzLnBhcS5wdXNoKFsnc2V0U2l0ZUlkJywgdGhpcy5vcHRpb25zLmlkXSk7XG4gICAgICBjb25zdCBnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgZy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICBnLmFzeW5jID0gdHJ1ZTtcbiAgICAgIGcuZGVmZXIgPSB0cnVlO1xuICAgICAgZy5zcmMgPSB1cmwgKyAnLmpzJztcbiAgICAgIHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZywgcyk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyKFxuICAgIHVzZXI/OiB7XG4gICAgICBpZDogbnVtYmVyO1xuICAgICAgc291cmNlSWQ/OiBzdHJpbmc7XG4gICAgICBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gICAgICBsYXN0TmFtZT86IHN0cmluZztcbiAgICB9LFxuICAgIHByb2ZpbHM/OiBzdHJpbmdbXVxuICApIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnByb3ZpZGVyID09PSAnbWF0b21vJykge1xuICAgICAgaWYgKCF1c2VyKSB7XG4gICAgICAgIHRoaXMucGFxLnB1c2goWydyZXNldFVzZXJJZCddKTtcbiAgICAgICAgdGhpcy5wYXEucHVzaChbJ2RlbGV0ZUN1c3RvbVZhcmlhYmxlJywgMSwgJ3VzZXInXSk7XG4gICAgICAgIHRoaXMucGFxLnB1c2goWydkZWxldGVDdXN0b21WYXJpYWJsZScsIDIsICduYW1lJ10pO1xuICAgICAgICB0aGlzLnBhcS5wdXNoKFsnZGVsZXRlQ3VzdG9tVmFyaWFibGUnLCAzLCAncHJvZmlscyddKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFxLnB1c2goWydzZXRVc2VySWQnLCB1c2VyLmlkXSk7XG5cbiAgICAgICAgY29uc3QgbmFtZSA9IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YDtcbiAgICAgICAgdGhpcy5wYXEucHVzaChbJ3NldEN1c3RvbVZhcmlhYmxlJywgMSwgJ3VzZXInLCB1c2VyLnNvdXJjZUlkLCAndmlzaXQnXSk7XG4gICAgICAgIHRoaXMucGFxLnB1c2goWydzZXRDdXN0b21WYXJpYWJsZScsIDIsICduYW1lJywgbmFtZSwgJ3Zpc2l0J10pO1xuICAgICAgICB0aGlzLnBhcS5wdXNoKFsnc2V0Q3VzdG9tVmFyaWFibGUnLCAzLCAncHJvZmlscycsIHByb2ZpbHMsICd2aXNpdCddKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wYXEucHVzaChbJ3RyYWNrUGFnZVZpZXcnXSk7XG4gICAgICB0aGlzLnBhcS5wdXNoKFsnZW5hYmxlTGlua1RyYWNraW5nJ10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmFja1NlYXJjaCh0ZXJtOiBzdHJpbmcsIG5iUmVzdWx0czogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5wcm92aWRlciA9PT0gJ21hdG9tbycpIHtcbiAgICAgIHRoaXMucGFxLnB1c2goWyd0cmFja1NpdGVTZWFyY2gnLCB0ZXJtLCBmYWxzZSwgbmJSZXN1bHRzXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrRXZlbnQoY2F0ZWdvcnk6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvdmlkZXIgPT09ICdtYXRvbW8nKSB7XG4gICAgICB0aGlzLnBhcS5wdXNoKFsndHJhY2tFdmVudCcsIGNhdGVnb3J5LCBhY3Rpb24sIG5hbWVdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCB0cmFja3MgbGF5ZXJzIGFkZGVkIHRvIHRoZSBtYXBcbiAgICovXG4gIHB1YmxpYyB0cmFja0xheWVyKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXJzOiBhbnkpe1xuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvdmlkZXIgPT09ICdtYXRvbW8nKVxuICAgICAgICAgIHRoaXMucGFxLnB1c2goWyd0cmFja0V2ZW50JywgY2F0ZWdvcnksIGFjdGlvbiwgcGFyYW1ldGVyc10pO1xuXG4gICAgICB9XG4gICAgfVxuXG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './analytics.service';
|
|
2
|
-
export * from './analytics.interface';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './analytics.service';
|
|
2
|
+
export * from './analytics.interface';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvYW5hbHl0aWNzL3NoYXJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzLmludGVyZmFjZSc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3NlZERhdGEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2NvbXByZXNzaW9uL2NvbXByZXNzZWREYXRhLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb21wcmVzc2VkRGF0YSB7XG4gICAgbGVuZ3RoOiBudW1iZXI7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG9iamVjdDogYW55O1xufVxuIl19
|
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
function getNumber(v, endposition, length) {
|
|
5
|
-
/* tslint:disable:no-bitwise*/
|
|
6
|
-
const mask = ((1 << length) - 1);
|
|
7
|
-
return (v >> endposition) & mask;
|
|
8
|
-
/* tslint:enable:no-bitwise*/
|
|
9
|
-
}
|
|
10
|
-
export class CompressionService {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.base64Index = new Map();
|
|
13
|
-
this.indexBase64 = new Map();
|
|
14
|
-
this.generateBase64Index();
|
|
15
|
-
}
|
|
16
|
-
generateBase64Index() {
|
|
17
|
-
// https://fr.wikipedia.org/wiki/Base64
|
|
18
|
-
// A-Z => [0, 25]
|
|
19
|
-
for (let i = 0; i < 26; i++) {
|
|
20
|
-
this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);
|
|
21
|
-
this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));
|
|
22
|
-
}
|
|
23
|
-
// a-z => [26, 51]
|
|
24
|
-
for (let i = 0; i < 26; i++) {
|
|
25
|
-
this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);
|
|
26
|
-
this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));
|
|
27
|
-
}
|
|
28
|
-
// 0-9 => [52, 61]
|
|
29
|
-
for (let i = 0; i < 10; i++) {
|
|
30
|
-
this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);
|
|
31
|
-
this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));
|
|
32
|
-
}
|
|
33
|
-
// + / => [62, 63]
|
|
34
|
-
this.base64Index.set('+', 62);
|
|
35
|
-
this.base64Index.set('/', 63);
|
|
36
|
-
this.indexBase64.set(62, '+');
|
|
37
|
-
this.indexBase64.set(63, '/');
|
|
38
|
-
}
|
|
39
|
-
compressBlob(blob) {
|
|
40
|
-
if (!blob) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const observable = new Observable((observer) => {
|
|
44
|
-
const reader = new FileReader();
|
|
45
|
-
reader.readAsDataURL(blob);
|
|
46
|
-
reader.onload = () => {
|
|
47
|
-
const base64 = reader.result.valueOf();
|
|
48
|
-
const text64 = base64.substr(base64.indexOf(',') + 1);
|
|
49
|
-
const compressed = this.compressStringBase64(text64);
|
|
50
|
-
const compressedData = { length: text64.length,
|
|
51
|
-
type: blob.type,
|
|
52
|
-
object: compressed };
|
|
53
|
-
observer.next(compressedData);
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
return observable;
|
|
57
|
-
}
|
|
58
|
-
decompressBlob(compressedData) {
|
|
59
|
-
/* tslint:disable:no-bitwise*/
|
|
60
|
-
const object = compressedData.object;
|
|
61
|
-
const length = compressedData.length;
|
|
62
|
-
const decompressed = this.decompressStringBase64(object, length);
|
|
63
|
-
const byteCharacters = atob(decompressed);
|
|
64
|
-
const byteNumbers = new Array(byteCharacters.length);
|
|
65
|
-
for (let i = 0; i < byteCharacters.length; i++) {
|
|
66
|
-
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
67
|
-
}
|
|
68
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
69
|
-
const blob = new Blob([byteArray], { type: compressedData.type });
|
|
70
|
-
/* tslint:enable:no-bitwise*/
|
|
71
|
-
return blob;
|
|
72
|
-
}
|
|
73
|
-
compressStringBase64(s) {
|
|
74
|
-
/* tslint:disable:no-bitwise*/
|
|
75
|
-
let out = '';
|
|
76
|
-
let bits = 16;
|
|
77
|
-
let chr = 0;
|
|
78
|
-
let rem = 0;
|
|
79
|
-
for (const c of s) {
|
|
80
|
-
const value = this.base64Index.get(c);
|
|
81
|
-
if (bits > 6) {
|
|
82
|
-
bits -= 6;
|
|
83
|
-
chr += value << bits;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
rem = 6 - bits;
|
|
87
|
-
chr += value >> rem;
|
|
88
|
-
out += String.fromCharCode(chr);
|
|
89
|
-
chr = (value) << (16 - rem);
|
|
90
|
-
bits = 16 - rem;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (s.length % 8 !== 0) {
|
|
94
|
-
out += String.fromCharCode(chr);
|
|
95
|
-
}
|
|
96
|
-
/* tslint:enable:no-bitwise*/
|
|
97
|
-
return String.fromCharCode(9731) + out;
|
|
98
|
-
}
|
|
99
|
-
decompressStringBase64(c, length) {
|
|
100
|
-
/* tslint:disable:no-bitwise*/
|
|
101
|
-
if (!c) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (c.charCodeAt(0) !== 9731) {
|
|
105
|
-
return c;
|
|
106
|
-
}
|
|
107
|
-
let chr = 0;
|
|
108
|
-
let rem = 0;
|
|
109
|
-
let bits = 16;
|
|
110
|
-
let out = '';
|
|
111
|
-
let j = 1;
|
|
112
|
-
let value = c.charCodeAt(j);
|
|
113
|
-
for (let i = 0; i < length; i++) {
|
|
114
|
-
if (bits > 6) {
|
|
115
|
-
bits -= 6;
|
|
116
|
-
chr = getNumber(value, bits, 6);
|
|
117
|
-
out += this.indexBase64.get(chr);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
rem = 6 - bits;
|
|
121
|
-
chr = getNumber(value, 0, bits) << rem;
|
|
122
|
-
value = c.charCodeAt(++j);
|
|
123
|
-
chr += getNumber(value, 16 - rem, rem);
|
|
124
|
-
out += this.indexBase64.get(chr);
|
|
125
|
-
bits = 16 - rem;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return out;
|
|
129
|
-
/* tslint:enable:no-bitwise*/
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
CompressionService.ɵfac = function CompressionService_Factory(t) { return new (t || CompressionService)(); };
|
|
133
|
-
CompressionService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CompressionService, factory: CompressionService.ɵfac, providedIn: 'root' });
|
|
134
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompressionService, [{
|
|
135
|
-
type: Injectable,
|
|
136
|
-
args: [{
|
|
137
|
-
providedIn: 'root'
|
|
138
|
-
}]
|
|
139
|
-
}], function () { return []; }, null); })();
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb21wcmVzc2lvbi9jb21wcmVzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQzs7QUFHNUMsU0FBUyxTQUFTLENBQUMsQ0FBUyxFQUFFLFdBQW1CLEVBQUUsTUFBYztJQUMvRCw4QkFBOEI7SUFDOUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyw2QkFBNkI7QUFDL0IsQ0FBQztBQUtELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0I7UUFIUSxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFHOUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQjtRQUN6Qix1Q0FBdUM7UUFDdkMsaUJBQWlCO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRTtRQUNELGtCQUFrQjtRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELGtCQUFrQjtRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELGtCQUFrQjtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FB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QkFDWixJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUNWLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNmLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ3ZDLEtBQUssR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDakI7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO1FBQ1gsNkJBQTZCO0lBQy9CLENBQUM7O29GQS9IVSxrQkFBa0I7d0VBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBRmpCLE1BQU07dUZBRVAsa0JBQWtCO2NBSDlCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tcHJlc3NlZERhdGEgfSBmcm9tICcuL2NvbXByZXNzZWREYXRhLmludGVyZmFjZSc7XHJcblxyXG5mdW5jdGlvbiBnZXROdW1iZXIodjogbnVtYmVyLCBlbmRwb3NpdGlvbjogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikge1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWJpdHdpc2UqL1xyXG4gIGNvbnN0IG1hc2sgPSAoKDEgPDwgbGVuZ3RoKSAtIDEpO1xyXG4gIHJldHVybiAodiA+PiBlbmRwb3NpdGlvbikgJiBtYXNrO1xyXG4gIC8qIHRzbGludDplbmFibGU6bm8tYml0d2lzZSovXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXByZXNzaW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBiYXNlNjRJbmRleCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XHJcbiAgcHJpdmF0ZSBpbmRleEJhc2U2NCA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5nZW5lcmF0ZUJhc2U2NEluZGV4KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlQmFzZTY0SW5kZXgoKSB7XHJcbiAgICAvLyBodHRwczovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjRcclxuICAgIC8vIEEtWiA9PiBbMCwgMjVdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDI2OyBpKyspIHtcclxuICAgICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSArIGkpLCBpKTtcclxuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSwgU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSArIGkpKTtcclxuICAgIH1cclxuICAgIC8vIGEteiA9PiBbMjYsIDUxXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7XHJcbiAgICAgIHRoaXMuYmFzZTY0SW5kZXguc2V0KFN0cmluZy5mcm9tQ2hhckNvZGUoJ2EnLmNoYXJDb2RlQXQoMCkgKyBpKSwgaSArIDI2KTtcclxuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSArIDI2LCBTdHJpbmcuZnJvbUNoYXJDb2RlKCdhJy5jaGFyQ29kZUF0KDApICsgaSkpO1xyXG4gICAgfVxyXG4gICAgLy8gMC05ID0+IFs1MiwgNjFdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcclxuICAgICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoU3RyaW5nLmZyb21DaGFyQ29kZSgnMCcuY2hhckNvZGVBdCgwKSArIGkpLCBpICsgNTIpO1xyXG4gICAgICB0aGlzLmluZGV4QmFzZTY0LnNldChpICsgNTIsIFN0cmluZy5mcm9tQ2hhckNvZGUoJzAnLmNoYXJDb2RlQXQoMCkgKyBpKSk7XHJcbiAgICB9XHJcbiAgICAvLyArIC8gPT4gWzYyLCA2M11cclxuICAgIHRoaXMuYmFzZTY0SW5kZXguc2V0KCcrJywgNjIpO1xyXG4gICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoJy8nLCA2Myk7XHJcbiAgICB0aGlzLmluZGV4QmFzZTY0LnNldCg2MiwgJysnKTtcclxuICAgIHRoaXMuaW5kZXhCYXNlNjQuc2V0KDYzLCAnLycpO1xyXG4gIH1cclxuXHJcbiAgY29tcHJlc3NCbG9iKGJsb2I6IEJsb2IpOiBPYnNlcnZhYmxlPENvbXByZXNzZWREYXRhPiB7XHJcbiAgICBpZiAoIWJsb2IpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPENvbXByZXNzZWREYXRhPikgPT4ge1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBiYXNlNjQgPSByZWFkZXIucmVzdWx0LnZhbHVlT2YoKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgY29uc3QgdGV4dDY0ID0gYmFzZTY0LnN1YnN0cihiYXNlNjQuaW5kZXhPZignLCcpICsgMSk7XHJcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZCA9IHRoaXMuY29tcHJlc3NTdHJpbmdCYXNlNjQodGV4dDY0KTtcclxuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YTogQ29tcHJlc3NlZERhdGEgPSB7IGxlbmd0aDogdGV4dDY0Lmxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGJsb2IudHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogY29tcHJlc3NlZCB9O1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQoY29tcHJlc3NlZERhdGEpO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZTtcclxuICB9XHJcblxyXG4gIGRlY29tcHJlc3NCbG9iKGNvbXByZXNzZWREYXRhOiBDb21wcmVzc2VkRGF0YSk6IEJsb2Ige1xyXG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXHJcbiAgICBjb25zdCBvYmplY3QgPSBjb21wcmVzc2VkRGF0YS5vYmplY3Q7XHJcbiAgICBjb25zdCBsZW5ndGggPSBjb21wcmVzc2VkRGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCBkZWNvbXByZXNzZWQ6IHN0cmluZyA9IHRoaXMuZGVjb21wcmVzc1N0cmluZ0Jhc2U2NChvYmplY3QsIGxlbmd0aCk7XHJcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGVjb21wcmVzc2VkKTtcclxuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7dHlwZTogY29tcHJlc3NlZERhdGEudHlwZX0pO1xyXG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cclxuICAgIHJldHVybiBibG9iO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wcmVzc1N0cmluZ0Jhc2U2NChzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXHJcbiAgICBsZXQgb3V0ID0gJyc7XHJcbiAgICBsZXQgYml0cyA9IDE2O1xyXG4gICAgbGV0IGNociA9IDA7XHJcbiAgICBsZXQgcmVtID0gMDtcclxuICAgIGZvciAoY29uc3QgYyBvZiBzKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5iYXNlNjRJbmRleC5nZXQoYyk7XHJcbiAgICAgIGlmIChiaXRzID4gNikge1xyXG4gICAgICAgIGJpdHMgLT0gNjtcclxuICAgICAgICBjaHIgKz0gdmFsdWUgPDwgYml0cztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZW0gPSA2IC0gYml0cztcclxuICAgICAgICBjaHIgKz0gdmFsdWUgPj4gcmVtO1xyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocik7XHJcbiAgICAgICAgY2hyID0gKHZhbHVlKSA8PCAoMTYgLSByZW0pO1xyXG4gICAgICAgIGJpdHMgPSAxNiAtIHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHMubGVuZ3RoICUgOCAhPT0gMCkge1xyXG4gICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xyXG4gICAgfVxyXG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cclxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3MzEpICsgb3V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvbXByZXNzU3RyaW5nQmFzZTY0KGM6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWJpdHdpc2UqL1xyXG4gICAgaWYgKCFjKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYy5jaGFyQ29kZUF0KDApICE9PSA5NzMxKSB7XHJcbiAgICAgIHJldHVybiBjO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjaHIgPSAwO1xyXG4gICAgbGV0IHJlbSA9IDA7XHJcbiAgICBsZXQgYml0cyA9IDE2O1xyXG4gICAgbGV0IG91dCA9ICcnO1xyXG4gICAgbGV0IGogPSAxO1xyXG4gICAgbGV0IHZhbHVlID0gYy5jaGFyQ29kZUF0KGopO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYml0cyA+IDYpIHtcclxuICAgICAgICBiaXRzIC09IDY7XHJcbiAgICAgICAgY2hyID0gZ2V0TnVtYmVyKHZhbHVlLCBiaXRzLCA2KTtcclxuICAgICAgICBvdXQgKz0gdGhpcy5pbmRleEJhc2U2NC5nZXQoY2hyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZW0gPSA2IC0gYml0cztcclxuICAgICAgICBjaHIgPSBnZXROdW1iZXIodmFsdWUsIDAsIGJpdHMpIDw8IHJlbTtcclxuICAgICAgICB2YWx1ZSA9IGMuY2hhckNvZGVBdCgrK2opO1xyXG4gICAgICAgIGNociArPSBnZXROdW1iZXIodmFsdWUsIDE2IC0gcmVtLCByZW0pO1xyXG4gICAgICAgIG91dCArPSB0aGlzLmluZGV4QmFzZTY0LmdldChjaHIpO1xyXG4gICAgICAgIGJpdHMgPSAxNiAtIHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG91dDtcclxuICAgIC8qIHRzbGludDplbmFibGU6bm8tYml0d2lzZSovXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
function getNumber(v, endposition, length) {
|
|
5
|
+
/* tslint:disable:no-bitwise*/
|
|
6
|
+
const mask = ((1 << length) - 1);
|
|
7
|
+
return (v >> endposition) & mask;
|
|
8
|
+
/* tslint:enable:no-bitwise*/
|
|
9
|
+
}
|
|
10
|
+
export class CompressionService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.base64Index = new Map();
|
|
13
|
+
this.indexBase64 = new Map();
|
|
14
|
+
this.generateBase64Index();
|
|
15
|
+
}
|
|
16
|
+
generateBase64Index() {
|
|
17
|
+
// https://fr.wikipedia.org/wiki/Base64
|
|
18
|
+
// A-Z => [0, 25]
|
|
19
|
+
for (let i = 0; i < 26; i++) {
|
|
20
|
+
this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);
|
|
21
|
+
this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));
|
|
22
|
+
}
|
|
23
|
+
// a-z => [26, 51]
|
|
24
|
+
for (let i = 0; i < 26; i++) {
|
|
25
|
+
this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);
|
|
26
|
+
this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));
|
|
27
|
+
}
|
|
28
|
+
// 0-9 => [52, 61]
|
|
29
|
+
for (let i = 0; i < 10; i++) {
|
|
30
|
+
this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);
|
|
31
|
+
this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));
|
|
32
|
+
}
|
|
33
|
+
// + / => [62, 63]
|
|
34
|
+
this.base64Index.set('+', 62);
|
|
35
|
+
this.base64Index.set('/', 63);
|
|
36
|
+
this.indexBase64.set(62, '+');
|
|
37
|
+
this.indexBase64.set(63, '/');
|
|
38
|
+
}
|
|
39
|
+
compressBlob(blob) {
|
|
40
|
+
if (!blob) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const observable = new Observable((observer) => {
|
|
44
|
+
const reader = new FileReader();
|
|
45
|
+
reader.readAsDataURL(blob);
|
|
46
|
+
reader.onload = () => {
|
|
47
|
+
const base64 = reader.result.valueOf();
|
|
48
|
+
const text64 = base64.substr(base64.indexOf(',') + 1);
|
|
49
|
+
const compressed = this.compressStringBase64(text64);
|
|
50
|
+
const compressedData = { length: text64.length,
|
|
51
|
+
type: blob.type,
|
|
52
|
+
object: compressed };
|
|
53
|
+
observer.next(compressedData);
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
return observable;
|
|
57
|
+
}
|
|
58
|
+
decompressBlob(compressedData) {
|
|
59
|
+
/* tslint:disable:no-bitwise*/
|
|
60
|
+
const object = compressedData.object;
|
|
61
|
+
const length = compressedData.length;
|
|
62
|
+
const decompressed = this.decompressStringBase64(object, length);
|
|
63
|
+
const byteCharacters = atob(decompressed);
|
|
64
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
65
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
66
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
67
|
+
}
|
|
68
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
69
|
+
const blob = new Blob([byteArray], { type: compressedData.type });
|
|
70
|
+
/* tslint:enable:no-bitwise*/
|
|
71
|
+
return blob;
|
|
72
|
+
}
|
|
73
|
+
compressStringBase64(s) {
|
|
74
|
+
/* tslint:disable:no-bitwise*/
|
|
75
|
+
let out = '';
|
|
76
|
+
let bits = 16;
|
|
77
|
+
let chr = 0;
|
|
78
|
+
let rem = 0;
|
|
79
|
+
for (const c of s) {
|
|
80
|
+
const value = this.base64Index.get(c);
|
|
81
|
+
if (bits > 6) {
|
|
82
|
+
bits -= 6;
|
|
83
|
+
chr += value << bits;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
rem = 6 - bits;
|
|
87
|
+
chr += value >> rem;
|
|
88
|
+
out += String.fromCharCode(chr);
|
|
89
|
+
chr = (value) << (16 - rem);
|
|
90
|
+
bits = 16 - rem;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (s.length % 8 !== 0) {
|
|
94
|
+
out += String.fromCharCode(chr);
|
|
95
|
+
}
|
|
96
|
+
/* tslint:enable:no-bitwise*/
|
|
97
|
+
return String.fromCharCode(9731) + out;
|
|
98
|
+
}
|
|
99
|
+
decompressStringBase64(c, length) {
|
|
100
|
+
/* tslint:disable:no-bitwise*/
|
|
101
|
+
if (!c) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (c.charCodeAt(0) !== 9731) {
|
|
105
|
+
return c;
|
|
106
|
+
}
|
|
107
|
+
let chr = 0;
|
|
108
|
+
let rem = 0;
|
|
109
|
+
let bits = 16;
|
|
110
|
+
let out = '';
|
|
111
|
+
let j = 1;
|
|
112
|
+
let value = c.charCodeAt(j);
|
|
113
|
+
for (let i = 0; i < length; i++) {
|
|
114
|
+
if (bits > 6) {
|
|
115
|
+
bits -= 6;
|
|
116
|
+
chr = getNumber(value, bits, 6);
|
|
117
|
+
out += this.indexBase64.get(chr);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
rem = 6 - bits;
|
|
121
|
+
chr = getNumber(value, 0, bits) << rem;
|
|
122
|
+
value = c.charCodeAt(++j);
|
|
123
|
+
chr += getNumber(value, 16 - rem, rem);
|
|
124
|
+
out += this.indexBase64.get(chr);
|
|
125
|
+
bits = 16 - rem;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return out;
|
|
129
|
+
/* tslint:enable:no-bitwise*/
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
CompressionService.ɵfac = function CompressionService_Factory(t) { return new (t || CompressionService)(); };
|
|
133
|
+
CompressionService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CompressionService, factory: CompressionService.ɵfac, providedIn: 'root' });
|
|
134
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompressionService, [{
|
|
135
|
+
type: Injectable,
|
|
136
|
+
args: [{
|
|
137
|
+
providedIn: 'root'
|
|
138
|
+
}]
|
|
139
|
+
}], function () { return []; }, null); })();
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb21wcmVzc2lvbi9jb21wcmVzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQzs7QUFHNUMsU0FBUyxTQUFTLENBQUMsQ0FBUyxFQUFFLFdBQW1CLEVBQUUsTUFBYztJQUMvRCw4QkFBOEI7SUFDOUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyw2QkFBNkI7QUFDL0IsQ0FBQztBQUtELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0I7UUFIUSxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFHOUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQjtRQUN6Qix1Q0FBdUM7UUFDdkMsaUJBQWlCO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRTtRQUNELGtCQUFrQjtRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELGtCQUFrQjtRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELGtCQUFrQjtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FB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QkFDWixJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUNWLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNmLEdBQUcsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ3ZDLEtBQUssR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsSUFBSSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDakI7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO1FBQ1gsNkJBQTZCO0lBQy9CLENBQUM7O29GQS9IVSxrQkFBa0I7d0VBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBRmpCLE1BQU07dUZBRVAsa0JBQWtCO2NBSDlCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wcmVzc2VkRGF0YSB9IGZyb20gJy4vY29tcHJlc3NlZERhdGEuaW50ZXJmYWNlJztcblxuZnVuY3Rpb24gZ2V0TnVtYmVyKHY6IG51bWJlciwgZW5kcG9zaXRpb246IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXG4gIGNvbnN0IG1hc2sgPSAoKDEgPDwgbGVuZ3RoKSAtIDEpO1xuICByZXR1cm4gKHYgPj4gZW5kcG9zaXRpb24pICYgbWFzaztcbiAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29tcHJlc3Npb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiYXNlNjRJbmRleCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByaXZhdGUgaW5kZXhCYXNlNjQgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVCYXNlNjRJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJhc2U2NEluZGV4KCkge1xuICAgIC8vIGh0dHBzOi8vZnIud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NFxuICAgIC8vIEEtWiA9PiBbMCwgMjVdXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7XG4gICAgICB0aGlzLmJhc2U2NEluZGV4LnNldChTdHJpbmcuZnJvbUNoYXJDb2RlKCdBJy5jaGFyQ29kZUF0KDApICsgaSksIGkpO1xuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSwgU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSArIGkpKTtcbiAgICB9XG4gICAgLy8gYS16ID0+IFsyNiwgNTFdXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7XG4gICAgICB0aGlzLmJhc2U2NEluZGV4LnNldChTdHJpbmcuZnJvbUNoYXJDb2RlKCdhJy5jaGFyQ29kZUF0KDApICsgaSksIGkgKyAyNik7XG4gICAgICB0aGlzLmluZGV4QmFzZTY0LnNldChpICsgMjYsIFN0cmluZy5mcm9tQ2hhckNvZGUoJ2EnLmNoYXJDb2RlQXQoMCkgKyBpKSk7XG4gICAgfVxuICAgIC8vIDAtOSA9PiBbNTIsIDYxXVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgdGhpcy5iYXNlNjRJbmRleC5zZXQoU3RyaW5nLmZyb21DaGFyQ29kZSgnMCcuY2hhckNvZGVBdCgwKSArIGkpLCBpICsgNTIpO1xuICAgICAgdGhpcy5pbmRleEJhc2U2NC5zZXQoaSArIDUyLCBTdHJpbmcuZnJvbUNoYXJDb2RlKCcwJy5jaGFyQ29kZUF0KDApICsgaSkpO1xuICAgIH1cbiAgICAvLyArIC8gPT4gWzYyLCA2M11cbiAgICB0aGlzLmJhc2U2NEluZGV4LnNldCgnKycsIDYyKTtcbiAgICB0aGlzLmJhc2U2NEluZGV4LnNldCgnLycsIDYzKTtcbiAgICB0aGlzLmluZGV4QmFzZTY0LnNldCg2MiwgJysnKTtcbiAgICB0aGlzLmluZGV4QmFzZTY0LnNldCg2MywgJy8nKTtcbiAgfVxuXG4gIGNvbXByZXNzQmxvYihibG9iOiBCbG9iKTogT2JzZXJ2YWJsZTxDb21wcmVzc2VkRGF0YT4ge1xuICAgIGlmICghYmxvYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPENvbXByZXNzZWREYXRhPikgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gcmVhZGVyLnJlc3VsdC52YWx1ZU9mKCkgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCB0ZXh0NjQgPSBiYXNlNjQuc3Vic3RyKGJhc2U2NC5pbmRleE9mKCcsJykgKyAxKTtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZCA9IHRoaXMuY29tcHJlc3NTdHJpbmdCYXNlNjQodGV4dDY0KTtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZERhdGE6IENvbXByZXNzZWREYXRhID0geyBsZW5ndGg6IHRleHQ2NC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYmxvYi50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogY29tcHJlc3NlZCB9O1xuICAgICAgICBvYnNlcnZlci5uZXh0KGNvbXByZXNzZWREYXRhKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9ic2VydmFibGU7XG4gIH1cblxuICBkZWNvbXByZXNzQmxvYihjb21wcmVzc2VkRGF0YTogQ29tcHJlc3NlZERhdGEpOiBCbG9iIHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1iaXR3aXNlKi9cbiAgICBjb25zdCBvYmplY3QgPSBjb21wcmVzc2VkRGF0YS5vYmplY3Q7XG4gICAgY29uc3QgbGVuZ3RoID0gY29tcHJlc3NlZERhdGEubGVuZ3RoO1xuICAgIGNvbnN0IGRlY29tcHJlc3NlZDogc3RyaW5nID0gdGhpcy5kZWNvbXByZXNzU3RyaW5nQmFzZTY0KG9iamVjdCwgbGVuZ3RoKTtcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGVjb21wcmVzc2VkKTtcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7dHlwZTogY29tcHJlc3NlZERhdGEudHlwZX0pO1xuICAgIC8qIHRzbGludDplbmFibGU6bm8tYml0d2lzZSovXG4gICAgcmV0dXJuIGJsb2I7XG4gIH1cblxuICBwcml2YXRlIGNvbXByZXNzU3RyaW5nQmFzZTY0KHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXG4gICAgbGV0IG91dCA9ICcnO1xuICAgIGxldCBiaXRzID0gMTY7XG4gICAgbGV0IGNociA9IDA7XG4gICAgbGV0IHJlbSA9IDA7XG4gICAgZm9yIChjb25zdCBjIG9mIHMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5iYXNlNjRJbmRleC5nZXQoYyk7XG4gICAgICBpZiAoYml0cyA+IDYpIHtcbiAgICAgICAgYml0cyAtPSA2O1xuICAgICAgICBjaHIgKz0gdmFsdWUgPDwgYml0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbSA9IDYgLSBiaXRzO1xuICAgICAgICBjaHIgKz0gdmFsdWUgPj4gcmVtO1xuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgICAgICBjaHIgPSAodmFsdWUpIDw8ICgxNiAtIHJlbSk7XG4gICAgICAgIGJpdHMgPSAxNiAtIHJlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMubGVuZ3RoICUgOCAhPT0gMCkge1xuICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyKTtcbiAgICB9XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NzMxKSArIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb21wcmVzc1N0cmluZ0Jhc2U2NChjOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSovXG4gICAgaWYgKCFjKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGMuY2hhckNvZGVBdCgwKSAhPT0gOTczMSkge1xuICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgbGV0IGNociA9IDA7XG4gICAgbGV0IHJlbSA9IDA7XG4gICAgbGV0IGJpdHMgPSAxNjtcbiAgICBsZXQgb3V0ID0gJyc7XG4gICAgbGV0IGogPSAxO1xuICAgIGxldCB2YWx1ZSA9IGMuY2hhckNvZGVBdChqKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYml0cyA+IDYpIHtcbiAgICAgICAgYml0cyAtPSA2O1xuICAgICAgICBjaHIgPSBnZXROdW1iZXIodmFsdWUsIGJpdHMsIDYpO1xuICAgICAgICBvdXQgKz0gdGhpcy5pbmRleEJhc2U2NC5nZXQoY2hyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbSA9IDYgLSBiaXRzO1xuICAgICAgICBjaHIgPSBnZXROdW1iZXIodmFsdWUsIDAsIGJpdHMpIDw8IHJlbTtcbiAgICAgICAgdmFsdWUgPSBjLmNoYXJDb2RlQXQoKytqKTtcbiAgICAgICAgY2hyICs9IGdldE51bWJlcih2YWx1ZSwgMTYgLSByZW0sIHJlbSk7XG4gICAgICAgIG91dCArPSB0aGlzLmluZGV4QmFzZTY0LmdldChjaHIpO1xuICAgICAgICBiaXRzID0gMTYgLSByZW07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1iaXR3aXNlKi9cbiAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './compressedData.interface';
|
|
2
|
-
export * from './compression.service';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './compressedData.interface';
|
|
2
|
+
export * from './compression.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29tcHJlc3Npb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wcmVzc2VkRGF0YS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wcmVzc2lvbi5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb25maWcvY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb25maWdPcHRpb25zIHtcbiAgZGVmYXVsdD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHBhdGg/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { provideConfigOptions, provideConfigLoader } from './config.provider';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class IgoConfigModule {
|
|
5
|
-
static forRoot() {
|
|
6
|
-
return {
|
|
7
|
-
ngModule: IgoConfigModule,
|
|
8
|
-
providers: [provideConfigOptions({}), provideConfigLoader()]
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
IgoConfigModule.ɵfac = function IgoConfigModule_Factory(t) { return new (t || IgoConfigModule)(); };
|
|
13
|
-
IgoConfigModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoConfigModule });
|
|
14
|
-
IgoConfigModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
|
15
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoConfigModule, [{
|
|
16
|
-
type: NgModule,
|
|
17
|
-
args: [{
|
|
18
|
-
imports: [],
|
|
19
|
-
declarations: [],
|
|
20
|
-
exports: []
|
|
21
|
-
}]
|
|
22
|
-
}], null, null); })();
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { provideConfigOptions, provideConfigLoader } from './config.provider';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class IgoConfigModule {
|
|
5
|
+
static forRoot() {
|
|
6
|
+
return {
|
|
7
|
+
ngModule: IgoConfigModule,
|
|
8
|
+
providers: [provideConfigOptions({}), provideConfigLoader()]
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
IgoConfigModule.ɵfac = function IgoConfigModule_Factory(t) { return new (t || IgoConfigModule)(); };
|
|
13
|
+
IgoConfigModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoConfigModule });
|
|
14
|
+
IgoConfigModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
|
15
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoConfigModule, [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
imports: [],
|
|
19
|
+
declarations: [],
|
|
20
|
+
exports: []
|
|
21
|
+
}]
|
|
22
|
+
}], null, null); })();
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb25maWcvY29uZmlnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFPOUUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztTQUM3RCxDQUFDO0lBQ0osQ0FBQzs7OEVBTlUsZUFBZTtpRUFBZixlQUFlOzt1RkFBZixlQUFlO2NBTDNCLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsRUFBRTtnQkFDWCxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLEVBQUU7YUFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlQ29uZmlnT3B0aW9ucywgcHJvdmlkZUNvbmZpZ0xvYWRlciB9IGZyb20gJy4vY29uZmlnLnByb3ZpZGVyJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIElnb0NvbmZpZ01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SWdvQ29uZmlnTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBJZ29Db25maWdNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtwcm92aWRlQ29uZmlnT3B0aW9ucyh7fSksIHByb3ZpZGVDb25maWdMb2FkZXIoKV1cbiAgICB9O1xuICB9XG59XG4iXX0=
|