@angular/fire 7.1.0-rc.3 → 7.1.1-canary.5ecf875

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.
Files changed (183) hide show
  1. package/analytics/analytics.module.d.ts +9 -6
  2. package/analytics/firebase.d.ts +2 -2
  3. package/analytics/overrides.d.ts +1 -0
  4. package/analytics/public_api.d.ts +2 -0
  5. package/analytics/screen-tracking.service.d.ts +40 -0
  6. package/analytics/user-tracking.service.d.ts +11 -0
  7. package/app/app.module.d.ts +3 -3
  8. package/app-check/app-check.module.d.ts +3 -3
  9. package/auth/auth.module.d.ts +3 -3
  10. package/auth-guard/angular-fire-auth-guard.d.ts +5 -0
  11. package/auth-guard/auth-guard.d.ts +29 -0
  12. package/auth-guard/auth-guard.module.d.ts +7 -0
  13. package/auth-guard/package.json +11 -0
  14. package/auth-guard/public_api.d.ts +2 -0
  15. package/bundles/angular-fire-analytics.umd.js +548 -41
  16. package/bundles/angular-fire-analytics.umd.js.map +1 -1
  17. package/bundles/angular-fire-app-check.umd.js +336 -18
  18. package/bundles/angular-fire-app-check.umd.js.map +1 -1
  19. package/bundles/angular-fire-app.umd.js +323 -3
  20. package/bundles/angular-fire-app.umd.js.map +1 -1
  21. package/bundles/angular-fire-auth-guard.umd.js +109 -0
  22. package/bundles/angular-fire-auth-guard.umd.js.map +1 -0
  23. package/bundles/angular-fire-auth.umd.js +324 -9
  24. package/bundles/angular-fire-auth.umd.js.map +1 -1
  25. package/bundles/angular-fire-compat-analytics.umd.js +16 -112
  26. package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
  27. package/bundles/angular-fire-compat-auth.umd.js +1 -1
  28. package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
  29. package/bundles/angular-fire-compat-database.umd.js +1 -1
  30. package/bundles/angular-fire-compat-database.umd.js.map +1 -1
  31. package/bundles/angular-fire-compat-firestore.umd.js +1 -1
  32. package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
  33. package/bundles/angular-fire-compat-functions.umd.js +1 -1
  34. package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
  35. package/bundles/angular-fire-compat-messaging.umd.js +5 -5
  36. package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
  37. package/bundles/angular-fire-compat-performance.umd.js +5 -5
  38. package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
  39. package/bundles/angular-fire-compat-remote-config.umd.js +5 -5
  40. package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
  41. package/bundles/angular-fire-compat-storage.umd.js +2 -1
  42. package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
  43. package/bundles/angular-fire-compat.umd.js +38 -2
  44. package/bundles/angular-fire-compat.umd.js.map +1 -1
  45. package/bundles/angular-fire-database.umd.js +323 -6
  46. package/bundles/angular-fire-database.umd.js.map +1 -1
  47. package/bundles/angular-fire-firestore-lite.umd.js +327 -9
  48. package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
  49. package/bundles/angular-fire-firestore.umd.js +323 -8
  50. package/bundles/angular-fire-firestore.umd.js.map +1 -1
  51. package/bundles/angular-fire-functions.umd.js +323 -6
  52. package/bundles/angular-fire-functions.umd.js.map +1 -1
  53. package/bundles/angular-fire-messaging.umd.js +339 -24
  54. package/bundles/angular-fire-messaging.umd.js.map +1 -1
  55. package/bundles/angular-fire-performance.umd.js +339 -11
  56. package/bundles/angular-fire-performance.umd.js.map +1 -1
  57. package/bundles/angular-fire-remote-config.umd.js +342 -6
  58. package/bundles/angular-fire-remote-config.umd.js.map +1 -1
  59. package/bundles/angular-fire-storage.umd.js +324 -7
  60. package/bundles/angular-fire-storage.umd.js.map +1 -1
  61. package/bundles/angular-fire.umd.js +43 -371
  62. package/bundles/angular-fire.umd.js.map +1 -1
  63. package/compat/analytics/screen-tracking.service.d.ts +2 -2
  64. package/compat/cache.d.ts +1 -0
  65. package/compat/public_api.d.ts +1 -0
  66. package/compat/storage/interfaces.d.ts +1 -0
  67. package/compat/storage/ref.d.ts +2 -1
  68. package/core.d.ts +13 -3
  69. package/database/database.module.d.ts +3 -3
  70. package/docs/deploy/getting-started.md +62 -1
  71. package/docs/version-7-upgrade.md +1 -1
  72. package/esm2015/analytics/analytics.module.js +33 -27
  73. package/esm2015/analytics/firebase.js +3 -3
  74. package/esm2015/analytics/overrides.js +3 -0
  75. package/esm2015/analytics/public_api.js +3 -1
  76. package/esm2015/analytics/screen-tracking.service.js +139 -0
  77. package/esm2015/analytics/user-tracking.service.js +43 -0
  78. package/esm2015/app/app.module.js +12 -7
  79. package/esm2015/app-check/app-check.js +1 -2
  80. package/esm2015/app-check/app-check.module.js +19 -14
  81. package/esm2015/auth/auth.js +1 -2
  82. package/esm2015/auth/auth.module.js +10 -9
  83. package/esm2015/auth-guard/angular-fire-auth-guard.js +5 -0
  84. package/esm2015/auth-guard/auth-guard.js +49 -0
  85. package/esm2015/auth-guard/auth-guard.module.js +20 -0
  86. package/esm2015/auth-guard/public_api.js +3 -0
  87. package/esm2015/compat/analytics/analytics.js +2 -3
  88. package/esm2015/compat/analytics/screen-tracking.service.js +11 -100
  89. package/esm2015/compat/auth/auth.js +2 -3
  90. package/esm2015/compat/cache.js +32 -0
  91. package/esm2015/compat/database/database.js +2 -3
  92. package/esm2015/compat/firestore/firestore.js +2 -3
  93. package/esm2015/compat/functions/functions.js +2 -3
  94. package/esm2015/compat/messaging/messaging.js +3 -3
  95. package/esm2015/compat/performance/performance.js +2 -3
  96. package/esm2015/compat/public_api.js +2 -1
  97. package/esm2015/compat/remote-config/remote-config.js +4 -5
  98. package/esm2015/compat/storage/interfaces.js +1 -1
  99. package/esm2015/compat/storage/ref.js +2 -1
  100. package/esm2015/compat/storage/storage.js +3 -3
  101. package/esm2015/core.js +44 -52
  102. package/esm2015/database/database.module.js +9 -7
  103. package/esm2015/firestore/firestore.module.js +9 -9
  104. package/esm2015/firestore/lite/lite.module.js +11 -7
  105. package/esm2015/functions/functions.module.js +9 -7
  106. package/esm2015/messaging/firebase.js +3 -3
  107. package/esm2015/messaging/messaging.module.js +19 -21
  108. package/esm2015/messaging/overrides.js +3 -0
  109. package/esm2015/performance/performance.module.js +22 -8
  110. package/esm2015/remote-config/firebase.js +2 -1
  111. package/esm2015/remote-config/overrides.js +3 -0
  112. package/esm2015/remote-config/remote-config.module.js +25 -7
  113. package/esm2015/storage/storage.module.js +10 -8
  114. package/esm2015/zones.js +3 -2
  115. package/fesm2015/angular-fire-analytics.js +209 -40
  116. package/fesm2015/angular-fire-analytics.js.map +1 -1
  117. package/fesm2015/angular-fire-app-check.js +18 -14
  118. package/fesm2015/angular-fire-app-check.js.map +1 -1
  119. package/fesm2015/angular-fire-app.js +11 -6
  120. package/fesm2015/angular-fire-app.js.map +1 -1
  121. package/fesm2015/angular-fire-auth-guard.js +72 -0
  122. package/fesm2015/angular-fire-auth-guard.js.map +1 -0
  123. package/fesm2015/angular-fire-auth.js +9 -9
  124. package/fesm2015/angular-fire-auth.js.map +1 -1
  125. package/fesm2015/angular-fire-compat-analytics.js +10 -98
  126. package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
  127. package/fesm2015/angular-fire-compat-auth.js +2 -2
  128. package/fesm2015/angular-fire-compat-auth.js.map +1 -1
  129. package/fesm2015/angular-fire-compat-database.js +2 -2
  130. package/fesm2015/angular-fire-compat-database.js.map +1 -1
  131. package/fesm2015/angular-fire-compat-firestore.js +2 -2
  132. package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
  133. package/fesm2015/angular-fire-compat-functions.js +2 -2
  134. package/fesm2015/angular-fire-compat-functions.js.map +1 -1
  135. package/fesm2015/angular-fire-compat-messaging.js +2 -2
  136. package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
  137. package/fesm2015/angular-fire-compat-performance.js +2 -2
  138. package/fesm2015/angular-fire-compat-performance.js.map +1 -1
  139. package/fesm2015/angular-fire-compat-remote-config.js +4 -4
  140. package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
  141. package/fesm2015/angular-fire-compat-storage.js +3 -2
  142. package/fesm2015/angular-fire-compat-storage.js.map +1 -1
  143. package/fesm2015/angular-fire-compat.js +34 -3
  144. package/fesm2015/angular-fire-compat.js.map +1 -1
  145. package/fesm2015/angular-fire-database.js +8 -6
  146. package/fesm2015/angular-fire-database.js.map +1 -1
  147. package/fesm2015/angular-fire-firestore-lite.js +10 -6
  148. package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
  149. package/fesm2015/angular-fire-firestore.js +8 -8
  150. package/fesm2015/angular-fire-firestore.js.map +1 -1
  151. package/fesm2015/angular-fire-functions.js +8 -6
  152. package/fesm2015/angular-fire-functions.js.map +1 -1
  153. package/fesm2015/angular-fire-messaging.js +22 -22
  154. package/fesm2015/angular-fire-messaging.js.map +1 -1
  155. package/fesm2015/angular-fire-performance.js +21 -7
  156. package/fesm2015/angular-fire-performance.js.map +1 -1
  157. package/fesm2015/angular-fire-remote-config.js +27 -7
  158. package/fesm2015/angular-fire-remote-config.js.map +1 -1
  159. package/fesm2015/angular-fire-storage.js +9 -7
  160. package/fesm2015/angular-fire-storage.js.map +1 -1
  161. package/fesm2015/angular-fire.js +46 -53
  162. package/fesm2015/angular-fire.js.map +1 -1
  163. package/firestore/firestore.module.d.ts +3 -3
  164. package/firestore/lite/lite.module.d.ts +3 -3
  165. package/functions/functions.module.d.ts +3 -3
  166. package/messaging/firebase.d.ts +2 -2
  167. package/messaging/messaging.module.d.ts +4 -4
  168. package/messaging/overrides.d.ts +1 -0
  169. package/package.json +9 -3
  170. package/performance/performance.module.d.ts +4 -4
  171. package/remote-config/firebase.d.ts +1 -0
  172. package/remote-config/overrides.d.ts +1 -0
  173. package/remote-config/remote-config.module.d.ts +3 -3
  174. package/schematics/deploy/actions.js +40 -26
  175. package/schematics/deploy/schema.json +4 -0
  176. package/schematics/firebaseTools.js +22 -2
  177. package/schematics/setup/index.js +9 -2
  178. package/schematics/setup/prompts.js +1 -1
  179. package/schematics/setup/ssr.js +7 -1
  180. package/schematics/setup/static.js +9 -3
  181. package/schematics/utils.js +1 -1
  182. package/schematics/versions.json +1 -1
  183. package/storage/storage.module.d.ts +3 -3
@@ -1,118 +1,32 @@
1
1
  import { __awaiter } from "tslib";
2
- import { ComponentFactoryResolver, Inject, Injectable, NgZone, Optional, PLATFORM_ID } from '@angular/core';
3
- import { of } from 'rxjs';
4
- import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
5
- import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
2
+ import { ComponentFactoryResolver, Injectable, NgZone, Optional } from '@angular/core';
3
+ import { switchMap } from 'rxjs/operators';
4
+ import { Router } from '@angular/router';
6
5
  import { AngularFireAnalytics } from './analytics';
7
6
  import { Title } from '@angular/platform-browser';
8
- import { isPlatformBrowser } from '@angular/common';
9
7
  import { UserTrackingService } from './user-tracking.service';
10
8
  import firebase from 'firebase/compat/app';
11
9
  import { VERSION } from '@angular/fire';
10
+ import { ɵscreenViewEvent } from '@angular/fire/analytics';
12
11
  import * as i0 from "@angular/core";
13
12
  import * as i1 from "./analytics";
14
13
  import * as i2 from "@angular/router";
15
14
  import * as i3 from "@angular/platform-browser";
16
15
  import * as i4 from "./user-tracking.service";
17
- const FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';
18
- const FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';
19
- const FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';
20
- const FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';
21
- const FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';
22
- const FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';
23
- const FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';
24
- const OUTLET_KEY = 'outlet';
25
- const PAGE_PATH_KEY = 'page_path';
26
- const PAGE_TITLE_KEY = 'page_title';
27
- const SCREEN_CLASS_KEY = 'screen_class';
28
- const SCREEN_NAME_KEY = 'screen_name';
29
16
  const SCREEN_VIEW_EVENT = 'screen_view';
30
- const EVENT_ORIGIN_AUTO = 'auto';
31
- const SCREEN_INSTANCE_DELIMITER = '#';
32
- // this is an INT64 in iOS/Android but use INT32 cause javascript
33
- let nextScreenInstanceID = Math.floor(Math.random() * (Math.pow(2, 32) - 1)) - Math.pow(2, 31);
34
- const knownScreenInstanceIDs = {};
35
- const getScreenInstanceID = (params) => {
36
- // unique the screen class against the outlet name
37
- const screenInstanceKey = [
38
- params[SCREEN_CLASS_KEY],
39
- params[OUTLET_KEY]
40
- ].join(SCREEN_INSTANCE_DELIMITER);
41
- if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
42
- return knownScreenInstanceIDs[screenInstanceKey];
43
- }
44
- else {
45
- const ret = nextScreenInstanceID++;
46
- knownScreenInstanceIDs[screenInstanceKey] = ret;
47
- return ret;
48
- }
49
- };
50
17
  export class ScreenTrackingService {
51
- constructor(analytics, router, title, componentFactoryResolver,
52
- // tslint:disable-next-line:ban-types
53
- platformId, zone, userTrackingService) {
18
+ constructor(analytics, router, title, componentFactoryResolver, zone, userTrackingService) {
54
19
  firebase.registerVersion('angularfire', VERSION.full, 'compat-screen-tracking');
55
- if (!router || !isPlatformBrowser(platformId)) {
20
+ if (!router || !analytics) {
56
21
  return this;
57
22
  }
58
23
  zone.runOutsideAngular(() => {
59
- const activationEndEvents = router.events.pipe(filter(e => e instanceof ActivationEnd));
60
- this.disposable = activationEndEvents.pipe(switchMap(activationEnd => {
61
- var _a;
62
- // router parseUrl is having trouble with outlets when they're empty
63
- // e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty
64
- const urlTree = router.parseUrl(router.url.replace(/(?:\().+(?:\))/g, a => a.replace('://', ':///')));
65
- const pagePath = ((_a = urlTree.root.children[activationEnd.snapshot.outlet]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
66
- const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);
67
- if (!actualSnapshot) {
68
- return of(null);
69
- }
70
- let actualDeep = actualSnapshot;
71
- while (actualDeep.firstChild) {
72
- actualDeep = actualDeep.firstChild;
73
- }
74
- const screenName = actualDeep.pathFromRoot.map(s => { var _a; return (_a = s.routeConfig) === null || _a === void 0 ? void 0 : _a.path; }).filter(it => it).join('/') || '/';
75
- const params = {
76
- [SCREEN_NAME_KEY]: screenName,
77
- [PAGE_PATH_KEY]: `/${pagePath}`,
78
- [FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,
79
- [FIREBASE_SCREEN_NAME_KEY]: screenName,
80
- [OUTLET_KEY]: activationEnd.snapshot.outlet
81
- };
82
- if (title) {
83
- params[PAGE_TITLE_KEY] = title.getTitle();
84
- }
85
- let component = actualSnapshot.component;
86
- if (component) {
87
- if (component === ɵEmptyOutletComponent) {
88
- let deepSnapshot = activationEnd.snapshot;
89
- // TODO when might there be mutple children, different outlets? explore
90
- while (deepSnapshot.firstChild) {
91
- deepSnapshot = deepSnapshot.firstChild;
92
- }
93
- component = deepSnapshot.component;
94
- }
95
- }
96
- else {
97
- component = activationEnd.snapshot.component;
98
- }
99
- if (typeof component === 'string') {
100
- return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: component }));
101
- }
102
- else if (component) {
103
- const componentFactory = componentFactoryResolver.resolveComponentFactory(component);
104
- return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: componentFactory.selector }));
105
- }
106
- else {
107
- // lazy loads cause extra activations, ignore
108
- return of(null);
109
- }
110
- }), filter(it => it), map(params => (Object.assign({ [FIREBASE_SCREEN_CLASS_KEY]: params[SCREEN_CLASS_KEY], [FIREBASE_SCREEN_INSTANCE_ID_KEY]: getScreenInstanceID(params) }, params))), groupBy(it => it[OUTLET_KEY]), mergeMap(it => it.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), startWith(undefined), pairwise(), map(([prior, current]) => prior ? Object.assign({ [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: prior[SCREEN_CLASS_KEY], [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: prior[SCREEN_NAME_KEY], [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: prior[FIREBASE_SCREEN_INSTANCE_ID_KEY] }, current) : current), switchMap((params) => __awaiter(this, void 0, void 0, function* () {
24
+ this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(switchMap((params) => __awaiter(this, void 0, void 0, function* () {
111
25
  if (userTrackingService) {
112
26
  yield userTrackingService.initialized;
113
27
  }
114
28
  return yield analytics.logEvent(SCREEN_VIEW_EVENT, params);
115
- }))))).subscribe();
29
+ }))).subscribe();
116
30
  });
117
31
  }
118
32
  ngOnDestroy() {
@@ -121,7 +35,7 @@ export class ScreenTrackingService {
121
35
  }
122
36
  }
123
37
  }
124
- ScreenTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, deps: [{ token: i1.AngularFireAnalytics }, { token: i2.Router, optional: true }, { token: i3.Title, optional: true }, { token: i0.ComponentFactoryResolver }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i4.UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ ScreenTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, deps: [{ token: i1.AngularFireAnalytics }, { token: i2.Router, optional: true }, { token: i3.Title, optional: true }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i4.UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
125
39
  ScreenTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService });
126
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, decorators: [{
127
41
  type: Injectable
@@ -129,10 +43,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
129
43
  type: Optional
130
44
  }] }, { type: i3.Title, decorators: [{
131
45
  type: Optional
132
- }] }, { type: i0.ComponentFactoryResolver }, { type: Object, decorators: [{
133
- type: Inject,
134
- args: [PLATFORM_ID]
135
- }] }, { type: i0.NgZone }, { type: i4.UserTrackingService, decorators: [{
46
+ }] }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i4.UserTrackingService, decorators: [{
136
47
  type: Optional
137
48
  }] }]; } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L2FuYWx5dGljcy9zY3JlZW4tdHJhY2tpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFFTixRQUFRLEVBQ1IsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxRQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBRXhDLE1BQU0seUJBQXlCLEdBQUcsdUJBQXVCLENBQUM7QUFDMUQsTUFBTSxrQ0FBa0MsR0FBRyx5QkFBeUIsQ0FBQztBQUNyRSxNQUFNLHdDQUF3QyxHQUFHLHNCQUFzQixDQUFDO0FBQ3hFLE1BQU0saUNBQWlDLEdBQUcsMEJBQTBCLENBQUM7QUFDckUsTUFBTSx5QkFBeUIsR0FBRyx1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OzBCQUNSLFFBQVE7cUVBR3dCLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBRWxCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGdyb3VwQnksIG1hcCwgbWVyZ2VNYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGl2YXRpb25FbmQsIFJvdXRlciwgybVFbXB0eU91dGxldENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZUFuYWx5dGljcyB9IGZyb20gJy4vYW5hbHl0aWNzJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVc2VyVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXRyYWNraW5nLnNlcnZpY2UnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuXG5jb25zdCBGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZID0gJ2ZpcmViYXNlX2V2ZW50X29yaWdpbic7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfaWQnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX3NjcmVlbic7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9jbGFzcyc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9pZCc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuJztcbmNvbnN0IE9VVExFVF9LRVkgPSAnb3V0bGV0JztcbmNvbnN0IFBBR0VfUEFUSF9LRVkgPSAncGFnZV9wYXRoJztcbmNvbnN0IFBBR0VfVElUTEVfS0VZID0gJ3BhZ2VfdGl0bGUnO1xuY29uc3QgU0NSRUVOX0NMQVNTX0tFWSA9ICdzY3JlZW5fY2xhc3MnO1xuY29uc3QgU0NSRUVOX05BTUVfS0VZID0gJ3NjcmVlbl9uYW1lJztcbmNvbnN0IFNDUkVFTl9WSUVXX0VWRU5UID0gJ3NjcmVlbl92aWV3JztcbmNvbnN0IEVWRU5UX09SSUdJTl9BVVRPID0gJ2F1dG8nO1xuY29uc3QgU0NSRUVOX0lOU1RBTkNFX0RFTElNSVRFUiA9ICcjJztcblxuLy8gdGhpcyBpcyBhbiBJTlQ2NCBpbiBpT1MvQW5kcm9pZCBidXQgdXNlIElOVDMyIGNhdXNlIGphdmFzY3JpcHRcbmxldCBuZXh0U2NyZWVuSW5zdGFuY2VJRCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgyICoqIDMyIC0gMSkpIC0gMiAqKiAzMTtcblxuY29uc3Qga25vd25TY3JlZW5JbnN0YW5jZUlEczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG5jb25zdCBnZXRTY3JlZW5JbnN0YW5jZUlEID0gKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAvLyB1bmlxdWUgdGhlIHNjcmVlbiBjbGFzcyBhZ2FpbnN0IHRoZSBvdXRsZXQgbmFtZVxuICBjb25zdCBzY3JlZW5JbnN0YW5jZUtleSA9IFtcbiAgICBwYXJhbXNbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgcGFyYW1zW09VVExFVF9LRVldXG4gIF0uam9pbihTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSKTtcbiAgaWYgKGtub3duU2NyZWVuSW5zdGFuY2VJRHMuaGFzT3duUHJvcGVydHkoc2NyZWVuSW5zdGFuY2VLZXkpKSB7XG4gICAgcmV0dXJuIGtub3duU2NyZWVuSW5zdGFuY2VJRHNbc2NyZWVuSW5zdGFuY2VLZXldO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJldCA9IG5leHRTY3JlZW5JbnN0YW5jZUlEKys7XG4gICAga25vd25TY3JlZW5JbnN0YW5jZUlEc1tzY3JlZW5JbnN0YW5jZUtleV0gPSByZXQ7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcmVlblRyYWNraW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBkaXNwb3NhYmxlOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYW5hbHl0aWNzOiBBbmd1bGFyRmlyZUFuYWx5dGljcyxcbiAgICBAT3B0aW9uYWwoKSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSB0aXRsZTogVGl0bGUsXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgKSB7XG4gICAgZmlyZWJhc2UucmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ2NvbXBhdC1zY3JlZW4tdHJhY2tpbmcnKTtcbiAgICBpZiAoIXJvdXRlciB8fCAhaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2YXRpb25FbmRFdmVudHMgPSByb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyPEFjdGl2YXRpb25FbmQ+KGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpKTtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZSA9IGFjdGl2YXRpb25FbmRFdmVudHMucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFjdGl2YXRpb25FbmQgPT4ge1xuICAgICAgICAgIC8vIHJvdXRlciBwYXJzZVVybCBpcyBoYXZpbmcgdHJvdWJsZSB3aXRoIG91dGxldHMgd2hlbiB0aGV5J3JlIGVtcHR5XG4gICAgICAgICAgLy8gZS5nLCAvYXNkZi8xKGJvYjovL3NhbGx5OmFzZGYpLCBzbyBwdXQgYW5vdGhlciBzbGFzaCBpbiB3aGVuIGVtcHR5XG4gICAgICAgICAgY29uc3QgdXJsVHJlZSA9IHJvdXRlci5wYXJzZVVybChyb3V0ZXIudXJsLnJlcGxhY2UoLyg/OlxcKCkuKyg/OlxcKSkvZywgYSA9PiBhLnJlcGxhY2UoJzovLycsICc6Ly8vJykpKTtcbiAgICAgICAgICBjb25zdCBwYWdlUGF0aCA9IHVybFRyZWUucm9vdC5jaGlsZHJlblthY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldF0/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgICAgICAgY29uc3QgYWN0dWFsU25hcHNob3QgPSByb3V0ZXIucm91dGVyU3RhdGUucm9vdC5jaGlsZHJlbi5tYXAoaXQgPT4gaXQpLmZpbmQoaXQgPT4gaXQub3V0bGV0ID09PSBhY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldCk7XG5cbiAgICAgICAgICBpZiAoIWFjdHVhbFNuYXBzaG90KSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGFjdHVhbERlZXAgPSBhY3R1YWxTbmFwc2hvdDtcbiAgICAgICAgICB3aGlsZSAoYWN0dWFsRGVlcC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBhY3R1YWxEZWVwID0gYWN0dWFsRGVlcC5maXJzdENoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzY3JlZW5OYW1lID0gYWN0dWFsRGVlcC5wYXRoRnJvbVJvb3QubWFwKHMgPT4gcy5yb3V0ZUNvbmZpZz8ucGF0aCkuZmlsdGVyKGl0ID0+IGl0KS5qb2luKCcvJykgfHwgJy8nO1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgW1NDUkVFTl9OQU1FX0tFWV06IHNjcmVlbk5hbWUsXG4gICAgICAgICAgICBbUEFHRV9QQVRIX0tFWV06IGAvJHtwYWdlUGF0aH1gLFxuICAgICAgICAgICAgW0ZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVldOiBFVkVOVF9PUklHSU5fQVVUTyxcbiAgICAgICAgICAgIFtGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVldOiBzY3JlZW5OYW1lLFxuICAgICAgICAgICAgW09VVExFVF9LRVldOiBhY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICBwYXJhbXNbUEFHRV9USVRMRV9LRVldID0gdGl0bGUuZ2V0VGl0bGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgY29tcG9uZW50ID0gYWN0dWFsU25hcHNob3QuY29tcG9uZW50O1xuICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgPT09IMm1RW1wdHlPdXRsZXRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgbGV0IGRlZXBTbmFwc2hvdCA9IGFjdGl2YXRpb25FbmQuc25hcHNob3Q7XG4gICAgICAgICAgICAgIC8vIFRPRE8gd2hlbiBtaWdodCB0aGVyZSBiZSBtdXRwbGUgY2hpbGRyZW4sIGRpZmZlcmVudCBvdXRsZXRzPyBleHBsb3JlXG4gICAgICAgICAgICAgIHdoaWxlIChkZWVwU25hcHNob3QuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGRlZXBTbmFwc2hvdCA9IGRlZXBTbmFwc2hvdC5maXJzdENoaWxkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbXBvbmVudCA9IGRlZXBTbmFwc2hvdC5jb21wb25lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudCA9IGFjdGl2YXRpb25FbmQuc25hcHNob3QuY29tcG9uZW50O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgY29tcG9uZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHsgLi4ucGFyYW1zLCBbU0NSRUVOX0NMQVNTX0tFWV06IGNvbXBvbmVudCB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHsgLi4ucGFyYW1zLCBbU0NSRUVOX0NMQVNTX0tFWV06IGNvbXBvbmVudEZhY3Rvcnkuc2VsZWN0b3IgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGxhenkgbG9hZHMgY2F1c2UgZXh0cmEgYWN0aXZhdGlvbnMsIGlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihpdCA9PiBpdCksXG4gICAgICAgIG1hcChwYXJhbXMgPT4gKHtcbiAgICAgICAgICBbRklSRUJBU0VfU0NSRUVOX0NMQVNTX0tFWV06IHBhcmFtc1tTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICAgICAgICBbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IGdldFNjcmVlbkluc3RhbmNlSUQocGFyYW1zKSxcbiAgICAgICAgICAuLi5wYXJhbXNcbiAgICAgICAgfSkpLFxuICAgICAgICBncm91cEJ5KGl0ID0+IGl0W09VVExFVF9LRVldKSxcbiAgICAgICAgbWVyZ2VNYXAoaXQgPT4gaXQucGlwZShcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpKSxcbiAgICAgICAgICBzdGFydFdpdGg8YW55LCBhbnk+KHVuZGVmaW5lZCksXG4gICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICBtYXAoKFtwcmlvciwgY3VycmVudF0pID0+XG4gICAgICAgICAgICBwcmlvciA/IHtcbiAgICAgICAgICAgICAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVldOiBwcmlvcltTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICAgICAgICAgICAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9OQU1FX0tFWV06IHByaW9yW1NDUkVFTl9OQU1FX0tFWV0sXG4gICAgICAgICAgICAgIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogcHJpb3JbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV0sXG4gICAgICAgICAgICAgIC4uLmN1cnJlbnRcbiAgICAgICAgICAgIH0gOiBjdXJyZW50XG4gICAgICAgICAgKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcGFyYW1zID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyVHJhY2tpbmdTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHVzZXJUcmFja2luZ1NlcnZpY2UuaW5pdGlhbGl6ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgYW5hbHl0aWNzLmxvZ0V2ZW50KFNDUkVFTl9WSUVXX0VWRU5ULCBwYXJhbXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkpXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZGlzcG9zYWJsZSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L2FuYWx5dGljcy9zY3JlZW4tdHJhY2tpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLFFBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUFFM0QsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUM7QUFHeEMsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxZQUNFLFNBQStCLEVBQ25CLE1BQWMsRUFDZCxLQUFZLEVBQ3hCLHdCQUFrRCxFQUNsRCxJQUFZLEVBQ0EsbUJBQXdDO1FBRXBELFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7U0FBRTtRQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FDNUUsU0FBUyxDQUFDLENBQU0sTUFBTSxFQUFDLEVBQUU7Z0JBQ3ZCLElBQUksbUJBQW1CLEVBQUU7b0JBQ3ZCLE1BQU0sbUJBQW1CLENBQUMsV0FBVyxDQUFDO2lCQUN2QztnQkFDRCxPQUFPLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUEsQ0FBQyxDQUNMLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7a0hBOUJVLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQU9OLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUdSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEluamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVBbmFseXRpY3MgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgVXNlclRyYWNraW5nU2VydmljZSB9IGZyb20gJy4vdXNlci10cmFja2luZy5zZXJ2aWNlJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IMm1c2NyZWVuVmlld0V2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hbmFseXRpY3MnO1xuXG5jb25zdCBTQ1JFRU5fVklFV19FVkVOVCA9ICdzY3JlZW5fdmlldyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgZGlzcG9zYWJsZTogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFuYWx5dGljczogQW5ndWxhckZpcmVBbmFseXRpY3MsXG4gICAgQE9wdGlvbmFsKCkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQE9wdGlvbmFsKCkgdGl0bGU6IFRpdGxlLFxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSB1c2VyVHJhY2tpbmdTZXJ2aWNlOiBVc2VyVHJhY2tpbmdTZXJ2aWNlLFxuICApIHtcbiAgICBmaXJlYmFzZS5yZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnY29tcGF0LXNjcmVlbi10cmFja2luZycpO1xuICAgIGlmICghcm91dGVyIHx8ICFhbmFseXRpY3MpIHsgcmV0dXJuIHRoaXM7IH1cbiAgICB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZSA9IMm1c2NyZWVuVmlld0V2ZW50KHJvdXRlciwgdGl0bGUsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcGFyYW1zID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyVHJhY2tpbmdTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHVzZXJUcmFja2luZ1NlcnZpY2UuaW5pdGlhbGl6ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgYW5hbHl0aWNzLmxvZ0V2ZW50KFNDUkVFTl9WSUVXX0VWRU5ULCBwYXJhbXMpO1xuICAgICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZGlzcG9zYWJsZSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -3,10 +3,9 @@ import { Observable, of, from, merge, Subject } from 'rxjs';
3
3
  import { switchMap, map, observeOn, shareReplay, first, filter, switchMapTo, subscribeOn } from 'rxjs/operators';
4
4
  import { ɵAngularFireSchedulers, keepUnstableUntilFirst } from '@angular/fire';
5
5
  import { ɵlazySDKProxy, ɵapplyMixins } from '@angular/fire/compat';
6
- import { ɵfirebaseAppFactory, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire/compat';
6
+ import { ɵfirebaseAppFactory, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵcacheInstance } from '@angular/fire/compat';
7
7
  import { isPlatformServer } from '@angular/common';
8
8
  import { proxyPolyfillCompat } from './base';
9
- import { ɵcacheInstance } from '@angular/fire';
10
9
  import { AppCheckInstances } from '@angular/fire/app-check';
11
10
  import * as i0 from "@angular/core";
12
11
  import * as i1 from "@angular/fire";
@@ -137,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
137
136
  type: Optional
138
137
  }] }]; } });
139
138
  ɵapplyMixins(AngularFireAuth, [proxyPolyfillCompat]);
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvYXV0aC9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFpQixZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUs1RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQXVCLGdDQUFnQyxDQUFDLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUE2Qiw0QkFBNEIsQ0FBQyxDQUFDO0FBQ3JHLE1BQU0s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VSxDQUFDLFlBQVksQ0FBQyxFQUFFO3dCQUM5RCw0RUFBNEU7d0JBQzVFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFrQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVcsQ0FBQyxDQUFDLENBQUM7cUJBQzVFO2dCQUNILENBQUM7YUFDRixFQUFDLENBQUMsQ0FBQztJQUVOLENBQUM7OzRHQTdJVSxlQUFlLGtCQThCaEIsZ0JBQWdCLGFBQ0osaUJBQWlCLDZCQUU3QixXQUFXLHlFQUdDLFlBQVksNkJBQ1osUUFBUSw2QkFDUixTQUFTLDZCQUNULGFBQWEsNkJBQ2IsbUJBQW1CLDZCQUNuQixXQUFXO2dIQXpDdEIsZUFBZSxjQUZkLEtBQUs7MkZBRU4sZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQStCSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCOzhCQUVKLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWTs7MEJBQy9CLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTs7MEJBQzNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsU0FBUzs7MEJBQzVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ2hDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1COzswQkFDdEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXOzswQkFDOUIsUUFBUTs7QUF1R2IsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwsIE5nWm9uZSwgUExBVEZPUk1fSUQsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbSwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBvYnNlcnZlT24sIHNoYXJlUmVwbGF5LCBmaXJzdCwgZmlsdGVyLCBzd2l0Y2hNYXBUbywgc3Vic2NyaWJlT24gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywga2VlcFVuc3RhYmxlVW50aWxGaXJzdCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgybVsYXp5U0RLUHJveHksIMm1UHJvbWlzZVByb3h5LCDJtWFwcGx5TWl4aW5zIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgybVmaXJlYmFzZUFwcEZhY3RvcnksIEZJUkVCQVNFX09QVElPTlMsIEZJUkVCQVNFX0FQUF9OQU1FLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCB7IEZpcmViYXNlT3B0aW9ucyB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHByb3h5UG9seWZpbGxDb21wYXQgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgybVjYWNoZUluc3RhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBBcHBDaGVja0luc3RhbmNlcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwLWNoZWNrJztcblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZUF1dGggZXh0ZW5kcyDJtVByb21pc2VQcm94eTxmaXJlYmFzZS5hdXRoLkF1dGg+IHt9XG5cbnR5cGUgVXNlRW11bGF0b3JBcmd1bWVudHMgPSBQYXJhbWV0ZXJzPGZpcmViYXNlLmF1dGguQXV0aFsndXNlRW11bGF0b3InXT47XG5leHBvcnQgY29uc3QgVVNFX0VNVUxBVE9SID0gbmV3IEluamVjdGlvblRva2VuPFVzZUVtdWxhdG9yQXJndW1lbnRzPignYW5ndWxhcmZpcmUyLmF1dGgudXNlLWVtdWxhdG9yJyk7XG5cbmV4cG9ydCBjb25zdCBTRVRUSU5HUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxmaXJlYmFzZS5hdXRoLkF1dGhTZXR0aW5ncz4oJ2FuZ3VsYXJmaXJlMi5hdXRoLnNldHRpbmdzJyk7XG5leHBvcnQgY29uc3QgVEVOQU5UX0lEID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2FuZ3VsYXJmaXJlMi5hdXRoLnRlbmFudC1pZCcpO1xuZXhwb3J0IGNvbnN0IExBTkdVQUdFX0NPREUgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLmF1dGgubGFuZ3VnYWdlLWNvZGUnKTtcbmV4cG9ydCBjb25zdCBVU0VfREVWSUNFX0xBTkdVQUdFID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIuYXV0aC51c2UtZGV2aWNlLWxhbmd1YWdlJyk7XG5leHBvcnQgY29uc3QgUEVSU0lTVEVOQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUuYXV0aC5wZXJzaXN0ZW5jZScpO1xuXG5leHBvcnQgY29uc3QgybVhdXRoRmFjdG9yeSA9IChcbiAgYXBwOiBGaXJlYmFzZUFwcCwgem9uZTogTmdab25lLCB1c2VFbXVsYXRvcjogVXNlRW11bGF0b3JBcmd1bWVudHN8bnVsbCxcbiAgdGVuYW50SWQ6IHN0cmluZywgbGFuZ3VhZ2VDb2RlOiBzdHJpbmd8bnVsbCwgdXNlRGV2aWNlTGFuZ3VhZ2U6IGJvb2xlYW58bnVsbCxcbiAgc2V0dGluZ3M6IGZpcmViYXNlLmF1dGguQXV0aFNldHRpbmdzfG51bGwsIHBlcnNpc3RlbmNlOiBzdHJpbmd8bnVsbCxcbikgPT4gybVjYWNoZUluc3RhbmNlKGAke2FwcC5uYW1lfS5hdXRoYCwgJ0FuZ3VsYXJGaXJlQXV0aCcsIGFwcC5uYW1lLCAoKSA9PiB7XG4gIGNvbnN0IGF1dGggPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGFwcC5hdXRoKCkpO1xuICBpZiAodXNlRW11bGF0b3IpIHtcbiAgICBhdXRoLnVzZUVtdWxhdG9yKC4uLnVzZUVtdWxhdG9yKTtcbiAgfVxuICBpZiAodGVuYW50SWQpIHtcbiAgICBhdXRoLnRlbmFudElkID0gdGVuYW50SWQ7XG4gIH1cbiAgYXV0aC5sYW5ndWFnZUNvZGUgPSBsYW5ndWFnZUNvZGU7XG4gIGlmICh1c2VEZXZpY2VMYW5ndWFnZSkge1xuICAgIGF1dGgudXNlRGV2aWNlTGFuZ3VhZ2UoKTtcbiAgfVxuICBpZiAoc2V0dGluZ3MpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhzZXR0aW5ncykpIHtcbiAgICAgIGF1dGguc2V0dGluZ3Nba10gPSB2O1xuICAgIH1cbiAgfVxuICBpZiAocGVyc2lzdGVuY2UpIHtcbiAgICBhdXRoLnNldFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKTtcbiAgfVxuICByZXR1cm4gYXV0aDtcbn0sIFt1c2VFbXVsYXRvciwgdGVuYW50SWQsIGxhbmd1YWdlQ29kZSwgdXNlRGV2aWNlTGFuZ3VhZ2UsIHNldHRpbmdzLCBwZXJzaXN0ZW5jZV0pO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlQXV0aCB7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgYXV0aGVudGljYXRpb24gc3RhdGU7IGFzIG9mIEZpcmViYXNlIDQuMCB0aGlzIGlzIG9ubHkgdHJpZ2dlcmVkIHZpYSBzaWduLWluL291dFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dGhTdGF0ZTogT2JzZXJ2YWJsZTxmaXJlYmFzZS5Vc2VyfG51bGw+O1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50bHkgc2lnbmVkLWluIHVzZXIncyBKV1QgdG9rZW4gdXNlZCB0byBpZGVudGlmeSB0aGUgdXNlciB0byBhIEZpcmViYXNlIHNlcnZpY2UgKG9yIG51bGwpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkVG9rZW46IE9ic2VydmFibGU8c3RyaW5nfG51bGw+O1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50bHkgc2lnbmVkLWluIHVzZXIgKG9yIG51bGwpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXI6IE9ic2VydmFibGU8ZmlyZWJhc2UuVXNlcnxudWxsPjtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudGx5IHNpZ25lZC1pbiB1c2VyJ3MgSWRUb2tlblJlc3VsdCBvYmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIElEIHRva2VuIEpXVCBzdHJpbmcgYW5kIG90aGVyXG4gICAqIGhlbHBlciBwcm9wZXJ0aWVzIGZvciBnZXR0aW5nIGRpZmZlcmVudCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdG9rZW4gYXMgd2VsbCBhcyBhbGwgdGhlIGRlY29kZWQgcGF5bG9hZCBjbGFpbXNcbiAgICogKG9yIG51bGwpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkVG9rZW5SZXN1bHQ6IE9ic2VydmFibGU8ZmlyZWJhc2UuYXV0aC5JZFRva2VuUmVzdWx0fG51bGw+O1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50bHkgc2lnbmVkLWluIHVzZXIncyBjcmVkZW50aWFsLCBvciBudWxsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbDogT2JzZXJ2YWJsZTxSZXF1aXJlZDxmaXJlYmFzZS5hdXRoLlVzZXJDcmVkZW50aWFsPnxudWxsPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZJUkVCQVNFX09QVElPTlMpIG9wdGlvbnM6IEZpcmViYXNlT3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZJUkVCQVNFX0FQUF9OQU1FKSBuYW1lOiBzdHJpbmd8bnVsbHx1bmRlZmluZWQsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgc2NoZWR1bGVyczogybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VfRU1VTEFUT1IpIHVzZUVtdWxhdG9yOiBhbnksIC8vIGNhbid0IHVzZSB0aGUgdHVwbGUgaGVyZVxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU0VUVElOR1MpIHNldHRpbmdzOiBhbnksIC8vIGNhbid0IHVzZSBmaXJlYmFzZS5hdXRoLkF1dGhTZXR0aW5ncyBoZXJlXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChURU5BTlRfSUQpIHRlbmFudElkOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTEFOR1VBR0VfQ09ERSkgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0RFVklDRV9MQU5HVUFHRSkgdXNlRGV2aWNlTGFuZ3VhZ2U6IGJvb2xlYW4gfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEVSU0lTVEVOQ0UpIHBlcnNpc3RlbmNlOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIF9hcHBDaGVja0luc3RhbmNlczogQXBwQ2hlY2tJbnN0YW5jZXMsXG4gICkge1xuICAgIGNvbnN0IGxvZ2lucyA9IG5ldyBTdWJqZWN0PFJlcXVpcmVkPGZpcmViYXNlLmF1dGguVXNlckNyZWRlbnRpYWw+PigpO1xuXG4gICAgY29uc3QgYXV0aCA9IG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L2F1dGgnKSkpLFxuICAgICAgbWFwKCgpID0+IMm1ZmlyZWJhc2VBcHBGYWN0b3J5KG9wdGlvbnMsIHpvbmUsIG5hbWUpKSxcbiAgICAgIG1hcChhcHAgPT4gybVhdXRoRmFjdG9yeShhcHAsIHpvbmUsIHVzZUVtdWxhdG9yLCB0ZW5hbnRJZCwgbGFuZ3VhZ2VDb2RlLCB1c2VEZXZpY2VMYW5ndWFnZSwgc2V0dGluZ3MsIHBlcnNpc3RlbmNlKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KSxcbiAgICApO1xuXG4gICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkpIHtcblxuICAgICAgdGhpcy5hdXRoU3RhdGUgPSB0aGlzLnVzZXIgPSB0aGlzLmlkVG9rZW4gPSB0aGlzLmlkVG9rZW5SZXN1bHQgPSB0aGlzLmNyZWRlbnRpYWwgPSBvZihudWxsKTtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIC8vIEhBQ0ssIGFzIHdlJ3JlIGV4cG9ydGluZyBhdXRoLkF1dGgsIHJhdGhlciB0aGFuIGF1dGgsIGRldmVsb3BlcnMgaW1wb3J0aW5nIGZpcmViYXNlLmF1dGhcbiAgICAgIC8vICAgICAgIChlLmcsIGBpbXBvcnQgeyBhdXRoIH0gZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCdgKSBhcmUgZ2V0dGluZyBhbiB1bmRlZmluZWQgYXV0aCBvYmplY3QgdW5leHBlY3RlZGx5XG4gICAgICAvLyAgICAgICBhcyB3ZSdyZSBjb21wbGV0ZWx5IGxhenkuIExldCdzIGVhZ2VybHkgbG9hZCB0aGUgQXV0aCBTREsgaGVyZS5cbiAgICAgIC8vICAgICAgIFRoZXJlIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJhY2UgY29uZGl0aW9ucyBzdGlsbC4uLiBidXQgdGhpcyBncmVhdGx5IGRlY3JlYXNlcyB0aGUgb2RkcyB3aGlsZVxuICAgICAgLy8gICAgICAgd2UgcmVldmFsdWF0ZSB0aGUgQVBJLlxuICAgICAgY29uc3QgXyA9IGF1dGgucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKTtcblxuICAgICAgY29uc3QgcmVkaXJlY3RSZXN1bHQgPSBhdXRoLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGguZ2V0UmVkaXJlY3RSZXN1bHQoKS50aGVuKGl0ID0+IGl0LCAoKSA9PiBudWxsKSksXG4gICAgICAgIGtlZXBVbnN0YWJsZVVudGlsRmlyc3QsXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IGZhbHNlIH0pLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXV0aFN0YXRlQ2hhbmdlZCA9IGF1dGgucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGF1dGggPT4gbmV3IE9ic2VydmFibGU8ZmlyZWJhc2UuVXNlcnxudWxsPihzdWIgPT5cbiAgICAgICAgICAoeyB1bnN1YnNjcmliZTogem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBhdXRoLm9uQXV0aFN0YXRlQ2hhbmdlZChcbiAgICAgICAgICAgIG5leHQgPT4gc3ViLm5leHQobmV4dCksXG4gICAgICAgICAgICBlcnIgPT4gc3ViLmVycm9yKGVyciksXG4gICAgICAgICAgICAoKSA9PiBzdWIuY29tcGxldGUoKVxuICAgICAgICAgICkpfSlcbiAgICAgICAgKSksXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpZFRva2VuQ2hhbmdlZCA9IGF1dGgucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGF1dGggPT4gbmV3IE9ic2VydmFibGU8ZmlyZWJhc2UuVXNlcnxudWxsPihzdWIgPT5cbiAgICAgICAgICAoeyB1bnN1YnNjcmliZTogem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBhdXRoLm9uSWRUb2tlbkNoYW5nZWQoXG4gICAgICAgICAgICBuZXh0ID0+IHN1Yi5uZXh0KG5leHQpLFxuICAgICAgICAgICAgZXJyID0+IHN1Yi5lcnJvcihlcnIpLFxuICAgICAgICAgICAgKCkgPT4gc3ViLmNvbXBsZXRlKClcbiAgICAgICAgICApKX0pXG4gICAgICAgICkpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmF1dGhTdGF0ZSA9IHJlZGlyZWN0UmVzdWx0LnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcFRvKGF1dGhTdGF0ZUNoYW5nZWQpLFxuICAgICAgICBzdWJzY3JpYmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnVzZXIgPSByZWRpcmVjdFJlc3VsdC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXBUbyhpZFRva2VuQ2hhbmdlZCksXG4gICAgICAgIHN1YnNjcmliZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaWRUb2tlbiA9IHRoaXMudXNlci5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodXNlciA9PiB1c2VyID8gZnJvbSh1c2VyLmdldElkVG9rZW4oKSkgOiBvZihudWxsKSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaWRUb2tlblJlc3VsdCA9IHRoaXMudXNlci5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodXNlciA9PiB1c2VyID8gZnJvbSh1c2VyLmdldElkVG9rZW5SZXN1bHQoKSkgOiBvZihudWxsKSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY3JlZGVudGlhbCA9IG1lcmdlKFxuICAgICAgICByZWRpcmVjdFJlc3VsdCxcbiAgICAgICAgbG9naW5zLFxuICAgICAgICAvLyBwaXBlIGluIG51bGwgYXV0aFN0YXRlIHRvIG1ha2UgY3JlZGVudGlhbCB6aXBhYmxlLCBqdXN0IGEgd2VpcmQgZGV2ZXhwIGlmXG4gICAgICAgIC8vIGF1dGhTdGF0ZSBhbmQgdXNlciBnbyBudWxsIHRvIHN0aWxsIGhhdmUgYSBjcmVkZW50aWFsXG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnBpcGUoZmlsdGVyKGl0ID0+ICFpdCkpXG4gICAgICApLnBpcGUoXG4gICAgICAgIC8vIGhhbmRsZSB0aGUgeyB1c2VyOiB7IH0gfSB3aGVuIGEgdXNlciBpcyBhbHJlYWR5IGxvZ2dlZCBpbiwgcmF0aGVyIGhhdmUgbnVsbFxuICAgICAgICAvLyBUT0RPIGhhbmRsZSB0aGUgdHlwZSBjb3JjZXJzaW9uIGJldHRlclxuICAgICAgICBtYXAoY3JlZGVudGlhbCA9PiBjcmVkZW50aWFsPy51c2VyID8gY3JlZGVudGlhbCBhcyBSZXF1aXJlZDxmaXJlYmFzZS5hdXRoLlVzZXJDcmVkZW50aWFsPiA6IG51bGwpLFxuICAgICAgICBzdWJzY3JpYmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICApO1xuXG4gICAgfVxuXG4gICAgcmV0dXJuIMm1bGF6eVNES1Byb3h5KHRoaXMsIGF1dGgsIHpvbmUsIHsgc3B5OiB7XG4gICAgICBhcHBseTogKG5hbWUsIF8sIHZhbCkgPT4ge1xuICAgICAgICAvLyBJZiB0aGV5IGNhbGwgYSBzaWduSW4gb3IgY3JlYXRlVXNlciBmdW5jdGlvbiBsaXN0ZW4gaW50byB0aGUgcHJvbWlzZVxuICAgICAgICAvLyB0aGlzIHdpbGwgZ2l2ZSB1cyB0aGUgdXNlciBjcmVkZW50aWFsLCBwdXNoIG9udG8gdGhlIGxvZ2lucyBTdWJqZWN0XG4gICAgICAgIC8vIHRvIGJlIGNvbnN1bWVkIGluIC5jcmVkZW50aWFsXG4gICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJ3NpZ25JbicpIHx8IG5hbWUuc3RhcnRzV2l0aCgnY3JlYXRlVXNlcicpKSB7XG4gICAgICAgICAgLy8gVE9ETyBmaXggdGhlIHR5cGVzLCB0aGUgdHJvdWJsZSBpcyBVc2VyQ3JlZGVudGlhbCBoYXMgZXZlcnl0aGluZyBvcHRpb25hbFxuICAgICAgICAgIHZhbC50aGVuKCh1c2VyOiBmaXJlYmFzZS5hdXRoLlVzZXJDcmVkZW50aWFsKSA9PiBsb2dpbnMubmV4dCh1c2VyIGFzIGFueSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfX0pO1xuXG4gIH1cblxufVxuXG7JtWFwcGx5TWl4aW5zKEFuZ3VsYXJGaXJlQXV0aCwgW3Byb3h5UG9seWZpbGxDb21wYXRdKTtcbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvYXV0aC9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFpQixZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQWUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBSzVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBdUIsZ0NBQWdDLENBQUMsQ0FBQztBQUV2RyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQTZCLDRCQUE0QixDQUFDLENBQUM7QUFDckcsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxD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QUE0RTt3QkFDNUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQWtDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBVyxDQUFDLENBQUMsQ0FBQztxQkFDNUU7Z0JBQ0gsQ0FBQzthQUNGLEVBQUMsQ0FBQyxDQUFDO0lBRU4sQ0FBQzs7NEdBN0lVLGVBQWUsa0JBOEJoQixnQkFBZ0IsYUFDSixpQkFBaUIsNkJBRTdCLFdBQVcseUVBR0MsWUFBWSw2QkFDWixRQUFRLDZCQUNSLFNBQVMsNkJBQ1QsYUFBYSw2QkFDYixtQkFBbUIsNkJBQ25CLFdBQVc7Z0hBekN0QixlQUFlLGNBRmQsS0FBSzsyRkFFTixlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBK0JJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OEJBRUosTUFBTTswQkFBdEMsTUFBTTsyQkFBQyxXQUFXOzswQkFHbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZOzswQkFDL0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFROzswQkFDM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxTQUFTOzswQkFDNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUN0QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFROztBQXVHYixZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCwgTmdab25lLCBQTEFURk9STV9JRCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmcm9tLCBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIG9ic2VydmVPbiwgc2hhcmVSZXBsYXksIGZpcnN0LCBmaWx0ZXIsIHN3aXRjaE1hcFRvLCBzdWJzY3JpYmVPbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLCBrZWVwVW5zdGFibGVVbnRpbEZpcnN0IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyDJtWxhenlTREtQcm94eSwgybVQcm9taXNlUHJveHksIMm1YXBwbHlNaXhpbnMgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgeyDJtWZpcmViYXNlQXBwRmFjdG9yeSwgRklSRUJBU0VfT1BUSU9OUywgRklSRUJBU0VfQVBQX05BTUUsIEZpcmViYXNlQXBwLCDJtWNhY2hlSW5zdGFuY2UgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgeyBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBwcm94eVBvbHlmaWxsQ29tcGF0IH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFwcENoZWNrSW5zdGFuY2VzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAtY2hlY2snO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJGaXJlQXV0aCBleHRlbmRzIMm1UHJvbWlzZVByb3h5PGZpcmViYXNlLmF1dGguQXV0aD4ge31cblxudHlwZSBVc2VFbXVsYXRvckFyZ3VtZW50cyA9IFBhcmFtZXRlcnM8ZmlyZWJhc2UuYXV0aC5BdXRoWyd1c2VFbXVsYXRvciddPjtcbmV4cG9ydCBjb25zdCBVU0VfRU1VTEFUT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48VXNlRW11bGF0b3JBcmd1bWVudHM+KCdhbmd1bGFyZmlyZTIuYXV0aC51c2UtZW11bGF0b3InKTtcblxuZXhwb3J0IGNvbnN0IFNFVFRJTkdTID0gbmV3IEluamVjdGlvblRva2VuPGZpcmViYXNlLmF1dGguQXV0aFNldHRpbmdzPignYW5ndWxhcmZpcmUyLmF1dGguc2V0dGluZ3MnKTtcbmV4cG9ydCBjb25zdCBURU5BTlRfSUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLmF1dGgudGVuYW50LWlkJyk7XG5leHBvcnQgY29uc3QgTEFOR1VBR0VfQ09ERSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdhbmd1bGFyZmlyZTIuYXV0aC5sYW5ndWdhZ2UtY29kZScpO1xuZXhwb3J0IGNvbnN0IFVTRV9ERVZJQ0VfTEFOR1VBR0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ2FuZ3VsYXJmaXJlMi5hdXRoLnVzZS1kZXZpY2UtbGFuZ3VhZ2UnKTtcbmV4cG9ydCBjb25zdCBQRVJTSVNURU5DRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdhbmd1bGFyZmlyZS5hdXRoLnBlcnNpc3RlbmNlJyk7XG5cbmV4cG9ydCBjb25zdCDJtWF1dGhGYWN0b3J5ID0gKFxuICBhcHA6IEZpcmViYXNlQXBwLCB6b25lOiBOZ1pvbmUsIHVzZUVtdWxhdG9yOiBVc2VFbXVsYXRvckFyZ3VtZW50c3xudWxsLFxuICB0ZW5hbnRJZDogc3RyaW5nLCBsYW5ndWFnZUNvZGU6IHN0cmluZ3xudWxsLCB1c2VEZXZpY2VMYW5ndWFnZTogYm9vbGVhbnxudWxsLFxuICBzZXR0aW5nczogZmlyZWJhc2UuYXV0aC5BdXRoU2V0dGluZ3N8bnVsbCwgcGVyc2lzdGVuY2U6IHN0cmluZ3xudWxsLFxuKSA9PiDJtWNhY2hlSW5zdGFuY2UoYCR7YXBwLm5hbWV9LmF1dGhgLCAnQW5ndWxhckZpcmVBdXRoJywgYXBwLm5hbWUsICgpID0+IHtcbiAgY29uc3QgYXV0aCA9IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gYXBwLmF1dGgoKSk7XG4gIGlmICh1c2VFbXVsYXRvcikge1xuICAgIGF1dGgudXNlRW11bGF0b3IoLi4udXNlRW11bGF0b3IpO1xuICB9XG4gIGlmICh0ZW5hbnRJZCkge1xuICAgIGF1dGgudGVuYW50SWQgPSB0ZW5hbnRJZDtcbiAgfVxuICBhdXRoLmxhbmd1YWdlQ29kZSA9IGxhbmd1YWdlQ29kZTtcbiAgaWYgKHVzZURldmljZUxhbmd1YWdlKSB7XG4gICAgYXV0aC51c2VEZXZpY2VMYW5ndWFnZSgpO1xuICB9XG4gIGlmIChzZXR0aW5ncykge1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHNldHRpbmdzKSkge1xuICAgICAgYXV0aC5zZXR0aW5nc1trXSA9IHY7XG4gICAgfVxuICB9XG4gIGlmIChwZXJzaXN0ZW5jZSkge1xuICAgIGF1dGguc2V0UGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpO1xuICB9XG4gIHJldHVybiBhdXRoO1xufSwgW3VzZUVtdWxhdG9yLCB0ZW5hbnRJZCwgbGFuZ3VhZ2VDb2RlLCB1c2VEZXZpY2VMYW5ndWFnZSwgc2V0dGluZ3MsIHBlcnNpc3RlbmNlXSk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueSdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVBdXRoIHtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBhdXRoZW50aWNhdGlvbiBzdGF0ZTsgYXMgb2YgRmlyZWJhc2UgNC4wIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgdmlhIHNpZ24taW4vb3V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aFN0YXRlOiBPYnNlcnZhYmxlPGZpcmViYXNlLlVzZXJ8bnVsbD47XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnRseSBzaWduZWQtaW4gdXNlcidzIEpXVCB0b2tlbiB1c2VkIHRvIGlkZW50aWZ5IHRoZSB1c2VyIHRvIGEgRmlyZWJhc2Ugc2VydmljZSAob3IgbnVsbCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWRUb2tlbjogT2JzZXJ2YWJsZTxzdHJpbmd8bnVsbD47XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnRseSBzaWduZWQtaW4gdXNlciAob3IgbnVsbCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlcjogT2JzZXJ2YWJsZTxmaXJlYmFzZS5Vc2VyfG51bGw+O1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50bHkgc2lnbmVkLWluIHVzZXIncyBJZFRva2VuUmVzdWx0IG9iamVjdCB3aGljaCBjb250YWlucyB0aGUgSUQgdG9rZW4gSldUIHN0cmluZyBhbmQgb3RoZXJcbiAgICogaGVscGVyIHByb3BlcnRpZXMgZm9yIGdldHRpbmcgZGlmZmVyZW50IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0b2tlbiBhcyB3ZWxsIGFzIGFsbCB0aGUgZGVjb2RlZCBwYXlsb2FkIGNsYWltc1xuICAgKiAob3IgbnVsbCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWRUb2tlblJlc3VsdDogT2JzZXJ2YWJsZTxmaXJlYmFzZS5hdXRoLklkVG9rZW5SZXN1bHR8bnVsbD47XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnRseSBzaWduZWQtaW4gdXNlcidzIGNyZWRlbnRpYWwsIG9yIG51bGxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsOiBPYnNlcnZhYmxlPFJlcXVpcmVkPGZpcmViYXNlLmF1dGguVXNlckNyZWRlbnRpYWw+fG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRklSRUJBU0VfT1BUSU9OUykgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRklSRUJBU0VfQVBQX05BTUUpIG5hbWU6IHN0cmluZ3xudWxsfHVuZGVmaW5lZCxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLXR5cGVzXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9FTVVMQVRPUikgdXNlRW11bGF0b3I6IGFueSwgLy8gY2FuJ3QgdXNlIHRoZSB0dXBsZSBoZXJlXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChTRVRUSU5HUykgc2V0dGluZ3M6IGFueSwgLy8gY2FuJ3QgdXNlIGZpcmViYXNlLmF1dGguQXV0aFNldHRpbmdzIGhlcmVcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRFTkFOVF9JRCkgdGVuYW50SWQ6IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChMQU5HVUFHRV9DT0RFKSBsYW5ndWFnZUNvZGU6IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VfREVWSUNFX0xBTkdVQUdFKSB1c2VEZXZpY2VMYW5ndWFnZTogYm9vbGVhbiB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQRVJTSVNURU5DRSkgcGVyc2lzdGVuY2U6IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgX2FwcENoZWNrSW5zdGFuY2VzOiBBcHBDaGVja0luc3RhbmNlcyxcbiAgKSB7XG4gICAgY29uc3QgbG9naW5zID0gbmV3IFN1YmplY3Q8UmVxdWlyZWQ8ZmlyZWJhc2UuYXV0aC5Vc2VyQ3JlZGVudGlhbD4+KCk7XG5cbiAgICBjb25zdCBhdXRoID0gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gaW1wb3J0KCdmaXJlYmFzZS9jb21wYXQvYXV0aCcpKSksXG4gICAgICBtYXAoKCkgPT4gybVmaXJlYmFzZUFwcEZhY3Rvcnkob3B0aW9ucywgem9uZSwgbmFtZSkpLFxuICAgICAgbWFwKGFwcCA9PiDJtWF1dGhGYWN0b3J5KGFwcCwgem9uZSwgdXNlRW11bGF0b3IsIHRlbmFudElkLCBsYW5ndWFnZUNvZGUsIHVzZURldmljZUxhbmd1YWdlLCBzZXR0aW5ncywgcGVyc2lzdGVuY2UpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IGZhbHNlIH0pLFxuICAgICk7XG5cbiAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuXG4gICAgICB0aGlzLmF1dGhTdGF0ZSA9IHRoaXMudXNlciA9IHRoaXMuaWRUb2tlbiA9IHRoaXMuaWRUb2tlblJlc3VsdCA9IHRoaXMuY3JlZGVudGlhbCA9IG9mKG51bGwpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgLy8gSEFDSywgYXMgd2UncmUgZXhwb3J0aW5nIGF1dGguQXV0aCwgcmF0aGVyIHRoYW4gYXV0aCwgZGV2ZWxvcGVycyBpbXBvcnRpbmcgZmlyZWJhc2UuYXV0aFxuICAgICAgLy8gICAgICAgKGUuZywgYGltcG9ydCB7IGF1dGggfSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJ2ApIGFyZSBnZXR0aW5nIGFuIHVuZGVmaW5lZCBhdXRoIG9iamVjdCB1bmV4cGVjdGVkbHlcbiAgICAgIC8vICAgICAgIGFzIHdlJ3JlIGNvbXBsZXRlbHkgbGF6eS4gTGV0J3MgZWFnZXJseSBsb2FkIHRoZSBBdXRoIFNESyBoZXJlLlxuICAgICAgLy8gICAgICAgVGhlcmUgY291bGQgcG90ZW50aWFsbHkgYmUgcmFjZSBjb25kaXRpb25zIHN0aWxsLi4uIGJ1dCB0aGlzIGdyZWF0bHkgZGVjcmVhc2VzIHRoZSBvZGRzIHdoaWxlXG4gICAgICAvLyAgICAgICB3ZSByZWV2YWx1YXRlIHRoZSBBUEkuXG4gICAgICBjb25zdCBfID0gYXV0aC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgpO1xuXG4gICAgICBjb25zdCByZWRpcmVjdFJlc3VsdCA9IGF1dGgucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGF1dGggPT4gYXV0aC5nZXRSZWRpcmVjdFJlc3VsdCgpLnRoZW4oaXQgPT4gaXQsICgpID0+IG51bGwpKSxcbiAgICAgICAga2VlcFVuc3RhYmxlVW50aWxGaXJzdCxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogZmFsc2UgfSksXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhdXRoU3RhdGVDaGFuZ2VkID0gYXV0aC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXV0aCA9PiBuZXcgT2JzZXJ2YWJsZTxmaXJlYmFzZS5Vc2VyfG51bGw+KHN1YiA9PlxuICAgICAgICAgICh7IHVuc3Vic2NyaWJlOiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGF1dGgub25BdXRoU3RhdGVDaGFuZ2VkKFxuICAgICAgICAgICAgbmV4dCA9PiBzdWIubmV4dChuZXh0KSxcbiAgICAgICAgICAgIGVyciA9PiBzdWIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICgpID0+IHN1Yi5jb21wbGV0ZSgpXG4gICAgICAgICAgKSl9KVxuICAgICAgICApKSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGlkVG9rZW5DaGFuZ2VkID0gYXV0aC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXV0aCA9PiBuZXcgT2JzZXJ2YWJsZTxmaXJlYmFzZS5Vc2VyfG51bGw+KHN1YiA9PlxuICAgICAgICAgICh7IHVuc3Vic2NyaWJlOiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGF1dGgub25JZFRva2VuQ2hhbmdlZChcbiAgICAgICAgICAgIG5leHQgPT4gc3ViLm5leHQobmV4dCksXG4gICAgICAgICAgICBlcnIgPT4gc3ViLmVycm9yKGVyciksXG4gICAgICAgICAgICAoKSA9PiBzdWIuY29tcGxldGUoKVxuICAgICAgICAgICkpfSlcbiAgICAgICAgKSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuYXV0aFN0YXRlID0gcmVkaXJlY3RSZXN1bHQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwVG8oYXV0aFN0YXRlQ2hhbmdlZCksXG4gICAgICAgIHN1YnNjcmliZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXNlciA9IHJlZGlyZWN0UmVzdWx0LnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcFRvKGlkVG9rZW5DaGFuZ2VkKSxcbiAgICAgICAgc3Vic2NyaWJlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLmluc2lkZUFuZ3VsYXIpLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5pZFRva2VuID0gdGhpcy51c2VyLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh1c2VyID0+IHVzZXIgPyBmcm9tKHVzZXIuZ2V0SWRUb2tlbigpKSA6IG9mKG51bGwpKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5pZFRva2VuUmVzdWx0ID0gdGhpcy51c2VyLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh1c2VyID0+IHVzZXIgPyBmcm9tKHVzZXIuZ2V0SWRUb2tlblJlc3VsdCgpKSA6IG9mKG51bGwpKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5jcmVkZW50aWFsID0gbWVyZ2UoXG4gICAgICAgIHJlZGlyZWN0UmVzdWx0LFxuICAgICAgICBsb2dpbnMsXG4gICAgICAgIC8vIHBpcGUgaW4gbnVsbCBhdXRoU3RhdGUgdG8gbWFrZSBjcmVkZW50aWFsIHppcGFibGUsIGp1c3QgYSB3ZWlyZCBkZXZleHAgaWZcbiAgICAgICAgLy8gYXV0aFN0YXRlIGFuZCB1c2VyIGdvIG51bGwgdG8gc3RpbGwgaGF2ZSBhIGNyZWRlbnRpYWxcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUucGlwZShmaWx0ZXIoaXQgPT4gIWl0KSlcbiAgICAgICkucGlwZShcbiAgICAgICAgLy8gaGFuZGxlIHRoZSB7IHVzZXI6IHsgfSB9IHdoZW4gYSB1c2VyIGlzIGFscmVhZHkgbG9nZ2VkIGluLCByYXRoZXIgaGF2ZSBudWxsXG4gICAgICAgIC8vIFRPRE8gaGFuZGxlIHRoZSB0eXBlIGNvcmNlcnNpb24gYmV0dGVyXG4gICAgICAgIG1hcChjcmVkZW50aWFsID0+IGNyZWRlbnRpYWw/LnVzZXIgPyBjcmVkZW50aWFsIGFzIFJlcXVpcmVkPGZpcmViYXNlLmF1dGguVXNlckNyZWRlbnRpYWw+IDogbnVsbCksXG4gICAgICAgIHN1YnNjcmliZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgICk7XG5cbiAgICB9XG5cbiAgICByZXR1cm4gybVsYXp5U0RLUHJveHkodGhpcywgYXV0aCwgem9uZSwgeyBzcHk6IHtcbiAgICAgIGFwcGx5OiAobmFtZSwgXywgdmFsKSA9PiB7XG4gICAgICAgIC8vIElmIHRoZXkgY2FsbCBhIHNpZ25JbiBvciBjcmVhdGVVc2VyIGZ1bmN0aW9uIGxpc3RlbiBpbnRvIHRoZSBwcm9taXNlXG4gICAgICAgIC8vIHRoaXMgd2lsbCBnaXZlIHVzIHRoZSB1c2VyIGNyZWRlbnRpYWwsIHB1c2ggb250byB0aGUgbG9naW5zIFN1YmplY3RcbiAgICAgICAgLy8gdG8gYmUgY29uc3VtZWQgaW4gLmNyZWRlbnRpYWxcbiAgICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnc2lnbkluJykgfHwgbmFtZS5zdGFydHNXaXRoKCdjcmVhdGVVc2VyJykpIHtcbiAgICAgICAgICAvLyBUT0RPIGZpeCB0aGUgdHlwZXMsIHRoZSB0cm91YmxlIGlzIFVzZXJDcmVkZW50aWFsIGhhcyBldmVyeXRoaW5nIG9wdGlvbmFsXG4gICAgICAgICAgdmFsLnRoZW4oKHVzZXI6IGZpcmViYXNlLmF1dGguVXNlckNyZWRlbnRpYWwpID0+IGxvZ2lucy5uZXh0KHVzZXIgYXMgYW55KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9fSk7XG5cbiAgfVxuXG59XG5cbsm1YXBwbHlNaXhpbnMoQW5ndWxhckZpcmVBdXRoLCBbcHJveHlQb2x5ZmlsbENvbXBhdF0pO1xuIl19
@@ -0,0 +1,32 @@
1
+ import { isDevMode } from '@angular/core';
2
+ export function ɵcacheInstance(cacheKey, moduleName, appName, fn, deps) {
3
+ const [, instance, cachedDeps] = globalThis.ɵAngularfireInstanceCache.find((it) => it[0] === cacheKey) || [];
4
+ if (instance) {
5
+ if (!matchDep(deps, cachedDeps)) {
6
+ log('error', `${moduleName} was already initialized on the ${appName} Firebase App with different settings.${IS_HMR ? ' You may need to reload as Firebase is not HMR aware.' : ''}`);
7
+ log('warn', { is: deps, was: cachedDeps });
8
+ }
9
+ return instance;
10
+ }
11
+ else {
12
+ const newInstance = fn();
13
+ globalThis.ɵAngularfireInstanceCache.push([cacheKey, newInstance, deps]);
14
+ return newInstance;
15
+ }
16
+ }
17
+ function matchDep(a, b) {
18
+ try {
19
+ return a.toString() === b.toString();
20
+ }
21
+ catch (_) {
22
+ return a === b;
23
+ }
24
+ }
25
+ const IS_HMR = !!module.hot;
26
+ const log = (level, ...args) => {
27
+ if (isDevMode() && typeof console !== 'undefined') {
28
+ console[level](...args);
29
+ }
30
+ };
31
+ globalThis.ɵAngularfireInstanceCache || (globalThis.ɵAngularfireInstanceCache = []);
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcGF0L2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsTUFBTSxVQUFVLGNBQWMsQ0FBSSxRQUFhLEVBQUUsVUFBa0IsRUFBRSxPQUFlLEVBQUUsRUFBVyxFQUFFLElBQVM7SUFDMUcsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEgsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtZQUMvQixHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsVUFBVSxtQ0FBbUMsT0FBTyx5Q0FBeUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0TCxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO1NBQU07UUFDTCxNQUFNLFdBQVcsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN6QixVQUFVLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sV0FBVyxDQUFDO0tBQ3BCO0FBQ0gsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLENBQU0sRUFBRSxDQUFNO0lBQzlCLElBQUk7UUFDRixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDdEM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQjtBQUNILENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUUsTUFBYyxDQUFDLEdBQUcsQ0FBQztBQUVyQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWtDLEVBQUUsR0FBRyxJQUFTLEVBQUUsRUFBRTtJQUMvRCxJQUFJLFNBQVMsRUFBRSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtRQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUN6QjtBQUNILENBQUMsQ0FBQztBQUVGLFVBQVUsQ0FBQyx5QkFBeUIsS0FBcEMsVUFBVSxDQUFDLHlCQUF5QixHQUFLLEVBQUUsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gybVjYWNoZUluc3RhbmNlPFQ+KGNhY2hlS2V5OiBhbnksIG1vZHVsZU5hbWU6IHN0cmluZywgYXBwTmFtZTogc3RyaW5nLCBmbjogKCkgPT4gVCwgZGVwczogYW55KTogVCB7XG4gIGNvbnN0IFssIGluc3RhbmNlLCBjYWNoZWREZXBzXSA9IGdsb2JhbFRoaXMuybVBbmd1bGFyZmlyZUluc3RhbmNlQ2FjaGUuZmluZCgoaXQ6IGFueSkgPT4gaXRbMF0gPT09IGNhY2hlS2V5KSB8fCBbXTtcbiAgaWYgKGluc3RhbmNlKSB7XG4gICAgaWYgKCFtYXRjaERlcChkZXBzLCBjYWNoZWREZXBzKSkge1xuICAgICAgbG9nKCdlcnJvcicsIGAke21vZHVsZU5hbWV9IHdhcyBhbHJlYWR5IGluaXRpYWxpemVkIG9uIHRoZSAke2FwcE5hbWV9IEZpcmViYXNlIEFwcCB3aXRoIGRpZmZlcmVudCBzZXR0aW5ncy4ke0lTX0hNUiA/ICcgWW91IG1heSBuZWVkIHRvIHJlbG9hZCBhcyBGaXJlYmFzZSBpcyBub3QgSE1SIGF3YXJlLicgOiAnJ31gKTtcbiAgICAgIGxvZygnd2FybicsIHtpczogZGVwcywgd2FzOiBjYWNoZWREZXBzfSk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBuZXdJbnN0YW5jZSA9IGZuKCk7XG4gICAgZ2xvYmFsVGhpcy7JtUFuZ3VsYXJmaXJlSW5zdGFuY2VDYWNoZS5wdXNoKFtjYWNoZUtleSwgbmV3SW5zdGFuY2UsIGRlcHNdKTtcbiAgICByZXR1cm4gbmV3SW5zdGFuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hEZXAoYTogYW55LCBiOiBhbnkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gYSA9PT0gYjtcbiAgfVxufVxuXG5jb25zdCBJU19ITVIgPSAhIShtb2R1bGUgYXMgYW55KS5ob3Q7XG5cbmNvbnN0IGxvZyA9IChsZXZlbDogJ2xvZyd8J2Vycm9yJ3wnaW5mbyd8J3dhcm4nLCAuLi5hcmdzOiBhbnkpID0+IHtcbiAgaWYgKGlzRGV2TW9kZSgpICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnNvbGVbbGV2ZWxdKC4uLmFyZ3MpO1xuICB9XG59O1xuXG5nbG9iYWxUaGlzLsm1QW5ndWxhcmZpcmVJbnN0YW5jZUNhY2hlIHx8PSBbXTtcbiJdfQ==
@@ -3,11 +3,10 @@ import { getRef } from './utils';
3
3
  import { createListReference } from './list/create-reference';
4
4
  import { createObjectReference } from './object/create-reference';
5
5
  import { ɵAngularFireSchedulers } from '@angular/fire';
6
- import { ɵfirebaseAppFactory, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from '@angular/fire/compat';
6
+ import { ɵfirebaseAppFactory, FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance } from '@angular/fire/compat';
7
7
  import 'firebase/compat/auth';
8
8
  import 'firebase/compat/database';
9
9
  import { AngularFireAuth, USE_EMULATOR as USE_AUTH_EMULATOR, SETTINGS as AUTH_SETTINGS, TENANT_ID, LANGUAGE_CODE, USE_DEVICE_LANGUAGE, PERSISTENCE, ɵauthFactory, } from '@angular/fire/compat/auth';
10
- import { ɵcacheInstance } from '@angular/fire';
11
10
  import { AppCheckInstances } from '@angular/fire/app-check';
12
11
  import * as i0 from "@angular/core";
13
12
  import * as i1 from "@angular/fire";
@@ -115,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
115
114
  }] }, { type: i3.AppCheckInstances, decorators: [{
116
115
  type: Optional
117
116
  }] }]; } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L2RhdGFiYXNlL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRyxPQUFPLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLElBQUksaUJBQWlCLEVBQ2pDLFFBQVEsSUFBSSxhQUFhLEVBQ3pCLFNBQVMsRUFDVCxhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUU1RCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQVMsa0NBQWtDLENBQUMsQ0FBQztBQUdsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQXVCLG9DQUFvQyxDQUFDLENBQUM7QUFLM0csTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUM0QixPQUF3QixFQUNYLElBQStCLEVBQzdDLFdBQTBCO0lBQ25ELHFDQUFxQztJQUNoQixVQUFrQixFQUN2QyxJQUFZLEVBQ0wsVUFBa0MsRUFDUCxZQUFpQixFQUFFLDJCQUEyQjtJQUNwRSxJQUFxQixFQUNNLGVBQW9CLEVBQ3hCLFlBQWlCLEVBQUUsNENBQTRDO0lBQ25FLFFBQXVCLEVBQ25CLFlBQTJCLEVBQ3JCLGlCQUFpQyxFQUN6QyxXQUEwQixFQUMvQyxrQkFBcUM7UUFUMUMsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFZekMsTUFBTSxXQUFXLEdBQWdDLFlBQVksQ0FBQztRQUM5RCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJELElBQUksSUFBSSxFQUFFO1lBQ1IsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ2hIO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxhQUFhLFdBQVcsRUFBRSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQzFHLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksV0FBVyxFQUFFO2dCQUNmLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQzthQUN0QztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksQ0FBSSxTQUF3QixFQUFFLE9BQWlCO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxLQUFLLEdBQWtCLEdBQUcsQ0FBQztRQUMvQixJQUFJLE9BQU8sRUFBRTtZQUNYLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEI7UUFDRCxPQUFPLG1CQUFtQixDQUFJLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFJLFNBQXdCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsT0FBTyxxQkFBcUIsQ0FBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEYsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3hCLENBQUM7O2dIQXZEVSxtQkFBbUIsa0JBSXBCLGdCQUFnQixhQUNKLGlCQUFpQiw2QkFDakIsR0FBRyw2QkFFZixXQUFXLHlFQUdDLFlBQVksNEVBRVosaUJBQWlCLDZCQUNqQixhQUFhLDZCQUNiLFNBQVMsNkJBQ1QsYUFBYSw2QkFDYixtQkFBbUIsNkJBQ25CLFdBQVc7b0hBbEJ0QixtQkFBbUIsY0FGbEIsS0FBSzsyRkFFTixtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFLSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDcEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxHQUFHOzhCQUVVLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWTs7MEJBQy9CLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDcEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxTQUFTOzswQkFDNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUN0QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTmdab25lLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlTGlzdCwgQW5ndWxhckZpcmVPYmplY3QsIERhdGFiYXNlUXVlcnksIFBhdGhSZWZlcmVuY2UsIFF1ZXJ5Rm4gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0UmVmIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVMaXN0UmVmZXJlbmNlIH0gZnJvbSAnLi9saXN0L2NyZWF0ZS1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgY3JlYXRlT2JqZWN0UmVmZXJlbmNlIH0gZnJvbSAnLi9vYmplY3QvY3JlYXRlLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcbmltcG9ydCB7IMm1ZmlyZWJhc2VBcHBGYWN0b3J5LCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCAnZmlyZWJhc2UvY29tcGF0L2F1dGgnO1xuaW1wb3J0ICdmaXJlYmFzZS9jb21wYXQvZGF0YWJhc2UnO1xuaW1wb3J0IHtcbiAgQW5ndWxhckZpcmVBdXRoLFxuICBVU0VfRU1VTEFUT1IgYXMgVVNFX0FVVEhfRU1VTEFUT1IsXG4gIFNFVFRJTkdTIGFzIEFVVEhfU0VUVElOR1MsXG4gIFRFTkFOVF9JRCxcbiAgTEFOR1VBR0VfQ09ERSxcbiAgVVNFX0RFVklDRV9MQU5HVUFHRSxcbiAgUEVSU0lTVEVOQ0UsXG4gIMm1YXV0aEZhY3RvcnksXG59IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0L2F1dGgnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgybVjYWNoZUluc3RhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBBcHBDaGVja0luc3RhbmNlcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwLWNoZWNrJztcblxuZXhwb3J0IGNvbnN0IFVSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdhbmd1bGFyZmlyZTIucmVhbHRpbWVEYXRhYmFzZVVSTCcpO1xuXG50eXBlIFVzZUVtdWxhdG9yQXJndW1lbnRzID0gUGFyYW1ldGVyczxmaXJlYmFzZS5kYXRhYmFzZS5EYXRhYmFzZVsndXNlRW11bGF0b3InXT47XG5leHBvcnQgY29uc3QgVVNFX0VNVUxBVE9SID0gbmV3IEluamVjdGlvblRva2VuPFVzZUVtdWxhdG9yQXJndW1lbnRzPignYW5ndWxhcmZpcmUyLmRhdGFiYXNlLnVzZS1lbXVsYXRvcicpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlRGF0YWJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YWJhc2U6IGZpcmViYXNlLmRhdGFiYXNlLkRhdGFiYXNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRklSRUJBU0VfT1BUSU9OUykgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRklSRUJBU0VfQVBQX05BTUUpIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVUkwpIGRhdGFiYXNlVVJMOiBzdHJpbmcgfCBudWxsLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9FTVVMQVRPUikgX3VzZUVtdWxhdG9yOiBhbnksIC8vIHR1cGxlIGlzbid0IHdvcmtpbmcgaGVyZVxuICAgIEBPcHRpb25hbCgpIGF1dGg6IEFuZ3VsYXJGaXJlQXV0aCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9BVVRIX0VNVUxBVE9SKSB1c2VBdXRoRW11bGF0b3I6IGFueSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFVVEhfU0VUVElOR1MpIGF1dGhTZXR0aW5nczogYW55LCAvLyBjYW4ndCB1c2UgZmlyZWJhc2UuYXV0aC5BdXRoU2V0dGluZ3MgaGVyZVxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEVOQU5UX0lEKSB0ZW5hbnRJZDogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExBTkdVQUdFX0NPREUpIGxhbmd1YWdlQ29kZTogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9ERVZJQ0VfTEFOR1VBR0UpIHVzZURldmljZUxhbmd1YWdlOiBib29sZWFuIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBFUlNJU1RFTkNFKSBwZXJzaXN0ZW5jZTogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBfYXBwQ2hlY2tJbnN0YW5jZXM6IEFwcENoZWNrSW5zdGFuY2VzLFxuICApIHtcblxuICAgIGNvbnN0IHVzZUVtdWxhdG9yOiBVc2VFbXVsYXRvckFyZ3VtZW50cyB8IG51bGwgPSBfdXNlRW11bGF0b3I7XG4gICAgY29uc3QgYXBwID0gybVmaXJlYmFzZUFwcEZhY3Rvcnkob3B0aW9ucywgem9uZSwgbmFtZSk7XG5cbiAgICBpZiAoYXV0aCkge1xuICAgICAgybVhdXRoRmFjdG9yeShhcHAsIHpvbmUsIHVzZUF1dGhFbXVsYXRvciwgdGVuYW50SWQsIGxhbmd1YWdlQ29kZSwgdXNlRGV2aWNlTGFuZ3VhZ2UsIGF1dGhTZXR0aW5ncywgcGVyc2lzdGVuY2UpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YWJhc2UgPSDJtWNhY2hlSW5zdGFuY2UoYCR7YXBwLm5hbWV9LmRhdGFiYXNlLiR7ZGF0YWJhc2VVUkx9YCwgJ0FuZ3VsYXJGaXJlRGF0YWJhc2UnLCBhcHAubmFtZSwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YWJhc2UgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGFwcC5kYXRhYmFzZShkYXRhYmFzZVVSTCB8fCB1bmRlZmluZWQpKTtcbiAgICAgIGlmICh1c2VFbXVsYXRvcikge1xuICAgICAgICBkYXRhYmFzZS51c2VFbXVsYXRvciguLi51c2VFbXVsYXRvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YWJhc2U7XG4gICAgfSwgW3VzZUVtdWxhdG9yXSk7XG4gIH1cblxuICBsaXN0PFQ+KHBhdGhPclJlZjogUGF0aFJlZmVyZW5jZSwgcXVlcnlGbj86IFF1ZXJ5Rm4pOiBBbmd1bGFyRmlyZUxpc3Q8VD4ge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuc2NoZWR1bGVycy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZ2V0UmVmKHRoaXMuZGF0YWJhc2UsIHBhdGhPclJlZikpO1xuICAgIGxldCBxdWVyeTogRGF0YWJhc2VRdWVyeSA9IHJlZjtcbiAgICBpZiAocXVlcnlGbikge1xuICAgICAgcXVlcnkgPSBxdWVyeUZuKHJlZik7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVMaXN0UmVmZXJlbmNlPFQ+KHF1ZXJ5LCB0aGlzKTtcbiAgfVxuXG4gIG9iamVjdDxUPihwYXRoT3JSZWY6IFBhdGhSZWZlcmVuY2UpOiBBbmd1bGFyRmlyZU9iamVjdDxUPiB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5zY2hlZHVsZXJzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBnZXRSZWYodGhpcy5kYXRhYmFzZSwgcGF0aE9yUmVmKSk7XG4gICAgcmV0dXJuIGNyZWF0ZU9iamVjdFJlZmVyZW5jZTxUPihyZWYsIHRoaXMpO1xuICB9XG5cbiAgY3JlYXRlUHVzaElkKCkge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuc2NoZWR1bGVycy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5kYXRhYmFzZS5yZWYoKSk7XG4gICAgcmV0dXJuIHJlZi5wdXNoKCkua2V5O1xuICB9XG5cbn1cblxuZXhwb3J0IHtcbiAgUGF0aFJlZmVyZW5jZSxcbiAgRGF0YWJhc2VTbmFwc2hvdCxcbiAgQ2hpbGRFdmVudCxcbiAgTGlzdGVuRXZlbnQsXG4gIFF1ZXJ5Rm4sXG4gIEFuZ3VsYXJGaXJlTGlzdCxcbiAgQW5ndWxhckZpcmVPYmplY3QsXG4gIEFuZ3VsYXJGaXJlQWN0aW9uLFxuICBBY3Rpb24sXG4gIFNuYXBzaG90QWN0aW9uXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L2RhdGFiYXNlL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEgsT0FBTyxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxJQUFJLGlCQUFpQixFQUNqQyxRQUFRLElBQUksYUFBYSxFQUN6QixTQUFTLEVBQ1QsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBRTVELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBUyxrQ0FBa0MsQ0FBQyxDQUFDO0FBR2xGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBdUIsb0NBQW9DLENBQUMsQ0FBQztBQUszRyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQzRCLE9BQXdCLEVBQ1gsSUFBK0IsRUFDN0MsV0FB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QkFBQyxpQkFBaUI7OzBCQUNwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLEdBQUc7OEJBRVUsTUFBTTswQkFBdEMsTUFBTTsyQkFBQyxXQUFXOzswQkFHbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZOzswQkFDL0IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVM7OzBCQUM1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQ3RDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsV0FBVzs7MEJBQzlCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVMaXN0LCBBbmd1bGFyRmlyZU9iamVjdCwgRGF0YWJhc2VRdWVyeSwgUGF0aFJlZmVyZW5jZSwgUXVlcnlGbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWYgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGNyZWF0ZUxpc3RSZWZlcmVuY2UgfSBmcm9tICcuL2xpc3QvY3JlYXRlLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBjcmVhdGVPYmplY3RSZWZlcmVuY2UgfSBmcm9tICcuL29iamVjdC9jcmVhdGUtcmVmZXJlbmNlJztcbmltcG9ydCB7IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgybVmaXJlYmFzZUFwcEZhY3RvcnksIEZJUkVCQVNFX0FQUF9OQU1FLCBGSVJFQkFTRV9PUFRJT05TLCDJtWNhY2hlSW5zdGFuY2UgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgJ2ZpcmViYXNlL2NvbXBhdC9hdXRoJztcbmltcG9ydCAnZmlyZWJhc2UvY29tcGF0L2RhdGFiYXNlJztcbmltcG9ydCB7XG4gIEFuZ3VsYXJGaXJlQXV0aCxcbiAgVVNFX0VNVUxBVE9SIGFzIFVTRV9BVVRIX0VNVUxBVE9SLFxuICBTRVRUSU5HUyBhcyBBVVRIX1NFVFRJTkdTLFxuICBURU5BTlRfSUQsXG4gIExBTkdVQUdFX0NPREUsXG4gIFVTRV9ERVZJQ0VfTEFOR1VBR0UsXG4gIFBFUlNJU1RFTkNFLFxuICDJtWF1dGhGYWN0b3J5LFxufSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdC9hdXRoJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IEFwcENoZWNrSW5zdGFuY2VzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAtY2hlY2snO1xuXG5leHBvcnQgY29uc3QgVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2FuZ3VsYXJmaXJlMi5yZWFsdGltZURhdGFiYXNlVVJMJyk7XG5cbnR5cGUgVXNlRW11bGF0b3JBcmd1bWVudHMgPSBQYXJhbWV0ZXJzPGZpcmViYXNlLmRhdGFiYXNlLkRhdGFiYXNlWyd1c2VFbXVsYXRvciddPjtcbmV4cG9ydCBjb25zdCBVU0VfRU1VTEFUT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48VXNlRW11bGF0b3JBcmd1bWVudHM+KCdhbmd1bGFyZmlyZTIuZGF0YWJhc2UudXNlLWVtdWxhdG9yJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueSdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVEYXRhYmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBkYXRhYmFzZTogZmlyZWJhc2UuZGF0YWJhc2UuRGF0YWJhc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGSVJFQkFTRV9PUFRJT05TKSBvcHRpb25zOiBGaXJlYmFzZU9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGSVJFQkFTRV9BUFBfTkFNRSkgbmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVSTCkgZGF0YWJhc2VVUkw6IHN0cmluZyB8IG51bGwsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgcHVibGljIHNjaGVkdWxlcnM6IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0VNVUxBVE9SKSBfdXNlRW11bGF0b3I6IGFueSwgLy8gdHVwbGUgaXNuJ3Qgd29ya2luZyBoZXJlXG4gICAgQE9wdGlvbmFsKCkgYXV0aDogQW5ndWxhckZpcmVBdXRoLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0FVVEhfRU1VTEFUT1IpIHVzZUF1dGhFbXVsYXRvcjogYW55LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVUSF9TRVRUSU5HUykgYXV0aFNldHRpbmdzOiBhbnksIC8vIGNhbid0IHVzZSBmaXJlYmFzZS5hdXRoLkF1dGhTZXR0aW5ncyBoZXJlXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChURU5BTlRfSUQpIHRlbmFudElkOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTEFOR1VBR0VfQ09ERSkgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0RFVklDRV9MQU5HVUFHRSkgdXNlRGV2aWNlTGFuZ3VhZ2U6IGJvb2xlYW4gfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEVSU0lTVEVOQ0UpIHBlcnNpc3RlbmNlOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIF9hcHBDaGVja0luc3RhbmNlczogQXBwQ2hlY2tJbnN0YW5jZXMsXG4gICkge1xuXG4gICAgY29uc3QgdXNlRW11bGF0b3I6IFVzZUVtdWxhdG9yQXJndW1lbnRzIHwgbnVsbCA9IF91c2VFbXVsYXRvcjtcbiAgICBjb25zdCBhcHAgPSDJtWZpcmViYXNlQXBwRmFjdG9yeShvcHRpb25zLCB6b25lLCBuYW1lKTtcblxuICAgIGlmIChhdXRoKSB7XG4gICAgICDJtWF1dGhGYWN0b3J5KGFwcCwgem9uZSwgdXNlQXV0aEVtdWxhdG9yLCB0ZW5hbnRJZCwgbGFuZ3VhZ2VDb2RlLCB1c2VEZXZpY2VMYW5ndWFnZSwgYXV0aFNldHRpbmdzLCBwZXJzaXN0ZW5jZSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhYmFzZSA9IMm1Y2FjaGVJbnN0YW5jZShgJHthcHAubmFtZX0uZGF0YWJhc2UuJHtkYXRhYmFzZVVSTH1gLCAnQW5ndWxhckZpcmVEYXRhYmFzZScsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhYmFzZSA9IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gYXBwLmRhdGFiYXNlKGRhdGFiYXNlVVJMIHx8IHVuZGVmaW5lZCkpO1xuICAgICAgaWYgKHVzZUVtdWxhdG9yKSB7XG4gICAgICAgIGRhdGFiYXNlLnVzZUVtdWxhdG9yKC4uLnVzZUVtdWxhdG9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhYmFzZTtcbiAgICB9LCBbdXNlRW11bGF0b3JdKTtcbiAgfVxuXG4gIGxpc3Q8VD4ocGF0aE9yUmVmOiBQYXRoUmVmZXJlbmNlLCBxdWVyeUZuPzogUXVlcnlGbik6IEFuZ3VsYXJGaXJlTGlzdDxUPiB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5zY2hlZHVsZXJzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBnZXRSZWYodGhpcy5kYXRhYmFzZSwgcGF0aE9yUmVmKSk7XG4gICAgbGV0IHF1ZXJ5OiBEYXRhYmFzZVF1ZXJ5ID0gcmVmO1xuICAgIGlmIChxdWVyeUZuKSB7XG4gICAgICBxdWVyeSA9IHF1ZXJ5Rm4ocmVmKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUxpc3RSZWZlcmVuY2U8VD4ocXVlcnksIHRoaXMpO1xuICB9XG5cbiAgb2JqZWN0PFQ+KHBhdGhPclJlZjogUGF0aFJlZmVyZW5jZSk6IEFuZ3VsYXJGaXJlT2JqZWN0PFQ+IHtcbiAgICBjb25zdCByZWYgPSB0aGlzLnNjaGVkdWxlcnMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGdldFJlZih0aGlzLmRhdGFiYXNlLCBwYXRoT3JSZWYpKTtcbiAgICByZXR1cm4gY3JlYXRlT2JqZWN0UmVmZXJlbmNlPFQ+KHJlZiwgdGhpcyk7XG4gIH1cblxuICBjcmVhdGVQdXNoSWQoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5zY2hlZHVsZXJzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmRhdGFiYXNlLnJlZigpKTtcbiAgICByZXR1cm4gcmVmLnB1c2goKS5rZXk7XG4gIH1cblxufVxuXG5leHBvcnQge1xuICBQYXRoUmVmZXJlbmNlLFxuICBEYXRhYmFzZVNuYXBzaG90LFxuICBDaGlsZEV2ZW50LFxuICBMaXN0ZW5FdmVudCxcbiAgUXVlcnlGbixcbiAgQW5ndWxhckZpcmVMaXN0LFxuICBBbmd1bGFyRmlyZU9iamVjdCxcbiAgQW5ndWxhckZpcmVBY3Rpb24sXG4gIEFjdGlvbixcbiAgU25hcHNob3RBY3Rpb25cbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbiJdfQ==
@@ -4,12 +4,11 @@ import { AngularFirestoreDocument } from './document/document';
4
4
  import { AngularFirestoreCollection } from './collection/collection';
5
5
  import { AngularFirestoreCollectionGroup } from './collection-group/collection-group';
6
6
  import { ɵAngularFireSchedulers } from '@angular/fire';
7
- import { ɵfirebaseAppFactory, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from '@angular/fire/compat';
7
+ import { ɵfirebaseAppFactory, FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance } from '@angular/fire/compat';
8
8
  import { isPlatformServer } from '@angular/common';
9
9
  import 'firebase/compat/auth';
10
10
  import 'firebase/compat/firestore';
11
11
  import { AngularFireAuth, USE_EMULATOR as USE_AUTH_EMULATOR, SETTINGS as AUTH_SETTINGS, TENANT_ID, LANGUAGE_CODE, USE_DEVICE_LANGUAGE, PERSISTENCE, ɵauthFactory, } from '@angular/fire/compat/auth';
12
- import { ɵcacheInstance } from '@angular/fire';
13
12
  import { AppCheckInstances } from '@angular/fire/app-check';
14
13
  import * as i0 from "@angular/core";
15
14
  import * as i1 from "@angular/fire";
@@ -252,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
252
251
  }] }, { type: i3.AppCheckInstances, decorators: [{
253
252
  type: Optional
254
253
  }] }]; } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9maXJlc3RvcmUvZmlyZXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVc1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFlLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsT0FBTyxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxJQUFJLGlCQUFpQixFQUNqQyxRQUFRLElBQUksYUFBYSxFQUN6QixTQUFTLEVBQ1QsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMs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OzBCQUF0QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUdsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQ3ZDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWTs7MEJBQy9CLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDcEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxTQUFTOzswQkFDNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUN0QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTmdab25lLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBc3NvY2lhdGVkUmVmZXJlbmNlLFxuICBDb2xsZWN0aW9uUmVmZXJlbmNlLFxuICBEb2N1bWVudFJlZmVyZW5jZSxcbiAgUGVyc2lzdGVuY2VTZXR0aW5ncyxcbiAgUXVlcnksXG4gIFF1ZXJ5Rm4sXG4gIFF1ZXJ5R3JvdXBGbixcbiAgU2V0dGluZ3Ncbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gJy4vZG9jdW1lbnQvZG9jdW1lbnQnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZUNvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9jb2xsZWN0aW9uLWdyb3VwL2NvbGxlY3Rpb24tZ3JvdXAnO1xuaW1wb3J0IHsgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEZpcmViYXNlQXBwLCDJtWZpcmViYXNlQXBwRmFjdG9yeSwgRklSRUJBU0VfQVBQX05BTUUsIEZJUkVCQVNFX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgeyBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgJ2ZpcmViYXNlL2NvbXBhdC9hdXRoJztcbmltcG9ydCAnZmlyZWJhc2UvY29tcGF0L2ZpcmVzdG9yZSc7XG5pbXBvcnQge1xuICBBbmd1bGFyRmlyZUF1dGgsXG4gIFVTRV9FTVVMQVRPUiBhcyBVU0VfQVVUSF9FTVVMQVRPUixcbiAgU0VUVElOR1MgYXMgQVVUSF9TRVRUSU5HUyxcbiAgVEVOQU5UX0lELFxuICBMQU5HVUFHRV9DT0RFLFxuICBVU0VfREVWSUNFX0xBTkdVQUdFLFxuICBQRVJTSVNURU5DRSxcbiAgybVhdXRoRmFjdG9yeSxcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQvYXV0aCc7XG5pbXBvcnQgeyDJtWNhY2hlSW5zdGFuY2UgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEFwcENoZWNrSW5zdGFuY2VzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAtY2hlY2snO1xuXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGlzIHRva2VuIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlIGZpcmVzdG9yZSB3aWxsIGhhdmUgcGVyc2lzdGFuY2UgZW5hYmxlZFxuICovXG5leHBvcnQgY29uc3QgRU5BQkxFX1BFUlNJU1RFTkNFID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIuZW5hYmxlRmlyZXN0b3JlUGVyc2lzdGVuY2UnKTtcbmV4cG9ydCBjb25zdCBQRVJTSVNURU5DRV9TRVRUSU5HUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQZXJzaXN0ZW5jZVNldHRpbmdzIHwgdW5kZWZpbmVkPignYW5ndWxhcmZpcmUyLmZpcmVzdG9yZS5wZXJzaXN0ZW5jZVNldHRpbmdzJyk7XG5leHBvcnQgY29uc3QgU0VUVElOR1MgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2V0dGluZ3M+KCdhbmd1bGFyZmlyZTIuZmlyZXN0b3JlLnNldHRpbmdzJyk7XG5cbnR5cGUgVXNlRW11bGF0b3JBcmd1bWVudHMgPSBQYXJhbWV0ZXJzPGZpcmViYXNlLmZpcmVzdG9yZS5GaXJlc3RvcmVbJ3VzZUVtdWxhdG9yJ10+O1xuZXhwb3J0IGNvbnN0IFVTRV9FTVVMQVRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVc2VFbXVsYXRvckFyZ3VtZW50cz4oJ2FuZ3VsYXJmaXJlMi5maXJlc3RvcmUudXNlLWVtdWxhdG9yJyk7XG5cbi8qKlxuICogQSB1dGlsaXR5IG1ldGhvZHMgZm9yIGFzc29jaWF0aW5nIGEgY29sbGVjdGlvbiByZWZlcmVuY2Ugd2l0aFxuICogYSBxdWVyeS5cbiAqXG4gKiBAcGFyYW0gY29sbGVjdGlvblJlZiAtIEEgY29sbGVjdGlvbiByZWZlcmVuY2UgdG8gcXVlcnlcbiAqIEBwYXJhbSBxdWVyeUZuIC0gVGhlIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIHF1ZXJ5XG4gKlxuICogRXhhbXBsZTpcbiAqIGNvbnN0IHsgcXVlcnksIHJlZiB9ID0gYXNzb2NpYXRlUXVlcnkoZG9jUmVmLmNvbGxlY3Rpb24oJ2l0ZW1zJyksIHJlZiA9PiB7XG4gKiAgcmV0dXJuIHJlZi53aGVyZSgnYWdlJywgJzwnLCAyMDApO1xuICogfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NvY2lhdGVRdWVyeTxUPihjb2xsZWN0aW9uUmVmOiBDb2xsZWN0aW9uUmVmZXJlbmNlPFQ+LCBxdWVyeUZuID0gcmVmID0+IHJlZik6IEFzc29jaWF0ZWRSZWZlcmVuY2U8VD4ge1xuICBjb25zdCBxdWVyeSA9IHF1ZXJ5Rm4oY29sbGVjdGlvblJlZik7XG4gIGNvbnN0IHJlZiA9IGNvbGxlY3Rpb25SZWY7XG4gIHJldHVybiB7IHF1ZXJ5LCByZWYgfTtcbn1cblxudHlwZSBJbnN0YW5jZUNhY2hlID0gTWFwPEZpcmViYXNlQXBwLCBbXG4gIGZpcmViYXNlLmZpcmVzdG9yZS5GaXJlc3RvcmUsXG4gIGZpcmViYXNlLmZpcmVzdG9yZS5TZXR0aW5ncyB8IG51bGwsXG4gIFVzZUVtdWxhdG9yQXJndW1lbnRzIHwgbnVsbCxcbiAgYm9vbGVhbiB8IG51bGxdXG4+O1xuXG4vKipcbiAqIEFuZ3VsYXJGaXJlc3RvcmUgU2VydmljZVxuICpcbiAqIFRoaXMgc2VydmljZSBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhpcyBmZWF0dXJlIG1vZHVsZS4gSXQgcHJvdmlkZXNcbiAqIGFuIEFQSSBmb3IgY3JlYXRpbmcgQ29sbGVjdGlvbiBhbmQgUmVmZXJlbmNlIHNlcnZpY2VzLiBUaGVzZSBzZXJ2aWNlcyBjYW5cbiAqIHRoZW4gYmUgdXNlZCB0byBkbyBkYXRhIHVwZGF0ZXMgYW5kIG9ic2VydmFibGUgc3RyZWFtcyBvZiB0aGUgZGF0YS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICogaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSwgQW5ndWxhckZpcmVzdG9yZUNvbGxlY3Rpb24sIEFuZ3VsYXJGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbiAqIGltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuICogaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMvb2JzZXJ2YWJsZSc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwLW15LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICA8aDI+SXRlbXMgZm9yIHt7IChwcm9maWxlIHwgYXN5bmMpPy5uYW1lIH19XG4gKiAgICA8dWw+XG4gKiAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMgfCBhc3luY1wiPnt7IGl0ZW0ubmFtZSB9fTwvbGk+XG4gKiAgICA8L3VsPlxuICogICAgPGRpdiBjbGFzcz1cImNvbnRyb2wtaW5wdXRcIj5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICNpdGVtbmFtZSAvPlxuICogICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkSXRlbShpdGVtbmFtZS52YWx1ZSlcIj5BZGQgSXRlbTwvYnV0dG9uPlxuICogICAgPC9kaXY+XG4gKiAgIGBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICpcbiAqICAgLy8gc2VydmljZXMgZm9yIGRhdGEgb3BlcmF0aW9ucyBhbmQgZGF0YSBzdHJlYW1pbmdcbiAqICAgcHJpdmF0ZSByZWFkb25seSBpdGVtc1JlZjogQW5ndWxhckZpcmVzdG9yZUNvbGxlY3Rpb248SXRlbT47XG4gKiAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZVJlZjogQW5ndWxhckZpcmVzdG9yZURvY3VtZW50PFByb2ZpbGU+O1xuICpcbiAqICAgLy8gb2JzZXJ2YWJsZXMgZm9yIHRlbXBsYXRlXG4gKiAgIGl0ZW1zOiBPYnNlcnZhYmxlPEl0ZW1bXT47XG4gKiAgIHByb2ZpbGU6IE9ic2VydmFibGU8UHJvZmlsZT47XG4gKlxuICogICAvLyBpbmplY3QgbWFpbiBzZXJ2aWNlXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWZzOiBBbmd1bGFyRmlyZXN0b3JlKSB7fVxuICpcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgdGhpcy5pdGVtc1JlZiA9IGFmcy5jb2xsZWN0aW9uKCdpdGVtcycsIHJlZiA9PiByZWYud2hlcmUoJ3VzZXInLCAnPT0nLCAnZGF2aWRlYXN0JykubGltaXQoMTApKTtcbiAqICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtc1JlZi52YWx1ZUNoYW5nZXMoKS5tYXAoc25hcCA9PiBzbmFwLmRvY3MubWFwKGRhdGEgPT4gZG9jLmRhdGEoKSkpO1xuICogICAgIC8vIHRoaXMuaXRlbXMgPSBmcm9tKHRoaXMuaXRlbXNSZWYpOyAvLyB5b3UgY2FuIGFsc28gZG8gdGhpcyB3aXRoIG5vIG1hcHBpbmdcbiAqXG4gKiAgICAgdGhpcy5wcm9maWxlUmVmID0gYWZzLmRvYygndXNlcnMvZGF2aWRlYXN0Jyk7XG4gKiAgICAgdGhpcy5wcm9maWxlID0gdGhpcy5wcm9maWxlUmVmLnZhbHVlQ2hhbmdlcygpO1xuICogICB9XG4gKlxuICogICBhZGRJdGVtKG5hbWU6IHN0cmluZykge1xuICogICAgIGNvbnN0IHVzZXIgPSAnZGF2aWRlYXN0JztcbiAqICAgICB0aGlzLml0ZW1zUmVmLmFkZCh7IG5hbWUsIHVzZXIgfSk7XG4gKiAgIH1cbiAqIH1cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAnYW55J1xufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlIHtcbiAgcHVibGljIHJlYWRvbmx5IGZpcmVzdG9yZTogZmlyZWJhc2UuZmlyZXN0b3JlLkZpcmVzdG9yZTtcbiAgcHVibGljIHJlYWRvbmx5IHBlcnNpc3RlbmNlRW5hYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIEVhY2ggRmVhdHVyZSBvZiBBbmd1bGFyRmlyZSBoYXMgYSBGaXJlYmFzZUFwcCBpbmplY3RlZC4gVGhpcyB3YXkgd2VcbiAgICogZG9uJ3QgcmVseSBvbiB0aGUgbWFpbiBGaXJlYmFzZSBBcHAgaW5zdGFuY2UgYW5kIHdlIGNhbiBjcmVhdGUgbmFtZWRcbiAgICogYXBwcyBhbmQgdXNlIG11bHRpcGxlIGFwcHMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZJUkVCQVNFX09QVElPTlMpIG9wdGlvbnM6IEZpcmViYXNlT3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZJUkVCQVNFX0FQUF9OQU1FKSBuYW1lOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5BQkxFX1BFUlNJU1RFTkNFKSBzaG91bGRFbmFibGVQZXJzaXN0ZW5jZTogYm9vbGVhbiB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChTRVRUSU5HUykgc2V0dGluZ3M6IFNldHRpbmdzIHwgbnVsbCxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLXR5cGVzXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgc2NoZWR1bGVyczogybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQRVJTSVNURU5DRV9TRVRUSU5HUykgcGVyc2lzdGVuY2VTZXR0aW5nczogUGVyc2lzdGVuY2VTZXR0aW5ncyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VfRU1VTEFUT1IpIF91c2VFbXVsYXRvcjogYW55LFxuICAgIEBPcHRpb25hbCgpIGF1dGg6IEFuZ3VsYXJGaXJlQXV0aCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9BVVRIX0VNVUxBVE9SKSB1c2VBdXRoRW11bGF0b3I6IGFueSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFVVEhfU0VUVElOR1MpIGF1dGhTZXR0aW5nczogYW55LCAvLyBjYW4ndCB1c2UgZmlyZWJhc2UuYXV0aC5BdXRoU2V0dGluZ3MgaGVyZVxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEVOQU5UX0lEKSB0ZW5hbnRJZDogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExBTkdVQUdFX0NPREUpIGxhbmd1YWdlQ29kZTogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9ERVZJQ0VfTEFOR1VBR0UpIHVzZURldmljZUxhbmd1YWdlOiBib29sZWFuIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBFUlNJU1RFTkNFKSBwZXJzaXN0ZW5jZTogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBfYXBwQ2hlY2tJbnN0YW5jZXM6IEFwcENoZWNrSW5zdGFuY2VzLFxuICApIHtcbiAgICBjb25zdCBhcHAgPSDJtWZpcmViYXNlQXBwRmFjdG9yeShvcHRpb25zLCB6b25lLCBuYW1lKTtcbiAgICBjb25zdCB1c2VFbXVsYXRvcjogVXNlRW11bGF0b3JBcmd1bWVudHMgfCBudWxsID0gX3VzZUVtdWxhdG9yO1xuXG4gICAgaWYgKGF1dGgpIHtcbiAgICAgIMm1YXV0aEZhY3RvcnkoYXBwLCB6b25lLCB1c2VBdXRoRW11bGF0b3IsIHRlbmFudElkLCBsYW5ndWFnZUNvZGUsIHVzZURldmljZUxhbmd1YWdlLCBhdXRoU2V0dGluZ3MsIHBlcnNpc3RlbmNlKTtcbiAgICB9XG5cbiAgICBbdGhpcy5maXJlc3RvcmUsIHRoaXMucGVyc2lzdGVuY2VFbmFibGVkJF0gPSDJtWNhY2hlSW5zdGFuY2UoYCR7YXBwLm5hbWV9LmZpcmVzdG9yZWAsICdBbmd1bGFyRmlyZXN0b3JlJywgYXBwLm5hbWUsICgpID0+IHtcbiAgICAgIGNvbnN0IGZpcmVzdG9yZSA9IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gYXBwLmZpcmVzdG9yZSgpKTtcbiAgICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgICBmaXJlc3RvcmUuc2V0dGluZ3Moc2V0dGluZ3MpO1xuICAgICAgfVxuICAgICAgaWYgKHVzZUVtdWxhdG9yKSB7XG4gICAgICAgIGZpcmVzdG9yZS51c2VFbXVsYXRvciguLi51c2VFbXVsYXRvcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRFbmFibGVQZXJzaXN0ZW5jZSAmJiAhaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHRyeS9jYXRjaCBoZXJlIGJlY2F1c2Ugbm90IGFsbCBlbmFibGVQZXJzaXN0ZW5jZSgpIGZhaWx1cmVzIGFyZSBjYXVnaHRcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZpcmViYXNlL2ZpcmViYXNlLWpzLXNkay9pc3N1ZXMvNjA4XG4gICAgICAgIGNvbnN0IGVuYWJsZVBlcnNpc3RlbmNlID0gKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZnJvbShmaXJlc3RvcmUuZW5hYmxlUGVyc2lzdGVuY2UocGVyc2lzdGVuY2VTZXR0aW5ncyB8fCB1bmRlZmluZWQpLnRoZW4oKCkgPT4gdHJ1ZSwgKCkgPT4gZmFsc2UpKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7IGNvbnNvbGUud2FybihlKTsgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBbZmlyZXN0b3JlLCB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKGVuYWJsZVBlcnNpc3RlbmNlKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW2ZpcmVzdG9yZSwgb2YoZmFsc2UpXTtcbiAgICAgIH1cblxuICAgIH0sIFtzZXR0aW5ncywgdXNlRW11bGF0b3IsIHNob3VsZEVuYWJsZVBlcnNpc3RlbmNlXSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcmVmZXJlbmNlIHRvIGEgRmlyZXN0b3JlIENvbGxlY3Rpb24gYmFzZWQgb24gYSBwYXRoIG9yXG4gICAqIENvbGxlY3Rpb25SZWZlcmVuY2UgYW5kIGFuIG9wdGlvbmFsIHF1ZXJ5IGZ1bmN0aW9uIHRvIG5hcnJvdyB0aGUgcmVzdWx0XG4gICAqIHNldC5cbiAgICovXG4gIGNvbGxlY3Rpb248VD4ocGF0aDogc3RyaW5nLCBxdWVyeUZuPzogUXVlcnlGbik6IEFuZ3VsYXJGaXJlc3RvcmVDb2xsZWN0aW9uPFQ+O1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dW5pZmllZC1zaWduYXR1cmVzXG4gIGNvbGxlY3Rpb248VD4ocmVmOiBDb2xsZWN0aW9uUmVmZXJlbmNlLCBxdWVyeUZuPzogUXVlcnlGbik6IEFuZ3VsYXJGaXJlc3RvcmVDb2xsZWN0aW9uPFQ+O1xuICBjb2xsZWN0aW9uPFQ+KHBhdGhPclJlZjogc3RyaW5nIHwgQ29sbGVjdGlvblJlZmVyZW5jZTxUPiwgcXVlcnlGbj86IFF1ZXJ5Rm4pOiBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbjxUPiB7XG4gICAgbGV0IGNvbGxlY3Rpb25SZWY6IENvbGxlY3Rpb25SZWZlcmVuY2U8VD47XG4gICAgaWYgKHR5cGVvZiBwYXRoT3JSZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb2xsZWN0aW9uUmVmID0gdGhpcy5maXJlc3RvcmUuY29sbGVjdGlvbihwYXRoT3JSZWYpIGFzIGZpcmViYXNlLmZpcmVzdG9yZS5Db2xsZWN0aW9uUmVmZXJlbmNlPFQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xsZWN0aW9uUmVmID0gcGF0aE9yUmVmO1xuICAgIH1cbiAgICBjb25zdCB7IHJlZiwgcXVlcnkgfSA9IGFzc29jaWF0ZVF1ZXJ5PFQ+KGNvbGxlY3Rpb25SZWYsIHF1ZXJ5Rm4pO1xuICAgIGNvbnN0IHJlZkluWm9uZSA9IHRoaXMuc2NoZWR1bGVycy5uZ1pvbmUucnVuKCgpID0+IHJlZik7XG4gICAgcmV0dXJuIG5ldyBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbjxUPihyZWZJblpvbmUsIHF1ZXJ5LCB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByZWZlcmVuY2UgdG8gYSBGaXJlc3RvcmUgQ29sbGVjdGlvbiBHcm91cCBiYXNlZCBvbiBhIGNvbGxlY3Rpb25JZFxuICAgKiBhbmQgYW4gb3B0aW9uYWwgcXVlcnkgZnVuY3Rpb24gdG8gbmFycm93IHRoZSByZXN1bHRcbiAgICogc2V0LlxuICAgKi9cbiAgY29sbGVjdGlvbkdyb3VwPFQ+KGNvbGxlY3Rpb25JZDogc3RyaW5nLCBxdWVyeUdyb3VwRm4/OiBRdWVyeUdyb3VwRm48VD4pOiBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwPFQ+IHtcbiAgICBjb25zdCBxdWVyeUZuID0gcXVlcnlHcm91cEZuIHx8IChyZWYgPT4gcmVmKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uR3JvdXA6IFF1ZXJ5PFQ+ID0gdGhpcy5maXJlc3RvcmUuY29sbGVjdGlvbkdyb3VwKGNvbGxlY3Rpb25JZCkgYXMgZmlyZWJhc2UuZmlyZXN0b3JlLlF1ZXJ5PFQ+O1xuICAgIHJldHVybiBuZXcgQW5ndWxhckZpcmVzdG9yZUNvbGxlY3Rpb25Hcm91cDxUPihxdWVyeUZuKGNvbGxlY3Rpb25Hcm91cCksIHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJlZmVyZW5jZSB0byBhIEZpcmVzdG9yZSBEb2N1bWVudCBiYXNlZCBvbiBhIHBhdGggb3JcbiAgICogRG9jdW1lbnRSZWZlcmVuY2UuIE5vdGUgdGhhdCBkb2N1bWVudHMgYXJlIG5vdCBxdWVyeWFibGUgYmVjYXVzZSB0aGV5IGFyZVxuICAgKiBzaW1wbHkgb2JqZWN0cy4gSG93ZXZlciwgZG9jdW1lbnRzIGhhdmUgc3ViLWNvbGxlY3Rpb25zIHRoYXQgcmV0dXJuIGFcbiAgICogQ29sbGVjdGlvbiByZWZlcmVuY2UgYW5kIGNhbiBiZSBxdWVyaWVkLlxuICAgKi9cbiAgZG9jPFQ+KHBhdGg6IHN0cmluZyk6IEFuZ3VsYXJGaXJlc3RvcmVEb2N1bWVudDxUPjtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnVuaWZpZWQtc2lnbmF0dXJlc1xuICBkb2M8VD4ocmVmOiBEb2N1bWVudFJlZmVyZW5jZSk6IEFuZ3VsYXJGaXJlc3RvcmVEb2N1bWVudDxUPjtcbiAgZG9jPFQ+KHBhdGhPclJlZjogc3RyaW5nIHwgRG9jdW1lbnRSZWZlcmVuY2U8VD4pOiBBbmd1bGFyRmlyZXN0b3JlRG9jdW1lbnQ8VD4ge1xuICAgIGxldCByZWY6IERvY3VtZW50UmVmZXJlbmNlPFQ+O1xuICAgIGlmICh0eXBlb2YgcGF0aE9yUmVmID09PSAnc3RyaW5nJykge1xuICAgICAgcmVmID0gdGhpcy5maXJlc3RvcmUuZG9jKHBhdGhPclJlZikgYXMgZmlyZWJhc2UuZmlyZXN0b3JlLkRvY3VtZW50UmVmZXJlbmNlPFQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWYgPSBwYXRoT3JSZWY7XG4gICAgfVxuICAgIGNvbnN0IHJlZkluWm9uZSA9IHRoaXMuc2NoZWR1bGVycy5uZ1pvbmUucnVuKCgpID0+IHJlZik7XG4gICAgcmV0dXJuIG5ldyBBbmd1bGFyRmlyZXN0b3JlRG9jdW1lbnQ8VD4ocmVmSW5ab25lLCB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZ2VuZXJhdGVkIEZpcmVzdG9yZSBEb2N1bWVudCBJZC5cbiAgICovXG4gIGNyZWF0ZUlkKCkge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5jb2xsZWN0aW9uKCdfJykuZG9jKCkuaWQ7XG4gIH1cbn1cbiJdfQ==
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9maXJlc3RvcmUvZmlyZXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVc1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFlLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sc0JBQXNCLENBQUM7QUFDOUIsT0FBTywyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksSUFBSSxpQkFBaUIsRUFDakMsUUFBUSxJQUFJLGFBQWEsRUFDekIsU0FBUyxFQUNULGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFlBQVksR0FDYixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUU1RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFVLHlDQUF5QyxDQUFDLENBQUM7QUFDekcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQWtDLDRDQUE0QyxDQUFDLENBQUM7QUFDdEksTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFXLGlDQUFpQyxDQUFDLENBQUM7QUFHeEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUF1QixxQ0FBcUMsQ0FBQyxDQUFDO0FBRTVHOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBSSxhQUFxQyxFQUFFLE9BQU8sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUc7SUFDM0YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQztJQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFTRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0RHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQjs7OztPQUlHO0lBQ0gsWUFDNEIsT0FBd0IsRUFDWCxJQUErQixFQUM5Qix1QkFBdUMsRUFDakQsUUFBeUI7SUFDdkQscUNBQXFDO0lBQ2hCLFVBQWtCLEVBQ3ZDLElBQVksRUFDTCxVQUFrQyxFQUNDLG1CQUErQyxFQUN2RCxZQUFpQixFQUN2QyxJQUFxQixFQUNNLGVBQW9CLEVBQ3hCLFlBQWlCLEVBQUUsNENBQTRDO0lBQ25FLFFBQXVCLEVBQ25CLFlBQTJCLEVBQ3JCLGlCQUFpQyxFQUN6QyxXQUEwQixFQUMvQyxrQkFBcUM7UUFWMUMsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFZekMsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBZ0MsWUFBWSxDQUFDO1FBRTlELElBQUksSUFBSSxFQUFFO1lBQ1IsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ2hIO1FBRUQsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUN0SCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDaEUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QjtZQUNELElBQUksV0FBVyxFQUFFO2dCQUNmLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQzthQUN2QztZQUVELElBQUksdUJBQXVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDNUQsb0ZBQW9GO2dCQUNwRix5REFBeUQ7Z0JBQ3pELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO29CQUM3QixJQUFJO3dCQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQzFHO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNWLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFOzRCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQUU7d0JBQ3hELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNsQjtnQkFDSCxDQUFDLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO2FBQy9EO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDL0I7UUFFSCxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBVUQsVUFBVSxDQUFJLFNBQTBDLEVBQUUsT0FBaUI7UUFDekUsSUFBSSxhQUFxQyxDQUFDO1FBQzFDLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ2pDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQThDLENBQUM7U0FDbkc7YUFBTTtZQUNMLGFBQWEsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLGNBQWMsQ0FBSSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSwwQkFBMEIsQ0FBSSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFJLFlBQW9CLEVBQUUsWUFBOEI7UUFDckUsTUFBTSxPQUFPLEdBQUcsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBYSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQWdDLENBQUM7UUFDOUcsT0FBTyxJQUFJLCtCQUErQixDQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBV0QsR0FBRyxDQUFJLFNBQXdDO1FBQzdDLElBQUksR0FBeUIsQ0FBQztRQUM5QixJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUNqQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUE0QyxDQUFDO1NBQ2hGO2FBQU07WUFDTCxHQUFHLEdBQUcsU0FBUyxDQUFDO1NBQ2pCO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSx3QkFBd0IsQ0FBSSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7OzZHQXhIVSxnQkFBZ0Isa0JBVWpCLGdCQUFnQixhQUNKLGlCQUFpQiw2QkFDakIsa0JBQWtCLDZCQUNsQixRQUFRLDZCQUVwQixXQUFXLHlFQUdDLG9CQUFvQiw2QkFDcEIsWUFBWSw0RUFFWixpQkFBaUIsNkJBQ2pCLGFBQWEsNkJBQ2IsU0FBUyw2QkFDVCxhQUFhLDZCQUNiLG1CQUFtQiw2QkFDbkIsV0FBVztpSEExQnRCLGdCQUFnQixjQUZmLEtBQUs7MkZBRU4sZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBV0ksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3BDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDckMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFROzhCQUVLLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDdkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZOzswQkFDL0IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVM7OzBCQUM1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQ3RDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsV0FBVzs7MEJBQzlCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFzc29jaWF0ZWRSZWZlcmVuY2UsXG4gIENvbGxlY3Rpb25SZWZlcmVuY2UsXG4gIERvY3VtZW50UmVmZXJlbmNlLFxuICBQZXJzaXN0ZW5jZVNldHRpbmdzLFxuICBRdWVyeSxcbiAgUXVlcnlGbixcbiAgUXVlcnlHcm91cEZuLFxuICBTZXR0aW5nc1xufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZURvY3VtZW50IH0gZnJvbSAnLi9kb2N1bWVudC9kb2N1bWVudCc7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbi9jb2xsZWN0aW9uJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuL2NvbGxlY3Rpb24tZ3JvdXAvY29sbGVjdGlvbi1ncm91cCc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIMm1ZmlyZWJhc2VBcHBGYWN0b3J5LCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUywgybVjYWNoZUluc3RhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0ICdmaXJlYmFzZS9jb21wYXQvYXV0aCc7XG5pbXBvcnQgJ2ZpcmViYXNlL2NvbXBhdC9maXJlc3RvcmUnO1xuaW1wb3J0IHtcbiAgQW5ndWxhckZpcmVBdXRoLFxuICBVU0VfRU1VTEFUT1IgYXMgVVNFX0FVVEhfRU1VTEFUT1IsXG4gIFNFVFRJTkdTIGFzIEFVVEhfU0VUVElOR1MsXG4gIFRFTkFOVF9JRCxcbiAgTEFOR1VBR0VfQ09ERSxcbiAgVVNFX0RFVklDRV9MQU5HVUFHRSxcbiAgUEVSU0lTVEVOQ0UsXG4gIMm1YXV0aEZhY3RvcnksXG59IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0L2F1dGgnO1xuaW1wb3J0IHsgQXBwQ2hlY2tJbnN0YW5jZXMgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcC1jaGVjayc7XG5cbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoaXMgdG9rZW4gZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgZmlyZXN0b3JlIHdpbGwgaGF2ZSBwZXJzaXN0YW5jZSBlbmFibGVkXG4gKi9cbmV4cG9ydCBjb25zdCBFTkFCTEVfUEVSU0lTVEVOQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ2FuZ3VsYXJmaXJlMi5lbmFibGVGaXJlc3RvcmVQZXJzaXN0ZW5jZScpO1xuZXhwb3J0IGNvbnN0IFBFUlNJU1RFTkNFX1NFVFRJTkdTID0gbmV3IEluamVjdGlvblRva2VuPFBlcnNpc3RlbmNlU2V0dGluZ3MgfCB1bmRlZmluZWQ+KCdhbmd1bGFyZmlyZTIuZmlyZXN0b3JlLnBlcnNpc3RlbmNlU2V0dGluZ3MnKTtcbmV4cG9ydCBjb25zdCBTRVRUSU5HUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTZXR0aW5ncz4oJ2FuZ3VsYXJmaXJlMi5maXJlc3RvcmUuc2V0dGluZ3MnKTtcblxudHlwZSBVc2VFbXVsYXRvckFyZ3VtZW50cyA9IFBhcmFtZXRlcnM8ZmlyZWJhc2UuZmlyZXN0b3JlLkZpcmVzdG9yZVsndXNlRW11bGF0b3InXT47XG5leHBvcnQgY29uc3QgVVNFX0VNVUxBVE9SID0gbmV3IEluamVjdGlvblRva2VuPFVzZUVtdWxhdG9yQXJndW1lbnRzPignYW5ndWxhcmZpcmUyLmZpcmVzdG9yZS51c2UtZW11bGF0b3InKTtcblxuLyoqXG4gKiBBIHV0aWxpdHkgbWV0aG9kcyBmb3IgYXNzb2NpYXRpbmcgYSBjb2xsZWN0aW9uIHJlZmVyZW5jZSB3aXRoXG4gKiBhIHF1ZXJ5LlxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uUmVmIC0gQSBjb2xsZWN0aW9uIHJlZmVyZW5jZSB0byBxdWVyeVxuICogQHBhcmFtIHF1ZXJ5Rm4gLSBUaGUgY2FsbGJhY2sgdG8gY3JlYXRlIGEgcXVlcnlcbiAqXG4gKiBFeGFtcGxlOlxuICogY29uc3QgeyBxdWVyeSwgcmVmIH0gPSBhc3NvY2lhdGVRdWVyeShkb2NSZWYuY29sbGVjdGlvbignaXRlbXMnKSwgcmVmID0+IHtcbiAqICByZXR1cm4gcmVmLndoZXJlKCdhZ2UnLCAnPCcsIDIwMCk7XG4gKiB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc29jaWF0ZVF1ZXJ5PFQ+KGNvbGxlY3Rpb25SZWY6IENvbGxlY3Rpb25SZWZlcmVuY2U8VD4sIHF1ZXJ5Rm4gPSByZWYgPT4gcmVmKTogQXNzb2NpYXRlZFJlZmVyZW5jZTxUPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gcXVlcnlGbihjb2xsZWN0aW9uUmVmKTtcbiAgY29uc3QgcmVmID0gY29sbGVjdGlvblJlZjtcbiAgcmV0dXJuIHsgcXVlcnksIHJlZiB9O1xufVxuXG50eXBlIEluc3RhbmNlQ2FjaGUgPSBNYXA8RmlyZWJhc2VBcHAsIFtcbiAgZmlyZWJhc2UuZmlyZXN0b3JlLkZpcmVzdG9yZSxcbiAgZmlyZWJhc2UuZmlyZXN0b3JlLlNldHRpbmdzIHwgbnVsbCxcbiAgVXNlRW11bGF0b3JBcmd1bWVudHMgfCBudWxsLFxuICBib29sZWFuIHwgbnVsbF1cbj47XG5cbi8qKlxuICogQW5ndWxhckZpcmVzdG9yZSBTZXJ2aWNlXG4gKlxuICogVGhpcyBzZXJ2aWNlIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGlzIGZlYXR1cmUgbW9kdWxlLiBJdCBwcm92aWRlc1xuICogYW4gQVBJIGZvciBjcmVhdGluZyBDb2xsZWN0aW9uIGFuZCBSZWZlcmVuY2Ugc2VydmljZXMuIFRoZXNlIHNlcnZpY2VzIGNhblxuICogdGhlbiBiZSB1c2VkIHRvIGRvIGRhdGEgdXBkYXRlcyBhbmQgb2JzZXJ2YWJsZSBzdHJlYW1zIG9mIHRoZSBkYXRhLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlLCBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbiwgQW5ndWxhckZpcmVzdG9yZURvY3VtZW50IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuICogaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG4gKiBpbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcy9vYnNlcnZhYmxlJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtbXktY29tcG9uZW50JyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgIDxoMj5JdGVtcyBmb3Ige3sgKHByb2ZpbGUgfCBhc3luYyk/Lm5hbWUgfX1cbiAqICAgIDx1bD5cbiAqICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IGFzeW5jXCI+e3sgaXRlbS5uYW1lIH19PC9saT5cbiAqICAgIDwvdWw+XG4gKiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbC1pbnB1dFwiPlxuICogICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgI2l0ZW1uYW1lIC8+XG4gKiAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRJdGVtKGl0ZW1uYW1lLnZhbHVlKVwiPkFkZCBJdGVtPC9idXR0b24+XG4gKiAgICA8L2Rpdj5cbiAqICAgYFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gKlxuICogICAvLyBzZXJ2aWNlcyBmb3IgZGF0YSBvcGVyYXRpb25zIGFuZCBkYXRhIHN0cmVhbWluZ1xuICogICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zUmVmOiBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbjxJdGVtPjtcbiAqICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlUmVmOiBBbmd1bGFyRmlyZXN0b3JlRG9jdW1lbnQ8UHJvZmlsZT47XG4gKlxuICogICAvLyBvYnNlcnZhYmxlcyBmb3IgdGVtcGxhdGVcbiAqICAgaXRlbXM6IE9ic2VydmFibGU8SXRlbVtdPjtcbiAqICAgcHJvZmlsZTogT2JzZXJ2YWJsZTxQcm9maWxlPjtcbiAqXG4gKiAgIC8vIGluamVjdCBtYWluIHNlcnZpY2VcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhZnM6IEFuZ3VsYXJGaXJlc3RvcmUpIHt9XG4gKlxuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICB0aGlzLml0ZW1zUmVmID0gYWZzLmNvbGxlY3Rpb24oJ2l0ZW1zJywgcmVmID0+IHJlZi53aGVyZSgndXNlcicsICc9PScsICdkYXZpZGVhc3QnKS5saW1pdCgxMCkpO1xuICogICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zUmVmLnZhbHVlQ2hhbmdlcygpLm1hcChzbmFwID0+IHNuYXAuZG9jcy5tYXAoZGF0YSA9PiBkb2MuZGF0YSgpKSk7XG4gKiAgICAgLy8gdGhpcy5pdGVtcyA9IGZyb20odGhpcy5pdGVtc1JlZik7IC8vIHlvdSBjYW4gYWxzbyBkbyB0aGlzIHdpdGggbm8gbWFwcGluZ1xuICpcbiAqICAgICB0aGlzLnByb2ZpbGVSZWYgPSBhZnMuZG9jKCd1c2Vycy9kYXZpZGVhc3QnKTtcbiAqICAgICB0aGlzLnByb2ZpbGUgPSB0aGlzLnByb2ZpbGVSZWYudmFsdWVDaGFuZ2VzKCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFkZEl0ZW0obmFtZTogc3RyaW5nKSB7XG4gKiAgICAgY29uc3QgdXNlciA9ICdkYXZpZGVhc3QnO1xuICogICAgIHRoaXMuaXRlbXNSZWYuYWRkKHsgbmFtZSwgdXNlciB9KTtcbiAqICAgfVxuICogfVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlc3RvcmUge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlyZXN0b3JlOiBmaXJlYmFzZS5maXJlc3RvcmUuRmlyZXN0b3JlO1xuICBwdWJsaWMgcmVhZG9ubHkgcGVyc2lzdGVuY2VFbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogRWFjaCBGZWF0dXJlIG9mIEFuZ3VsYXJGaXJlIGhhcyBhIEZpcmViYXNlQXBwIGluamVjdGVkLiBUaGlzIHdheSB3ZVxuICAgKiBkb24ndCByZWx5IG9uIHRoZSBtYWluIEZpcmViYXNlIEFwcCBpbnN0YW5jZSBhbmQgd2UgY2FuIGNyZWF0ZSBuYW1lZFxuICAgKiBhcHBzIGFuZCB1c2UgbXVsdGlwbGUgYXBwcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRklSRUJBU0VfT1BUSU9OUykgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRklSRUJBU0VfQVBQX05BTUUpIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChFTkFCTEVfUEVSU0lTVEVOQ0UpIHNob3VsZEVuYWJsZVBlcnNpc3RlbmNlOiBib29sZWFuIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNFVFRJTkdTKSBzZXR0aW5nczogU2V0dGluZ3MgfCBudWxsLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBFUlNJU1RFTkNFX1NFVFRJTkdTKSBwZXJzaXN0ZW5jZVNldHRpbmdzOiBQZXJzaXN0ZW5jZVNldHRpbmdzIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9FTVVMQVRPUikgX3VzZUVtdWxhdG9yOiBhbnksXG4gICAgQE9wdGlvbmFsKCkgYXV0aDogQW5ndWxhckZpcmVBdXRoLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0FVVEhfRU1VTEFUT1IpIHVzZUF1dGhFbXVsYXRvcjogYW55LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVUSF9TRVRUSU5HUykgYXV0aFNldHRpbmdzOiBhbnksIC8vIGNhbid0IHVzZSBmaXJlYmFzZS5hdXRoLkF1dGhTZXR0aW5ncyBoZXJlXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChURU5BTlRfSUQpIHRlbmFudElkOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTEFOR1VBR0VfQ09ERSkgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0RFVklDRV9MQU5HVUFHRSkgdXNlRGV2aWNlTGFuZ3VhZ2U6IGJvb2xlYW4gfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEVSU0lTVEVOQ0UpIHBlcnNpc3RlbmNlOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIF9hcHBDaGVja0luc3RhbmNlczogQXBwQ2hlY2tJbnN0YW5jZXMsXG4gICkge1xuICAgIGNvbnN0IGFwcCA9IMm1ZmlyZWJhc2VBcHBGYWN0b3J5KG9wdGlvbnMsIHpvbmUsIG5hbWUpO1xuICAgIGNvbnN0IHVzZUVtdWxhdG9yOiBVc2VFbXVsYXRvckFyZ3VtZW50cyB8IG51bGwgPSBfdXNlRW11bGF0b3I7XG5cbiAgICBpZiAoYXV0aCkge1xuICAgICAgybVhdXRoRmFjdG9yeShhcHAsIHpvbmUsIHVzZUF1dGhFbXVsYXRvciwgdGVuYW50SWQsIGxhbmd1YWdlQ29kZSwgdXNlRGV2aWNlTGFuZ3VhZ2UsIGF1dGhTZXR0aW5ncywgcGVyc2lzdGVuY2UpO1xuICAgIH1cblxuICAgIFt0aGlzLmZpcmVzdG9yZSwgdGhpcy5wZXJzaXN0ZW5jZUVuYWJsZWQkXSA9IMm1Y2FjaGVJbnN0YW5jZShgJHthcHAubmFtZX0uZmlyZXN0b3JlYCwgJ0FuZ3VsYXJGaXJlc3RvcmUnLCBhcHAubmFtZSwgKCkgPT4ge1xuICAgICAgY29uc3QgZmlyZXN0b3JlID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBhcHAuZmlyZXN0b3JlKCkpO1xuICAgICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICAgIGZpcmVzdG9yZS5zZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgICB9XG4gICAgICBpZiAodXNlRW11bGF0b3IpIHtcbiAgICAgICAgZmlyZXN0b3JlLnVzZUVtdWxhdG9yKC4uLnVzZUVtdWxhdG9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZEVuYWJsZVBlcnNpc3RlbmNlICYmICFpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdHJ5L2NhdGNoIGhlcmUgYmVjYXVzZSBub3QgYWxsIGVuYWJsZVBlcnNpc3RlbmNlKCkgZmFpbHVyZXMgYXJlIGNhdWdodFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmlyZWJhc2UvZmlyZWJhc2UtanMtc2RrL2lzc3Vlcy82MDhcbiAgICAgICAgY29uc3QgZW5hYmxlUGVyc2lzdGVuY2UgPSAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tKGZpcmVzdG9yZS5lbmFibGVQZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZVNldHRpbmdzIHx8IHVuZGVmaW5lZCkudGhlbigoKSA9PiB0cnVlLCAoKSA9PiBmYWxzZSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHsgY29uc29sZS53YXJuKGUpOyB9XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFtmaXJlc3RvcmUsIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZW5hYmxlUGVyc2lzdGVuY2UpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbZmlyZXN0b3JlLCBvZihmYWxzZSldO1xuICAgICAgfVxuXG4gICAgfSwgW3NldHRpbmdzLCB1c2VFbXVsYXRvciwgc2hvdWxkRW5hYmxlUGVyc2lzdGVuY2VdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByZWZlcmVuY2UgdG8gYSBGaXJlc3RvcmUgQ29sbGVjdGlvbiBiYXNlZCBvbiBhIHBhdGggb3JcbiAgICogQ29sbGVjdGlvblJlZmVyZW5jZSBhbmQgYW4gb3B0aW9uYWwgcXVlcnkgZnVuY3Rpb24gdG8gbmFycm93IHRoZSByZXN1bHRcbiAgICogc2V0LlxuICAgKi9cbiAgY29sbGVjdGlvbjxUPihwYXRoOiBzdHJpbmcsIHF1ZXJ5Rm4/OiBRdWVyeUZuKTogQW5ndWxhckZpcmVzdG9yZUNvbGxlY3Rpb248VD47XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp1bmlmaWVkLXNpZ25hdHVyZXNcbiAgY29sbGVjdGlvbjxUPihyZWY6IENvbGxlY3Rpb25SZWZlcmVuY2UsIHF1ZXJ5Rm4/OiBRdWVyeUZuKTogQW5ndWxhckZpcmVzdG9yZUNvbGxlY3Rpb248VD47XG4gIGNvbGxlY3Rpb248VD4ocGF0aE9yUmVmOiBzdHJpbmcgfCBDb2xsZWN0aW9uUmVmZXJlbmNlPFQ+LCBxdWVyeUZuPzogUXVlcnlGbik6IEFuZ3VsYXJGaXJlc3RvcmVDb2xsZWN0aW9uPFQ+IHtcbiAgICBsZXQgY29sbGVjdGlvblJlZjogQ29sbGVjdGlvblJlZmVyZW5jZTxUPjtcbiAgICBpZiAodHlwZW9mIHBhdGhPclJlZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbGxlY3Rpb25SZWYgPSB0aGlzLmZpcmVzdG9yZS5jb2xsZWN0aW9uKHBhdGhPclJlZikgYXMgZmlyZWJhc2UuZmlyZXN0b3JlLkNvbGxlY3Rpb25SZWZlcmVuY2U8VD47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbGxlY3Rpb25SZWYgPSBwYXRoT3JSZWY7XG4gICAgfVxuICAgIGNvbnN0IHsgcmVmLCBxdWVyeSB9ID0gYXNzb2NpYXRlUXVlcnk8VD4oY29sbGVjdGlvblJlZiwgcXVlcnlGbik7XG4gICAgY29uc3QgcmVmSW5ab25lID0gdGhpcy5zY2hlZHVsZXJzLm5nWm9uZS5ydW4oKCkgPT4gcmVmKTtcbiAgICByZXR1cm4gbmV3IEFuZ3VsYXJGaXJlc3RvcmVDb2xsZWN0aW9uPFQ+KHJlZkluWm9uZSwgcXVlcnksIHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJlZmVyZW5jZSB0byBhIEZpcmVzdG9yZSBDb2xsZWN0aW9uIEdyb3VwIGJhc2VkIG9uIGEgY29sbGVjdGlvbklkXG4gICAqIGFuZCBhbiBvcHRpb25hbCBxdWVyeSBmdW5jdGlvbiB0byBuYXJyb3cgdGhlIHJlc3VsdFxuICAgKiBzZXQuXG4gICAqL1xuICBjb2xsZWN0aW9uR3JvdXA8VD4oY29sbGVjdGlvbklkOiBzdHJpbmcsIHF1ZXJ5R3JvdXBGbj86IFF1ZXJ5R3JvdXBGbjxUPik6IEFuZ3VsYXJGaXJlc3RvcmVDb2xsZWN0aW9uR3JvdXA8VD4ge1xuICAgIGNvbnN0IHF1ZXJ5Rm4gPSBxdWVyeUdyb3VwRm4gfHwgKHJlZiA9PiByZWYpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25Hcm91cDogUXVlcnk8VD4gPSB0aGlzLmZpcmVzdG9yZS5jb2xsZWN0aW9uR3JvdXAoY29sbGVjdGlvbklkKSBhcyBmaXJlYmFzZS5maXJlc3RvcmUuUXVlcnk8VD47XG4gICAgcmV0dXJuIG5ldyBBbmd1bGFyRmlyZXN0b3JlQ29sbGVjdGlvbkdyb3VwPFQ+KHF1ZXJ5Rm4oY29sbGVjdGlvbkdyb3VwKSwgdGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcmVmZXJlbmNlIHRvIGEgRmlyZXN0b3JlIERvY3VtZW50IGJhc2VkIG9uIGEgcGF0aCBvclxuICAgKiBEb2N1bWVudFJlZmVyZW5jZS4gTm90ZSB0aGF0IGRvY3VtZW50cyBhcmUgbm90IHF1ZXJ5YWJsZSBiZWNhdXNlIHRoZXkgYXJlXG4gICAqIHNpbXBseSBvYmplY3RzLiBIb3dldmVyLCBkb2N1bWVudHMgaGF2ZSBzdWItY29sbGVjdGlvbnMgdGhhdCByZXR1cm4gYVxuICAgKiBDb2xsZWN0aW9uIHJlZmVyZW5jZSBhbmQgY2FuIGJlIHF1ZXJpZWQuXG4gICAqL1xuICBkb2M8VD4ocGF0aDogc3RyaW5nKTogQW5ndWxhckZpcmVzdG9yZURvY3VtZW50PFQ+O1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dW5pZmllZC1zaWduYXR1cmVzXG4gIGRvYzxUPihyZWY6IERvY3VtZW50UmVmZXJlbmNlKTogQW5ndWxhckZpcmVzdG9yZURvY3VtZW50PFQ+O1xuICBkb2M8VD4ocGF0aE9yUmVmOiBzdHJpbmcgfCBEb2N1bWVudFJlZmVyZW5jZTxUPik6IEFuZ3VsYXJGaXJlc3RvcmVEb2N1bWVudDxUPiB7XG4gICAgbGV0IHJlZjogRG9jdW1lbnRSZWZlcmVuY2U8VD47XG4gICAgaWYgKHR5cGVvZiBwYXRoT3JSZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZWYgPSB0aGlzLmZpcmVzdG9yZS5kb2MocGF0aE9yUmVmKSBhcyBmaXJlYmFzZS5maXJlc3RvcmUuRG9jdW1lbnRSZWZlcmVuY2U8VD47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZiA9IHBhdGhPclJlZjtcbiAgICB9XG4gICAgY29uc3QgcmVmSW5ab25lID0gdGhpcy5zY2hlZHVsZXJzLm5nWm9uZS5ydW4oKCkgPT4gcmVmKTtcbiAgICByZXR1cm4gbmV3IEFuZ3VsYXJGaXJlc3RvcmVEb2N1bWVudDxUPihyZWZJblpvbmUsIHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBnZW5lcmF0ZWQgRmlyZXN0b3JlIERvY3VtZW50IElkLlxuICAgKi9cbiAgY3JlYXRlSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb24oJ18nKS5kb2MoKS5pZDtcbiAgfVxufVxuIl19
@@ -3,9 +3,8 @@ import { from, of } from 'rxjs';
3
3
  import { map, observeOn, shareReplay, switchMap } from 'rxjs/operators';
4
4
  import { ɵAngularFireSchedulers } from '@angular/fire';
5
5
  import { ɵlazySDKProxy, ɵapplyMixins } from '@angular/fire/compat';
6
- import { ɵfirebaseAppFactory, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from '@angular/fire/compat';
6
+ import { ɵfirebaseAppFactory, FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance } from '@angular/fire/compat';
7
7
  import { proxyPolyfillCompat } from './base';
8
- import { ɵcacheInstance } from '@angular/fire';
9
8
  import { AppCheckInstances } from '@angular/fire/app-check';
10
9
  import * as i0 from "@angular/core";
11
10
  import * as i1 from "@angular/fire";
@@ -66,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
66
65
  type: Optional
67
66
  }] }]; } });
68
67
  ɵapplyMixins(AngularFireFunctions, [proxyPolyfillCompat]);
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9mdW5jdGlvbnMvZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBaUIsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFNUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLCtCQUErQixDQUFDLENBQUM7QUFDbEYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLCtCQUErQixDQUFDLENBQUM7QUFHbEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUF1QixxQ0FBcUMsQ0FBQyxDQUFDO0FBUzVHLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsWUFDNEIsT0FBd0IsRUFDWCxJQUErQixFQUN0RSxJQUFZLEVBQ1osVUFBa0MsRUFDTixNQUFxQixFQUNyQixNQUFxQixFQUNmLFlBQWlCLEVBQUUsMkJBQTJCO0lBQ3BFLGtCQUFxQztRQUVqRCxNQUFNLFdBQVcsR0FBZ0MsWUFBWSxDQUFDO1FBRTlELE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ2xDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQ3BDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxFQUNwRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNuRCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxjQUFjLE1BQU0sSUFBSSxNQUFNLEVBQUUsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUM1RyxJQUFJLFNBQXVDLENBQUM7WUFDNUMsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO2dCQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7YUFDdkU7WUFDRCxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELElBQUksV0FBVyxFQUFFO2dCQUNmLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQzthQUN2QztZQUNELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNsQyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUNoRCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFtQixJQUFZLEVBQUUsT0FBOEIsRUFBRSxFQUFFLENBQ3RGLENBQUMsSUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUNuQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNwRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBUyxDQUFDLENBQ3RCLENBQUM7UUFFSixPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTlDLENBQUM7O2lIQTNDVSxvQkFBb0Isa0JBS3JCLGdCQUFnQixhQUNKLGlCQUFpQix5RkFHakIsTUFBTSw2QkFDTixNQUFNLDZCQUNOLFlBQVk7cUhBWHZCLG9CQUFvQixjQUZuQixLQUFLOzJGQUVOLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQU1JLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUdwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU07OzBCQUN6QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU07OzBCQUN6QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVk7OzBCQUMvQixRQUFROztBQW1DYixZQUFZLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBvYnNlcnZlT24sIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgybVsYXp5U0RLUHJveHksIMm1UHJvbWlzZVByb3h5LCDJtWFwcGx5TWl4aW5zIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcbmltcG9ydCB7IMm1ZmlyZWJhc2VBcHBGYWN0b3J5LCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IHByb3h5UG9seWZpbGxDb21wYXQgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgSHR0cHNDYWxsYWJsZU9wdGlvbnMgfSBmcm9tICdAZmlyZWJhc2UvZnVuY3Rpb25zLXR5cGVzJztcbmltcG9ydCB7IMm1Y2FjaGVJbnN0YW5jZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQXBwQ2hlY2tJbnN0YW5jZXMgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcC1jaGVjayc7XG5cbmV4cG9ydCBjb25zdCBPUklHSU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLmZ1bmN0aW9ucy5vcmlnaW4nKTtcbmV4cG9ydCBjb25zdCBSRUdJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLmZ1bmN0aW9ucy5yZWdpb24nKTtcblxudHlwZSBVc2VFbXVsYXRvckFyZ3VtZW50cyA9IFBhcmFtZXRlcnM8ZmlyZWJhc2UuZnVuY3Rpb25zLkZ1bmN0aW9uc1sndXNlRW11bGF0b3InXT47XG5leHBvcnQgY29uc3QgVVNFX0VNVUxBVE9SID0gbmV3IEluamVjdGlvblRva2VuPFVzZUVtdWxhdG9yQXJndW1lbnRzPignYW5ndWxhcmZpcmUyLmZ1bmN0aW9ucy51c2UtZW11bGF0b3InKTtcblxuLy8gb3ZlcnJpZGUgaHR0cHNDYWxsYWJsZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIDUueFxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZUZ1bmN0aW9ucyBleHRlbmRzIE9taXQ8ybVQcm9taXNlUHJveHk8ZmlyZWJhc2UuZnVuY3Rpb25zLkZ1bmN0aW9ucz4sICdodHRwc0NhbGxhYmxlJz4ge1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlRnVuY3Rpb25zIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgaHR0cHNDYWxsYWJsZTogPFQgPSBhbnksIFIgPSBhbnk+KG5hbWU6IHN0cmluZywgb3B0aW9ucz86IEh0dHBzQ2FsbGFibGVPcHRpb25zKSA9PiAoZGF0YTogVCkgPT4gT2JzZXJ2YWJsZTxSPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZJUkVCQVNFX09QVElPTlMpIG9wdGlvbnM6IEZpcmViYXNlT3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZJUkVCQVNFX0FQUF9OQU1FKSBuYW1lOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFR0lPTikgcmVnaW9uOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoT1JJR0lOKSBvcmlnaW46IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVU0VfRU1VTEFUT1IpIF91c2VFbXVsYXRvcjogYW55LCAvLyBjYW4ndCB1c2UgdGhlIHR1cGxlIGhlcmVcbiAgICBAT3B0aW9uYWwoKSBfYXBwQ2hlY2tJbnN0YW5jZXM6IEFwcENoZWNrSW5zdGFuY2VzLFxuICApIHtcbiAgICBjb25zdCB1c2VFbXVsYXRvcjogVXNlRW11bGF0b3JBcmd1bWVudHMgfCBudWxsID0gX3VzZUVtdWxhdG9yO1xuXG4gICAgY29uc3QgZnVuY3Rpb25zID0gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L2Z1bmN0aW9ucycpKSxcbiAgICAgIG1hcCgoKSA9PiDJtWZpcmViYXNlQXBwRmFjdG9yeShvcHRpb25zLCB6b25lLCBuYW1lKSksXG4gICAgICBtYXAoYXBwID0+IMm1Y2FjaGVJbnN0YW5jZShgJHthcHAubmFtZX0uZnVuY3Rpb25zLiR7cmVnaW9uIHx8IG9yaWdpbn1gLCAnQW5ndWxhckZpcmVGdW5jdGlvbnMnLCBhcHAubmFtZSwgKCkgPT4ge1xuICAgICAgICBsZXQgZnVuY3Rpb25zOiBmaXJlYmFzZS5mdW5jdGlvbnMuRnVuY3Rpb25zO1xuICAgICAgICBpZiAocmVnaW9uICYmIG9yaWdpbikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUkVHSU9OIGFuZCBPUklHSU4gY2FuXFwndCBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuJyk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb25zID0gYXBwLmZ1bmN0aW9ucyhyZWdpb24gfHwgb3JpZ2luIHx8IHVuZGVmaW5lZCk7XG4gICAgICAgIGlmICh1c2VFbXVsYXRvcikge1xuICAgICAgICAgIGZ1bmN0aW9ucy51c2VFbXVsYXRvciguLi51c2VFbXVsYXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucztcbiAgICAgIH0sIFtyZWdpb24sIG9yaWdpbiwgdXNlRW11bGF0b3JdKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KVxuICAgICk7XG5cbiAgICB0aGlzLmh0dHBzQ2FsbGFibGUgPSA8VCA9IGFueSwgUiA9IGFueT4obmFtZTogc3RyaW5nLCBvcHRpb25zPzogSHR0cHNDYWxsYWJsZU9wdGlvbnMpID0+XG4gICAgICAoZGF0YTogVCkgPT4gZnJvbShmdW5jdGlvbnMpLnBpcGUoXG4gICAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLmluc2lkZUFuZ3VsYXIpLFxuICAgICAgICBzd2l0Y2hNYXAoZnVuY3Rpb25zID0+IGZ1bmN0aW9ucy5odHRwc0NhbGxhYmxlKG5hbWUsIG9wdGlvbnMpKGRhdGEpKSxcbiAgICAgICAgbWFwKHIgPT4gci5kYXRhIGFzIFIpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIMm1bGF6eVNES1Byb3h5KHRoaXMsIGZ1bmN0aW9ucywgem9uZSk7XG5cbiAgfVxuXG59XG5cbsm1YXBwbHlNaXhpbnMoQW5ndWxhckZpcmVGdW5jdGlvbnMsIFtwcm94eVBvbHlmaWxsQ29tcGF0XSk7XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9mdW5jdGlvbnMvZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBaUIsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUU1RCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVMsK0JBQStCLENBQUMsQ0FBQztBQUNsRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVMsK0JBQStCLENBQUMsQ0FBQztBQUdsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQXVCLHFDQUFxQyxDQUFDLENBQUM7QUFTNUcsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQixZQUM0QixPQUF3QixFQUNYLElBQStCLEVBQ3RFLElBQVksRUFDWixVQUFrQyxFQUNOLE1BQXFCLEVBQ3JCLE1BQXFCLEVBQ2YsWUFBaUIsRUFBRSwyQkFBMkI7SUFDcEUsa0JBQXFDO1FBRWpELE1BQU0sV0FBVyxHQUFnQyxZQUFZLENBQUM7UUFFOUQsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDbEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ25ELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLGNBQWMsTUFBTSxJQUFJLE1BQU0sRUFBRSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQzVHLElBQUksU0FBdUMsQ0FBQztZQUM1QyxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQzthQUN2RTtZQUNELFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUM7WUFDekQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2xDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQ2hELENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxHQUFHLENBQW1CLElBQVksRUFBRSxPQUE4QixFQUFFLEVBQUUsQ0FDdEYsQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQy9CLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQ25DLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3BFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFTLENBQUMsQ0FDdEIsQ0FBQztRQUVKLE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFOUMsQ0FBQzs7aUhBM0NVLG9CQUFvQixrQkFLckIsZ0JBQWdCLGFBQ0osaUJBQWlCLHlGQUdqQixNQUFNLDZCQUNOLE1BQU0sNkJBQ04sWUFBWTtxSEFYdkIsb0JBQW9CLGNBRm5CLEtBQUs7MkZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBTUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBR3BDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTTs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTTs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWTs7MEJBQy9CLFFBQVE7O0FBbUNiLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE5nWm9uZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG9ic2VydmVPbiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyDJtWxhenlTREtQcm94eSwgybVQcm9taXNlUHJveHksIMm1YXBwbHlNaXhpbnMgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgeyBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgybVmaXJlYmFzZUFwcEZhY3RvcnksIEZJUkVCQVNFX0FQUF9OQU1FLCBGSVJFQkFTRV9PUFRJT05TLCDJtWNhY2hlSW5zdGFuY2UgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgeyBwcm94eVBvbHlmaWxsQ29tcGF0IH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEh0dHBzQ2FsbGFibGVPcHRpb25zIH0gZnJvbSAnQGZpcmViYXNlL2Z1bmN0aW9ucy10eXBlcyc7XG5pbXBvcnQgeyBBcHBDaGVja0luc3RhbmNlcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwLWNoZWNrJztcblxuZXhwb3J0IGNvbnN0IE9SSUdJTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdhbmd1bGFyZmlyZTIuZnVuY3Rpb25zLm9yaWdpbicpO1xuZXhwb3J0IGNvbnN0IFJFR0lPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdhbmd1bGFyZmlyZTIuZnVuY3Rpb25zLnJlZ2lvbicpO1xuXG50eXBlIFVzZUVtdWxhdG9yQXJndW1lbnRzID0gUGFyYW1ldGVyczxmaXJlYmFzZS5mdW5jdGlvbnMuRnVuY3Rpb25zWyd1c2VFbXVsYXRvciddPjtcbmV4cG9ydCBjb25zdCBVU0VfRU1VTEFUT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48VXNlRW11bGF0b3JBcmd1bWVudHM+KCdhbmd1bGFyZmlyZTIuZnVuY3Rpb25zLnVzZS1lbXVsYXRvcicpO1xuXG4vLyBvdmVycmlkZSBodHRwc0NhbGxhYmxlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggNS54XG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJGaXJlRnVuY3Rpb25zIGV4dGVuZHMgT21pdDzJtVByb21pc2VQcm94eTxmaXJlYmFzZS5mdW5jdGlvbnMuRnVuY3Rpb25zPiwgJ2h0dHBzQ2FsbGFibGUnPiB7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueSdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVGdW5jdGlvbnMge1xuXG4gIHB1YmxpYyByZWFkb25seSBodHRwc0NhbGxhYmxlOiA8VCA9IGFueSwgUiA9IGFueT4obmFtZTogc3RyaW5nLCBvcHRpb25zPzogSHR0cHNDYWxsYWJsZU9wdGlvbnMpID0+IChkYXRhOiBUKSA9PiBPYnNlcnZhYmxlPFI+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRklSRUJBU0VfT1BUSU9OUykgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRklSRUJBU0VfQVBQX05BTUUpIG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgem9uZTogTmdab25lLFxuICAgIHNjaGVkdWxlcnM6IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUkVHSU9OKSByZWdpb246IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPUklHSU4pIG9yaWdpbjogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVTRV9FTVVMQVRPUikgX3VzZUVtdWxhdG9yOiBhbnksIC8vIGNhbid0IHVzZSB0aGUgdHVwbGUgaGVyZVxuICAgIEBPcHRpb25hbCgpIF9hcHBDaGVja0luc3RhbmNlczogQXBwQ2hlY2tJbnN0YW5jZXMsXG4gICkge1xuICAgIGNvbnN0IHVzZUVtdWxhdG9yOiBVc2VFbXVsYXRvckFyZ3VtZW50cyB8IG51bGwgPSBfdXNlRW11bGF0b3I7XG5cbiAgICBjb25zdCBmdW5jdGlvbnMgPSBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gaW1wb3J0KCdmaXJlYmFzZS9jb21wYXQvZnVuY3Rpb25zJykpLFxuICAgICAgbWFwKCgpID0+IMm1ZmlyZWJhc2VBcHBGYWN0b3J5KG9wdGlvbnMsIHpvbmUsIG5hbWUpKSxcbiAgICAgIG1hcChhcHAgPT4gybVjYWNoZUluc3RhbmNlKGAke2FwcC5uYW1lfS5mdW5jdGlvbnMuJHtyZWdpb24gfHwgb3JpZ2lufWAsICdBbmd1bGFyRmlyZUZ1bmN0aW9ucycsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICAgIGxldCBmdW5jdGlvbnM6IGZpcmViYXNlLmZ1bmN0aW9ucy5GdW5jdGlvbnM7XG4gICAgICAgIGlmIChyZWdpb24gJiYgb3JpZ2luKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSRUdJT04gYW5kIE9SSUdJTiBjYW5cXCd0IGJlIHVzZWQgYXQgdGhlIHNhbWUgdGltZS4nKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbnMgPSBhcHAuZnVuY3Rpb25zKHJlZ2lvbiB8fCBvcmlnaW4gfHwgdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKHVzZUVtdWxhdG9yKSB7XG4gICAgICAgICAgZnVuY3Rpb25zLnVzZUVtdWxhdG9yKC4uLnVzZUVtdWxhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb25zO1xuICAgICAgfSwgW3JlZ2lvbiwgb3JpZ2luLCB1c2VFbXVsYXRvcl0pKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IGZhbHNlIH0pXG4gICAgKTtcblxuICAgIHRoaXMuaHR0cHNDYWxsYWJsZSA9IDxUID0gYW55LCBSID0gYW55PihuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBIdHRwc0NhbGxhYmxlT3B0aW9ucykgPT5cbiAgICAgIChkYXRhOiBUKSA9PiBmcm9tKGZ1bmN0aW9ucykucGlwZShcbiAgICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICAgIHN3aXRjaE1hcChmdW5jdGlvbnMgPT4gZnVuY3Rpb25zLmh0dHBzQ2FsbGFibGUobmFtZSwgb3B0aW9ucykoZGF0YSkpLFxuICAgICAgICBtYXAociA9PiByLmRhdGEgYXMgUilcbiAgICAgICk7XG5cbiAgICByZXR1cm4gybVsYXp5U0RLUHJveHkodGhpcywgZnVuY3Rpb25zLCB6b25lKTtcblxuICB9XG5cbn1cblxuybVhcHBseU1peGlucyhBbmd1bGFyRmlyZUZ1bmN0aW9ucywgW3Byb3h5UG9seWZpbGxDb21wYXRdKTtcbiJdfQ==