@acorex/core 18.16.0-next.9 → 19.0.0
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/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-date-time.mjs +23 -20
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-file.mjs +10 -10
- package/fesm2022/acorex-core-format.mjs +17 -16
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-network.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-platform.mjs +3 -3
- package/fesm2022/acorex-core-storage.mjs +9 -9
- package/fesm2022/acorex-core-translation.mjs +27 -27
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +12 -11
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +40 -40
- package/package.json +3 -37
- package/esm2022/acorex-core.mjs +0 -5
- package/esm2022/common/acorex-core-common.mjs +0 -5
- package/esm2022/common/countries/countries.data.mjs +0 -2640
- package/esm2022/common/countries/country.mjs +0 -2
- package/esm2022/common/index.mjs +0 -3
- package/esm2022/config/acorex-core-config.mjs +0 -5
- package/esm2022/config/index.mjs +0 -3
- package/esm2022/config/lib/configs.mjs +0 -7
- package/esm2022/config/lib/configs.service.mjs +0 -27
- package/esm2022/date-time/acorex-core-date-time.mjs +0 -5
- package/esm2022/date-time/index.mjs +0 -11
- package/esm2022/date-time/lib/calendar.service.mjs +0 -93
- package/esm2022/date-time/lib/dateTime.config.mjs +0 -50
- package/esm2022/date-time/lib/datetime.class.mjs +0 -337
- package/esm2022/date-time/lib/datetime.module.mjs +0 -28
- package/esm2022/date-time/lib/datetime.pipe.mjs +0 -29
- package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +0 -38
- package/esm2022/date-time/lib/formatters/time-duration-formatter.mjs +0 -52
- package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +0 -90
- package/esm2022/date-time/lib/georgian.calendar.mjs +0 -198
- package/esm2022/date-time/lib/holidays.loader.mjs +0 -13
- package/esm2022/date-time/lib/jalali.calendar.mjs +0 -417
- package/esm2022/events/acorex-core-events.mjs +0 -5
- package/esm2022/events/index.mjs +0 -3
- package/esm2022/events/lib/event.service.mjs +0 -43
- package/esm2022/events/lib/event.type.mjs +0 -6
- package/esm2022/file/acorex-core-file.mjs +0 -5
- package/esm2022/file/index.mjs +0 -4
- package/esm2022/file/lib/file-size-formatter.mjs +0 -24
- package/esm2022/file/lib/file.module.mjs +0 -20
- package/esm2022/file/lib/file.service.mjs +0 -77
- package/esm2022/format/acorex-core-format.mjs +0 -5
- package/esm2022/format/index.mjs +0 -8
- package/esm2022/format/lib/format.config.mjs +0 -3
- package/esm2022/format/lib/format.module.mjs +0 -64
- package/esm2022/format/lib/format.pipe.mjs +0 -33
- package/esm2022/format/lib/format.service.mjs +0 -93
- package/esm2022/format/lib/format.types.mjs +0 -2
- package/esm2022/format/lib/formatters/number-formatter.mjs +0 -74
- package/esm2022/format/lib/formatters/string-formatter.mjs +0 -17
- package/esm2022/image/acorex-core-image.mjs +0 -5
- package/esm2022/image/index.mjs +0 -2
- package/esm2022/image/lib/image.service.mjs +0 -48
- package/esm2022/index.mjs +0 -2
- package/esm2022/memorize/acorex-core-memorize.mjs +0 -5
- package/esm2022/memorize/index.mjs +0 -2
- package/esm2022/memorize/lib/memorize.decorator.mjs +0 -19
- package/esm2022/network/acorex-core-network.mjs +0 -5
- package/esm2022/network/index.mjs +0 -5
- package/esm2022/network/lib/download-task.mjs +0 -47
- package/esm2022/network/lib/network.service.mjs +0 -85
- package/esm2022/network/lib/network.types.mjs +0 -16
- package/esm2022/network/lib/upload-task.mjs +0 -81
- package/esm2022/pipes/acorex-core-pipes.mjs +0 -5
- package/esm2022/pipes/index.mjs +0 -2
- package/esm2022/pipes/lib/safe/safe.pipe.mjs +0 -38
- package/esm2022/platform/acorex-core-platform.mjs +0 -5
- package/esm2022/platform/index.mjs +0 -2
- package/esm2022/platform/lib/platform.service.mjs +0 -293
- package/esm2022/storage/acorex-core-storage.mjs +0 -5
- package/esm2022/storage/cookie-storage.service.mjs +0 -196
- package/esm2022/storage/index.mjs +0 -5
- package/esm2022/storage/local-storage.service.mjs +0 -59
- package/esm2022/storage/session-storage.service.mjs +0 -35
- package/esm2022/storage/storage.interface.mjs +0 -2
- package/esm2022/translation/acorex-core-translation.mjs +0 -5
- package/esm2022/translation/index.mjs +0 -9
- package/esm2022/translation/lib/translation-scope.resolver.mjs +0 -11
- package/esm2022/translation/lib/translation.config.mjs +0 -20
- package/esm2022/translation/lib/translation.loader.mjs +0 -14
- package/esm2022/translation/lib/translation.module.mjs +0 -40
- package/esm2022/translation/lib/translation.service.mjs +0 -215
- package/esm2022/translation/lib/translation.types.mjs +0 -2
- package/esm2022/translation/lib/translator.directive.mjs +0 -28
- package/esm2022/translation/lib/translator.pipe.mjs +0 -23
- package/esm2022/types/acorex-core-types.mjs +0 -5
- package/esm2022/types/index.mjs +0 -2
- package/esm2022/utils/acorex-core-utils.mjs +0 -5
- package/esm2022/utils/index.mjs +0 -8
- package/esm2022/utils/lib/auto-unsubscribe.mjs +0 -36
- package/esm2022/utils/lib/color-util.mjs +0 -136
- package/esm2022/utils/lib/drawing-util.mjs +0 -32
- package/esm2022/utils/lib/html-util.mjs +0 -54
- package/esm2022/utils/lib/resize.directive.mjs +0 -124
- package/esm2022/utils/lib/string-util.mjs +0 -19
- package/esm2022/utils/lib/utils.module.mjs +0 -18
- package/esm2022/validation/acorex-core-validation.mjs +0 -5
- package/esm2022/validation/index.mjs +0 -18
- package/esm2022/validation/lib/rules/between-rule.mjs +0 -31
- package/esm2022/validation/lib/rules/callback-rule.mjs +0 -36
- package/esm2022/validation/lib/rules/equal-rule.mjs +0 -26
- package/esm2022/validation/lib/rules/greater-than.mjs +0 -25
- package/esm2022/validation/lib/rules/length-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/less-than-rule.mjs +0 -25
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +0 -24
- package/esm2022/validation/lib/rules/minlength-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/regex-rule.mjs +0 -46
- package/esm2022/validation/lib/rules/required-rule.mjs +0 -39
- package/esm2022/validation/lib/validation.config.mjs +0 -33
- package/esm2022/validation/lib/validation.module.mjs +0 -84
- package/esm2022/validation/lib/validation.service.mjs +0 -98
- package/esm2022/validation/lib/validation.types.mjs +0 -3
@@ -1,293 +0,0 @@
|
|
1
|
-
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
2
|
-
import { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';
|
3
|
-
import { BehaviorSubject, fromEvent, Subject } from 'rxjs';
|
4
|
-
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
export const isChrome = (win) => testUserAgent(win, /Chrome/i);
|
7
|
-
export const isFirefox = (win) => testUserAgent(win, /Firefox/i);
|
8
|
-
export const isEdge = (win) => testUserAgent(win, /Edge/i);
|
9
|
-
export const isSafari = (win) => testUserAgent(win, /Safari/i);
|
10
|
-
export const isOpera = (win) => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);
|
11
|
-
export const isMSIE = (win) => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);
|
12
|
-
export const isMobileWeb = (win) => isMobile(win) && !isHybrid(win);
|
13
|
-
export const isIpad = (win) => {
|
14
|
-
// iOS 12 and below
|
15
|
-
if (testUserAgent(win, /iPad/i)) {
|
16
|
-
return true;
|
17
|
-
}
|
18
|
-
// iOS 13+
|
19
|
-
if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {
|
20
|
-
return true;
|
21
|
-
}
|
22
|
-
return false;
|
23
|
-
};
|
24
|
-
export const isIphone = (win) => testUserAgent(win, /iPhone/i);
|
25
|
-
export const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);
|
26
|
-
export const isAndroid = (win) => testUserAgent(win, /android|sink/i);
|
27
|
-
export const isAndroidTablet = (win) => {
|
28
|
-
return isAndroid(win) && !testUserAgent(win, /mobile/i);
|
29
|
-
};
|
30
|
-
export const isPhablet = (win) => {
|
31
|
-
const width = win.innerWidth;
|
32
|
-
const height = win.innerHeight;
|
33
|
-
const smallest = Math.min(width, height);
|
34
|
-
const largest = Math.max(width, height);
|
35
|
-
return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;
|
36
|
-
};
|
37
|
-
export const isTablet = (win) => {
|
38
|
-
const width = win.innerWidth;
|
39
|
-
const height = win.innerHeight;
|
40
|
-
const smallest = Math.min(width, height);
|
41
|
-
const largest = Math.max(width, height);
|
42
|
-
return (isIpad(win) ||
|
43
|
-
isAndroidTablet(win) ||
|
44
|
-
(smallest > 460 && smallest < 820 && largest > 780 && largest < 1400));
|
45
|
-
};
|
46
|
-
export const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');
|
47
|
-
export const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');
|
48
|
-
export const isDesktop = (win) => !isMobile(win);
|
49
|
-
export const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);
|
50
|
-
export const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
|
51
|
-
export const isCapacitorNative = (win) => {
|
52
|
-
const capacitor = win['Capacitor'];
|
53
|
-
return !!(capacitor && capacitor.isNative);
|
54
|
-
};
|
55
|
-
export const isElectron = (win) => testUserAgent(win, /electron/i);
|
56
|
-
export const isPWA = (win) => !!(win.matchMedia('(display-mode: standalone)').matches || win.navigator.standalone);
|
57
|
-
export const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);
|
58
|
-
export const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
|
59
|
-
export const isServer = new Function('try {return this===global;}catch(e){return false;}');
|
60
|
-
export const matchMedia = (win, query) => {
|
61
|
-
return win.matchMedia(query).matches;
|
62
|
-
};
|
63
|
-
export const isSMScreen = (win) => matchMedia(win, '(max-width: 640px)');
|
64
|
-
export const isMDScreen = (win) => matchMedia(win, '(max-width: 768px)');
|
65
|
-
export const isLGScreen = (win) => matchMedia(win, '(max-width: 1024px)');
|
66
|
-
export const isXLScreen = (win) => matchMedia(win, '(max-width: 1280px)');
|
67
|
-
export const is2XLScreen = (win) => matchMedia(win, '(max-width: 1536px)');
|
68
|
-
export const is3XLScreen = (win) => matchMedia(win, '(max-width: 1920px)');
|
69
|
-
export const is4XLScreen = (win) => matchMedia(win, '(max-width: 2560px)');
|
70
|
-
export const PLATFORMS_MAP = {
|
71
|
-
Android: isAndroid,
|
72
|
-
iOS: isIOS,
|
73
|
-
Desktop: isDesktop,
|
74
|
-
Mobile: isMobile,
|
75
|
-
Touch: isTouch,
|
76
|
-
Chrome: isChrome,
|
77
|
-
Firefox: isFirefox,
|
78
|
-
Safari: isSafari,
|
79
|
-
Edge: isEdge,
|
80
|
-
Opera: isOpera,
|
81
|
-
Hybrid: isHybrid,
|
82
|
-
PWA: isPWA,
|
83
|
-
Electron: isElectron,
|
84
|
-
SM: isSMScreen,
|
85
|
-
MD: isMDScreen,
|
86
|
-
LG: isLGScreen,
|
87
|
-
XL: isXLScreen,
|
88
|
-
'2XL': is2XLScreen,
|
89
|
-
'3XL': is3XLScreen,
|
90
|
-
'4XL': is4XLScreen,
|
91
|
-
};
|
92
|
-
export class AXPlatformEvent {
|
93
|
-
}
|
94
|
-
export class AXPlatform {
|
95
|
-
isDark() {
|
96
|
-
if (isPlatformBrowser(this.platformID)) {
|
97
|
-
return this.document.documentElement.classList.contains('ax-dark');
|
98
|
-
}
|
99
|
-
return false;
|
100
|
-
}
|
101
|
-
isRtl() {
|
102
|
-
if (isPlatformBrowser(this.platformID)) {
|
103
|
-
return (this.document.dir == 'rtl' ||
|
104
|
-
this.document.body.dir == 'rtl' ||
|
105
|
-
this.document.body.style.direction == 'rtl');
|
106
|
-
}
|
107
|
-
return false;
|
108
|
-
}
|
109
|
-
isLandscape() {
|
110
|
-
if (isPlatformBrowser(this.platformID)) {
|
111
|
-
return window.innerHeight < window.innerWidth;
|
112
|
-
}
|
113
|
-
return true;
|
114
|
-
}
|
115
|
-
isPortrate() {
|
116
|
-
return !this.isLandscape();
|
117
|
-
}
|
118
|
-
is(name) {
|
119
|
-
if (isPlatformBrowser(this.platformID)) {
|
120
|
-
return PLATFORMS_MAP[name](window) || false;
|
121
|
-
}
|
122
|
-
else {
|
123
|
-
return false;
|
124
|
-
}
|
125
|
-
}
|
126
|
-
get screenSize() {
|
127
|
-
return (['SM', 'MD', 'LG', 'XL', '2XL', '3XL', '4XL'].find((name) => PLATFORMS_MAP[name](window) == true) || '5XL');
|
128
|
-
}
|
129
|
-
switchLightMode() {
|
130
|
-
if (isPlatformBrowser(this.platformID)) {
|
131
|
-
const _html = this.document.getElementsByTagName('html')[0];
|
132
|
-
_html.classList.remove('ax-dark');
|
133
|
-
}
|
134
|
-
this.#setSystemTheme('light');
|
135
|
-
return 'light';
|
136
|
-
}
|
137
|
-
switchDarkMode() {
|
138
|
-
if (isPlatformBrowser(this.platformID)) {
|
139
|
-
const _html = this.document.getElementsByTagName('html')[0];
|
140
|
-
_html.classList.add('ax-dark');
|
141
|
-
}
|
142
|
-
this.#setSystemTheme('dark');
|
143
|
-
return 'dark';
|
144
|
-
}
|
145
|
-
switchSystemMode() {
|
146
|
-
if (isPlatformBrowser(this.platformID)) {
|
147
|
-
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
148
|
-
const _html = this.document.getElementsByTagName('html')[0];
|
149
|
-
_html.classList.add('ax-dark');
|
150
|
-
this.#setSystemTheme('system-dark');
|
151
|
-
}
|
152
|
-
else {
|
153
|
-
const _html = this.document.getElementsByTagName('html')[0];
|
154
|
-
_html.classList.remove('ax-dark');
|
155
|
-
this.#setSystemTheme('system-light');
|
156
|
-
}
|
157
|
-
}
|
158
|
-
}
|
159
|
-
#setSystemTheme(themeMode) {
|
160
|
-
this.themeMode$.next(themeMode);
|
161
|
-
localStorage.setItem('AX_THEME_MODE', themeMode);
|
162
|
-
this.themeMode.set(themeMode);
|
163
|
-
}
|
164
|
-
autoDetectThemeMode() {
|
165
|
-
const mode = localStorage.getItem('AX_THEME_MODE') || 'system';
|
166
|
-
switch (mode) {
|
167
|
-
case 'light':
|
168
|
-
return this.switchLightMode();
|
169
|
-
case 'dark':
|
170
|
-
return this.switchDarkMode();
|
171
|
-
default:
|
172
|
-
return this.switchSystemMode();
|
173
|
-
}
|
174
|
-
}
|
175
|
-
setFullHeightRatio() {
|
176
|
-
if (isPlatformBrowser(this.platformID)) {
|
177
|
-
try {
|
178
|
-
this.document
|
179
|
-
.querySelector(':root')
|
180
|
-
?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');
|
181
|
-
}
|
182
|
-
catch (error) {
|
183
|
-
console.error(error);
|
184
|
-
}
|
185
|
-
}
|
186
|
-
}
|
187
|
-
autoSystemModeDetection(event) {
|
188
|
-
if (this.themeMode() === 'system') {
|
189
|
-
const themeMode = event.matches ? 'dark' : 'light';
|
190
|
-
if (isPlatformBrowser(this.platformID)) {
|
191
|
-
if (themeMode === 'dark') {
|
192
|
-
const _html = this.document.getElementsByTagName('html')[0];
|
193
|
-
_html.classList.add('ax-dark');
|
194
|
-
}
|
195
|
-
else {
|
196
|
-
const _html = this.document.getElementsByTagName('html')[0];
|
197
|
-
_html.classList.remove('ax-dark');
|
198
|
-
}
|
199
|
-
}
|
200
|
-
}
|
201
|
-
}
|
202
|
-
constructor() {
|
203
|
-
this.resize = new Subject();
|
204
|
-
this.directionChange = new Subject();
|
205
|
-
this.click = new Subject();
|
206
|
-
this.scroll = new Subject();
|
207
|
-
this.themeMode$ = new BehaviorSubject('system');
|
208
|
-
this.themeMode = signal('system');
|
209
|
-
this.document = inject(DOCUMENT);
|
210
|
-
this.platformID = inject(PLATFORM_ID);
|
211
|
-
if (isPlatformBrowser(this.platformID)) {
|
212
|
-
this.detectDarkMode();
|
213
|
-
this.detectOnResize();
|
214
|
-
this.detectClickEvent();
|
215
|
-
this.detectScrollEvent();
|
216
|
-
this.setFullHeightRatio();
|
217
|
-
this.detectDocumentDirectionChange();
|
218
|
-
}
|
219
|
-
}
|
220
|
-
detectDarkMode() {
|
221
|
-
if (isPlatformBrowser(this.platformID)) {
|
222
|
-
// fromEvent(UIEvent)(window,'')
|
223
|
-
if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {
|
224
|
-
window?.matchMedia('(prefers-color-scheme: dark)')?.addEventListener('change', (event) => {
|
225
|
-
// Detect System color mode
|
226
|
-
this.autoSystemModeDetection(event);
|
227
|
-
});
|
228
|
-
}
|
229
|
-
}
|
230
|
-
}
|
231
|
-
detectOnResize() {
|
232
|
-
if (isPlatformBrowser(this.platformID)) {
|
233
|
-
fromEvent(window, 'resize')
|
234
|
-
.pipe(debounceTime(100))
|
235
|
-
.pipe(distinctUntilChanged())
|
236
|
-
.subscribe((e) => {
|
237
|
-
this.resize.next({
|
238
|
-
nativeEvent: e,
|
239
|
-
source: this,
|
240
|
-
});
|
241
|
-
//
|
242
|
-
this.setFullHeightRatio();
|
243
|
-
});
|
244
|
-
}
|
245
|
-
}
|
246
|
-
detectClickEvent() {
|
247
|
-
if (isPlatformBrowser(this.platformID)) {
|
248
|
-
this.document.addEventListener('click', (e) => {
|
249
|
-
this.click.next({
|
250
|
-
nativeEvent: e,
|
251
|
-
source: this,
|
252
|
-
});
|
253
|
-
}, true);
|
254
|
-
}
|
255
|
-
}
|
256
|
-
detectScrollEvent() {
|
257
|
-
if (isPlatformBrowser(this.platformID)) {
|
258
|
-
this.document.addEventListener('scroll', (e) => {
|
259
|
-
this.scroll.next({
|
260
|
-
nativeEvent: e,
|
261
|
-
source: this,
|
262
|
-
});
|
263
|
-
}, true);
|
264
|
-
}
|
265
|
-
}
|
266
|
-
detectDocumentDirectionChange() {
|
267
|
-
if (isPlatformBrowser(this.platformID)) {
|
268
|
-
const observer = new MutationObserver((mutations) => {
|
269
|
-
mutations.forEach((mutation) => {
|
270
|
-
// Detect Direction Change
|
271
|
-
if (mutation.attributeName === 'dir') {
|
272
|
-
const dir = this.document.documentElement.getAttribute('dir');
|
273
|
-
this.directionChange.next({ source: this, nativeEvent: null, data: dir });
|
274
|
-
}
|
275
|
-
});
|
276
|
-
});
|
277
|
-
observer.observe(document.documentElement, {
|
278
|
-
attributes: true,
|
279
|
-
childList: false,
|
280
|
-
characterData: false,
|
281
|
-
});
|
282
|
-
}
|
283
|
-
}
|
284
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
285
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }
|
286
|
-
}
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPlatform, decorators: [{
|
288
|
-
type: Injectable,
|
289
|
-
args: [{
|
290
|
-
providedIn: 'root',
|
291
|
-
}]
|
292
|
-
}], ctorParameters: () => [] });
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9wbGF0Zm9ybS9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFTcEUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRTVHLE1B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SUFBSSxRQUFRLENBQUMsYUFBYSxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUM1RSxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pDLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixTQUFTLEVBQUUsS0FBSztnQkFDaEIsYUFBYSxFQUFFLEtBQUs7YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBM05VLFVBQVU7a0hBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIEFYVGhlbWVNb2RlID0gJ2xpZ2h0JyB8ICdkYXJrJyB8ICdzeXN0ZW0nIHwgJ3N5c3RlbS1kYXJrJyB8ICdzeXN0ZW0tbGlnaHQnO1xuZXhwb3J0IHR5cGUgQVhQbGF0Zm9ybXMgPSAnQW5kcm9pZCcgfCAnRGVza3RvcCcgfCAnaU9TJyB8ICdNb2JpbGUnO1xuZXhwb3J0IHR5cGUgQVhCcm93c2VycyA9ICdDaHJvbWUnIHwgJ1NhZmFyaScgfCAnRWRnZScgfCAnRmlyZWZveCcgfCAnT3BlcmEnIHwgJ01TSUUnO1xuZXhwb3J0IHR5cGUgQVhUZWNobm9sb2dpZXMgPSAnUFdBJyB8ICdIeWJyaWQnIHwgJ0VsZWN0cm9uJztcblxuZXhwb3J0IHR5cGUgQVhTY3JlZW5TaXplcyA9ICdTTScgfCAnTUQnIHwgJ0xHJyB8ICdYTCcgfCAnMlhMJyB8ICczWEwnIHwgJzRYTCcgfCAnNVhMJztcblxuZXhwb3J0IGNvbnN0IGlzQ2hyb21lID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0Nocm9tZS9pKTtcblxuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xuXG5leHBvcnQgY29uc3QgaXNFZGdlID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0VkZ2UvaSk7XG5cbmV4cG9ydCBjb25zdCBpc1NhZmFyaSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9TYWZhcmkvaSk7XG5cbmV4cG9ydCBjb25zdCBpc09wZXJhID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL09wZXJhL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvT1BSL2kpO1xuXG5leHBvcnQgY29uc3QgaXNNU0lFID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL01TSUUvaSkgfHwgdGVzdFVzZXJBZ2VudCh3aW4sIC9UcmlkZW50L2kpO1xuXG5leHBvcnQgY29uc3QgaXNNb2JpbGVXZWIgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IGlzTW9iaWxlKHdpbikgJiYgIWlzSHlicmlkKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0lwYWQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgLy8gaU9TIDEyIGFuZCBiZWxvd1xuICBpZiAodGVzdFVzZXJBZ2VudCh3aW4sIC9pUGFkL2kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpT1MgMTMrXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJcGhvbmUgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lL2kpO1xuXG5leHBvcnQgY29uc3QgaXNJT1MgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lfGlQb2QvaSkgfHwgaXNJcGFkKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xuXG5leHBvcnQgY29uc3QgaXNBbmRyb2lkVGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gIHJldHVybiBpc0FuZHJvaWQod2luKSAmJiAhdGVzdFVzZXJBZ2VudCh3aW4sIC9tb2JpbGUvaSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQaGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IHdpbi5pbm5lckhlaWdodDtcbiAgY29uc3Qgc21hbGxlc3QgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gIHJldHVybiBzbWFsbGVzdCA+IDM5MCAmJiBzbWFsbGVzdCA8IDUyMCAmJiBsYXJnZXN0ID4gNjIwICYmIGxhcmdlc3QgPCA4MDA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgY29uc3Qgd2lkdGggPSB3aW4uaW5uZXJXaWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xuICBjb25zdCBsYXJnZXN0ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgcmV0dXJuIChcbiAgICBpc0lwYWQod2luKSB8fFxuICAgIGlzQW5kcm9pZFRhYmxldCh3aW4pIHx8XG4gICAgKHNtYWxsZXN0ID4gNDYwICYmIHNtYWxsZXN0IDwgODIwICYmIGxhcmdlc3QgPiA3ODAgJiYgbGFyZ2VzdCA8IDE0MDApXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNNb2JpbGUgPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKGFueS1wb2ludGVyOmNvYXJzZSknKTtcbmV4cG9ydCBjb25zdCBpc1RvdWNoID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5cbmV4cG9ydCBjb25zdCBpc0Rlc2t0b3AgPSAod2luOiBXaW5kb3cpID0+ICFpc01vYmlsZSh3aW4pO1xuXG5leHBvcnQgY29uc3QgaXNIeWJyaWQgPSAod2luOiBXaW5kb3cpID0+IGlzQ29yZG92YSh3aW4pIHx8IGlzQ2FwYWNpdG9yTmF0aXZlKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0NvcmRvdmEgPSAod2luOiBhbnkpOiBib29sZWFuID0+ICEhKHdpblsnY29yZG92YSddIHx8IHdpblsncGhvbmVnYXAnXSB8fCB3aW5bJ1Bob25lR2FwJ10pO1xuXG5leHBvcnQgY29uc3QgaXNDYXBhY2l0b3JOYXRpdmUgPSAod2luOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgY2FwYWNpdG9yID0gd2luWydDYXBhY2l0b3InXTtcbiAgcmV0dXJuICEhKGNhcGFjaXRvciAmJiBjYXBhY2l0b3IuaXNOYXRpdmUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRWxlY3Ryb24gPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvZWxlY3Ryb24vaSk7XG5cbmV4cG9ydCBjb25zdCBpc1BXQSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgISEod2luLm1hdGNoTWVkaWEoJyhkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpJykubWF0Y2hlcyB8fCAod2luLm5hdmlnYXRvciBhcyBhbnkpLnN0YW5kYWxvbmUpO1xuXG5leHBvcnQgY29uc3QgdGVzdFVzZXJBZ2VudCA9ICh3aW46IFdpbmRvdywgZXhwcjogUmVnRXhwKSA9PiBleHByLnRlc3Qod2luLm5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gbmV3IEZ1bmN0aW9uKCd0cnkge3JldHVybiB0aGlzPT09d2luZG93O31jYXRjaChlKXsgcmV0dXJuIGZhbHNlO30nKTtcbmV4cG9ydCBjb25zdCBpc1NlcnZlciA9IG5ldyBGdW5jdGlvbigndHJ5IHtyZXR1cm4gdGhpcz09PWdsb2JhbDt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO30nKTtcblxuZXhwb3J0IGNvbnN0IG1hdGNoTWVkaWEgPSAod2luOiBXaW5kb3csIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHdpbi5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU01TY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogNjQwcHgpJyk7XG5leHBvcnQgY29uc3QgaXNNRFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA3NjhweCknKTtcbmV4cG9ydCBjb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEwMjRweCknKTtcbmV4cG9ydCBjb25zdCBpc1hMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEyODBweCknKTtcbmV4cG9ydCBjb25zdCBpczJYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxNTM2cHgpJyk7XG5leHBvcnQgY29uc3QgaXMzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTkyMHB4KScpO1xuZXhwb3J0IGNvbnN0IGlzNFhMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDI1NjBweCknKTtcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNU19NQVA6IGFueSA9IHtcbiAgQW5kcm9pZDogaXNBbmRyb2lkLFxuICBpT1M6IGlzSU9TLFxuICBEZXNrdG9wOiBpc0Rlc2t0b3AsXG4gIE1vYmlsZTogaXNNb2JpbGUsXG4gIFRvdWNoOiBpc1RvdWNoLFxuICBDaHJvbWU6IGlzQ2hyb21lLFxuICBGaXJlZm94OiBpc0ZpcmVmb3gsXG4gIFNhZmFyaTogaXNTYWZhcmksXG4gIEVkZ2U6IGlzRWRnZSxcbiAgT3BlcmE6IGlzT3BlcmEsXG4gIEh5YnJpZDogaXNIeWJyaWQsXG4gIFBXQTogaXNQV0EsXG4gIEVsZWN0cm9uOiBpc0VsZWN0cm9uLFxuICBTTTogaXNTTVNjcmVlbixcbiAgTUQ6IGlzTURTY3JlZW4sXG4gIExHOiBpc0xHU2NyZWVuLFxuICBYTDogaXNYTFNjcmVlbixcbiAgJzJYTCc6IGlzMlhMU2NyZWVuLFxuICAnM1hMJzogaXMzWExTY3JlZW4sXG4gICc0WEwnOiBpczRYTFNjcmVlbixcbn07XG5cbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtRXZlbnQ8VCBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IHtcbiAgbmF0aXZlRXZlbnQhOiBUO1xuICBzb3VyY2UhOiBBWFBsYXRmb3JtO1xuICBkYXRhPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybSB7XG4gIHJlc2l6ZTogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBkaXJlY3Rpb25DaGFuZ2U6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgY2xpY2s6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgc2Nyb2xsOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIHRoZW1lTW9kZSQ6IEJlaGF2aW9yU3ViamVjdDxBWFRoZW1lTW9kZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVGhlbWVNb2RlPignc3lzdGVtJyk7XG4gIHRoZW1lTW9kZSA9IHNpZ25hbDxBWFRoZW1lTW9kZT4oJ3N5c3RlbScpO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlEID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICBpc0RhcmsoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWRhcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZGlyID09ICdydGwnIHx8XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5kaXIgPT0gJ3J0bCcgfHxcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLmRpcmVjdGlvbiA9PSAncnRsJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNMYW5kc2NhcGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1BvcnRyYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0xhbmRzY2FwZSgpO1xuICB9XG5cbiAgaXMobmFtZTogQVhQbGF0Zm9ybXMgfCBBWEJyb3dzZXJzIHwgQVhUZWNobm9sb2dpZXMgfCBBWFNjcmVlblNpemVzKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2NyZWVuU2l6ZSgpOiBBWFNjcmVlblNpemVzIHtcbiAgICByZXR1cm4gKFsnU00nLCAnTUQnLCAnTEcnLCAnWEwnLCAnMlhMJywgJzNYTCcsICc0WEwnXS5maW5kKFxuICAgICAgKG5hbWUpID0+IFBMQVRGT1JNU19NQVBbbmFtZV0od2luZG93KSA9PSB0cnVlLFxuICAgICkgfHwgJzVYTCcpIGFzIEFYU2NyZWVuU2l6ZXM7XG4gIH1cblxuICBzd2l0Y2hMaWdodE1vZGUoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgX2h0bWwuY2xhc3NMaXN0LnJlbW92ZSgnYXgtZGFyaycpO1xuICAgIH1cbiAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnbGlnaHQnKTtcbiAgICByZXR1cm4gJ2xpZ2h0JztcbiAgfVxuXG4gIHN3aXRjaERhcmtNb2RlKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgIF9odG1sLmNsYXNzTGlzdC5hZGQoJ2F4LWRhcmsnKTtcbiAgICB9XG4gICAgdGhpcy4jc2V0U3lzdGVtVGhlbWUoJ2RhcmsnKTtcbiAgICByZXR1cm4gJ2RhcmsnO1xuICB9XG5cbiAgc3dpdGNoU3lzdGVtTW9kZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcykge1xuICAgICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnc3lzdGVtLWRhcmsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdzeXN0ZW0tbGlnaHQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjc2V0U3lzdGVtVGhlbWUodGhlbWVNb2RlOiBBWFRoZW1lTW9kZSkge1xuICAgIHRoaXMudGhlbWVNb2RlJC5uZXh0KHRoZW1lTW9kZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0FYX1RIRU1FX01PREUnLCB0aGVtZU1vZGUpO1xuICAgIHRoaXMudGhlbWVNb2RlLnNldCh0aGVtZU1vZGUpO1xuICB9XG5cbiAgYXV0b0RldGVjdFRoZW1lTW9kZSgpIHtcbiAgICBjb25zdCBtb2RlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0FYX1RIRU1FX01PREUnKSB8fCAnc3lzdGVtJztcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ2xpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3dpdGNoTGlnaHRNb2RlKCk7XG5cbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICByZXR1cm4gdGhpcy5zd2l0Y2hEYXJrTW9kZSgpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5zd2l0Y2hTeXN0ZW1Nb2RlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRGdWxsSGVpZ2h0UmF0aW8oKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJzpyb290JylcbiAgICAgICAgICA/LnN0eWxlLnNldFByb3BlcnR5KCctLWF4LXZoJywgd2luZG93LmlubmVySGVpZ2h0IC8gMTAwICsgJ3B4Jyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9TeXN0ZW1Nb2RlRGV0ZWN0aW9uKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMudGhlbWVNb2RlKCkgPT09ICdzeXN0ZW0nKSB7XG4gICAgICBjb25zdCB0aGVtZU1vZGUgPSBldmVudC5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgaWYgKHRoZW1lTW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRldGVjdERhcmtNb2RlKCk7XG4gICAgICB0aGlzLmRldGVjdE9uUmVzaXplKCk7XG4gICAgICB0aGlzLmRldGVjdENsaWNrRXZlbnQoKTtcbiAgICAgIHRoaXMuZGV0ZWN0U2Nyb2xsRXZlbnQoKTtcbiAgICAgIHRoaXMuc2V0RnVsbEhlaWdodFJhdGlvKCk7XG4gICAgICB0aGlzLmRldGVjdERvY3VtZW50RGlyZWN0aW9uQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3REYXJrTW9kZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgLy8gZnJvbUV2ZW50KFVJRXZlbnQpKHdpbmRvdywnJylcbiAgICAgIGlmICh3aW5kb3c/Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzKSB7XG4gICAgICAgIHdpbmRvdz8ubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpPy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBEZXRlY3QgU3lzdGVtIGNvbG9yIG1vZGVcbiAgICAgICAgICB0aGlzLmF1dG9TeXN0ZW1Nb2RlRGV0ZWN0aW9uKGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RPblJlc2l6ZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgZnJvbUV2ZW50PFVJRXZlbnQ+KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNpemUubmV4dCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHRoaXMuc2V0RnVsbEhlaWdodFJhdGlvKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0Q2xpY2tFdmVudCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnY2xpY2snLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xpY2submV4dCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RTY3JvbGxFdmVudCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnc2Nyb2xsJyxcbiAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnNjcm9sbC5uZXh0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdERvY3VtZW50RGlyZWN0aW9uQ2hhbmdlKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgLy8gRGV0ZWN0IERpcmVjdGlvbiBDaGFuZ2VcbiAgICAgICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2RpcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJyk7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbkNoYW5nZS5uZXh0KHsgc291cmNlOiB0aGlzLCBuYXRpdmVFdmVudDogbnVsbCwgZGF0YTogZGlyIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGNoaWxkTGlzdDogZmFsc2UsXG4gICAgICAgIGNoYXJhY3RlckRhdGE6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zdG9yYWdlL3NyYy9hY29yZXgtY29yZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -1,196 +0,0 @@
|
|
1
|
-
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
2
|
-
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXCookieStorageService {
|
5
|
-
constructor(document,
|
6
|
-
// Get the `PLATFORM_ID` so we can check if we're in a browser.
|
7
|
-
platformId) {
|
8
|
-
this.document = document;
|
9
|
-
this.platformId = platformId;
|
10
|
-
this.documentIsAccessible = isPlatformBrowser(this.platformId);
|
11
|
-
}
|
12
|
-
/**
|
13
|
-
* Get cookie Regular Expression
|
14
|
-
*
|
15
|
-
* @param name Cookie name
|
16
|
-
* @returns property RegExp
|
17
|
-
*
|
18
|
-
*/
|
19
|
-
static getCookieRegExp(name) {
|
20
|
-
const escapedName = name.replace(/([[\]{}()|=;+?,.*^$])/gi, '\\$1');
|
21
|
-
return new RegExp('(?:^' + escapedName + '|;\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');
|
22
|
-
}
|
23
|
-
/**
|
24
|
-
* Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).
|
25
|
-
*
|
26
|
-
* @param encodedURIComponent A value representing an encoded URI component.
|
27
|
-
*
|
28
|
-
* @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).
|
29
|
-
*
|
30
|
-
*/
|
31
|
-
static safeDecodeURIComponent(encodedURIComponent) {
|
32
|
-
try {
|
33
|
-
return decodeURIComponent(encodedURIComponent);
|
34
|
-
}
|
35
|
-
catch {
|
36
|
-
// probably it is not uri encoded. return as is
|
37
|
-
return encodedURIComponent;
|
38
|
-
}
|
39
|
-
}
|
40
|
-
/**
|
41
|
-
* Return `true` if {@link Document} is accessible, otherwise return `false`
|
42
|
-
*
|
43
|
-
* @param name Cookie name
|
44
|
-
* @returns boolean - whether cookie with specified name exists
|
45
|
-
*
|
46
|
-
*/
|
47
|
-
check(name) {
|
48
|
-
if (!this.documentIsAccessible) {
|
49
|
-
return false;
|
50
|
-
}
|
51
|
-
name = encodeURIComponent(name);
|
52
|
-
const regExp = AXCookieStorageService.getCookieRegExp(name);
|
53
|
-
return regExp.test(this.document.cookie);
|
54
|
-
}
|
55
|
-
/**
|
56
|
-
* Get cookies by name
|
57
|
-
*
|
58
|
-
* @param name Cookie name
|
59
|
-
* @returns property value
|
60
|
-
*
|
61
|
-
*/
|
62
|
-
get(name) {
|
63
|
-
if (this.documentIsAccessible && this.check(name)) {
|
64
|
-
name = encodeURIComponent(name);
|
65
|
-
const regExp = AXCookieStorageService.getCookieRegExp(name);
|
66
|
-
const result = regExp.exec(this.document.cookie);
|
67
|
-
return result[1] ? AXCookieStorageService.safeDecodeURIComponent(result[1]) : '';
|
68
|
-
}
|
69
|
-
else {
|
70
|
-
return '';
|
71
|
-
}
|
72
|
-
}
|
73
|
-
/**
|
74
|
-
* Get all cookies in JSON format
|
75
|
-
*
|
76
|
-
* @returns all the cookies in json
|
77
|
-
*
|
78
|
-
*/
|
79
|
-
getAll() {
|
80
|
-
if (!this.documentIsAccessible) {
|
81
|
-
return {};
|
82
|
-
}
|
83
|
-
const cookies = {};
|
84
|
-
const document = this.document;
|
85
|
-
if (document.cookie && document.cookie !== '') {
|
86
|
-
document.cookie.split(';').forEach((currentCookie) => {
|
87
|
-
const [cookieName, cookieValue] = currentCookie.split('=');
|
88
|
-
cookies[AXCookieStorageService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] =
|
89
|
-
AXCookieStorageService.safeDecodeURIComponent(cookieValue);
|
90
|
-
});
|
91
|
-
}
|
92
|
-
return cookies;
|
93
|
-
}
|
94
|
-
set(name, value, expiresOrOptions, path, domain, secure, sameSite) {
|
95
|
-
if (!this.documentIsAccessible) {
|
96
|
-
return;
|
97
|
-
}
|
98
|
-
if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {
|
99
|
-
const optionsBody = {
|
100
|
-
expires: expiresOrOptions,
|
101
|
-
path,
|
102
|
-
domain,
|
103
|
-
secure,
|
104
|
-
sameSite: sameSite ? sameSite : 'Lax',
|
105
|
-
};
|
106
|
-
this.set(name, value, optionsBody);
|
107
|
-
return;
|
108
|
-
}
|
109
|
-
let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';
|
110
|
-
const options = expiresOrOptions ? expiresOrOptions : {};
|
111
|
-
if (options.expires) {
|
112
|
-
if (typeof options.expires === 'number') {
|
113
|
-
const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);
|
114
|
-
cookieString += 'expires=' + dateExpires.toUTCString() + ';';
|
115
|
-
}
|
116
|
-
else {
|
117
|
-
cookieString += 'expires=' + options.expires.toUTCString() + ';';
|
118
|
-
}
|
119
|
-
}
|
120
|
-
if (options.path) {
|
121
|
-
cookieString += 'path=' + options.path + ';';
|
122
|
-
}
|
123
|
-
if (options.domain) {
|
124
|
-
cookieString += 'domain=' + options.domain + ';';
|
125
|
-
}
|
126
|
-
if (options.secure === false && options.sameSite === 'None') {
|
127
|
-
options.secure = true;
|
128
|
-
console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +
|
129
|
-
`More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);
|
130
|
-
}
|
131
|
-
if (options.secure) {
|
132
|
-
cookieString += 'secure;';
|
133
|
-
}
|
134
|
-
if (!options.sameSite) {
|
135
|
-
options.sameSite = 'Lax';
|
136
|
-
}
|
137
|
-
cookieString += 'sameSite=' + options.sameSite + ';';
|
138
|
-
this.document.cookie = cookieString;
|
139
|
-
}
|
140
|
-
/**
|
141
|
-
* Delete cookie by name
|
142
|
-
*
|
143
|
-
* @param name Cookie name
|
144
|
-
* @param path Cookie path
|
145
|
-
* @param domain Cookie domain
|
146
|
-
* @param secure Cookie secure flag
|
147
|
-
* @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
|
148
|
-
*
|
149
|
-
*/
|
150
|
-
delete(name, path, domain, secure, sameSite = 'Lax') {
|
151
|
-
if (!this.documentIsAccessible) {
|
152
|
-
return;
|
153
|
-
}
|
154
|
-
const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');
|
155
|
-
this.set(name, '', {
|
156
|
-
expires: expiresDate,
|
157
|
-
path,
|
158
|
-
domain,
|
159
|
-
secure,
|
160
|
-
sameSite,
|
161
|
-
});
|
162
|
-
}
|
163
|
-
/**
|
164
|
-
* Delete all cookies
|
165
|
-
*
|
166
|
-
* @param path Cookie path
|
167
|
-
* @param domain Cookie domain
|
168
|
-
* @param secure Is the Cookie secure
|
169
|
-
* @param sameSite Is the cookie same site
|
170
|
-
*
|
171
|
-
*/
|
172
|
-
deleteAll(path, domain, secure, sameSite = 'Lax') {
|
173
|
-
if (!this.documentIsAccessible) {
|
174
|
-
return;
|
175
|
-
}
|
176
|
-
const cookies = this.getAll();
|
177
|
-
for (const cookieName in cookies) {
|
178
|
-
// eslint-disable-next-line no-prototype-builtins
|
179
|
-
if (cookies.hasOwnProperty(cookieName)) {
|
180
|
-
this.delete(cookieName, path, domain, secure, sameSite);
|
181
|
-
}
|
182
|
-
}
|
183
|
-
}
|
184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCookieStorageService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
185
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCookieStorageService }); }
|
186
|
-
}
|
187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCookieStorageService, decorators: [{
|
188
|
-
type: Injectable
|
189
|
-
}], ctorParameters: () => [{ type: Document, decorators: [{
|
190
|
-
type: Inject,
|
191
|
-
args: [DOCUMENT]
|
192
|
-
}] }, { type: undefined, decorators: [{
|
193
|
-
type: Inject,
|
194
|
-
args: [PLATFORM_ID]
|
195
|
-
}] }] });
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zdG9yYWdlL3NyYy9jb29raWUtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSWhFLE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDNEIsUUFBa0I7SUFDNUMsK0RBQStEO0lBQ2xDLFVBQVU7UUFGYixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRWYsZUFBVSxHQUFWLFVBQVUsQ0FBQTtRQUV2QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDekMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RSxPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBMkI7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwrQ0FBK0M7WUFDL0MsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUss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QU8sRUFBRSxDQUFDO1lBQ2pDLGlEQUFpRDtZQUNqRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQTVRVSxzQkFBc0Isa0JBSXZCLFFBQVEsYUFFUixXQUFXO2tIQU5WLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7MEJBS04sTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb29raWVPcHRpb25zLCBBWFNhbWVTaXRlIH0gZnJvbSAnLi9zdG9yYWdlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudElzQWNjZXNzaWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAvLyBHZXQgdGhlIGBQTEFURk9STV9JRGAgc28gd2UgY2FuIGNoZWNrIGlmIHdlJ3JlIGluIGEgYnJvd3Nlci5cbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQsXG4gICkge1xuICAgIHRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWUgUmVndWxhciBFeHByZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IFJlZ0V4cFxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q29va2llUmVnRXhwKG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgY29uc3QgZXNjYXBlZE5hbWU6IHN0cmluZyA9IG5hbWUucmVwbGFjZSgvKFtbXFxde30oKXw9Oys/LC4qXiRdKS9naSwgJ1xcXFwkMScpO1xuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJyg/Ol4nICsgZXNjYXBlZE5hbWUgKyAnfDtcXFxccyonICsgZXNjYXBlZE5hbWUgKyAnKT0oLio/KSg/Ojt8JCknLCAnZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZW5jb2RlZCB2ZXJzaW9uIG9mIGFuIGVuY29kZWQgY29tcG9uZW50IG9mIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIChVUkkpLlxuICAgKlxuICAgKiBAcGFyYW0gZW5jb2RlZFVSSUNvbXBvbmVudCBBIHZhbHVlIHJlcHJlc2VudGluZyBhbiBlbmNvZGVkIFVSSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICpcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNhZmVEZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHByb2JhYmx5IGl0IGlzIG5vdCB1cmkgZW5jb2RlZC4gcmV0dXJuIGFzIGlzXG4gICAgICByZXR1cm4gZW5jb2RlZFVSSUNvbXBvbmVudDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBDb29raWUgbmFtZVxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcbiAgICpcbiAgICovXG4gIGNoZWNrKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gQVhDb29raWVTdG9yYWdlU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgcmV0dXJuIHJlZ0V4cC50ZXN0KHRoaXMuZG9jdW1lbnQuY29va2llKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29va2llcyBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSAmJiB0aGlzLmNoZWNrKG5hbWUpKSB7XG4gICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuXG4gICAgICBjb25zdCByZWdFeHA6IFJlZ0V4cCA9IEFYQ29va2llU3RvcmFnZVNlcnZpY2UuZ2V0Q29va2llUmVnRXhwKG5hbWUpO1xuICAgICAgY29uc3QgcmVzdWx0OiBSZWdFeHBFeGVjQXJyYXkgPSByZWdFeHAuZXhlYyh0aGlzLmRvY3VtZW50LmNvb2tpZSk7XG5cbiAgICAgIHJldHVybiByZXN1bHRbMV0gPyBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQocmVzdWx0WzFdKSA6ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgY29va2llcyBpbiBKU09OIGZvcm1hdFxuICAgKlxuICAgKiBAcmV0dXJucyBhbGwgdGhlIGNvb2tpZXMgaW4ganNvblxuICAgKlxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBkb2N1bWVudDogYW55ID0gdGhpcy5kb2N1bWVudDtcblxuICAgIGlmIChkb2N1bWVudC5jb29raWUgJiYgZG9jdW1lbnQuY29va2llICE9PSAnJykge1xuICAgICAgZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZm9yRWFjaCgoY3VycmVudENvb2tpZSkgPT4ge1xuICAgICAgICBjb25zdCBbY29va2llTmFtZSwgY29va2llVmFsdWVdID0gY3VycmVudENvb2tpZS5zcGxpdCgnPScpO1xuICAgICAgICBjb29raWVzW0FYQ29va2llU3RvcmFnZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVOYW1lLnJlcGxhY2UoL14gLywgJycpKV0gPVxuICAgICAgICAgIEFYQ29va2llU3RvcmFnZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVWYWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29va2llcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lICAgICBDb29raWUgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgICAgQ29va2llIHZhbHVlXG4gICAqIEBwYXJhbSBleHBpcmVzICBOdW1iZXIgb2YgZGF5cyB1bnRpbCB0aGUgY29va2llcyBleHBpcmVzIG9yIGFuIGFjdHVhbCBgRGF0ZWBcbiAgICogQHBhcmFtIHBhdGggICAgIENvb2tpZSBwYXRoXG4gICAqIEBwYXJhbSBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgICBTZWN1cmUgZmxhZ1xuICAgKiBAcGFyYW0gc2FtZVNpdGUgT1dBU1Agc2FtZXNpdGUgdG9rZW4gYExheGAsIGBOb25lYCwgb3IgYFN0cmljdGAuIERlZmF1bHRzIHRvIGBMYXhgXG4gICAqXG4gICAqL1xuICBzZXQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgZXhwaXJlcz86IEFYQ29va2llT3B0aW9uc1snZXhwaXJlcyddLFxuICAgIHBhdGg/OiBBWENvb2tpZU9wdGlvbnNbJ3BhdGgnXSxcbiAgICBkb21haW4/OiBBWENvb2tpZU9wdGlvbnNbJ2RvbWFpbiddLFxuICAgIHNlY3VyZT86IEFYQ29va2llT3B0aW9uc1snc2VjdXJlJ10sXG4gICAgc2FtZVNpdGU/OiBBWFNhbWVTaXRlLFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIENvb2tpZSdzIHBhcmFtZXRlcnM6XG4gICAqIDxwcmU+XG4gICAqIGV4cGlyZXMgIE51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBjb29raWVzIGV4cGlyZXMgb3IgYW4gYWN0dWFsIGBEYXRlYFxuICAgKiBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIHNlY3VyZSAgIFNlY3VyZSBmbGFnXG4gICAqIHNhbWVTaXRlIE9XQVNQIHNhbWVzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxuICAgKiA8L3ByZT5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnMgIEJvZHkgd2l0aCBjb29raWUncyBwYXJhbXNcbiAgICpcbiAgICovXG4gIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBBWENvb2tpZU9wdGlvbnMpOiB2b2lkO1xuXG4gIHNldChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBleHBpcmVzT3JPcHRpb25zPzogQVhDb29raWVPcHRpb25zWydleHBpcmVzJ10gfCBBWENvb2tpZU9wdGlvbnMsXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZT86IEFYU2FtZVNpdGUsXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXhwaXJlc09yT3B0aW9ucyA9PT0gJ251bWJlcicgfHwgZXhwaXJlc09yT3B0aW9ucyBpbnN0YW5jZW9mIERhdGUgfHwgcGF0aCB8fCBkb21haW4gfHwgc2VjdXJlIHx8IHNhbWVTaXRlKSB7XG4gICAgICBjb25zdCBvcHRpb25zQm9keSA9IHtcbiAgICAgICAgZXhwaXJlczogZXhwaXJlc09yT3B0aW9ucyBhcyBBWENvb2tpZU9wdGlvbnNbJ2V4cGlyZXMnXSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBzZWN1cmUsXG4gICAgICAgIHNhbWVTaXRlOiBzYW1lU2l0ZSA/IHNhbWVTaXRlIDogJ0xheCcsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldChuYW1lLCB2YWx1ZSwgb3B0aW9uc0JvZHkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjb29raWVTdHJpbmc6IHN0cmluZyA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkgKyAnOyc7XG5cbiAgICBjb25zdCBvcHRpb25zID0gZXhwaXJlc09yT3B0aW9ucyA/IGV4cGlyZXNPck9wdGlvbnMgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmV4cGlyZXMpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBkYXRlRXhwaXJlczogRGF0ZSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgb3B0aW9ucy5leHBpcmVzICogMTAwMCAqIDYwICogNjAgKiAyNCk7XG5cbiAgICAgICAgY29va2llU3RyaW5nICs9ICdleHBpcmVzPScgKyBkYXRlRXhwaXJlcy50b1VUQ1N0cmluZygpICsgJzsnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29va2llU3RyaW5nICs9ICdleHBpcmVzPScgKyBvcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKSArICc7JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wYXRoKSB7XG4gICAgICBjb29raWVTdHJpbmcgKz0gJ3BhdGg9JyArIG9wdGlvbnMucGF0aCArICc7JztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kb21haW4pIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAnZG9tYWluPScgKyBvcHRpb25zLmRvbWFpbiArICc7JztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUgPT09IGZhbHNlICYmIG9wdGlvbnMuc2FtZVNpdGUgPT09ICdOb25lJykge1xuICAgICAgb3B0aW9ucy5zZWN1cmUgPSB0cnVlO1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW25neC1jb29raWUtc2VydmljZV0gQ29va2llICR7bmFtZX0gd2FzIGZvcmNlZCB3aXRoIHNlY3VyZSBmbGFnIGJlY2F1c2Ugc2FtZVNpdGU9Tm9uZS5gICtcbiAgICAgICAgICBgTW9yZSBkZXRhaWxzIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXZlcm1laXN0ZXIvbmd4LWNvb2tpZS1zZXJ2aWNlL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtNTk3NzIwMTMwYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNlY3VyZSkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdzZWN1cmU7JztcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2FtZVNpdGUpIHtcbiAgICAgIG9wdGlvbnMuc2FtZVNpdGUgPSAnTGF4JztcbiAgICB9XG5cbiAgICBjb29raWVTdHJpbmcgKz0gJ3NhbWVTaXRlPScgKyBvcHRpb25zLnNhbWVTaXRlICsgJzsnO1xuXG4gICAgdGhpcy5kb2N1bWVudC5jb29raWUgPSBjb29raWVTdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGNvb2tpZSBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lICAgQ29va2llIG5hbWVcbiAgICogQHBhcmFtIHBhdGggICBDb29raWUgcGF0aFxuICAgKiBAcGFyYW0gZG9tYWluIENvb2tpZSBkb21haW5cbiAgICogQHBhcmFtIHNlY3VyZSBDb29raWUgc2VjdXJlIGZsYWdcbiAgICogQHBhcmFtIHNhbWVTaXRlIENvb2tpZSBzYW1lU2l0ZSBmbGFnIC0gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUvU2FtZVNpdGVcbiAgICpcbiAgICovXG4gIGRlbGV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZTogQVhTYW1lU2l0ZSA9ICdMYXgnLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZSgnVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQnKTtcbiAgICB0aGlzLnNldChuYW1lLCAnJywge1xuICAgICAgZXhwaXJlczogZXhwaXJlc0RhdGUsXG4gICAgICBwYXRoLFxuICAgICAgZG9tYWluLFxuICAgICAgc2VjdXJlLFxuICAgICAgc2FtZVNpdGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBjb29raWVzXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcbiAgICogQHBhcmFtIGRvbWFpbiBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgSXMgdGhlIENvb2tpZSBzZWN1cmVcbiAgICogQHBhcmFtIHNhbWVTaXRlIElzIHRoZSBjb29raWUgc2FtZSBzaXRlXG4gICAqXG4gICAqL1xuICBkZWxldGVBbGwoXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZTogQVhTYW1lU2l0ZSA9ICdMYXgnLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29raWVzID0gdGhpcy5nZXRBbGwoKTtcblxuICAgIGZvciAoY29uc3QgY29va2llTmFtZSBpbiBjb29raWVzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICBpZiAoY29va2llcy5oYXNPd25Qcm9wZXJ0eShjb29raWVOYW1lKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShjb29raWVOYW1lLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
@@ -1,5 +0,0 @@
|
|
1
|
-
export * from './cookie-storage.service';
|
2
|
-
export * from './local-storage.service';
|
3
|
-
export * from './session-storage.service';
|
4
|
-
export * from './storage.interface';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3RvcmFnZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29va2llLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZS5pbnRlcmZhY2UnO1xuIl19
|