@angular/fire 7.1.0-canary.ca6eac2 → 7.1.0-canary.f0b932a

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 (157) hide show
  1. package/analytics/analytics.module.d.ts +10 -5
  2. package/analytics/public_api.d.ts +2 -0
  3. package/analytics/screen-tracking.service.d.ts +42 -0
  4. package/analytics/user-tracking.service.d.ts +13 -0
  5. package/app/app.module.d.ts +3 -3
  6. package/app-check/app-check.module.d.ts +3 -3
  7. package/auth/auth.module.d.ts +3 -3
  8. package/bundles/angular-fire-analytics.umd.js +563 -35
  9. package/bundles/angular-fire-analytics.umd.js.map +1 -1
  10. package/bundles/angular-fire-app-check.umd.js +336 -18
  11. package/bundles/angular-fire-app-check.umd.js.map +1 -1
  12. package/bundles/angular-fire-app.umd.js +323 -3
  13. package/bundles/angular-fire-app.umd.js.map +1 -1
  14. package/bundles/angular-fire-auth.umd.js +324 -9
  15. package/bundles/angular-fire-auth.umd.js.map +1 -1
  16. package/bundles/angular-fire-compat-analytics.umd.js +16 -112
  17. package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
  18. package/bundles/angular-fire-compat-auth.umd.js +1 -1
  19. package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
  20. package/bundles/angular-fire-compat-database.umd.js +1 -1
  21. package/bundles/angular-fire-compat-database.umd.js.map +1 -1
  22. package/bundles/angular-fire-compat-firestore.umd.js +1 -1
  23. package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
  24. package/bundles/angular-fire-compat-functions.umd.js +1 -1
  25. package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
  26. package/bundles/angular-fire-compat-messaging.umd.js +5 -5
  27. package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
  28. package/bundles/angular-fire-compat-performance.umd.js +5 -5
  29. package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
  30. package/bundles/angular-fire-compat-remote-config.umd.js +5 -5
  31. package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
  32. package/bundles/angular-fire-compat-storage.umd.js +2 -1
  33. package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
  34. package/bundles/angular-fire-compat.umd.js +38 -2
  35. package/bundles/angular-fire-compat.umd.js.map +1 -1
  36. package/bundles/angular-fire-database.umd.js +323 -6
  37. package/bundles/angular-fire-database.umd.js.map +1 -1
  38. package/bundles/angular-fire-firestore-lite.umd.js +4 -3
  39. package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
  40. package/bundles/angular-fire-firestore.umd.js +323 -8
  41. package/bundles/angular-fire-firestore.umd.js.map +1 -1
  42. package/bundles/angular-fire-functions.umd.js +323 -6
  43. package/bundles/angular-fire-functions.umd.js.map +1 -1
  44. package/bundles/angular-fire-messaging.umd.js +330 -9
  45. package/bundles/angular-fire-messaging.umd.js.map +1 -1
  46. package/bundles/angular-fire-performance.umd.js +339 -11
  47. package/bundles/angular-fire-performance.umd.js.map +1 -1
  48. package/bundles/angular-fire-remote-config.umd.js +353 -11
  49. package/bundles/angular-fire-remote-config.umd.js.map +1 -1
  50. package/bundles/angular-fire-storage.umd.js +324 -7
  51. package/bundles/angular-fire-storage.umd.js.map +1 -1
  52. package/bundles/angular-fire.umd.js +2 -373
  53. package/bundles/angular-fire.umd.js.map +1 -1
  54. package/compat/analytics/screen-tracking.service.d.ts +2 -2
  55. package/compat/cache.d.ts +1 -0
  56. package/compat/public_api.d.ts +1 -0
  57. package/compat/storage/interfaces.d.ts +1 -0
  58. package/compat/storage/ref.d.ts +2 -1
  59. package/core.d.ts +1 -3
  60. package/database/database.module.d.ts +3 -3
  61. package/docs/deploy/getting-started.md +62 -1
  62. package/docs/version-7-upgrade.md +1 -1
  63. package/esm2015/analytics/analytics.module.js +41 -20
  64. package/esm2015/analytics/public_api.js +3 -1
  65. package/esm2015/analytics/screen-tracking.service.js +147 -0
  66. package/esm2015/analytics/user-tracking.service.js +42 -0
  67. package/esm2015/app/app.module.js +12 -7
  68. package/esm2015/app-check/app-check.js +1 -2
  69. package/esm2015/app-check/app-check.module.js +19 -14
  70. package/esm2015/auth/auth.js +1 -2
  71. package/esm2015/auth/auth.module.js +10 -9
  72. package/esm2015/compat/analytics/analytics.js +2 -3
  73. package/esm2015/compat/analytics/screen-tracking.service.js +11 -100
  74. package/esm2015/compat/auth/auth.js +2 -3
  75. package/esm2015/compat/cache.js +32 -0
  76. package/esm2015/compat/database/database.js +2 -3
  77. package/esm2015/compat/firestore/firestore.js +2 -3
  78. package/esm2015/compat/functions/functions.js +2 -3
  79. package/esm2015/compat/messaging/messaging.js +3 -3
  80. package/esm2015/compat/performance/performance.js +2 -3
  81. package/esm2015/compat/public_api.js +2 -1
  82. package/esm2015/compat/remote-config/remote-config.js +4 -5
  83. package/esm2015/compat/storage/interfaces.js +1 -1
  84. package/esm2015/compat/storage/ref.js +2 -1
  85. package/esm2015/compat/storage/storage.js +3 -3
  86. package/esm2015/core.js +4 -57
  87. package/esm2015/database/database.module.js +9 -7
  88. package/esm2015/firestore/firestore.module.js +9 -9
  89. package/esm2015/firestore/lite/lite.module.js +7 -6
  90. package/esm2015/functions/functions.module.js +9 -7
  91. package/esm2015/messaging/messaging.module.js +16 -10
  92. package/esm2015/performance/performance.module.js +22 -8
  93. package/esm2015/remote-config/firebase.js +3 -2
  94. package/esm2015/remote-config/remote-config.module.js +34 -8
  95. package/esm2015/storage/storage.module.js +10 -8
  96. package/fesm2015/angular-fire-analytics.js +219 -33
  97. package/fesm2015/angular-fire-analytics.js.map +1 -1
  98. package/fesm2015/angular-fire-app-check.js +18 -14
  99. package/fesm2015/angular-fire-app-check.js.map +1 -1
  100. package/fesm2015/angular-fire-app.js +11 -6
  101. package/fesm2015/angular-fire-app.js.map +1 -1
  102. package/fesm2015/angular-fire-auth.js +9 -9
  103. package/fesm2015/angular-fire-auth.js.map +1 -1
  104. package/fesm2015/angular-fire-compat-analytics.js +10 -98
  105. package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
  106. package/fesm2015/angular-fire-compat-auth.js +2 -2
  107. package/fesm2015/angular-fire-compat-auth.js.map +1 -1
  108. package/fesm2015/angular-fire-compat-database.js +2 -2
  109. package/fesm2015/angular-fire-compat-database.js.map +1 -1
  110. package/fesm2015/angular-fire-compat-firestore.js +2 -2
  111. package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
  112. package/fesm2015/angular-fire-compat-functions.js +2 -2
  113. package/fesm2015/angular-fire-compat-functions.js.map +1 -1
  114. package/fesm2015/angular-fire-compat-messaging.js +2 -2
  115. package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
  116. package/fesm2015/angular-fire-compat-performance.js +2 -2
  117. package/fesm2015/angular-fire-compat-performance.js.map +1 -1
  118. package/fesm2015/angular-fire-compat-remote-config.js +4 -4
  119. package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
  120. package/fesm2015/angular-fire-compat-storage.js +3 -2
  121. package/fesm2015/angular-fire-compat-storage.js.map +1 -1
  122. package/fesm2015/angular-fire-compat.js +34 -3
  123. package/fesm2015/angular-fire-compat.js.map +1 -1
  124. package/fesm2015/angular-fire-database.js +8 -6
  125. package/fesm2015/angular-fire-database.js.map +1 -1
  126. package/fesm2015/angular-fire-firestore-lite.js +6 -5
  127. package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
  128. package/fesm2015/angular-fire-firestore.js +8 -8
  129. package/fesm2015/angular-fire-firestore.js.map +1 -1
  130. package/fesm2015/angular-fire-functions.js +8 -6
  131. package/fesm2015/angular-fire-functions.js.map +1 -1
  132. package/fesm2015/angular-fire-messaging.js +15 -9
  133. package/fesm2015/angular-fire-messaging.js.map +1 -1
  134. package/fesm2015/angular-fire-performance.js +21 -7
  135. package/fesm2015/angular-fire-performance.js.map +1 -1
  136. package/fesm2015/angular-fire-remote-config.js +36 -10
  137. package/fesm2015/angular-fire-remote-config.js.map +1 -1
  138. package/fesm2015/angular-fire-storage.js +9 -7
  139. package/fesm2015/angular-fire-storage.js.map +1 -1
  140. package/fesm2015/angular-fire.js +4 -57
  141. package/fesm2015/angular-fire.js.map +1 -1
  142. package/firestore/firestore.module.d.ts +3 -3
  143. package/firestore/lite/lite.module.d.ts +2 -2
  144. package/functions/functions.module.d.ts +3 -3
  145. package/messaging/messaging.module.d.ts +3 -3
  146. package/package.json +8 -2
  147. package/performance/performance.module.d.ts +4 -4
  148. package/remote-config/firebase.d.ts +2 -1
  149. package/remote-config/remote-config.module.d.ts +4 -4
  150. package/schematics/deploy/actions.js +19 -13
  151. package/schematics/deploy/schema.json +4 -0
  152. package/schematics/firebaseTools.js +2 -2
  153. package/schematics/setup/ssr.js +7 -1
  154. package/schematics/setup/static.js +9 -3
  155. package/schematics/utils.js +1 -1
  156. package/schematics/versions.json +1 -1
  157. package/storage/storage.module.d.ts +3 -3
@@ -1,25 +1,28 @@
1
- import { NgModule, Optional, NgZone, InjectionToken, PLATFORM_ID } from '@angular/core';
2
- import { ɵgetDefaultInstanceOf, ɵmemoizeInstance, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
1
+ import { NgModule, Optional, NgZone, InjectionToken, PLATFORM_ID, isDevMode, Injector } from '@angular/core';
2
+ import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
3
3
  import { AppCheck, AppCheckInstances, APP_CHECK_PROVIDER_NAME } from './app-check';
4
4
  import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
5
5
  import { registerVersion } from 'firebase/app';
6
+ import { isPlatformServer } from '@angular/common';
6
7
  import * as i0 from "@angular/core";
7
8
  export const PROVIDED_APP_CHECK_INSTANCES = new InjectionToken('angularfire2.app-check-instances');
8
9
  export const APP_CHECK_NAMESPACE_SYMBOL = Symbol('angularfire2.app-check.namespace');
9
10
  export function defaultAppCheckInstanceFactory(provided, defaultApp) {
10
11
  const defaultAppCheck = ɵgetDefaultInstanceOf(APP_CHECK_PROVIDER_NAME, provided, defaultApp);
11
- return new AppCheck(defaultAppCheck);
12
+ return defaultAppCheck && new AppCheck(defaultAppCheck);
12
13
  }
14
+ const LOCALHOSTS = ['localhost', '0.0.0.0', '127.0.0.1'];
15
+ const isLocalhost = typeof window !== 'undefined' && LOCALHOSTS.includes(window.location.hostname);
13
16
  export function appCheckInstanceFactory(fn) {
14
- return (zone) => {
15
- // This isn't supported by the JS SDK yet, I've put in the feature request
16
- // for the time being I've written a hack in core.ts
17
- /* if (typeof process !== 'undefined' && process.env?.FIREBASE_APPCHECK_DEBUG_TOKEN) {
18
- globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN ??= process.env.FIREBASE_APPCHECK_DEBUG_TOKEN;
19
- } else if (isDevMode()) {
20
- globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN ??= true;
21
- } */
22
- return ɵmemoizeInstance(fn, zone);
17
+ // tslint:disable-next-line:ban-types
18
+ return (zone, injector, platformId) => {
19
+ var _a;
20
+ // Node should use admin token provider, browser devmode and localhost should use debug token
21
+ if (!isPlatformServer(platformId) && (isDevMode() || isLocalhost)) {
22
+ (_a = globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN) !== null && _a !== void 0 ? _a : (globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN = true);
23
+ }
24
+ const appCheck = zone.runOutsideAngular(() => fn(injector));
25
+ return new AppCheck(appCheck);
23
26
  };
24
27
  }
25
28
  const APP_CHECK_INSTANCES_PROVIDER = {
@@ -57,7 +60,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
57
60
  ]
58
61
  }]
59
62
  }], ctorParameters: function () { return []; } });
60
- export function provideAppCheck(fn) {
63
+ export function provideAppCheck(fn, ...deps) {
61
64
  return {
62
65
  ngModule: AppCheckModule,
63
66
  providers: [{
@@ -66,11 +69,13 @@ export function provideAppCheck(fn) {
66
69
  multi: true,
67
70
  deps: [
68
71
  NgZone,
72
+ Injector,
69
73
  PLATFORM_ID,
70
74
  ɵAngularFireSchedulers,
71
75
  FirebaseApps,
76
+ ...deps,
72
77
  ]
73
78
  }]
74
79
  };
75
80
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNoZWNrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAtY2hlY2svYXBwLWNoZWNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixXQUFXLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFL0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQWEsa0NBQWtDLENBQUMsQ0FBQztBQUMvRyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUVyRixNQUFNLFVBQVUsOEJBQThCLENBQUMsUUFBc0MsRUFBRSxVQUF1QjtJQUM1RyxNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBbUIsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9HLE9BQU8sSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxFQUEwQjtJQUNoRSxPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDdEIsMEVBQTBFO1FBQzFFLG9EQUFvRDtRQUNwRDs7OztZQUlJO1FBQ0osT0FBTyxnQkFBZ0IsQ0FBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFFBQVE7SUFDakIsVUFBVSxFQUFFLDhCQUE4QjtJQUMxQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztRQUNYLFdBQVc7S0FDWjtDQUNGLENBQUM7QUFRRixNQUFNLE9BQU8sY0FBYztJQUN6QjtRQUNFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDOzsyR0FIVSxjQUFjOzRHQUFkLGNBQWM7NEdBQWQsY0FBYyxhQUxkO1FBQ1QsbUNBQW1DO1FBQ25DLDRCQUE0QjtLQUM3QjsyRkFFVSxjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCxtQ0FBbUM7d0JBQ25DLDRCQUE0QjtxQkFDN0I7aUJBQ0Y7O0FBT0QsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUEwQjtJQUN4RCxPQUFPO1FBQ0wsUUFBUSxFQUFFLGNBQWM7UUFDeEIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFO29CQUNKLE1BQU07b0JBQ04sV0FBVztvQkFDWCxzQkFBc0I7b0JBQ3RCLFlBQVk7aUJBQ2I7YUFDRixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgT3B0aW9uYWwsIE5nWm9uZSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIFBMQVRGT1JNX0lELCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcENoZWNrIGFzIEZpcmViYXNlQXBwQ2hlY2sgfSBmcm9tICdmaXJlYmFzZS9hcHAtY2hlY2snO1xuaW1wb3J0IHsgybVnZXREZWZhdWx0SW5zdGFuY2VPZiwgybVtZW1vaXplSW5zdGFuY2UsIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLCBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBBcHBDaGVjaywgQXBwQ2hlY2tJbnN0YW5jZXMsIEFQUF9DSEVDS19QUk9WSURFUl9OQU1FIH0gZnJvbSAnLi9hcHAtY2hlY2snO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9BUFBfQ0hFQ0tfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPEFwcENoZWNrW10+KCdhbmd1bGFyZmlyZTIuYXBwLWNoZWNrLWluc3RhbmNlcycpO1xuZXhwb3J0IGNvbnN0IEFQUF9DSEVDS19OQU1FU1BBQ0VfU1lNQk9MID0gU3ltYm9sKCdhbmd1bGFyZmlyZTIuYXBwLWNoZWNrLm5hbWVzcGFjZScpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEFwcENoZWNrSW5zdGFuY2VGYWN0b3J5KHByb3ZpZGVkOiBGaXJlYmFzZUFwcENoZWNrW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBjb25zdCBkZWZhdWx0QXBwQ2hlY2sgPSDJtWdldERlZmF1bHRJbnN0YW5jZU9mPEZpcmViYXNlQXBwQ2hlY2s+KEFQUF9DSEVDS19QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBuZXcgQXBwQ2hlY2soZGVmYXVsdEFwcENoZWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcENoZWNrSW5zdGFuY2VGYWN0b3J5KGZuOiAoKSA9PiBGaXJlYmFzZUFwcENoZWNrKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lKSA9PiB7XG4gICAgLy8gVGhpcyBpc24ndCBzdXBwb3J0ZWQgYnkgdGhlIEpTIFNESyB5ZXQsIEkndmUgcHV0IGluIHRoZSBmZWF0dXJlIHJlcXVlc3RcbiAgICAvLyBmb3IgdGhlIHRpbWUgYmVpbmcgSSd2ZSB3cml0dGVuIGEgaGFjayBpbiBjb3JlLnRzXG4gICAgLyogaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudj8uRklSRUJBU0VfQVBQQ0hFQ0tfREVCVUdfVE9LRU4pIHtcbiAgICAgIGdsb2JhbFRoaXMuRklSRUJBU0VfQVBQQ0hFQ0tfREVCVUdfVE9LRU4gPz89IHByb2Nlc3MuZW52LkZJUkVCQVNFX0FQUENIRUNLX0RFQlVHX1RPS0VOO1xuICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIGdsb2JhbFRoaXMuRklSRUJBU0VfQVBQQ0hFQ0tfREVCVUdfVE9LRU4gPz89IHRydWU7XG4gICAgfSAqL1xuICAgIHJldHVybiDJtW1lbW9pemVJbnN0YW5jZTxGaXJlYmFzZUFwcENoZWNrPihmbiwgem9uZSk7XG4gIH07XG59XG5cbmNvbnN0IEFQUF9DSEVDS19JTlNUQU5DRVNfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEFwcENoZWNrSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BUFBfQ0hFQ0tfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfQVBQX0NIRUNLX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBcHBDaGVjayxcbiAgdXNlRmFjdG9yeTogZGVmYXVsdEFwcENoZWNrSW5zdGFuY2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BUFBfQ0hFQ0tfSU5TVEFOQ0VTIF0sXG4gICAgRmlyZWJhc2VBcHAsXG4gICAgUExBVEZPUk1fSUQsXG4gIF1cbn07XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIERFRkFVTFRfQVBQX0NIRUNLX0lOU1RBTkNFX1BST1ZJREVSLFxuICAgIEFQUF9DSEVDS19JTlNUQU5DRVNfUFJPVklERVIsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwQ2hlY2tNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnYXBwLWNoZWNrJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBcHBDaGVjayhmbjogKCkgPT4gRmlyZWJhc2VBcHBDaGVjayk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXBwQ2hlY2tNb2R1bGU+IHtcbiAgcmV0dXJuIHtcbiAgICBuZ01vZHVsZTogQXBwQ2hlY2tNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQVBQX0NIRUNLX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IGFwcENoZWNrSW5zdGFuY2VGYWN0b3J5KGZuKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgZGVwczogW1xuICAgICAgICBOZ1pvbmUsXG4gICAgICAgIFBMQVRGT1JNX0lELFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgRmlyZWJhc2VBcHBzLFxuICAgICAgXVxuICAgIH1dXG4gIH07XG59XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNoZWNrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAtY2hlY2svYXBwLWNoZWNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsSSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUVuRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBYSxrQ0FBa0MsQ0FBQyxDQUFDO0FBQy9HLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXJGLE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxRQUFzQyxFQUFFLFVBQXVCO0lBQzVHLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFtQix1QkFBdUIsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0csT0FBTyxlQUFlLElBQUksSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN6RCxNQUFNLFdBQVcsR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRW5HLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxFQUE0QztJQUNsRixxQ0FBcUM7SUFDckMsT0FBTyxDQUFDLElBQVksRUFBRSxRQUFrQixFQUFFLFVBQWtCLEVBQUUsRUFBRTs7UUFDOUQsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFO1lBQ2pFLE1BQUEsVUFBVSxDQUFDLDZCQUE2QixvQ0FBeEMsVUFBVSxDQUFDLDZCQUE2QixHQUFLLElBQUksRUFBQztTQUNuRDtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFFBQVE7SUFDakIsVUFBVSxFQUFFLDhCQUE4QjtJQUMxQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztRQUNYLFdBQVc7S0FDWjtDQUNGLENBQUM7QUFRRixNQUFNLE9BQU8sY0FBYztJQUN6QjtRQUNFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDOzsyR0FIVSxjQUFjOzRHQUFkLGNBQWM7NEdBQWQsY0FBYyxhQUxkO1FBQ1QsbUNBQW1DO1FBQ25DLDRCQUE0QjtLQUM3QjsyRkFFVSxjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCxtQ0FBbUM7d0JBQ25DLDRCQUE0QjtxQkFDN0I7aUJBQ0Y7O0FBT0QsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUE0QyxFQUFFLEdBQUcsSUFBVztJQUMxRixPQUFPO1FBQ0wsUUFBUSxFQUFFLGNBQWM7UUFDeEIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFO29CQUNKLE1BQU07b0JBQ04sUUFBUTtvQkFDUixXQUFXO29CQUNYLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixHQUFHLElBQUk7aUJBQ1I7YUFDRixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgT3B0aW9uYWwsIE5nWm9uZSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIFBMQVRGT1JNX0lELCBpc0Rldk1vZGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBDaGVjayBhcyBGaXJlYmFzZUFwcENoZWNrIH0gZnJvbSAnZmlyZWJhc2UvYXBwLWNoZWNrJztcbmltcG9ydCB7IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2YsIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLCBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBBcHBDaGVjaywgQXBwQ2hlY2tJbnN0YW5jZXMsIEFQUF9DSEVDS19QUk9WSURFUl9OQU1FIH0gZnJvbSAnLi9hcHAtY2hlY2snO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFBST1ZJREVEX0FQUF9DSEVDS19JTlNUQU5DRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXBwQ2hlY2tbXT4oJ2FuZ3VsYXJmaXJlMi5hcHAtY2hlY2staW5zdGFuY2VzJyk7XG5leHBvcnQgY29uc3QgQVBQX0NIRUNLX05BTUVTUEFDRV9TWU1CT0wgPSBTeW1ib2woJ2FuZ3VsYXJmaXJlMi5hcHAtY2hlY2submFtZXNwYWNlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QXBwQ2hlY2tJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQXBwQ2hlY2tbXXx1bmRlZmluZWQsIGRlZmF1bHRBcHA6IEZpcmViYXNlQXBwKSB7XG4gIGNvbnN0IGRlZmF1bHRBcHBDaGVjayA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VBcHBDaGVjaz4oQVBQX0NIRUNLX1BST1ZJREVSX05BTUUsIHByb3ZpZGVkLCBkZWZhdWx0QXBwKTtcbiAgcmV0dXJuIGRlZmF1bHRBcHBDaGVjayAmJiBuZXcgQXBwQ2hlY2soZGVmYXVsdEFwcENoZWNrKTtcbn1cblxuY29uc3QgTE9DQUxIT1NUUyA9IFsnbG9jYWxob3N0JywgJzAuMC4wLjAnLCAnMTI3LjAuMC4xJ107XG5jb25zdCBpc0xvY2FsaG9zdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIExPQ0FMSE9TVFMuaW5jbHVkZXMod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcENoZWNrSW5zdGFuY2VGYWN0b3J5KGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZUFwcENoZWNrKSB7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgcmV0dXJuICh6b25lOiBOZ1pvbmUsIGluamVjdG9yOiBJbmplY3RvciwgcGxhdGZvcm1JZDogT2JqZWN0KSA9PiB7XG4gICAgLy8gTm9kZSBzaG91bGQgdXNlIGFkbWluIHRva2VuIHByb3ZpZGVyLCBicm93c2VyIGRldm1vZGUgYW5kIGxvY2FsaG9zdCBzaG91bGQgdXNlIGRlYnVnIHRva2VuXG4gICAgaWYgKCFpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpICYmIChpc0Rldk1vZGUoKSB8fCBpc0xvY2FsaG9zdCkpIHtcbiAgICAgIGdsb2JhbFRoaXMuRklSRUJBU0VfQVBQQ0hFQ0tfREVCVUdfVE9LRU4gPz89IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGFwcENoZWNrID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBmbihpbmplY3RvcikpO1xuICAgIHJldHVybiBuZXcgQXBwQ2hlY2soYXBwQ2hlY2spO1xuICB9O1xufVxuXG5jb25zdCBBUFBfQ0hFQ0tfSU5TVEFOQ0VTX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBcHBDaGVja0luc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQVBQX0NIRUNLX0lOU1RBTkNFUyBdLFxuICBdXG59O1xuXG5jb25zdCBERUZBVUxUX0FQUF9DSEVDS19JTlNUQU5DRV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQXBwQ2hlY2ssXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRBcHBDaGVja0luc3RhbmNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQVBQX0NIRUNLX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICAgIFBMQVRGT1JNX0lELFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX0FQUF9DSEVDS19JTlNUQU5DRV9QUk9WSURFUixcbiAgICBBUFBfQ0hFQ0tfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcENoZWNrTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ2FwcC1jaGVjaycpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXBwQ2hlY2soZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlQXBwQ2hlY2ssIC4uLmRlcHM6IGFueVtdKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBcHBDaGVja01vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBcHBDaGVja01vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9BUFBfQ0hFQ0tfSU5TVEFOQ0VTLFxuICAgICAgdXNlRmFjdG9yeTogYXBwQ2hlY2tJbnN0YW5jZUZhY3RvcnkoZm4pLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBkZXBzOiBbXG4gICAgICAgIE5nWm9uZSxcbiAgICAgICAgSW5qZWN0b3IsXG4gICAgICAgIFBMQVRGT1JNX0lELFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgRmlyZWJhc2VBcHBzLFxuICAgICAgICAuLi5kZXBzLFxuICAgICAgXVxuICAgIH1dXG4gIH07XG59XG4iXX0=
@@ -8,10 +8,9 @@ export class Auth {
8
8
  }
9
9
  }
10
10
  export class AuthInstances {
11
- // tslint:disable-next-line:ban-types
12
11
  constructor() {
13
12
  return ɵgetAllInstancesOf(AUTH_PROVIDER_NAME);
14
13
  }
15
14
  }
16
15
  export const authInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(AUTH_PROVIDER_NAME))), distinct());
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBTXpDLE1BQU0sT0FBTyxJQUFJO0lBQ2YsWUFBWSxJQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUtELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLHFDQUFxQztJQUNyQztRQUNFLE9BQU8sa0JBQWtCLENBQWUsa0JBQWtCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzdDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQWUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQzNFLFFBQVEsRUFBRSxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoIGFzIEZpcmViYXNlQXV0aCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgybVnZXRBbGxJbnN0YW5jZXNPZiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgZnJvbSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZGlzdGluY3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBBVVRIX1BST1ZJREVSX05BTUUgPSAnYXV0aCc7XG5cbi8vIHNlZSBub3RlcyBpbiBjb3JlL2ZpcmViYXNlLmFwcC5tb2R1bGUudHMgZm9yIHdoeSB3ZSdyZSBidWlsZGluZyB0aGUgY2xhc3MgbGlrZSB0aGlzXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEF1dGggZXh0ZW5kcyBGaXJlYmFzZUF1dGgge31cblxuZXhwb3J0IGNsYXNzIEF1dGgge1xuICBjb25zdHJ1Y3RvcihhdXRoOiBGaXJlYmFzZUF1dGgpIHtcbiAgICByZXR1cm4gYXV0aDtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhJbnN0YW5jZXMgZXh0ZW5kcyBBcnJheTxGaXJlYmFzZUF1dGg+IHt9XG5cbmV4cG9ydCBjbGFzcyBBdXRoSW5zdGFuY2VzIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZXR1cm4gybVnZXRBbGxJbnN0YW5jZXNPZjxGaXJlYmFzZUF1dGg+KEFVVEhfUFJPVklERVJfTkFNRSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGF1dGhJbnN0YW5jZSQgPSB0aW1lcigwLCAzMDApLnBpcGUoXG4gIGNvbmNhdE1hcCgoKSA9PiBmcm9tKMm1Z2V0QWxsSW5zdGFuY2VzT2Y8RmlyZWJhc2VBdXRoPihBVVRIX1BST1ZJREVSX05BTUUpKSksXG4gIGRpc3RpbmN0KCksXG4pO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBTXpDLE1BQU0sT0FBTyxJQUFJO0lBQ2YsWUFBWSxJQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUtELE1BQU0sT0FBTyxhQUFhO0lBQ3hCO1FBQ0UsT0FBTyxrQkFBa0IsQ0FBZSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBZSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFDM0UsUUFBUSxFQUFFLENBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGggYXMgRmlyZWJhc2VBdXRoIH0gZnJvbSAnZmlyZWJhc2UvYXV0aCc7XG5pbXBvcnQgeyDJtWdldEFsbEluc3RhbmNlc09mIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBmcm9tLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkaXN0aW5jdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNvbnN0IEFVVEhfUFJPVklERVJfTkFNRSA9ICdhdXRoJztcblxuLy8gc2VlIG5vdGVzIGluIGNvcmUvZmlyZWJhc2UuYXBwLm1vZHVsZS50cyBmb3Igd2h5IHdlJ3JlIGJ1aWxkaW5nIHRoZSBjbGFzcyBsaWtlIHRoaXNcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aCBleHRlbmRzIEZpcmViYXNlQXV0aCB7fVxuXG5leHBvcnQgY2xhc3MgQXV0aCB7XG4gIGNvbnN0cnVjdG9yKGF1dGg6IEZpcmViYXNlQXV0aCkge1xuICAgIHJldHVybiBhdXRoO1xuICB9XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEluc3RhbmNlcyBleHRlbmRzIEFycmF5PEZpcmViYXNlQXV0aD4ge31cblxuZXhwb3J0IGNsYXNzIEF1dGhJbnN0YW5jZXMge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZXR1cm4gybVnZXRBbGxJbnN0YW5jZXNPZjxGaXJlYmFzZUF1dGg+KEFVVEhfUFJPVklERVJfTkFNRSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGF1dGhJbnN0YW5jZSQgPSB0aW1lcigwLCAzMDApLnBpcGUoXG4gIGNvbmNhdE1hcCgoKSA9PiBmcm9tKMm1Z2V0QWxsSW5zdGFuY2VzT2Y8RmlyZWJhc2VBdXRoPihBVVRIX1BST1ZJREVSX05BTUUpKSksXG4gIGRpc3RpbmN0KCksXG4pO1xuIl19
@@ -1,5 +1,5 @@
1
- import { NgModule, Optional, NgZone, InjectionToken, PLATFORM_ID } from '@angular/core';
2
- import { ɵgetDefaultInstanceOf, ɵmemoizeInstance, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
1
+ import { NgModule, Optional, NgZone, InjectionToken, Injector } from '@angular/core';
2
+ import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
3
3
  import { Auth, AuthInstances, AUTH_PROVIDER_NAME } from './auth';
4
4
  import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
5
5
  import { registerVersion } from 'firebase/app';
@@ -8,11 +8,12 @@ import * as i0 from "@angular/core";
8
8
  export const PROVIDED_AUTH_INSTANCES = new InjectionToken('angularfire2.auth-instances');
9
9
  export function defaultAuthInstanceFactory(provided, defaultApp) {
10
10
  const defaultAuth = ɵgetDefaultInstanceOf(AUTH_PROVIDER_NAME, provided, defaultApp);
11
- return new Auth(defaultAuth);
11
+ return defaultAuth && new Auth(defaultAuth);
12
12
  }
13
13
  export function authInstanceFactory(fn) {
14
- return (zone) => {
15
- return ɵmemoizeInstance(fn, zone);
14
+ return (zone, injector) => {
15
+ const auth = zone.runOutsideAngular(() => fn(injector));
16
+ return new Auth(auth);
16
17
  };
17
18
  }
18
19
  const AUTH_INSTANCES_PROVIDER = {
@@ -27,7 +28,6 @@ const DEFAULT_AUTH_INSTANCE_PROVIDER = {
27
28
  deps: [
28
29
  [new Optional(), PROVIDED_AUTH_INSTANCES],
29
30
  FirebaseApp,
30
- PLATFORM_ID,
31
31
  ]
32
32
  };
33
33
  export class AuthModule {
@@ -50,7 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
50
50
  ]
51
51
  }]
52
52
  }], ctorParameters: function () { return []; } });
53
- export function provideAuth(fn) {
53
+ export function provideAuth(fn, ...deps) {
54
54
  return {
55
55
  ngModule: AuthModule,
56
56
  providers: [{
@@ -59,12 +59,13 @@ export function provideAuth(fn) {
59
59
  multi: true,
60
60
  deps: [
61
61
  NgZone,
62
- PLATFORM_ID,
62
+ Injector,
63
63
  ɵAngularFireSchedulers,
64
64
  FirebaseApps,
65
65
  [new Optional(), AppCheckInstances],
66
+ ...deps,
66
67
  ]
67
68
  }]
68
69
  };
69
70
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXV0aC9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFTLDZCQUE2QixDQUFDLENBQUM7QUFFakcsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWtDLEVBQUUsVUFBdUI7SUFDcEcsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQWUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xHLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUFzQjtJQUN4RCxPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDdEIsT0FBTyxnQkFBZ0IsQ0FBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sdUJBQXVCLEdBQUc7SUFDOUIsT0FBTyxFQUFFLGFBQWE7SUFDdEIsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLHVCQUF1QixDQUFFO0tBQzNDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQUc7SUFDckMsT0FBTyxFQUFFLElBQUk7SUFDYixVQUFVLEVBQUUsMEJBQTBCO0lBQ3RDLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSx1QkFBdUIsQ0FBRTtRQUMxQyxXQUFXO1FBQ1gsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQVFGLE1BQU0sT0FBTyxVQUFVO0lBQ3JCO1FBQ0UsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O3VHQUhVLFVBQVU7d0dBQVYsVUFBVTt3R0FBVixVQUFVLGFBTFY7UUFDVCw4QkFBOEI7UUFDOUIsdUJBQXVCO0tBQ3hCOzJGQUVVLFVBQVU7a0JBTnRCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNULDhCQUE4Qjt3QkFDOUIsdUJBQXVCO3FCQUN4QjtpQkFDRjs7QUFPRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEVBQXNCO0lBQ2hELE9BQU87UUFDTCxRQUFRLEVBQUUsVUFBVTtRQUNwQixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixXQUFXO29CQUNYLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsaUJBQWlCLENBQUU7aUJBQ3JDO2FBQ0YsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE9wdGlvbmFsLCBOZ1pvbmUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aCBhcyBGaXJlYmFzZUF1dGggfSBmcm9tICdmaXJlYmFzZS9hdXRoJztcbmltcG9ydCB7IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2YsIMm1bWVtb2l6ZUluc3RhbmNlLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQXV0aCwgQXV0aEluc3RhbmNlcywgQVVUSF9QUk9WSURFUl9OQU1FIH0gZnJvbSAnLi9hdXRoJztcbmltcG9ydCB7IEZpcmViYXNlQXBwcywgRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgQXBwQ2hlY2tJbnN0YW5jZXMgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcC1jaGVjayc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9BVVRIX0lOU1RBTkNFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoW10+KCdhbmd1bGFyZmlyZTIuYXV0aC1pbnN0YW5jZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRBdXRoSW5zdGFuY2VGYWN0b3J5KHByb3ZpZGVkOiBGaXJlYmFzZUF1dGhbXXx1bmRlZmluZWQsIGRlZmF1bHRBcHA6IEZpcmViYXNlQXBwKSB7XG4gIGNvbnN0IGRlZmF1bHRBdXRoID0gybVnZXREZWZhdWx0SW5zdGFuY2VPZjxGaXJlYmFzZUF1dGg+KEFVVEhfUFJPVklERVJfTkFNRSwgcHJvdmlkZWQsIGRlZmF1bHRBcHApO1xuICByZXR1cm4gbmV3IEF1dGgoZGVmYXVsdEF1dGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0aEluc3RhbmNlRmFjdG9yeShmbjogKCkgPT4gRmlyZWJhc2VBdXRoKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lKSA9PiB7XG4gICAgcmV0dXJuIMm1bWVtb2l6ZUluc3RhbmNlPEZpcmViYXNlQXV0aD4oZm4sIHpvbmUpO1xuICB9O1xufVxuXG5jb25zdCBBVVRIX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQXV0aEluc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQVVUSF9JTlNUQU5DRVMgXSxcbiAgXVxufTtcblxuY29uc3QgREVGQVVMVF9BVVRIX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBdXRoLFxuICB1c2VGYWN0b3J5OiBkZWZhdWx0QXV0aEluc3RhbmNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQVVUSF9JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgICBQTEFURk9STV9JRCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9BVVRIX0lOU1RBTkNFX1BST1ZJREVSLFxuICAgIEFVVEhfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnYXV0aCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXV0aChmbjogKCkgPT4gRmlyZWJhc2VBdXRoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBdXRoTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IEF1dGhNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQVVUSF9JTlNUQU5DRVMsXG4gICAgICB1c2VGYWN0b3J5OiBhdXRoSW5zdGFuY2VGYWN0b3J5KGZuKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgZGVwczogW1xuICAgICAgICBOZ1pvbmUsXG4gICAgICAgIFBMQVRGT1JNX0lELFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgRmlyZWJhc2VBcHBzLFxuICAgICAgICBbbmV3IE9wdGlvbmFsKCksIEFwcENoZWNrSW5zdGFuY2VzIF0sXG4gICAgICBdXG4gICAgfV1cbiAgfTtcbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXV0aC9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFTLDZCQUE2QixDQUFDLENBQUM7QUFFakcsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWtDLEVBQUUsVUFBdUI7SUFDcEcsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQWUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xHLE9BQU8sV0FBVyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFBd0M7SUFDMUUsT0FBTyxDQUFDLElBQVksRUFBRSxRQUFrQixFQUFFLEVBQUU7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sdUJBQXVCLEdBQUc7SUFDOUIsT0FBTyxFQUFFLGFBQWE7SUFDdEIsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLHVCQUF1QixDQUFFO0tBQzNDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQUc7SUFDckMsT0FBTyxFQUFFLElBQUk7SUFDYixVQUFVLEVBQUUsMEJBQTBCO0lBQ3RDLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSx1QkFBdUIsQ0FBRTtRQUMxQyxXQUFXO0tBQ1o7Q0FDRixDQUFDO0FBUUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7UUFDRSxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7dUdBSFUsVUFBVTt3R0FBVixVQUFVO3dHQUFWLFVBQVUsYUFMVjtRQUNULDhCQUE4QjtRQUM5Qix1QkFBdUI7S0FDeEI7MkZBRVUsVUFBVTtrQkFOdEIsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsOEJBQThCO3dCQUM5Qix1QkFBdUI7cUJBQ3hCO2lCQUNGOztBQU9ELE1BQU0sVUFBVSxXQUFXLENBQUMsRUFBc0IsRUFBRSxHQUFHLElBQVc7SUFDaEUsT0FBTztRQUNMLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLFNBQVMsRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRTtvQkFDSixNQUFNO29CQUNOLFFBQVE7b0JBQ1Isc0JBQXNCO29CQUN0QixZQUFZO29CQUNaLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsQ0FBRTtvQkFDcEMsR0FBRyxJQUFJO2lCQUNSO2FBQ0YsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE9wdGlvbmFsLCBOZ1pvbmUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aCBhcyBGaXJlYmFzZUF1dGggfSBmcm9tICdmaXJlYmFzZS9hdXRoJztcbmltcG9ydCB7IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2YsIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLCBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBBdXRoLCBBdXRoSW5zdGFuY2VzLCBBVVRIX1BST1ZJREVSX05BTUUgfSBmcm9tICcuL2F1dGgnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBBcHBDaGVja0luc3RhbmNlcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwLWNoZWNrJztcblxuZXhwb3J0IGNvbnN0IFBST1ZJREVEX0FVVEhfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhbXT4oJ2FuZ3VsYXJmaXJlMi5hdXRoLWluc3RhbmNlcycpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEF1dGhJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQXV0aFtdfHVuZGVmaW5lZCwgZGVmYXVsdEFwcDogRmlyZWJhc2VBcHApIHtcbiAgY29uc3QgZGVmYXVsdEF1dGggPSDJtWdldERlZmF1bHRJbnN0YW5jZU9mPEZpcmViYXNlQXV0aD4oQVVUSF9QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0QXV0aCAmJiBuZXcgQXV0aChkZWZhdWx0QXV0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdXRoSW5zdGFuY2VGYWN0b3J5KGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZUF1dGgpIHtcbiAgcmV0dXJuICh6b25lOiBOZ1pvbmUsIGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgIGNvbnN0IGF1dGggPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBBdXRoKGF1dGgpO1xuICB9O1xufVxuXG5jb25zdCBBVVRIX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQXV0aEluc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQVVUSF9JTlNUQU5DRVMgXSxcbiAgXVxufTtcblxuY29uc3QgREVGQVVMVF9BVVRIX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBdXRoLFxuICB1c2VGYWN0b3J5OiBkZWZhdWx0QXV0aEluc3RhbmNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQVVUSF9JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9BVVRIX0lOU1RBTkNFX1BST1ZJREVSLFxuICAgIEFVVEhfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnYXV0aCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXV0aChmbjogKCkgPT4gRmlyZWJhc2VBdXRoLCAuLi5kZXBzOiBhbnlbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXV0aE1vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgIHByb3ZpZGU6IFBST1ZJREVEX0FVVEhfSU5TVEFOQ0VTLFxuICAgICAgdXNlRmFjdG9yeTogYXV0aEluc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJbmplY3RvcixcbiAgICAgICAgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgICAgIEZpcmViYXNlQXBwcyxcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBBcHBDaGVja0luc3RhbmNlcyBdLFxuICAgICAgICAuLi5kZXBzLFxuICAgICAgXVxuICAgIH1dXG4gIH07XG59XG4iXX0=
@@ -4,10 +4,9 @@ import { EMPTY, of } from 'rxjs';
4
4
  import { isPlatformBrowser } from '@angular/common';
5
5
  import { map, shareReplay, switchMap, observeOn } from 'rxjs/operators';
6
6
  import { ɵAngularFireSchedulers } from '@angular/fire';
7
- import { ɵlazySDKProxy, ɵapplyMixins } from '@angular/fire/compat';
7
+ import { ɵlazySDKProxy, ɵapplyMixins, ɵcacheInstance } from '@angular/fire/compat';
8
8
  import { FirebaseApp } from '@angular/fire/compat';
9
9
  import { proxyPolyfillCompat } from './base';
10
- import { ɵcacheInstance } from '@angular/fire';
11
10
  import { isSupported } from 'firebase/analytics';
12
11
  import * as i0 from "@angular/core";
13
12
  import * as i1 from "@angular/fire/compat";
@@ -161,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
161
160
  args: [PLATFORM_ID]
162
161
  }] }, { type: i0.NgZone }, { type: i2.ɵAngularFireSchedulers }]; } });
163
162
  ɵapplyMixins(AngularFireAnalytics, [proxyPolyfillCompat]);
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9hbmFseXRpY3MvYW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFpQixZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTWpELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFVLG1EQUFtRCxDQUFDLENBQUM7QUFDbkgsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLG1DQUFtQyxDQUFDLENBQUM7QUFDM0YsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFTLGdDQUFnQyxDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxD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OzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUMzQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUM3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU07OEJBRU8sTUFBTTswQkFBdEMsTUFBTTsyQkFBQyxXQUFXOztBQThHdkIsWUFBWSxDQUFDLG9CQUFvQixFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTmdab25lLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCBvYnNlcnZlT24gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgybVsYXp5U0RLUHJveHksIMm1UHJvbWlzZVByb3h5LCDJtWFwcGx5TWl4aW5zIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgeyBwcm94eVBvbHlmaWxsQ29tcGF0IH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IMm1Y2FjaGVJbnN0YW5jZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IENPTExFQ1RJT05fRU5BQkxFRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5hbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCcpO1xuZXhwb3J0IGNvbnN0IEFQUF9WRVJTSU9OID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MuYXBwVmVyc2lvbicpO1xuZXhwb3J0IGNvbnN0IEFQUF9OQU1FID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MuYXBwTmFtZScpO1xuZXhwb3J0IGNvbnN0IERFQlVHX01PREUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MuZGVidWdNb2RlJyk7XG5leHBvcnQgY29uc3QgQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPENvbmZpZz4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MuY29uZmlnJyk7XG5cbmNvbnN0IEFQUF9OQU1FX0tFWSA9ICdhcHBfbmFtZSc7XG5jb25zdCBBUFBfVkVSU0lPTl9LRVkgPSAnYXBwX3ZlcnNpb24nO1xuY29uc3QgREVCVUdfTU9ERV9LRVkgPSAnZGVidWdfbW9kZSc7XG5jb25zdCBHVEFHX0NPTkZJR19DT01NQU5EID0gJ2NvbmZpZyc7XG5jb25zdCBHVEFHX0ZVTkNUSU9OX05BTUUgPSAnZ3RhZyc7IC8vIFRPRE8gcmVuYW1lIHRoZXNlXG5jb25zdCBEQVRBX0xBWUVSX05BTUUgPSAnZGF0YUxheWVyJztcbmNvbnN0IFNFTkRfVE9fS0VZID0gJ3NlbmRfdG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJGaXJlQW5hbHl0aWNzIGV4dGVuZHMgybVQcm9taXNlUHJveHk8ZmlyZWJhc2UuYW5hbHl0aWNzLkFuYWx5dGljcz4ge1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlQW5hbHl0aWNzIHtcblxuICBwcml2YXRlIG1lYXN1cmVtZW50SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBhbmFseXRpY3NJbml0aWFsaXplZDogUHJvbWlzZTx2b2lkPiA9IG5ldyBQcm9taXNlKCgpID0+IHt9KTtcblxuICBhc3luYyB1cGRhdGVDb25maWcoY29uZmlnOiBDb25maWcpIHtcbiAgICBhd2FpdCB0aGlzLmFuYWx5dGljc0luaXRpYWxpemVkO1xuICAgIHdpbmRvd1tHVEFHX0ZVTkNUSU9OX05BTUVdKEdUQUdfQ09ORklHX0NPTU1BTkQsIHRoaXMubWVhc3VyZW1lbnRJZCwgeyAuLi5jb25maWcsIHVwZGF0ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcDogRmlyZWJhc2VBcHAsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDT0xMRUNUSU9OX0VOQUJMRUQpIGFuYWx5dGljc0NvbGxlY3Rpb25FbmFibGVkOiBib29sZWFuIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9WRVJTSU9OKSBwcm92aWRlZEFwcFZlcnNpb246IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfTkFNRSkgcHJvdmlkZWRBcHBOYW1lOiBzdHJpbmcgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREVCVUdfTU9ERSkgZGVidWdNb2RlRW5hYmxlZDogYm9vbGVhbiB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDT05GSUcpIHByb3ZpZGVkQ29uZmlnOiBDb25maWcgfCBudWxsLFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgem9uZTogTmdab25lLFxuICAgIHNjaGVkdWxlcnM6IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICApIHtcblxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkge1xuXG4gICAgICB3aW5kb3dbREFUQV9MQVlFUl9OQU1FXSA9IHdpbmRvd1tEQVRBX0xBWUVSX05BTUVdIHx8IFtdO1xuXG4gICAgICAvLyBJdCB0dXJucyBvdXQgd2UgY2FuJ3QgcmVseSBvbiB0aGUgbWVhc3VyZW1lbnRJZCBpbiB0aGUgRmlyZWJhc2UgY29uZmlnIEpTT05cbiAgICAgIC8vIHRoaXMgaWRlbnRpZmllciBpcyBub3Qgc3RhYmxlLiBmaXJlYmFzZS9hbmFseXRpY3MgZG9lcyBhIGNhbGwgdG8gZ2V0IGEgZnJlc2ggdmFsdWVcbiAgICAgIC8vIGZhbGxpbmcgYmFjayBvbiB0aGUgb25lIGluIHRoZSBjb25maWcuIFJhdGhlciB0aGFuIGRvIHRoYXQgb3Vyc2VsdmVzIHdlIHNob3VsZCBsaXN0ZW5cbiAgICAgIC8vIG9uIG91ciBndGFnIGZ1bmN0aW9uIGZvciBhIGFuYWx5dGljcyBjb25maWcgY29tbWFuZFxuICAgICAgLy8gZS5nLCBbJ2NvbmZpZycsIG1lYXN1cmVtZW50SWQsIHsgb3JpZ2luOiAnZmlyZWJhc2UnLCBmaXJlYmFzZV9pZCB9XVxuICAgICAgY29uc3QgcGFyc2VNZWFzdXJlbWVudElkID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmIChhcmdzWzBdID09PSAnY29uZmlnJyAmJiBhcmdzWzJdLm9yaWdpbiA9PT0gJ2ZpcmViYXNlJykge1xuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRJZCA9IGFyZ3NbMV07XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBwYXRjaEd0YWcgPSAoZm4/OiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgd2luZG93W0dUQUdfRlVOQ1RJT05fTkFNRV0gPSAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICBpZiAoZm4pIHtcbiAgICAgICAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBJbmplY3QgYXBwX25hbWUgYW5kIGFwcF92ZXJzaW9uIGludG8gZXZlbnRzXG4gICAgICAgICAgLy8gVE9ETyhqYW1lc2RhbmllbHMpOiBJJ20gZG9pbmcgdGhpcyBhcyBkb2N1bWVudGVkIGJ1dCBpdCdzIHN0aWxsIG5vdFxuICAgICAgICAgIC8vICAgc2hvd2luZyB1cCBpbiB0aGUgY29uc29sZS4gSW52ZXN0aWdhdGUuIEd1ZXNzaW5nIGl0J3MganVzdCBwYXJ0IG9mIHRoZVxuICAgICAgICAgIC8vICAgd2hvbGUgR0E0IHRyYW5zaXRpb24gbWVzcy5cbiAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gJ2V2ZW50JyAmJiBhcmdzWzJdW1NFTkRfVE9fS0VZXSA9PT0gdGhpcy5tZWFzdXJlbWVudElkKSB7XG4gICAgICAgICAgICBpZiAocHJvdmlkZWRBcHBOYW1lKSB7XG4gICAgICAgICAgICAgIGFyZ3NbMl1bQVBQX05BTUVfS0VZXSA9IHByb3ZpZGVkQXBwTmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm92aWRlZEFwcFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgYXJnc1syXVtBUFBfVkVSU0lPTl9LRVldID0gcHJvdmlkZWRBcHBWZXJzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVidWdNb2RlRW5hYmxlZCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oLi4uYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEFjY29yZGluZyB0byB0aGUgZ3RhZyBkb2N1bWVudGF0aW9uLCB0aGlzIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyBhIGN1c3RvbSBkYXRhIGxheWVyIGNhbm5vdCBiZVxuICAgICAgICAgICAqIGFuIGFycm93IGZ1bmN0aW9uIGJlY2F1c2UgJ2FyZ3VtZW50cycgaXMgbm90IGFuIGFycmF5LiBJdCBpcyBhY3R1YWxseSBhbiBvYmplY3QgdGhhdCBiZWhhdmVzXG4gICAgICAgICAgICogbGlrZSBhbiBhcnJheSBhbmQgY29udGFpbnMgbW9yZSBpbmZvcm1hdGlvbiB0aGVuIGp1c3QgaW5kZXhlcy4gVHJhbnNmb3JtaW5nIHRoaXMgaW50byBhcnJvdyBmdW5jdGlvblxuICAgICAgICAgICAqIGNhdXNlZCBpc3N1ZSAjMjUwNSB3aGVyZSBhbmFseXRpY3Mgbm8gbG9uZ2VyIHNlbnQgYW55IGRhdGEuXG4gICAgICAgICAgICovXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xuICAgICAgICAgIChmdW5jdGlvbiguLi5fYXJnczogYW55W10pIHtcbiAgICAgICAgICAgIHdpbmRvd1tEQVRBX0xBWUVSX05BTUVdLnB1c2goYXJndW1lbnRzKTtcbiAgICAgICAgICB9KSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIC8vIFVuY2xlYXIgaWYgd2Ugc3RpbGwgbmVlZCB0byBidXQgSSB3YXMgcnVubmluZyBpbnRvIGNvbmZpZy9ldmVudHMgSSBwYXNzZWRcbiAgICAgIC8vIHRvIGd0YWcgYmVmb3JlIFsnanMnIHRpbWVzdGFtcF0gd2VyZW4ndCBnZXR0aW5nIHBhcnNlZCwgc28gbGV0J3MgbWFrZSBhIHByb21pc2VcbiAgICAgIC8vIHRoYXQgcmVzb2x2ZXMgd2hlbiBmaXJlYmFzZS9hbmFseXRpY3MgaGFzIGNvbmZpZ3VyZWQgZ3RhZy5qcyB0aGF0IHdlIHdhaXQgb25cbiAgICAgIC8vIGJlZm9yZSBzZW5kaW5nIGFueXRoaW5nXG4gICAgICBjb25zdCBmaXJlYmFzZUFuYWx5dGljc0FscmVhZHlJbml0aWFsaXplZCA9IHdpbmRvd1tEQVRBX0xBWUVSX05BTUVdLnNvbWUocGFyc2VNZWFzdXJlbWVudElkKTtcbiAgICAgIGlmIChmaXJlYmFzZUFuYWx5dGljc0FscmVhZHlJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmFuYWx5dGljc0luaXRpYWxpemVkID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHBhdGNoR3RhZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NJbml0aWFsaXplZCA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgIHBhdGNoR3RhZygoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcnNlTWVhc3VyZW1lbnRJZCguLi5hcmdzKSkge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvdmlkZWRDb25maWcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcocHJvdmlkZWRDb25maWcpO1xuICAgICAgfVxuICAgICAgaWYgKGRlYnVnTW9kZUVuYWJsZWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcoeyBbREVCVUdfTU9ERV9LRVldOiAxIH0pO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5hbmFseXRpY3NJbml0aWFsaXplZCA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl0aWNzID0gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgc3dpdGNoTWFwKGlzU3VwcG9ydGVkKSxcbiAgICAgIHN3aXRjaE1hcChzdXBwb3J0ZWQgPT4gc3VwcG9ydGVkID8gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBpbXBvcnQoJ2ZpcmViYXNlL2NvbXBhdC9hbmFseXRpY3MnKSkgOiBFTVBUWSksXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gybVjYWNoZUluc3RhbmNlKGBhbmFseXRpY3NgLCAnQW5ndWxhckZpcmVBbmFseXRpY3MnLCBhcHAubmFtZSwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFuYWx5dGljcyA9IGFwcC5hbmFseXRpY3MoKTtcbiAgICAgICAgICBpZiAoYW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBhbmFseXRpY3Muc2V0QW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYW5hbHl0aWNzO1xuICAgICAgICB9LCBbYXBwLCBhbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCwgcHJvdmlkZWRDb25maWcsIGRlYnVnTW9kZUVuYWJsZWRdKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogZmFsc2UgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIMm1bGF6eVNES1Byb3h5KHRoaXMsIGFuYWx5dGljcywgem9uZSk7XG5cbiAgfVxuXG59XG5cbsm1YXBwbHlNaXhpbnMoQW5ndWxhckZpcmVBbmFseXRpY3MsIFtwcm94eVBvbHlmaWxsQ29tcGF0XSk7XG4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9hbmFseXRpY3MvYW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFpQixZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFNakQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQVUsbURBQW1ELENBQUMsQ0FBQztBQUNuSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsbUNBQW1DLENBQUMsQ0FBQztBQUMzRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQVMsZ0NBQWdDLENBQUMsQ0FBQztBQUNyRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVUsa0NBQWtDLENBQUMsQ0FBQztBQUMxRixNQUFN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LFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTs7MEJBQzNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVTs7MEJBQzdCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsTUFBTTs4QkFFTyxNQUFNOzBCQUF0QyxNQUFNOzJCQUFDLFdBQVc7O0FBOEd2QixZQUFZLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIG9ic2VydmVPbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyDJtWxhenlTREtQcm94eSwgybVQcm9taXNlUHJveHksIMm1YXBwbHlNaXhpbnMsIMm1Y2FjaGVJbnN0YW5jZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCB7IEZpcmViYXNlQXBwIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgcHJveHlQb2x5ZmlsbENvbXBhdCB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBpc1N1cHBvcnRlZCB9IGZyb20gJ2ZpcmViYXNlL2FuYWx5dGljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY29uc3QgQ09MTEVDVElPTl9FTkFCTEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLmFuYWx5dGljc0NvbGxlY3Rpb25FbmFibGVkJyk7XG5leHBvcnQgY29uc3QgQVBQX1ZFUlNJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5hcHBWZXJzaW9uJyk7XG5leHBvcnQgY29uc3QgQVBQX05BTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5hcHBOYW1lJyk7XG5leHBvcnQgY29uc3QgREVCVUdfTU9ERSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5kZWJ1Z01vZGUnKTtcbmV4cG9ydCBjb25zdCBDT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlnPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5jb25maWcnKTtcblxuY29uc3QgQVBQX05BTUVfS0VZID0gJ2FwcF9uYW1lJztcbmNvbnN0IEFQUF9WRVJTSU9OX0tFWSA9ICdhcHBfdmVyc2lvbic7XG5jb25zdCBERUJVR19NT0RFX0tFWSA9ICdkZWJ1Z19tb2RlJztcbmNvbnN0IEdUQUdfQ09ORklHX0NPTU1BTkQgPSAnY29uZmlnJztcbmNvbnN0IEdUQUdfRlVOQ1RJT05fTkFNRSA9ICdndGFnJzsgLy8gVE9ETyByZW5hbWUgdGhlc2VcbmNvbnN0IERBVEFfTEFZRVJfTkFNRSA9ICdkYXRhTGF5ZXInO1xuY29uc3QgU0VORF9UT19LRVkgPSAnc2VuZF90byc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhckZpcmVBbmFseXRpY3MgZXh0ZW5kcyDJtVByb21pc2VQcm94eTxmaXJlYmFzZS5hbmFseXRpY3MuQW5hbHl0aWNzPiB7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueSdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVBbmFseXRpY3Mge1xuXG4gIHByaXZhdGUgbWVhc3VyZW1lbnRJZDogc3RyaW5nO1xuICBwcml2YXRlIGFuYWx5dGljc0luaXRpYWxpemVkOiBQcm9taXNlPHZvaWQ+ID0gbmV3IFByb21pc2UoKCkgPT4ge30pO1xuXG4gIGFzeW5jIHVwZGF0ZUNvbmZpZyhjb25maWc6IENvbmZpZykge1xuICAgIGF3YWl0IHRoaXMuYW5hbHl0aWNzSW5pdGlhbGl6ZWQ7XG4gICAgd2luZG93W0dUQUdfRlVOQ1RJT05fTkFNRV0oR1RBR19DT05GSUdfQ09NTUFORCwgdGhpcy5tZWFzdXJlbWVudElkLCB7IC4uLmNvbmZpZywgdXBkYXRlOiB0cnVlIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXBwOiBGaXJlYmFzZUFwcCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENPTExFQ1RJT05fRU5BQkxFRCkgYW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQ6IGJvb2xlYW4gfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX1ZFUlNJT04pIHByb3ZpZGVkQXBwVmVyc2lvbjogc3RyaW5nIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9OQU1FKSBwcm92aWRlZEFwcE5hbWU6IHN0cmluZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChERUJVR19NT0RFKSBkZWJ1Z01vZGVFbmFibGVkOiBib29sZWFuIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENPTkZJRykgcHJvdmlkZWRDb25maWc6IENvbmZpZyB8IG51bGwsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgc2NoZWR1bGVyczogybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICkge1xuXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG5cbiAgICAgIHdpbmRvd1tEQVRBX0xBWUVSX05BTUVdID0gd2luZG93W0RBVEFfTEFZRVJfTkFNRV0gfHwgW107XG5cbiAgICAgIC8vIEl0IHR1cm5zIG91dCB3ZSBjYW4ndCByZWx5IG9uIHRoZSBtZWFzdXJlbWVudElkIGluIHRoZSBGaXJlYmFzZSBjb25maWcgSlNPTlxuICAgICAgLy8gdGhpcyBpZGVudGlmaWVyIGlzIG5vdCBzdGFibGUuIGZpcmViYXNlL2FuYWx5dGljcyBkb2VzIGEgY2FsbCB0byBnZXQgYSBmcmVzaCB2YWx1ZVxuICAgICAgLy8gZmFsbGluZyBiYWNrIG9uIHRoZSBvbmUgaW4gdGhlIGNvbmZpZy4gUmF0aGVyIHRoYW4gZG8gdGhhdCBvdXJzZWx2ZXMgd2Ugc2hvdWxkIGxpc3RlblxuICAgICAgLy8gb24gb3VyIGd0YWcgZnVuY3Rpb24gZm9yIGEgYW5hbHl0aWNzIGNvbmZpZyBjb21tYW5kXG4gICAgICAvLyBlLmcsIFsnY29uZmlnJywgbWVhc3VyZW1lbnRJZCwgeyBvcmlnaW46ICdmaXJlYmFzZScsIGZpcmViYXNlX2lkIH1dXG4gICAgICBjb25zdCBwYXJzZU1lYXN1cmVtZW50SWQgPSAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgaWYgKGFyZ3NbMF0gPT09ICdjb25maWcnICYmIGFyZ3NbMl0ub3JpZ2luID09PSAnZmlyZWJhc2UnKSB7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudElkID0gYXJnc1sxXTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBhdGNoR3RhZyA9IChmbj86ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB3aW5kb3dbR1RBR19GVU5DVElPTl9OQU1FXSA9ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgZm4oLi4uYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEluamVjdCBhcHBfbmFtZSBhbmQgYXBwX3ZlcnNpb24gaW50byBldmVudHNcbiAgICAgICAgICAvLyBUT0RPKGphbWVzZGFuaWVscyk6IEknbSBkb2luZyB0aGlzIGFzIGRvY3VtZW50ZWQgYnV0IGl0J3Mgc3RpbGwgbm90XG4gICAgICAgICAgLy8gICBzaG93aW5nIHVwIGluIHRoZSBjb25zb2xlLiBJbnZlc3RpZ2F0ZS4gR3Vlc3NpbmcgaXQncyBqdXN0IHBhcnQgb2YgdGhlXG4gICAgICAgICAgLy8gICB3aG9sZSBHQTQgdHJhbnNpdGlvbiBtZXNzLlxuICAgICAgICAgIGlmIChhcmdzWzBdID09PSAnZXZlbnQnICYmIGFyZ3NbMl1bU0VORF9UT19LRVldID09PSB0aGlzLm1lYXN1cmVtZW50SWQpIHtcbiAgICAgICAgICAgIGlmIChwcm92aWRlZEFwcE5hbWUpIHtcbiAgICAgICAgICAgICAgYXJnc1syXVtBUFBfTkFNRV9LRVldID0gcHJvdmlkZWRBcHBOYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3ZpZGVkQXBwVmVyc2lvbikge1xuICAgICAgICAgICAgICBhcmdzWzJdW0FQUF9WRVJTSU9OX0tFWV0gPSBwcm92aWRlZEFwcFZlcnNpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZWJ1Z01vZGVFbmFibGVkICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyguLi5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQWNjb3JkaW5nIHRvIHRoZSBndGFnIGRvY3VtZW50YXRpb24sIHRoaXMgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIGEgY3VzdG9tIGRhdGEgbGF5ZXIgY2Fubm90IGJlXG4gICAgICAgICAgICogYW4gYXJyb3cgZnVuY3Rpb24gYmVjYXVzZSAnYXJndW1lbnRzJyBpcyBub3QgYW4gYXJyYXkuIEl0IGlzIGFjdHVhbGx5IGFuIG9iamVjdCB0aGF0IGJlaGF2ZXNcbiAgICAgICAgICAgKiBsaWtlIGFuIGFycmF5IGFuZCBjb250YWlucyBtb3JlIGluZm9ybWF0aW9uIHRoZW4ganVzdCBpbmRleGVzLiBUcmFuc2Zvcm1pbmcgdGhpcyBpbnRvIGFycm93IGZ1bmN0aW9uXG4gICAgICAgICAgICogY2F1c2VkIGlzc3VlICMyNTA1IHdoZXJlIGFuYWx5dGljcyBubyBsb25nZXIgc2VudCBhbnkgZGF0YS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ubHktYXJyb3ctZnVuY3Rpb25zXG4gICAgICAgICAgKGZ1bmN0aW9uKC4uLl9hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgd2luZG93W0RBVEFfTEFZRVJfTkFNRV0ucHVzaChhcmd1bWVudHMpO1xuICAgICAgICAgIH0pKC4uLmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgLy8gVW5jbGVhciBpZiB3ZSBzdGlsbCBuZWVkIHRvIGJ1dCBJIHdhcyBydW5uaW5nIGludG8gY29uZmlnL2V2ZW50cyBJIHBhc3NlZFxuICAgICAgLy8gdG8gZ3RhZyBiZWZvcmUgWydqcycgdGltZXN0YW1wXSB3ZXJlbid0IGdldHRpbmcgcGFyc2VkLCBzbyBsZXQncyBtYWtlIGEgcHJvbWlzZVxuICAgICAgLy8gdGhhdCByZXNvbHZlcyB3aGVuIGZpcmViYXNlL2FuYWx5dGljcyBoYXMgY29uZmlndXJlZCBndGFnLmpzIHRoYXQgd2Ugd2FpdCBvblxuICAgICAgLy8gYmVmb3JlIHNlbmRpbmcgYW55dGhpbmdcbiAgICAgIGNvbnN0IGZpcmViYXNlQW5hbHl0aWNzQWxyZWFkeUluaXRpYWxpemVkID0gd2luZG93W0RBVEFfTEFZRVJfTkFNRV0uc29tZShwYXJzZU1lYXN1cmVtZW50SWQpO1xuICAgICAgaWYgKGZpcmViYXNlQW5hbHl0aWNzQWxyZWFkeUluaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzSW5pdGlhbGl6ZWQgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgcGF0Y2hHdGFnKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFuYWx5dGljc0luaXRpYWxpemVkID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgcGF0Y2hHdGFnKCguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyc2VNZWFzdXJlbWVudElkKC4uLmFyZ3MpKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm92aWRlZENvbmZpZykge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyhwcm92aWRlZENvbmZpZyk7XG4gICAgICB9XG4gICAgICBpZiAoZGVidWdNb2RlRW5hYmxlZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh7IFtERUJVR19NT0RFX0tFWV06IDEgfSk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLmFuYWx5dGljc0luaXRpYWxpemVkID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICB9XG5cbiAgICBjb25zdCBhbmFseXRpY3MgPSBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICBzd2l0Y2hNYXAoaXNTdXBwb3J0ZWQpLFxuICAgICAgc3dpdGNoTWFwKHN1cHBvcnRlZCA9PiBzdXBwb3J0ZWQgPyB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L2FuYWx5dGljcycpKSA6IEVNUFRZKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiDJtWNhY2hlSW5zdGFuY2UoYGFuYWx5dGljc2AsICdBbmd1bGFyRmlyZUFuYWx5dGljcycsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYW5hbHl0aWNzID0gYXBwLmFuYWx5dGljcygpO1xuICAgICAgICAgIGlmIChhbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFuYWx5dGljcy5zZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhbmFseXRpY3M7XG4gICAgICAgIH0sIFthcHAsIGFuYWx5dGljc0NvbGxlY3Rpb25FbmFibGVkLCBwcm92aWRlZENvbmZpZywgZGVidWdNb2RlRW5hYmxlZF0pO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gybVsYXp5U0RLUHJveHkodGhpcywgYW5hbHl0aWNzLCB6b25lKTtcblxuICB9XG5cbn1cblxuybVhcHBseU1peGlucyhBbmd1bGFyRmlyZUFuYWx5dGljcywgW3Byb3h5UG9seWZpbGxDb21wYXRdKTtcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L2FuYWx5dGljcy9zY3JlZW4tdHJhY2tpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFFTixRQUFRLEVBQ1IsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxRQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBRXhDLE1BQU0seUJBQXlCLEdBQUcsdUJBQXVCLENBQUM7QUFDMUQsTUFBTSxrQ0FBa0MsR0FBRyx5QkFBeUIsQ0FBQztBQUNyRSxNQUFNLHdDQUF3QyxHQUFHLHNCQUFzQixDQUFDO0FBQ3hFLE1BQU0saUNBQWlDLEdBQUcsMEJBQTBCLENBQUM7QUFDckUsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLCtCQUErQixHQUFHLG9CQUFvQixDQUFDO0FBQzdELE1BQU0sd0JBQXdCLEdBQUcsaUJBQWlCLENBQUM7QUFDbkQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDO0FBQzVCLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBQ2pDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBRXRDLGlFQUFpRTtBQUNqRSxJQUFJLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsU0FBQSxDQUFDLEVBQUksRUFBRSxDQUFBLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFBLENBQUMsRUFBSSxFQUFFLENBQUEsQ0FBQztBQUUvRSxNQUFNLHNCQUFzQixHQUE4QixFQUFFLENBQUM7QUFFN0QsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE1BQThCLEVBQUUsRUFBRTtJQUM3RCxrREFBa0Q7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRztRQUN4QixNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDeEIsTUFBTSxDQUFDLFVBQVUsQ0FBQztLQUNuQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2xDLElBQUksc0JBQXNCLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDNUQsT0FBTyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQ2xEO1NBQU07UUFDTCxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ25DLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDO0tBQ1o7QUFDSCxDQUFDLENBQUM7QUFHRixNQUFNLE9BQU8scUJBQXFCO0lBSWhDLFlBQ0UsU0FBK0IsRUFDbkIsTUFBYyxFQUNkLEtBQVksRUFDeEIsd0JBQWtEO0lBQ2xELHFDQUFxQztJQUNoQixVQUFrQixFQUN2QyxJQUFZLEVBQ0EsbUJBQXdDO1FBRXBELFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDdkcsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTs7Z0JBQ3hCLG9FQUFvRTtnQkFDcEUscUVBQXFFO2dCQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RyxNQUFNLFFBQVEsR0FBRyxDQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsMENBQUUsUUFBUSxFQUFFLEtBQUksRUFBRSxDQUFDO2dCQUN4RixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUU5SCxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakI7Z0JBRUQsSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDO2dCQUNoQyxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUU7b0JBQzVCLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO2lCQUNwQztnQkFDRCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsTUFBQSxDQUFDLENBQUMsV0FBVywwQ0FBRSxJQUFJLENBQUEsRUFBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFFM0csTUFBTSxNQUFNLEdBQUc7b0JBQ2IsQ0FBQyxlQUFlLENBQUMsRUFBRSxVQUFVO29CQUM3QixDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksUUFBUSxFQUFFO29CQUMvQixDQUFDLHlCQUF5QixDQUFDLEVBQUUsaUJBQWlCO29CQUM5QyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsVUFBVTtvQkFDdEMsQ0FBQyxVQUFVLENBQUMsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU07aUJBQzVDLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDM0M7Z0JBRUQsSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztnQkFDekMsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsSUFBSSxTQUFTLEtBQUsscUJBQXFCLEVBQUU7d0JBQ3ZDLElBQUksWUFBWSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7d0JBQzFDLHVFQUF1RTt3QkFDdkUsT0FBTyxZQUFZLENBQUMsVUFBVSxFQUFFOzRCQUM5QixZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQzt5QkFDeEM7d0JBQ0QsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7cUJBQ3BDO2lCQUNGO3FCQUFNO29CQUNMLFNBQVMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztpQkFDOUM7Z0JBRUQsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7b0JBQ2pDLE9BQU8sRUFBRSxpQ0FBTSxNQUFNLEtBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFNBQVMsSUFBRyxDQUFDO2lCQUN6RDtxQkFBTSxJQUFJLFNBQVMsRUFBRTtvQkFDcEIsTUFBTSxnQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDckYsT0FBTyxFQUFFLGlDQUFNLE1BQU0sS0FBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxJQUFHLENBQUM7aUJBQ3pFO3FCQUFNO29CQUNMLDZDQUE2QztvQkFDN0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2pCO1lBQ0gsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQ2hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGlCQUNaLENBQUMseUJBQXlCLENBQUMsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFDckQsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUMzRCxNQUFNLEVBQ1QsQ0FBQyxFQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUM3QixRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUNwQixvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN2RSxTQUFTLENBQVcsU0FBUyxDQUFDLEVBQzlCLFFBQVEsRUFBRSxFQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FDdkIsS0FBSyxDQUFDLENBQUMsaUJBQ0wsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUM3RCxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUMzRCxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsS0FBSyxDQUFDLCtCQUErQixDQUFDLElBQy9FLE9BQU8sRUFDVixDQUFDLENBQUMsT0FBTyxDQUNaLEVBQ0QsU0FBUyxDQUFDLENBQU0sTUFBTSxFQUFDLEVBQUU7Z0JBQ3ZCLElBQUksbUJBQW1CLEVBQUU7b0JBQ3ZCLE1BQU0sbUJBQW1CLENBQUMsV0FBVyxDQUFDO2lCQUN2QztnQkFDRCxPQUFPLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUEsQ0FBQyxDQUNILENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7O2tIQTNHVSxxQkFBcUIseUtBVXRCLFdBQVc7c0hBVlYscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQU9OLFFBQVE7OzBCQUNSLFFBQVE7cUVBR3dCLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBRWxCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGdyb3VwQnksIG1hcCwgbWVyZ2VNYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGl2YXRpb25FbmQsIFJvdXRlciwgybVFbXB0eU91dGxldENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZUFuYWx5dGljcyB9IGZyb20gJy4vYW5hbHl0aWNzJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVc2VyVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXRyYWNraW5nLnNlcnZpY2UnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuXG5jb25zdCBGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZID0gJ2ZpcmViYXNlX2V2ZW50X29yaWdpbic7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfaWQnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX3NjcmVlbic7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9jbGFzcyc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9pZCc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuJztcbmNvbnN0IE9VVExFVF9LRVkgPSAnb3V0bGV0JztcbmNvbnN0IFBBR0VfUEFUSF9LRVkgPSAncGFnZV9wYXRoJztcbmNvbnN0IFBBR0VfVElUTEVfS0VZID0gJ3BhZ2VfdGl0bGUnO1xuY29uc3QgU0NSRUVOX0NMQVNTX0tFWSA9ICdzY3JlZW5fY2xhc3MnO1xuY29uc3QgU0NSRUVOX05BTUVfS0VZID0gJ3NjcmVlbl9uYW1lJztcbmNvbnN0IFNDUkVFTl9WSUVXX0VWRU5UID0gJ3NjcmVlbl92aWV3JztcbmNvbnN0IEVWRU5UX09SSUdJTl9BVVRPID0gJ2F1dG8nO1xuY29uc3QgU0NSRUVOX0lOU1RBTkNFX0RFTElNSVRFUiA9ICcjJztcblxuLy8gdGhpcyBpcyBhbiBJTlQ2NCBpbiBpT1MvQW5kcm9pZCBidXQgdXNlIElOVDMyIGNhdXNlIGphdmFzY3JpcHRcbmxldCBuZXh0U2NyZWVuSW5zdGFuY2VJRCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgyICoqIDMyIC0gMSkpIC0gMiAqKiAzMTtcblxuY29uc3Qga25vd25TY3JlZW5JbnN0YW5jZUlEczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG5jb25zdCBnZXRTY3JlZW5JbnN0YW5jZUlEID0gKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAvLyB1bmlxdWUgdGhlIHNjcmVlbiBjbGFzcyBhZ2FpbnN0IHRoZSBvdXRsZXQgbmFtZVxuICBjb25zdCBzY3JlZW5JbnN0YW5jZUtleSA9IFtcbiAgICBwYXJhbXNbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgcGFyYW1zW09VVExFVF9LRVldXG4gIF0uam9pbihTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSKTtcbiAgaWYgKGtub3duU2NyZWVuSW5zdGFuY2VJRHMuaGFzT3duUHJvcGVydHkoc2NyZWVuSW5zdGFuY2VLZXkpKSB7XG4gICAgcmV0dXJuIGtub3duU2NyZWVuSW5zdGFuY2VJRHNbc2NyZWVuSW5zdGFuY2VLZXldO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJldCA9IG5leHRTY3JlZW5JbnN0YW5jZUlEKys7XG4gICAga25vd25TY3JlZW5JbnN0YW5jZUlEc1tzY3JlZW5JbnN0YW5jZUtleV0gPSByZXQ7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcmVlblRyYWNraW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBkaXNwb3NhYmxlOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYW5hbHl0aWNzOiBBbmd1bGFyRmlyZUFuYWx5dGljcyxcbiAgICBAT3B0aW9uYWwoKSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSB0aXRsZTogVGl0bGUsXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgKSB7XG4gICAgZmlyZWJhc2UucmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ2NvbXBhdC1zY3JlZW4tdHJhY2tpbmcnKTtcbiAgICBpZiAoIXJvdXRlciB8fCAhaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+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