@ngxs/store 3.7.5 → 3.7.6

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.
@@ -7,18 +7,19 @@
7
7
  */
8
8
  export { NgxsModule, Action, Store, State, Select, SelectorOptions, Actions, getSelectorMetadata, getStoreMetadata, ensureStoreMetadata, ensureSelectorMetadata, ofAction, ofActionDispatched, ofActionSuccessful, ofActionCanceled, ofActionErrored, ofActionCompleted, NgxsSimpleChange, Selector, getActionTypeFromInstance, actionMatcher, createSelector, NoopNgxsExecutionStrategy, StateToken, NGXS_PLUGINS, StateStream, setValue, getValue, InitState, UpdateState } from './index';
9
9
  export { InternalActions as ɵb, OrderedSubject as ɵa } from './src/actions-stream';
10
- export { SelectFactory as ɵr } from './src/decorators/select/select-factory';
10
+ export { SelectFactory as ɵs } from './src/decorators/select/select-factory';
11
11
  export { InternalNgxsExecutionStrategy as ɵq } from './src/execution/internal-ngxs-execution-strategy';
12
12
  export { NGXS_EXECUTION_STRATEGY as ɵi, USER_PROVIDED_NGXS_EXECUTION_STRATEGY as ɵh } from './src/execution/symbols';
13
13
  export { InternalDispatchedActionResults as ɵl, InternalDispatcher as ɵm } from './src/internal/dispatcher';
14
- export { ensureSelectorMetadata as ɵv, ensureStoreMetadata as ɵt, getSelectorMetadata as ɵw, getStoreMetadata as ɵu } from './src/internal/internals';
15
- export { LifecycleStateManager as ɵx } from './src/internal/lifecycle-state-manager';
14
+ export { InternalErrorReporter as ɵr } from './src/internal/error-handler';
15
+ export { ensureSelectorMetadata as ɵw, ensureStoreMetadata as ɵu, getSelectorMetadata as ɵx, getStoreMetadata as ɵv } from './src/internal/internals';
16
+ export { LifecycleStateManager as ɵy } from './src/internal/lifecycle-state-manager';
16
17
  export { StateContextFactory as ɵn } from './src/internal/state-context-factory';
17
18
  export { StateFactory as ɵk } from './src/internal/state-factory';
18
19
  export { InternalStateOperations as ɵo } from './src/internal/state-operations';
19
- export { NgxsFeatureModule as ɵy } from './src/modules/ngxs-feature.module';
20
+ export { NgxsFeatureModule as ɵz } from './src/modules/ngxs-feature.module';
20
21
  export { NgxsRootModule as ɵj } from './src/modules/ngxs-root.module';
21
22
  export { PluginManager as ɵp } from './src/plugin-manager';
22
23
  export { FEATURE_STATE_TOKEN as ɵd, NgxsConfig as ɵf, ROOT_STATE_TOKEN as ɵc, SELECTOR_META_KEY as ɵe } from './src/symbols';
23
24
  export { mergeDeep as ɵg } from './src/utils/utils';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsibmd4cy1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsbWRBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyw2QkFBNkIsSUFBSSxFQUFFLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLHFDQUFxQyxJQUFJLEVBQUUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2xILE9BQU8sRUFBQywrQkFBK0IsSUFBSSxFQUFFLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekcsT0FBTyxFQUEwQixzQkFBc0IsSUFBSSxFQUFFLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxSyxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLElBQUksRUFBRSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxVQUFVLElBQUksRUFBRSxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCB7SW50ZXJuYWxBY3Rpb25zIGFzIMm1YixPcmRlcmVkU3ViamVjdCBhcyDJtWF9IGZyb20gJy4vc3JjL2FjdGlvbnMtc3RyZWFtJztcbmV4cG9ydCB7U2VsZWN0RmFjdG9yeSBhcyDJtXJ9IGZyb20gJy4vc3JjL2RlY29yYXRvcnMvc2VsZWN0L3NlbGVjdC1mYWN0b3J5JztcbmV4cG9ydCB7SW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgYXMgybVxfSBmcm9tICcuL3NyYy9leGVjdXRpb24vaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xuZXhwb3J0IHtOR1hTX0VYRUNVVElPTl9TVFJBVEVHWSBhcyDJtWksVVNFUl9QUk9WSURFRF9OR1hTX0VYRUNVVElPTl9TVFJBVEVHWSBhcyDJtWh9IGZyb20gJy4vc3JjL2V4ZWN1dGlvbi9zeW1ib2xzJztcbmV4cG9ydCB7SW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyBhcyDJtWwsSW50ZXJuYWxEaXNwYXRjaGVyIGFzIMm1bX0gZnJvbSAnLi9zcmMvaW50ZXJuYWwvZGlzcGF0Y2hlcic7XG5leHBvcnQge1N0YXRlQ2xhc3NJbnRlcm5hbCBhcyDJtXMsZW5zdXJlU2VsZWN0b3JNZXRhZGF0YSBhcyDJtXYsZW5zdXJlU3RvcmVNZXRhZGF0YSBhcyDJtXQsZ2V0U2VsZWN0b3JNZXRhZGF0YSBhcyDJtXcsZ2V0U3RvcmVNZXRhZGF0YSBhcyDJtXV9IGZyb20gJy4vc3JjL2ludGVybmFsL2ludGVybmFscyc7XG5leHBvcnQge0xpZmVjeWNsZVN0YXRlTWFuYWdlciBhcyDJtXh9IGZyb20gJy4vc3JjL2ludGVybmFsL2xpZmVjeWNsZS1zdGF0ZS1tYW5hZ2VyJztcbmV4cG9ydCB7U3RhdGVDb250ZXh0RmFjdG9yeSBhcyDJtW59IGZyb20gJy4vc3JjL2ludGVybmFsL3N0YXRlLWNvbnRleHQtZmFjdG9yeSc7XG5leHBvcnQge1N0YXRlRmFjdG9yeSBhcyDJtWt9IGZyb20gJy4vc3JjL2ludGVybmFsL3N0YXRlLWZhY3RvcnknO1xuZXhwb3J0IHtJbnRlcm5hbFN0YXRlT3BlcmF0aW9ucyBhcyDJtW99IGZyb20gJy4vc3JjL2ludGVybmFsL3N0YXRlLW9wZXJhdGlvbnMnO1xuZXhwb3J0IHtOZ3hzRmVhdHVyZU1vZHVsZSBhcyDJtXl9IGZyb20gJy4vc3JjL21vZHVsZXMvbmd4cy1mZWF0dXJlLm1vZHVsZSc7XG5leHBvcnQge05neHNSb290TW9kdWxlIGFzIMm1an0gZnJvbSAnLi9zcmMvbW9kdWxlcy9uZ3hzLXJvb3QubW9kdWxlJztcbmV4cG9ydCB7UGx1Z2luTWFuYWdlciBhcyDJtXB9IGZyb20gJy4vc3JjL3BsdWdpbi1tYW5hZ2VyJztcbmV4cG9ydCB7VG9rZW5OYW1lIGFzIMm1en0gZnJvbSAnLi9zcmMvc3RhdGUtdG9rZW4vc3ltYm9scyc7XG5leHBvcnQge0ZFQVRVUkVfU1RBVEVfVE9LRU4gYXMgybVkLE5neHNDb25maWcgYXMgybVmLFJPT1RfU1RBVEVfVE9LRU4gYXMgybVjLFNFTEVDVE9SX01FVEFfS0VZIGFzIMm1ZX0gZnJvbSAnLi9zcmMvc3ltYm9scyc7XG5leHBvcnQge21lcmdlRGVlcCBhcyDJtWd9IGZyb20gJy4vc3JjL3V0aWxzL3V0aWxzJzsiXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsibmd4cy1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsbWRBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyw2QkFBNkIsSUFBSSxFQUFFLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLHFDQUFxQyxJQUFJLEVBQUUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2xILE9BQU8sRUFBQywrQkFBK0IsSUFBSSxFQUFFLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekcsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3pFLE9BQU8sRUFBMEIsc0JBQXNCLElBQUksRUFBRSxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUssT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUMsWUFBWSxJQUFJLEVBQUUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxTQUFTLElBQUksRUFBRSxFQUFDLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQge0ludGVybmFsQWN0aW9ucyBhcyDJtWIsT3JkZXJlZFN1YmplY3QgYXMgybVhfSBmcm9tICcuL3NyYy9hY3Rpb25zLXN0cmVhbSc7XG5leHBvcnQge1NlbGVjdEZhY3RvcnkgYXMgybVzfSBmcm9tICcuL3NyYy9kZWNvcmF0b3JzL3NlbGVjdC9zZWxlY3QtZmFjdG9yeSc7XG5leHBvcnQge0ludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IGFzIMm1cX0gZnJvbSAnLi9zcmMvZXhlY3V0aW9uL2ludGVybmFsLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5JztcbmV4cG9ydCB7TkdYU19FWEVDVVRJT05fU1RSQVRFR1kgYXMgybVpLFVTRVJfUFJPVklERURfTkdYU19FWEVDVVRJT05fU1RSQVRFR1kgYXMgybVofSBmcm9tICcuL3NyYy9leGVjdXRpb24vc3ltYm9scyc7XG5leHBvcnQge0ludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMgYXMgybVsLEludGVybmFsRGlzcGF0Y2hlciBhcyDJtW19IGZyb20gJy4vc3JjL2ludGVybmFsL2Rpc3BhdGNoZXInO1xuZXhwb3J0IHtJbnRlcm5hbEVycm9yUmVwb3J0ZXIgYXMgybVyfSBmcm9tICcuL3NyYy9pbnRlcm5hbC9lcnJvci1oYW5kbGVyJztcbmV4cG9ydCB7U3RhdGVDbGFzc0ludGVybmFsIGFzIMm1dCxlbnN1cmVTZWxlY3Rvck1ldGFkYXRhIGFzIMm1dyxlbnN1cmVTdG9yZU1ldGFkYXRhIGFzIMm1dSxnZXRTZWxlY3Rvck1ldGFkYXRhIGFzIMm1eCxnZXRTdG9yZU1ldGFkYXRhIGFzIMm1dn0gZnJvbSAnLi9zcmMvaW50ZXJuYWwvaW50ZXJuYWxzJztcbmV4cG9ydCB7TGlmZWN5Y2xlU3RhdGVNYW5hZ2VyIGFzIMm1eX0gZnJvbSAnLi9zcmMvaW50ZXJuYWwvbGlmZWN5Y2xlLXN0YXRlLW1hbmFnZXInO1xuZXhwb3J0IHtTdGF0ZUNvbnRleHRGYWN0b3J5IGFzIMm1bn0gZnJvbSAnLi9zcmMvaW50ZXJuYWwvc3RhdGUtY29udGV4dC1mYWN0b3J5JztcbmV4cG9ydCB7U3RhdGVGYWN0b3J5IGFzIMm1a30gZnJvbSAnLi9zcmMvaW50ZXJuYWwvc3RhdGUtZmFjdG9yeSc7XG5leHBvcnQge0ludGVybmFsU3RhdGVPcGVyYXRpb25zIGFzIMm1b30gZnJvbSAnLi9zcmMvaW50ZXJuYWwvc3RhdGUtb3BlcmF0aW9ucyc7XG5leHBvcnQge05neHNGZWF0dXJlTW9kdWxlIGFzIMm1en0gZnJvbSAnLi9zcmMvbW9kdWxlcy9uZ3hzLWZlYXR1cmUubW9kdWxlJztcbmV4cG9ydCB7Tmd4c1Jvb3RNb2R1bGUgYXMgybVqfSBmcm9tICcuL3NyYy9tb2R1bGVzL25neHMtcm9vdC5tb2R1bGUnO1xuZXhwb3J0IHtQbHVnaW5NYW5hZ2VyIGFzIMm1cH0gZnJvbSAnLi9zcmMvcGx1Z2luLW1hbmFnZXInO1xuZXhwb3J0IHtUb2tlbk5hbWUgYXMgybViYX0gZnJvbSAnLi9zcmMvc3RhdGUtdG9rZW4vc3ltYm9scyc7XG5leHBvcnQge0ZFQVRVUkVfU1RBVEVfVE9LRU4gYXMgybVkLE5neHNDb25maWcgYXMgybVmLFJPT1RfU1RBVEVfVE9LRU4gYXMgybVjLFNFTEVDVE9SX01FVEFfS0VZIGFzIMm1ZX0gZnJvbSAnLi9zcmMvc3ltYm9scyc7XG5leHBvcnQge21lcmdlRGVlcCBhcyDJtWd9IGZyb20gJy4vc3JjL3V0aWxzL3V0aWxzJzsiXX0=
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { Injectable } from '@angular/core';
6
6
  import { Subject, Observable } from 'rxjs';
7
+ import { share } from 'rxjs/operators';
7
8
  import { leaveNgxs } from './operators/leave-ngxs';
8
9
  import { InternalNgxsExecutionStrategy } from './execution/internal-ngxs-execution-strategy';
9
10
  /** @enum {string} */
@@ -84,6 +85,12 @@ if (false) {
84
85
  * Internal Action stream that is emitted anytime an action is dispatched.
85
86
  */
86
87
  export class InternalActions extends OrderedSubject {
88
+ /**
89
+ * @return {?}
90
+ */
91
+ ngOnDestroy() {
92
+ this.complete();
93
+ }
87
94
  }
88
95
  InternalActions.decorators = [
89
96
  { type: Injectable }
@@ -101,15 +108,20 @@ export class Actions extends Observable {
101
108
  * @param {?} internalExecutionStrategy
102
109
  */
103
110
  constructor(internalActions$, internalExecutionStrategy) {
111
+ /** @type {?} */
112
+ const sharedInternalActions$ = internalActions$.pipe(leaveNgxs(internalExecutionStrategy),
113
+ // The `InternalActions` subject emits outside of the Angular zone.
114
+ // We have to re-enter the Angular zone for any incoming consumer.
115
+ // The `share()` operator reduces the number of change detections.
116
+ // This would call leave only once for any stream emission across all active subscribers.
117
+ share());
104
118
  super((/**
105
119
  * @param {?} observer
106
120
  * @return {?}
107
121
  */
108
122
  observer => {
109
123
  /** @type {?} */
110
- const childSubscription = internalActions$
111
- .pipe(leaveNgxs(internalExecutionStrategy))
112
- .subscribe({
124
+ const childSubscription = sharedInternalActions$.subscribe({
113
125
  next: (/**
114
126
  * @param {?} ctx
115
127
  * @return {?}
@@ -137,4 +149,4 @@ Actions.ctorParameters = () => [
137
149
  { type: InternalActions },
138
150
  { type: InternalNgxsExecutionStrategy }
139
151
  ];
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1zdHJlYW0uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9hY3Rpb25zLXN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7OztJQU0zRixZQUFhLFlBQVk7SUFDekIsWUFBYSxZQUFZO0lBQ3pCLFVBQVcsVUFBVTtJQUNyQixTQUFVLFNBQVM7Ozs7Ozs7QUFHckIsbUNBSUM7OztJQUhDLCtCQUFxQjs7SUFDckIsK0JBQVU7O0lBQ1YsOEJBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCaEIsTUFBTSxPQUFPLGNBQWtCLFNBQVEsT0FBVTtJQUFqRDs7UUFDVSxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQWVuQyxDQUFDOzs7OztJQWJDLElBQUksQ0FBQyxLQUFTO1FBQ1osSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsbUJBQUEsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUNoQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7O2tCQUMzQixTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztDQUNGOzs7Ozs7SUFoQkMsb0NBQTZCOzs7OztJQUM3QiwwQ0FBaUM7Ozs7O0FBcUJuQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUE2Qjs7O1lBRGpFLFVBQVU7Ozs7Ozs7QUFTWCxNQUFNLE9BQU8sT0FBUSxTQUFRLFVBQWU7Ozs7Ozs7SUFHMUMsWUFDRSxnQkFBaUMsRUFDakMseUJBQXdEO1FBRXhELEtBQUs7Ozs7UUFBQyxRQUFRLENBQUMsRUFBRTs7a0JBQ1QsaUJBQWlCLEdBQUcsZ0JBQWdCO2lCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLENBQUM7aUJBQzFDLFNBQVMsQ0FBQztnQkFDVCxJQUFJOzs7O2dCQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDL0IsS0FBSzs7OztnQkFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3JDLFFBQVE7OztnQkFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7YUFDcEMsQ0FBQztZQUVKLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsQyxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7OztZQW5CRixVQUFVOzs7O1lBS1csZUFBZTtZQXBFNUIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuL29wZXJhdG9ycy9sZWF2ZS1uZ3hzJztcbmltcG9ydCB7IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9leGVjdXRpb24vaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xuXG4vKipcbiAqIFN0YXR1cyBvZiBhIGRpc3BhdGNoZWQgYWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFjdGlvblN0YXR1cyB7XG4gIERpc3BhdGNoZWQgPSAnRElTUEFUQ0hFRCcsXG4gIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gIENhbmNlbGVkID0gJ0NBTkNFTEVEJyxcbiAgRXJyb3JlZCA9ICdFUlJPUkVEJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHQ8VCA9IGFueT4ge1xuICBzdGF0dXM6IEFjdGlvblN0YXR1cztcbiAgYWN0aW9uOiBUO1xuICBlcnJvcj86IEVycm9yO1xufVxuXG4vKipcbiAqIEN1c3RvbSBTdWJqZWN0IHRoYXQgZW5zdXJlcyB0aGF0IHN1YnNjcmliZXJzIGFyZSBub3RpZmllZCBvZiB2YWx1ZXMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcnJpdmVkLlxuICogQSBzdGFuZGFyZCBTdWJqZWN0IGRvZXMgbm90IGhhdmUgdGhpcyBndWFyYW50ZWUuXG4gKiBGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBjb2RlOlxuICogYGBgdHlwZXNjcmlwdFxuICogICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgICBzdWJqZWN0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgaWYgKHZhbHVlID09PSAnc3RhcnQnKSBzdWJqZWN0Lm5leHQoJ2VuZCcpO1xuICAgICB9KTtcbiAgICAgc3ViamVjdC5zdWJzY3JpYmUodmFsdWUgPT4geyB9KTtcbiAgICAgc3ViamVjdC5uZXh0KCdzdGFydCcpO1xuICogYGBgXG4gKiBXaGVuIGBzdWJqZWN0YCBpcyBhIHN0YW5kYXJkIGBTdWJqZWN0PFQ+YCB0aGUgc2Vjb25kIHN1YnNjcmliZXIgd291bGQgcmVjaWV2ZSBgZW5kYCBhbmQgdGhlbiBgc3RhcnRgLlxuICogV2hlbiBgc3ViamVjdGAgaXMgYSBgT3JkZXJlZFN1YmplY3Q8VD5gIHRoZSBzZWNvbmQgc3Vic2NyaWJlciB3b3VsZCByZWNpZXZlIGBzdGFydGAgYW5kIHRoZW4gYGVuZGAuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcmRlcmVkU3ViamVjdDxUPiBleHRlbmRzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIF9pdGVtUXVldWU6IFRbXSA9IFtdO1xuICBwcml2YXRlIF9idXN5UHVzaGluZ05leHQgPSBmYWxzZTtcblxuICBuZXh0KHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9idXN5UHVzaGluZ05leHQpIHtcbiAgICAgIHRoaXMuX2l0ZW1RdWV1ZS51bnNoaWZ0KHZhbHVlISk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2J1c3lQdXNoaW5nTmV4dCA9IHRydWU7XG4gICAgc3VwZXIubmV4dCh2YWx1ZSk7XG4gICAgd2hpbGUgKHRoaXMuX2l0ZW1RdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBuZXh0VmFsdWUgPSB0aGlzLl9pdGVtUXVldWUucG9wKCk7XG4gICAgICBzdXBlci5uZXh0KG5leHRWYWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2J1c3lQdXNoaW5nTmV4dCA9IGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJuYWwgQWN0aW9uIHN0cmVhbSB0aGF0IGlzIGVtaXR0ZWQgYW55dGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hlZC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludGVybmFsQWN0aW9ucyBleHRlbmRzIE9yZGVyZWRTdWJqZWN0PEFjdGlvbkNvbnRleHQ+IHt9XG5cbi8qKlxuICogQWN0aW9uIHN0cmVhbSB0aGF0IGlzIGVtaXR0ZWQgYW55dGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hlZC5cbiAqXG4gKiBZb3UgY2FuIGxpc3RlbiB0byB0aGlzIGluIHNlcnZpY2VzIHRvIHJlYWN0IHdpdGhvdXQgc3RvcmVzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aW9ucyBleHRlbmRzIE9ic2VydmFibGU8YW55PiB7XG4gIC8vIFRoaXMgaGFzIHRvIGJlIGBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+YCBpbiB0aGUgdjQuIEJlY2F1c2UgYEludGVybmFsQWN0aW9uc2BcbiAgLy8gaXMgYSBgU3ViamVjdDxBY3Rpb25Db250ZXh0PmAuIExlYXZlIGl0IGFzIGBhbnlgIHRvIGF2b2lkIGJyZWFraW5nIGNoYW5nZXNcbiAgY29uc3RydWN0b3IoXG4gICAgaW50ZXJuYWxBY3Rpb25zJDogSW50ZXJuYWxBY3Rpb25zLFxuICAgIGludGVybmFsRXhlY3V0aW9uU3RyYXRlZ3k6IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5XG4gICkge1xuICAgIHN1cGVyKG9ic2VydmVyID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkU3Vic2NyaXB0aW9uID0gaW50ZXJuYWxBY3Rpb25zJFxuICAgICAgICAucGlwZShsZWF2ZU5neHMoaW50ZXJuYWxFeGVjdXRpb25TdHJhdGVneSkpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGN0eCA9PiBvYnNlcnZlci5uZXh0KGN0eCksXG4gICAgICAgICAgZXJyb3I6IGVycm9yID0+IG9ic2VydmVyLmVycm9yKGVycm9yKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgICAgICB9KTtcblxuICAgICAgb2JzZXJ2ZXIuYWRkKGNoaWxkU3Vic2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1zdHJlYW0uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9hY3Rpb25zLXN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7SUFNM0YsWUFBYSxZQUFZO0lBQ3pCLFlBQWEsWUFBWTtJQUN6QixVQUFXLFVBQVU7SUFDckIsU0FBVSxTQUFTOzs7Ozs7O0FBR3JCLG1DQUlDOzs7SUFIQywrQkFBcUI7O0lBQ3JCLCtCQUFVOztJQUNWLDhCQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQmhCLE1BQU0sT0FBTyxjQUFrQixTQUFRLE9BQVU7SUFBakQ7O1FBQ1UsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFlbkMsQ0FBQzs7Ozs7SUFiQyxJQUFJLENBQUMsS0FBUztRQUNaLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLG1CQUFBLEtBQUssRUFBQyxDQUFDLENBQUM7WUFDaEMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztrQkFDM0IsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjs7Ozs7O0lBaEJDLG9DQUE2Qjs7Ozs7SUFDN0IsMENBQWlDOzs7OztBQXFCbkMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBNkI7Ozs7SUFDaEUsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDOzs7WUFKRixVQUFVOzs7Ozs7O0FBYVgsTUFBTSxPQUFPLE9BQVEsU0FBUSxVQUFlOzs7Ozs7O0lBRzFDLFlBQ0UsZ0JBQWlDLEVBQ2pDLHlCQUF3RDs7Y0FFbEQsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUNsRCxTQUFTLENBQUMseUJBQXlCLENBQUM7UUFDcEMsbUVBQW1FO1FBQ25FLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUseUZBQXlGO1FBQ3pGLEtBQUssRUFBRSxDQUNSO1FBRUQsS0FBSzs7OztRQUFDLFFBQVEsQ0FBQyxFQUFFOztrQkFDVCxpQkFBaUIsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pELElBQUk7Ozs7Z0JBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixLQUFLOzs7O2dCQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDckMsUUFBUTs7O2dCQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTthQUNwQyxDQUFDO1lBRUYsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBMUJGLFVBQVU7Ozs7WUFLVyxlQUFlO1lBeEU1Qiw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuL29wZXJhdG9ycy9sZWF2ZS1uZ3hzJztcbmltcG9ydCB7IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9leGVjdXRpb24vaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xuXG4vKipcbiAqIFN0YXR1cyBvZiBhIGRpc3BhdGNoZWQgYWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFjdGlvblN0YXR1cyB7XG4gIERpc3BhdGNoZWQgPSAnRElTUEFUQ0hFRCcsXG4gIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gIENhbmNlbGVkID0gJ0NBTkNFTEVEJyxcbiAgRXJyb3JlZCA9ICdFUlJPUkVEJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHQ8VCA9IGFueT4ge1xuICBzdGF0dXM6IEFjdGlvblN0YXR1cztcbiAgYWN0aW9uOiBUO1xuICBlcnJvcj86IEVycm9yO1xufVxuXG4vKipcbiAqIEN1c3RvbSBTdWJqZWN0IHRoYXQgZW5zdXJlcyB0aGF0IHN1YnNjcmliZXJzIGFyZSBub3RpZmllZCBvZiB2YWx1ZXMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcnJpdmVkLlxuICogQSBzdGFuZGFyZCBTdWJqZWN0IGRvZXMgbm90IGhhdmUgdGhpcyBndWFyYW50ZWUuXG4gKiBGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBjb2RlOlxuICogYGBgdHlwZXNjcmlwdFxuICogICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgICBzdWJqZWN0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgaWYgKHZhbHVlID09PSAnc3RhcnQnKSBzdWJqZWN0Lm5leHQoJ2VuZCcpO1xuICAgICB9KTtcbiAgICAgc3ViamVjdC5zdWJzY3JpYmUodmFsdWUgPT4geyB9KTtcbiAgICAgc3ViamVjdC5uZXh0KCdzdGFydCcpO1xuICogYGBgXG4gKiBXaGVuIGBzdWJqZWN0YCBpcyBhIHN0YW5kYXJkIGBTdWJqZWN0PFQ+YCB0aGUgc2Vjb25kIHN1YnNjcmliZXIgd291bGQgcmVjaWV2ZSBgZW5kYCBhbmQgdGhlbiBgc3RhcnRgLlxuICogV2hlbiBgc3ViamVjdGAgaXMgYSBgT3JkZXJlZFN1YmplY3Q8VD5gIHRoZSBzZWNvbmQgc3Vic2NyaWJlciB3b3VsZCByZWNpZXZlIGBzdGFydGAgYW5kIHRoZW4gYGVuZGAuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcmRlcmVkU3ViamVjdDxUPiBleHRlbmRzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIF9pdGVtUXVldWU6IFRbXSA9IFtdO1xuICBwcml2YXRlIF9idXN5UHVzaGluZ05leHQgPSBmYWxzZTtcblxuICBuZXh0KHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9idXN5UHVzaGluZ05leHQpIHtcbiAgICAgIHRoaXMuX2l0ZW1RdWV1ZS51bnNoaWZ0KHZhbHVlISk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2J1c3lQdXNoaW5nTmV4dCA9IHRydWU7XG4gICAgc3VwZXIubmV4dCh2YWx1ZSk7XG4gICAgd2hpbGUgKHRoaXMuX2l0ZW1RdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBuZXh0VmFsdWUgPSB0aGlzLl9pdGVtUXVldWUucG9wKCk7XG4gICAgICBzdXBlci5uZXh0KG5leHRWYWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2J1c3lQdXNoaW5nTmV4dCA9IGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJuYWwgQWN0aW9uIHN0cmVhbSB0aGF0IGlzIGVtaXR0ZWQgYW55dGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hlZC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludGVybmFsQWN0aW9ucyBleHRlbmRzIE9yZGVyZWRTdWJqZWN0PEFjdGlvbkNvbnRleHQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb21wbGV0ZSgpO1xuICB9XG59XG5cbi8qKlxuICogQWN0aW9uIHN0cmVhbSB0aGF0IGlzIGVtaXR0ZWQgYW55dGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hlZC5cbiAqXG4gKiBZb3UgY2FuIGxpc3RlbiB0byB0aGlzIGluIHNlcnZpY2VzIHRvIHJlYWN0IHdpdGhvdXQgc3RvcmVzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aW9ucyBleHRlbmRzIE9ic2VydmFibGU8YW55PiB7XG4gIC8vIFRoaXMgaGFzIHRvIGJlIGBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+YCBpbiB0aGUgdjQuIEJlY2F1c2UgYEludGVybmFsQWN0aW9uc2BcbiAgLy8gaXMgYSBgU3ViamVjdDxBY3Rpb25Db250ZXh0PmAuIExlYXZlIGl0IGFzIGBhbnlgIHRvIGF2b2lkIGJyZWFraW5nIGNoYW5nZXNcbiAgY29uc3RydWN0b3IoXG4gICAgaW50ZXJuYWxBY3Rpb25zJDogSW50ZXJuYWxBY3Rpb25zLFxuICAgIGludGVybmFsRXhlY3V0aW9uU3RyYXRlZ3k6IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5XG4gICkge1xuICAgIGNvbnN0IHNoYXJlZEludGVybmFsQWN0aW9ucyQgPSBpbnRlcm5hbEFjdGlvbnMkLnBpcGUoXG4gICAgICBsZWF2ZU5neHMoaW50ZXJuYWxFeGVjdXRpb25TdHJhdGVneSksXG4gICAgICAvLyBUaGUgYEludGVybmFsQWN0aW9uc2Agc3ViamVjdCBlbWl0cyBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAgICAvLyBXZSBoYXZlIHRvIHJlLWVudGVyIHRoZSBBbmd1bGFyIHpvbmUgZm9yIGFueSBpbmNvbWluZyBjb25zdW1lci5cbiAgICAgIC8vIFRoZSBgc2hhcmUoKWAgb3BlcmF0b3IgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGNoYW5nZSBkZXRlY3Rpb25zLlxuICAgICAgLy8gVGhpcyB3b3VsZCBjYWxsIGxlYXZlIG9ubHkgb25jZSBmb3IgYW55IHN0cmVhbSBlbWlzc2lvbiBhY3Jvc3MgYWxsIGFjdGl2ZSBzdWJzY3JpYmVycy5cbiAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgc3VwZXIob2JzZXJ2ZXIgPT4ge1xuICAgICAgY29uc3QgY2hpbGRTdWJzY3JpcHRpb24gPSBzaGFyZWRJbnRlcm5hbEFjdGlvbnMkLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGN0eCA9PiBvYnNlcnZlci5uZXh0KGN0eCksXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICB9KTtcblxuICAgICAgb2JzZXJ2ZXIuYWRkKGNoaWxkU3Vic2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -2,15 +2,15 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { ErrorHandler, Injectable, Injector } from '@angular/core';
5
+ import { Injectable } from '@angular/core';
6
6
  import { EMPTY, forkJoin, of, Subject, throwError } from 'rxjs';
7
7
  import { exhaustMap, filter, shareReplay, take } from 'rxjs/operators';
8
8
  import { compose } from '../utils/compose';
9
+ import { InternalErrorReporter, ngxsErrorHandler } from './error-handler';
9
10
  import { InternalActions } from '../actions-stream';
10
11
  import { StateStream } from './state-stream';
11
12
  import { PluginManager } from '../plugin-manager';
12
13
  import { InternalNgxsExecutionStrategy } from '../execution/internal-ngxs-execution-strategy';
13
- import { leaveNgxs } from '../operators/leave-ngxs';
14
14
  import { getActionTypeFromInstance } from '../utils/utils';
15
15
  /**
16
16
  * Internal Action result stream that is emitted when an action is completed.
@@ -25,20 +25,20 @@ InternalDispatchedActionResults.decorators = [
25
25
  ];
26
26
  export class InternalDispatcher {
27
27
  /**
28
- * @param {?} _injector
29
28
  * @param {?} _actions
30
29
  * @param {?} _actionResults
31
30
  * @param {?} _pluginManager
32
31
  * @param {?} _stateStream
33
32
  * @param {?} _ngxsExecutionStrategy
33
+ * @param {?} _internalErrorReporter
34
34
  */
35
- constructor(_injector, _actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy) {
36
- this._injector = _injector;
35
+ constructor(_actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy, _internalErrorReporter) {
37
36
  this._actions = _actions;
38
37
  this._actionResults = _actionResults;
39
38
  this._pluginManager = _pluginManager;
40
39
  this._stateStream = _stateStream;
41
40
  this._ngxsExecutionStrategy = _ngxsExecutionStrategy;
41
+ this._internalErrorReporter = _internalErrorReporter;
42
42
  }
43
43
  /**
44
44
  * Dispatches event(s).
@@ -51,24 +51,7 @@ export class InternalDispatcher {
51
51
  * @return {?}
52
52
  */
53
53
  () => this.dispatchByEvents(actionOrActions)));
54
- result.subscribe({
55
- error: (/**
56
- * @param {?} error
57
- * @return {?}
58
- */
59
- error => this._ngxsExecutionStrategy.leave((/**
60
- * @return {?}
61
- */
62
- () => {
63
- try {
64
- // Retrieve lazily to avoid cyclic dependency exception
65
- this._errorHandler = this._errorHandler || this._injector.get(ErrorHandler);
66
- this._errorHandler.handleError(error);
67
- }
68
- catch (_a) { }
69
- })))
70
- });
71
- return result.pipe(leaveNgxs(this._ngxsExecutionStrategy));
54
+ return result.pipe(ngxsErrorHandler(this._internalErrorReporter, this._ngxsExecutionStrategy));
72
55
  }
73
56
  /**
74
57
  * @private
@@ -172,24 +155,14 @@ InternalDispatcher.decorators = [
172
155
  ];
173
156
  /** @nocollapse */
174
157
  InternalDispatcher.ctorParameters = () => [
175
- { type: Injector },
176
158
  { type: InternalActions },
177
159
  { type: InternalDispatchedActionResults },
178
160
  { type: PluginManager },
179
161
  { type: StateStream },
180
- { type: InternalNgxsExecutionStrategy }
162
+ { type: InternalNgxsExecutionStrategy },
163
+ { type: InternalErrorReporter }
181
164
  ];
182
165
  if (false) {
183
- /**
184
- * @type {?}
185
- * @private
186
- */
187
- InternalDispatcher.prototype._errorHandler;
188
- /**
189
- * @type {?}
190
- * @private
191
- */
192
- InternalDispatcher.prototype._injector;
193
166
  /**
194
167
  * @type {?}
195
168
  * @private
@@ -215,5 +188,10 @@ if (false) {
215
188
  * @private
216
189
  */
217
190
  InternalDispatcher.prototype._ngxsExecutionStrategy;
191
+ /**
192
+ * @type {?}
193
+ * @private
194
+ */
195
+ InternalDispatcher.prototype._internalErrorReporter;
218
196
  }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBK0IsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLE9BQXNCOzs7WUFEMUUsVUFBVTs7QUFJWCxNQUFNLE9BQU8sa0JBQWtCOzs7Ozs7Ozs7SUFHN0IsWUFDVSxTQUFtQixFQUNuQixRQUF5QixFQUN6QixjQUErQyxFQUMvQyxjQUE2QixFQUM3QixZQUF5QixFQUN6QixzQkFBcUQ7UUFMckQsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUM7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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvckhhbmRsZXIsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmaWx0ZXIsIHNoYXJlUmVwbGF5LCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSAnLi4vdXRpbHMvY29tcG9zZSc7XG5pbXBvcnQgeyBBY3Rpb25Db250ZXh0LCBBY3Rpb25TdGF0dXMsIEludGVybmFsQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbnMtc3RyZWFtJztcbmltcG9ydCB7IFN0YXRlU3RyZWFtIH0gZnJvbSAnLi9zdGF0ZS1zdHJlYW0nO1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJztcbmltcG9ydCB7IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vZXhlY3V0aW9uL2ludGVybmFsLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5JztcbmltcG9ydCB7IGxlYXZlTmd4cyB9IGZyb20gJy4uL29wZXJhdG9ycy9sZWF2ZS1uZ3hzJztcbmltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbi8qKlxuICogSW50ZXJuYWwgQWN0aW9uIHJlc3VsdCBzdHJlYW0gdGhhdCBpcyBlbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNvbXBsZXRlZC5cbiAqIFRoaXMgaXMgdXNlZCBhcyBhIG1ldGhvZCBvZiByZXR1cm5pbmcgdGhlIGFjdGlvbiByZXN1bHQgdG8gdGhlIGRpc3BhdGNoZXJcbiAqIGZvciB0aGUgb2JzZXJ2YWJsZSByZXR1cm5lZCBieSB0aGUgZGlzcGF0Y2goLi4uKSBjYWxsLlxuICogVGhlIGRpc3BhdGNoZXIgdGhlbiBhc3luY2hyb25vdXNseSBwdXNoZXMgdGhlIHJlc3VsdCBmcm9tIHRoaXMgc3RyZWFtIG9udG8gdGhlIG1haW4gYWN0aW9uIHN0cmVhbSBhcyBhIHJlc3VsdC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMgZXh0ZW5kcyBTdWJqZWN0PEFjdGlvbkNvbnRleHQ+IHt9XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZXIge1xuICBwcml2YXRlIF9lcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfYWN0aW9uczogSW50ZXJuYWxBY3Rpb25zLFxuICAgIHByaXZhdGUgX2FjdGlvblJlc3VsdHM6IEludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMsXG4gICAgcHJpdmF0ZSBfcGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlcixcbiAgICBwcml2YXRlIF9zdGF0ZVN0cmVhbTogU3RhdGVTdHJlYW0sXG4gICAgcHJpdmF0ZSBfbmd4c0V4ZWN1dGlvblN0cmF0ZWd5OiBJbnRlcm5hbE5neHNFeGVjdXRpb25TdHJhdGVneVxuICApIHt9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgZXZlbnQocykuXG4gICAqL1xuICBkaXNwYXRjaChhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3kuZW50ZXIoKCkgPT5cbiAgICAgIHRoaXMuZGlzcGF0Y2hCeUV2ZW50cyhhY3Rpb25PckFjdGlvbnMpXG4gICAgKTtcblxuICAgIHJlc3VsdC5zdWJzY3JpYmUoe1xuICAgICAgZXJyb3I6IGVycm9yID0+XG4gICAgICAgIHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneS5sZWF2ZSgoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFJldHJpZXZlIGxhemlseSB0byBhdm9pZCBjeWNsaWMgZGVwZW5kZW5jeSBleGNlcHRpb25cbiAgICAgICAgICAgIHRoaXMuX2Vycm9ySGFuZGxlciA9IHRoaXMuX2Vycm9ySGFuZGxlciB8fCB0aGlzLl9pbmplY3Rvci5nZXQoRXJyb3JIYW5kbGVyKTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB9KVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5waXBlKGxlYXZlTmd4cyh0aGlzLl9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3kpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hCeUV2ZW50cyhhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhY3Rpb25PckFjdGlvbnMpKSB7XG4gICAgICBpZiAoYWN0aW9uT3JBY3Rpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG9mKHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCkpO1xuICAgICAgcmV0dXJuIGZvcmtKb2luKGFjdGlvbk9yQWN0aW9ucy5tYXAoYWN0aW9uID0+IHRoaXMuZGlzcGF0Y2hTaW5nbGUoYWN0aW9uKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb25PckFjdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hTaW5nbGUoYWN0aW9uOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKTtcbiAgICAgIGlmICghdHlwZSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhpcyBhY3Rpb24gZG9lc24ndCBoYXZlIGEgdHlwZSBwcm9wZXJ0eTogJHthY3Rpb24uY29uc3RydWN0b3IubmFtZX1gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5NYW5hZ2VyLnBsdWdpbnM7XG5cbiAgICByZXR1cm4gKGNvbXBvc2UoW1xuICAgICAgLi4ucGx1Z2lucyxcbiAgICAgIChuZXh0U3RhdGU6IGFueSwgbmV4dEFjdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChuZXh0U3RhdGUgIT09IHByZXZTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuX3N0YXRlU3RyZWFtLm5leHQobmV4dFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3Rpb25SZXN1bHQkID0gdGhpcy5nZXRBY3Rpb25SZXN1bHRTdHJlYW0obmV4dEFjdGlvbik7XG4gICAgICAgIGFjdGlvblJlc3VsdCQuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25zLm5leHQoY3R4KSk7XG4gICAgICAgIHRoaXMuX2FjdGlvbnMubmV4dCh7IGFjdGlvbjogbmV4dEFjdGlvbiwgc3RhdHVzOiBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKGFjdGlvblJlc3VsdCQpO1xuICAgICAgfVxuICAgIF0pKHByZXZTdGF0ZSwgYWN0aW9uKSBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvblJlc3VsdFN0cmVhbShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25SZXN1bHRzLnBpcGUoXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChjdHg6IEFjdGlvbkNvbnRleHQpID0+IGN0eC5hY3Rpb24gPT09IGFjdGlvbiAmJiBjdHguc3RhdHVzICE9PSBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZFxuICAgICAgKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKGFjdGlvblJlc3VsdCQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBhY3Rpb25SZXN1bHQkXG4gICAgICAucGlwZShcbiAgICAgICAgZXhoYXVzdE1hcCgoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChjdHguc3RhdHVzKSB7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsOlxuICAgICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5FcnJvcmVkOlxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihjdHguZXJyb3IpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xuICB9XG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQStCLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLE9BQXNCOzs7WUFEMUUsVUFBVTs7QUFJWCxNQUFNLE9BQU8sa0JBQWtCOzs7Ozs7Ozs7SUFDN0IsWUFDVSxRQUF5QixFQUN6QixjQUErQyxFQUMvQyxjQUE2QixFQUM3QixZQUF5QixFQUN6QixzQkFBcUQsRUFDckQsc0JBQTZDO1FBTDdDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFpQztRQUMvQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQStCO1FBQ3JELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7SUFDcEQsQ0FBQzs7Ozs7O0lBS0osUUFBUSxDQUFDLGVBQTRCOztjQUM3QixNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUs7OztRQUFDLEdBQUcsRUFBRSxDQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEVBQ3ZDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQzNFLENBQUM7SUFDSixDQUFDOzs7Ozs7SUFFTyxnQkFBZ0IsQ0FBQyxlQUE0QjtRQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHOzs7O1lBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sY0FBYyxDQUFDLE1BQVc7UUFDaEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxFQUFFOztrQkFDM0MsSUFBSSxHQUF1Qix5QkFBeUIsQ0FBQyxNQUFNLENBQUM7WUFDbEUsSUFBSSxDQUFDLElBQUksRUFBRTs7c0JBQ0gsS0FBSyxHQUFHLElBQUksS0FBSyxDQUNyQiw2Q0FBNkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FDdkU7Z0JBQ0QsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUI7U0FDRjs7Y0FFSyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7O2NBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87UUFFM0MsT0FBTyxDQUFDLG1CQUFBLE9BQU8sQ0FBQztZQUNkLEdBQUcsT0FBTzs7Ozs7O1lBQ1YsQ0FBQyxTQUFjLEVBQUUsVUFBZSxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ25DOztzQkFDSyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztnQkFDNUQsYUFBYSxDQUFDLFNBQVM7Ozs7Z0JBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBeUIsRUFBRSxDQUFDLENBQUM7Z0JBQzVFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3RELENBQUM7U0FDRixDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7Ozs7O0lBRU8scUJBQXFCLENBQUMsTUFBVztRQUN2QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixNQUFNOzs7O1FBQ0osQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxrQ0FBNEIsRUFDeEYsRUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsV0FBVyxFQUFFLENBQ2QsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUVPLHdCQUF3QixDQUFDLGFBQXdDO1FBQ3ZFLE9BQU8sYUFBYTthQUNqQixJQUFJLENBQ0gsVUFBVTs7OztRQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFO1lBQ2hDLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDbEI7b0JBQ0UsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQztvQkFDRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CO29CQUNFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1FBQ0gsQ0FBQyxFQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7WUF0RkYsVUFBVTs7OztZQWYyQixlQUFlO1lBbUJ6QiwrQkFBK0I7WUFqQmxELGFBQWE7WUFEYixXQUFXO1lBRVgsNkJBQTZCO1lBSjdCLHFCQUFxQjs7Ozs7OztJQW1CMUIsc0NBQWlDOzs7OztJQUNqQyw0Q0FBdUQ7Ozs7O0lBQ3ZELDRDQUFxQzs7Ozs7SUFDckMsMENBQWlDOzs7OztJQUNqQyxvREFBNkQ7Ozs7O0lBQzdELG9EQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGNvbXBvc2UgfSBmcm9tICcuLi91dGlscy9jb21wb3NlJztcbmltcG9ydCB7IEludGVybmFsRXJyb3JSZXBvcnRlciwgbmd4c0Vycm9ySGFuZGxlciB9IGZyb20gJy4vZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBBY3Rpb25Db250ZXh0LCBBY3Rpb25TdGF0dXMsIEludGVybmFsQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbnMtc3RyZWFtJztcbmltcG9ydCB7IFN0YXRlU3RyZWFtIH0gZnJvbSAnLi9zdGF0ZS1zdHJlYW0nO1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJztcbmltcG9ydCB7IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vZXhlY3V0aW9uL2ludGVybmFsLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5JztcbmltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbi8qKlxuICogSW50ZXJuYWwgQWN0aW9uIHJlc3VsdCBzdHJlYW0gdGhhdCBpcyBlbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNvbXBsZXRlZC5cbiAqIFRoaXMgaXMgdXNlZCBhcyBhIG1ldGhvZCBvZiByZXR1cm5pbmcgdGhlIGFjdGlvbiByZXN1bHQgdG8gdGhlIGRpc3BhdGNoZXJcbiAqIGZvciB0aGUgb2JzZXJ2YWJsZSByZXR1cm5lZCBieSB0aGUgZGlzcGF0Y2goLi4uKSBjYWxsLlxuICogVGhlIGRpc3BhdGNoZXIgdGhlbiBhc3luY2hyb25vdXNseSBwdXNoZXMgdGhlIHJlc3VsdCBmcm9tIHRoaXMgc3RyZWFtIG9udG8gdGhlIG1haW4gYWN0aW9uIHN0cmVhbSBhcyBhIHJlc3VsdC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMgZXh0ZW5kcyBTdWJqZWN0PEFjdGlvbkNvbnRleHQ+IHt9XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBJbnRlcm5hbEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBfYWN0aW9uUmVzdWx0czogSW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyxcbiAgICBwcml2YXRlIF9wbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyLFxuICAgIHByaXZhdGUgX3N0YXRlU3RyZWFtOiBTdGF0ZVN0cmVhbSxcbiAgICBwcml2YXRlIF9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3k6IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5LFxuICAgIHByaXZhdGUgX2ludGVybmFsRXJyb3JSZXBvcnRlcjogSW50ZXJuYWxFcnJvclJlcG9ydGVyXG4gICkge31cblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBldmVudChzKS5cbiAgICovXG4gIGRpc3BhdGNoKGFjdGlvbk9yQWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneS5lbnRlcigoKSA9PlxuICAgICAgdGhpcy5kaXNwYXRjaEJ5RXZlbnRzKGFjdGlvbk9yQWN0aW9ucylcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5waXBlKFxuICAgICAgbmd4c0Vycm9ySGFuZGxlcih0aGlzLl9pbnRlcm5hbEVycm9yUmVwb3J0ZXIsIHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaEJ5RXZlbnRzKGFjdGlvbk9yQWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFjdGlvbk9yQWN0aW9ucykpIHtcbiAgICAgIGlmIChhY3Rpb25PckFjdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gb2YodGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKSk7XG4gICAgICByZXR1cm4gZm9ya0pvaW4oYWN0aW9uT3JBY3Rpb25zLm1hcChhY3Rpb24gPT4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb24pKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoU2luZ2xlKGFjdGlvbk9yQWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgY29uc3QgdHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShhY3Rpb24pO1xuICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGlzIGFjdGlvbiBkb2Vzbid0IGhhdmUgYSB0eXBlIHByb3BlcnR5OiAke2FjdGlvbi5jb25zdHJ1Y3Rvci5uYW1lfWBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCk7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMuX3BsdWdpbk1hbmFnZXIucGx1Z2lucztcblxuICAgIHJldHVybiAoY29tcG9zZShbXG4gICAgICAuLi5wbHVnaW5zLFxuICAgICAgKG5leHRTdGF0ZTogYW55LCBuZXh0QWN0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG5leHRTdGF0ZSAhPT0gcHJldlN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5fc3RhdGVTdHJlYW0ubmV4dChuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGlvblJlc3VsdCQgPSB0aGlzLmdldEFjdGlvblJlc3VsdFN0cmVhbShuZXh0QWN0aW9uKTtcbiAgICAgICAgYWN0aW9uUmVzdWx0JC5zdWJzY3JpYmUoY3R4ID0+IHRoaXMuX2FjdGlvbnMubmV4dChjdHgpKTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5uZXh0KHsgYWN0aW9uOiBuZXh0QWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEaXNwYXRjaE9ic2VydmFibGUoYWN0aW9uUmVzdWx0JCk7XG4gICAgICB9XG4gICAgXSkocHJldlN0YXRlLCBhY3Rpb24pIGFzIE9ic2VydmFibGU8YW55PikucGlwZShzaGFyZVJlcGxheSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aW9uUmVzdWx0U3RyZWFtKGFjdGlvbjogYW55KTogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvblJlc3VsdHMucGlwZShcbiAgICAgIGZpbHRlcihcbiAgICAgICAgKGN0eDogQWN0aW9uQ29udGV4dCkgPT4gY3R4LmFjdGlvbiA9PT0gYWN0aW9uICYmIGN0eC5zdGF0dXMgIT09IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkXG4gICAgICApLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEaXNwYXRjaE9ic2VydmFibGUoYWN0aW9uUmVzdWx0JDogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0Pik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGFjdGlvblJlc3VsdCRcbiAgICAgIC5waXBlKFxuICAgICAgICBleGhhdXN0TWFwKChjdHg6IEFjdGlvbkNvbnRleHQpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGN0eC5zdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWw6XG4gICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICAgIGNhc2UgQWN0aW9uU3RhdHVzLkVycm9yZWQ6XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGN0eC5lcnJvcik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,118 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { ErrorHandler, Injectable, Injector } from '@angular/core';
6
+ import { Observable } from 'rxjs';
7
+ import { leaveNgxs } from '../operators/leave-ngxs';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * This operator is used for piping the observable result
11
+ * from the `dispatch()`. It has a "smart" error handling
12
+ * strategy that allows us to decide whether we propagate
13
+ * errors to Angular's `ErrorHandler` or enable users to
14
+ * handle them manually. We consider following cases:
15
+ * 1) `store.dispatch()` (no subscribe) -> call `handleError()`
16
+ * 2) `store.dispatch().subscribe()` (no error callback) -> call `handleError()`
17
+ * 3) `store.dispatch().subscribe({ error: ... })` -> don't call `handleError()`
18
+ * 4) `toPromise()` without `catch` -> do `handleError()`
19
+ * 5) `toPromise()` with `catch` -> don't `handleError()`
20
+ * @template T
21
+ * @param {?} internalErrorReporter
22
+ * @param {?} ngxsExecutionStrategy
23
+ * @return {?}
24
+ */
25
+ export function ngxsErrorHandler(internalErrorReporter, ngxsExecutionStrategy) {
26
+ return (/**
27
+ * @param {?} source
28
+ * @return {?}
29
+ */
30
+ (source) => {
31
+ /** @type {?} */
32
+ let subscribed = false;
33
+ source.subscribe({
34
+ error: (/**
35
+ * @param {?} error
36
+ * @return {?}
37
+ */
38
+ error => {
39
+ // Do not trigger change detection for a microtask. This depends on the execution
40
+ // strategy being used, but the default `DispatchOutsideZoneNgxsExecutionStrategy`
41
+ // leaves the Angular zone.
42
+ ngxsExecutionStrategy.enter((/**
43
+ * @return {?}
44
+ */
45
+ () => Promise.resolve().then((/**
46
+ * @return {?}
47
+ */
48
+ () => {
49
+ if (!subscribed) {
50
+ ngxsExecutionStrategy.leave((/**
51
+ * @return {?}
52
+ */
53
+ () => internalErrorReporter.reportErrorSafely(error)));
54
+ }
55
+ }))));
56
+ })
57
+ });
58
+ return new Observable((/**
59
+ * @param {?} subscriber
60
+ * @return {?}
61
+ */
62
+ subscriber => {
63
+ subscribed = true;
64
+ return source.pipe(leaveNgxs(ngxsExecutionStrategy)).subscribe(subscriber);
65
+ }));
66
+ });
67
+ }
68
+ export class InternalErrorReporter {
69
+ /**
70
+ * @param {?} _injector
71
+ */
72
+ constructor(_injector) {
73
+ this._injector = _injector;
74
+ /**
75
+ * Will be set lazily to be backward compatible.
76
+ */
77
+ this._errorHandler = (/** @type {?} */ (null));
78
+ }
79
+ /**
80
+ * @param {?} error
81
+ * @return {?}
82
+ */
83
+ reportErrorSafely(error) {
84
+ if (this._errorHandler === null) {
85
+ this._errorHandler = this._injector.get(ErrorHandler);
86
+ }
87
+ // The `try-catch` is used to avoid handling the error twice. Suppose we call
88
+ // `handleError` which re-throws the error internally. The re-thrown error will
89
+ // be caught by zone.js which will then get to the `zone.onError.emit()` and the
90
+ // `onError` subscriber will call `handleError` again.
91
+ try {
92
+ this._errorHandler.handleError(error);
93
+ }
94
+ catch (_a) { }
95
+ }
96
+ }
97
+ InternalErrorReporter.decorators = [
98
+ { type: Injectable, args: [{ providedIn: 'root' },] }
99
+ ];
100
+ /** @nocollapse */
101
+ InternalErrorReporter.ctorParameters = () => [
102
+ { type: Injector }
103
+ ];
104
+ /** @nocollapse */ InternalErrorReporter.ngInjectableDef = i0.defineInjectable({ factory: function InternalErrorReporter_Factory() { return new InternalErrorReporter(i0.inject(i0.INJECTOR)); }, token: InternalErrorReporter, providedIn: "root" });
105
+ if (false) {
106
+ /**
107
+ * Will be set lazily to be backward compatible.
108
+ * @type {?}
109
+ * @private
110
+ */
111
+ InternalErrorReporter.prototype._errorHandler;
112
+ /**
113
+ * @type {?}
114
+ * @private
115
+ */
116
+ InternalErrorReporter.prototype._injector;
117
+ }
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL2Vycm9yLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZXBELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIscUJBQTRDLEVBQzVDLHFCQUE0QztJQUU1Qzs7OztJQUFPLENBQUMsTUFBcUIsRUFBRSxFQUFFOztZQUMzQixVQUFVLEdBQUcsS0FBSztRQUV0QixNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ2YsS0FBSzs7OztZQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNiLGlGQUFpRjtnQkFDakYsa0ZBQWtGO2dCQUNsRiwyQkFBMkI7Z0JBQzNCLHFCQUFxQixDQUFDLEtBQUs7OztnQkFBQyxHQUFHLEVBQUUsQ0FDL0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUk7OztnQkFBQyxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUU7d0JBQ2YscUJBQXFCLENBQUMsS0FBSzs7O3dCQUFDLEdBQUcsRUFBRSxDQUMvQixxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFDL0MsQ0FBQztxQkFDSDtnQkFDSCxDQUFDLEVBQUMsRUFDSCxDQUFDO1lBQ0osQ0FBQyxDQUFBO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBQyxVQUFVLENBQUMsRUFBRTtZQUNqQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RSxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUMsRUFBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8scUJBQXFCOzs7O0lBSWhDLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7Ozs7UUFGL0Isa0JBQWEsR0FBaUIsbUJBQUEsSUFBSSxFQUFDLENBQUM7SUFFRixDQUFDOzs7OztJQUUzQyxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RDtRQUNELDZFQUE2RTtRQUM3RSwrRUFBK0U7UUFDL0UsZ0ZBQWdGO1FBQ2hGLHNEQUFzRDtRQUN0RCxJQUFJO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFBQyxXQUFNLEdBQUU7SUFDWixDQUFDOzs7WUFsQkYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztZQWpEQyxRQUFROzs7Ozs7Ozs7SUFvRHpDLDhDQUE0Qzs7Ozs7SUFFaEMsMENBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuLi9vcGVyYXRvcnMvbGVhdmUtbmd4cyc7XG5pbXBvcnQgeyBOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9leGVjdXRpb24vc3ltYm9scyc7XG5cbi8qKlxuICogVGhpcyBvcGVyYXRvciBpcyB1c2VkIGZvciBwaXBpbmcgdGhlIG9ic2VydmFibGUgcmVzdWx0XG4gKiBmcm9tIHRoZSBgZGlzcGF0Y2goKWAuIEl0IGhhcyBhIFwic21hcnRcIiBlcnJvciBoYW5kbGluZ1xuICogc3RyYXRlZ3kgdGhhdCBhbGxvd3MgdXMgdG8gZGVjaWRlIHdoZXRoZXIgd2UgcHJvcGFnYXRlXG4gKiBlcnJvcnMgdG8gQW5ndWxhcidzIGBFcnJvckhhbmRsZXJgIG9yIGVuYWJsZSB1c2VycyB0b1xuICogaGFuZGxlIHRoZW0gbWFudWFsbHkuIFdlIGNvbnNpZGVyIGZvbGxvd2luZyBjYXNlczpcbiAqIDEpIGBzdG9yZS5kaXNwYXRjaCgpYCAobm8gc3Vic2NyaWJlKSAtPiBjYWxsIGBoYW5kbGVFcnJvcigpYFxuICogMikgYHN0b3JlLmRpc3BhdGNoKCkuc3Vic2NyaWJlKClgIChubyBlcnJvciBjYWxsYmFjaykgLT4gY2FsbCBgaGFuZGxlRXJyb3IoKWBcbiAqIDMpIGBzdG9yZS5kaXNwYXRjaCgpLnN1YnNjcmliZSh7IGVycm9yOiAuLi4gfSlgIC0+IGRvbid0IGNhbGwgYGhhbmRsZUVycm9yKClgXG4gKiA0KSBgdG9Qcm9taXNlKClgIHdpdGhvdXQgYGNhdGNoYCAtPiBkbyBgaGFuZGxlRXJyb3IoKWBcbiAqIDUpIGB0b1Byb21pc2UoKWAgd2l0aCBgY2F0Y2hgIC0+IGRvbid0IGBoYW5kbGVFcnJvcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbmd4c0Vycm9ySGFuZGxlcjxUPihcbiAgaW50ZXJuYWxFcnJvclJlcG9ydGVyOiBJbnRlcm5hbEVycm9yUmVwb3J0ZXIsXG4gIG5neHNFeGVjdXRpb25TdHJhdGVneTogTmd4c0V4ZWN1dGlvblN0cmF0ZWd5XG4pIHtcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBsZXQgc3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgc291cmNlLnN1YnNjcmliZSh7XG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAvLyBEbyBub3QgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBhIG1pY3JvdGFzay4gVGhpcyBkZXBlbmRzIG9uIHRoZSBleGVjdXRpb25cbiAgICAgICAgLy8gc3RyYXRlZ3kgYmVpbmcgdXNlZCwgYnV0IHRoZSBkZWZhdWx0IGBEaXNwYXRjaE91dHNpZGVab25lTmd4c0V4ZWN1dGlvblN0cmF0ZWd5YFxuICAgICAgICAvLyBsZWF2ZXMgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICAgICAgbmd4c0V4ZWN1dGlvblN0cmF0ZWd5LmVudGVyKCgpID0+XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN1YnNjcmliZWQpIHtcbiAgICAgICAgICAgICAgbmd4c0V4ZWN1dGlvblN0cmF0ZWd5LmxlYXZlKCgpID0+XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxFcnJvclJlcG9ydGVyLnJlcG9ydEVycm9yU2FmZWx5KGVycm9yKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICBzdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiBzb3VyY2UucGlwZShsZWF2ZU5neHMobmd4c0V4ZWN1dGlvblN0cmF0ZWd5KSkuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH0pO1xuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEludGVybmFsRXJyb3JSZXBvcnRlciB7XG4gIC8qKiBXaWxsIGJlIHNldCBsYXppbHkgdG8gYmUgYmFja3dhcmQgY29tcGF0aWJsZS4gKi9cbiAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIgPSBudWxsITtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgcmVwb3J0RXJyb3JTYWZlbHkoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9lcnJvckhhbmRsZXIgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2Vycm9ySGFuZGxlciA9IHRoaXMuX2luamVjdG9yLmdldChFcnJvckhhbmRsZXIpO1xuICAgIH1cbiAgICAvLyBUaGUgYHRyeS1jYXRjaGAgaXMgdXNlZCB0byBhdm9pZCBoYW5kbGluZyB0aGUgZXJyb3IgdHdpY2UuIFN1cHBvc2Ugd2UgY2FsbFxuICAgIC8vIGBoYW5kbGVFcnJvcmAgd2hpY2ggcmUtdGhyb3dzIHRoZSBlcnJvciBpbnRlcm5hbGx5LiBUaGUgcmUtdGhyb3duIGVycm9yIHdpbGxcbiAgICAvLyBiZSBjYXVnaHQgYnkgem9uZS5qcyB3aGljaCB3aWxsIHRoZW4gZ2V0IHRvIHRoZSBgem9uZS5vbkVycm9yLmVtaXQoKWAgYW5kIHRoZVxuICAgIC8vIGBvbkVycm9yYCBzdWJzY3JpYmVyIHdpbGwgY2FsbCBgaGFuZGxlRXJyb3JgIGFnYWluLlxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH0gY2F0Y2gge31cbiAgfVxufVxuIl19
@@ -2,8 +2,7 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { META_KEY, META_OPTIONS_KEY, NgxsSimpleChange, SELECTOR_META_KEY } from '../symbols';
6
- import { getValue } from '../utils/utils';
5
+ import { META_KEY, META_OPTIONS_KEY, SELECTOR_META_KEY } from '../symbols';
7
6
  /**
8
7
  * @record
9
8
  * @template T, U
@@ -124,17 +123,6 @@ if (false) {
124
123
  /** @type {?} */
125
124
  StatesAndDefaults.prototype.states;
126
125
  }
127
- /**
128
- * @record
129
- * @template T
130
- */
131
- export function RootStateDiff() { }
132
- if (false) {
133
- /** @type {?} */
134
- RootStateDiff.prototype.currentAppState;
135
- /** @type {?} */
136
- RootStateDiff.prototype.newAppState;
137
- }
138
126
  /**
139
127
  * Ensures metadata is attached to the class and returns it.
140
128
  *
@@ -477,17 +465,4 @@ export function topologicalSort(graph) {
477
465
  export function isObject(obj) {
478
466
  return (typeof obj === 'object' && obj !== null) || typeof obj === 'function';
479
467
  }
480
- /**
481
- * @template T
482
- * @param {?} mappedStore
483
- * @param {?} diff
484
- * @return {?}
485
- */
486
- export function getStateDiffChanges(mappedStore, diff) {
487
- /** @type {?} */
488
- const previousValue = getValue(diff.currentAppState, mappedStore.path);
489
- /** @type {?} */
490
- const currentValue = getValue(diff.newAppState, mappedStore.path);
491
- return new NgxsSimpleChange(previousValue, currentValue, !mappedStore.isInitialised);
492
- }
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvc3RvcmUvIiwic291cmNlcyI6WyJzcmMvaW50ZXJuYWwvaW50ZXJuYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBRWxCLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFHMUMsd0NBR0M7Ozs7Ozs7Ozs7O0FBS0QscUNBTUM7Ozs7O0lBTEMscURBQWM7Ozs7O0lBRWQsd0RBQW9COzs7OztJQUVwQixvRUFBeUQ7Ozs7O0FBRzNELG1DQU9DOzs7SUFOQyw2QkFBb0I7O0lBQ3BCLGdDQUFnRDs7SUFDaEQsaUNBQWM7O0lBQ2QsNkJBQW9COztJQUNwQix5Q0FBeUM7O0lBQ3pDLGlDQUFnQzs7Ozs7QUFHbEMsNENBR0M7Ozs7OztJQUZDLHFFQUE4Qzs7Ozs7SUFDOUMsa0ZBQWdGOzs7OztBQU1sRiwyQ0FHQzs7O0lBRkMscURBQStCOztJQUMvQiwrQ0FBeUI7Ozs7O0FBRzNCLDJDQU1DOzs7SUFMQyxpREFBeUM7O0lBQ3pDLDJDQUE0Qjs7SUFDNUIsK0NBQW9COztJQUNwQiw2Q0FBNEI7O0lBQzVCLG1EQUFnRDs7Ozs7QUFHbEQsaUNBT0M7OztJQU5DLDJCQUFhOztJQUNiLG9DQUF1Qjs7SUFDdkIsOEJBQWdEOztJQUNoRCwrQkFBYzs7SUFDZCwrQkFBYzs7SUFDZCwyQkFBYTs7Ozs7QUFHZix1Q0FHQzs7O0lBRkMscUNBQWM7O0lBQ2QsbUNBQXNCOzs7Ozs7QUFHeEIsbUNBR0M7OztJQUZDLHdDQUFtQjs7SUFDbkIsb0NBQWU7Ozs7Ozs7OztBQVFqQixNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBMEI7SUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7O2NBQzlCLGVB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QyxDQUFDLEVBQUMsQ0FBQztJQUUxQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMxQixDQUFDOzs7Ozs7OztBQU9ELE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBUTtJQUMvQixPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUM7QUFDaEYsQ0FBQzs7Ozs7OztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsV0FBd0IsRUFDeEIsSUFBc0I7O1VBRWhCLGFBQWEsR0FBTSxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDOztVQUNuRSxZQUFZLEdBQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNwRSxPQUFPLElBQUksZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN2RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaW5PYmplY3RPZiwgU3RhdGVDbGFzcyB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIE1FVEFfS0VZLFxuICBNRVRBX09QVElPTlNfS0VZLFxuICBOZ3hzQ29uZmlnLFxuICBOZ3hzU2ltcGxlQ2hhbmdlLFxuICBTRUxFQ1RPUl9NRVRBX0tFWSxcbiAgU3RvcmVPcHRpb25zXG59IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlck1ldGFEYXRhIH0gZnJvbSAnLi4vYWN0aW9ucy9zeW1ib2xzJztcbmltcG9ydCB7IGdldFZhbHVlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuXG4vLyBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MzY3NDM4OVxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUNsYXNzSW50ZXJuYWw8VCA9IGFueSwgVSA9IGFueT4gZXh0ZW5kcyBTdGF0ZUNsYXNzPFQ+IHtcbiAgW01FVEFfS0VZXT86IE1ldGFEYXRhTW9kZWw7XG4gIFtNRVRBX09QVElPTlNfS0VZXT86IFN0b3JlT3B0aW9uczxVPjtcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGVLZXlHcmFwaCA9IFBsYWluT2JqZWN0T2Y8c3RyaW5nW10+O1xuZXhwb3J0IHR5cGUgU3RhdGVzQnlOYW1lID0gUGxhaW5PYmplY3RPZjxTdGF0ZUNsYXNzSW50ZXJuYWw+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlT3BlcmF0aW9uczxUPiB7XG4gIGdldFN0YXRlKCk6IFQ7XG5cbiAgc2V0U3RhdGUodmFsOiBUKTogVDtcblxuICBkaXNwYXRjaChhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRhRGF0YU1vZGVsIHtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aW9uczogUGxhaW5PYmplY3RPZjxBY3Rpb25IYW5kbGVyTWV0YURhdGFbXT47XG4gIGRlZmF1bHRzOiBhbnk7XG4gIHBhdGg6IHN0cmluZyB8IG51bGw7XG4gIG1ha2VSb290U2VsZWN0b3I6IFNlbGVjdG9yRmFjdG9yeSB8IG51bGw7XG4gIGNoaWxkcmVuPzogU3RhdGVDbGFzc0ludGVybmFsW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZVNlbGVjdG9yQ29udGV4dCB7XG4gIGdldFN0YXRlR2V0dGVyKGtleTogYW55KTogKHN0YXRlOiBhbnkpID0+IGFueTtcbiAgZ2V0U2VsZWN0b3JPcHRpb25zKGxvY2FsT3B0aW9ucz86IFNoYXJlZFNlbGVjdG9yT3B0aW9ucyk6IFNoYXJlZFNlbGVjdG9yT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgU2VsZWN0RnJvbVJvb3RTdGF0ZSA9IChyb290U3RhdGU6IGFueSkgPT4gYW55O1xuZXhwb3J0IHR5cGUgU2VsZWN0b3JGYWN0b3J5ID0gKHJ1bnRpbWVDb250ZXh0OiBSdW50aW1lU2VsZWN0b3JDb250ZXh0KSA9PiBTZWxlY3RGcm9tUm9vdFN0YXRlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFNlbGVjdG9yT3B0aW9ucyB7XG4gIGluamVjdENvbnRhaW5lclN0YXRlPzogYm9vbGVhbjtcbiAgc3VwcHJlc3NFcnJvcnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdG9yTWV0YURhdGFNb2RlbCB7XG4gIG1ha2VSb290U2VsZWN0b3I6IFNlbGVjdG9yRmFjdG9yeSB8IG51bGw7XG4gIG9yaWdpbmFsRm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgY29udGFpbmVyQ2xhc3M6IGFueTtcbiAgc2VsZWN0b3JOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBnZXRTZWxlY3Rvck9wdGlvbnM6ICgpID0+IFNoYXJlZFNlbGVjdG9yT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBwZWRTdG9yZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgaXNJbml0aWFsaXNlZDogYm9vbGVhbjtcbiAgYWN0aW9uczogUGxhaW5PYmplY3RPZjxBY3Rpb25IYW5kbGVyTWV0YURhdGFbXT47XG4gIGRlZmF1bHRzOiBhbnk7XG4gIGluc3RhbmNlOiBhbnk7XG4gIHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZXNBbmREZWZhdWx0cyB7XG4gIGRlZmF1bHRzOiBhbnk7XG4gIHN0YXRlczogTWFwcGVkU3RvcmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb290U3RhdGVEaWZmPFQ+IHtcbiAgY3VycmVudEFwcFN0YXRlOiBUO1xuICBuZXdBcHBTdGF0ZTogVDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIG1ldGFkYXRhIGlzIGF0dGFjaGVkIHRvIHRoZSBjbGFzcyBhbmQgcmV0dXJucyBpdC5cbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTdG9yZU1ldGFkYXRhKHRhcmdldDogU3RhdGVDbGFzc0ludGVybmFsKTogTWV0YURhdGFNb2RlbCB7XG4gIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KE1FVEFfS0VZKSkge1xuICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YTogTWV0YURhdGFNb2RlbCA9IHtcbiAgICAgIG5hbWU6IG51bGwsXG4gICAgICBhY3Rpb25zOiB7fSxcbiAgICAgIGRlZmF1bHRzOiB7fSxcbiAgICAgIHBhdGg6IG51bGwsXG4gICAgICBtYWtlUm9vdFNlbGVjdG9yKGNvbnRleHQ6IFJ1bnRpbWVTZWxlY3RvckNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0U3RhdGVHZXR0ZXIoZGVmYXVsdE1ldGFkYXRhLm5hbWUpO1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH07XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBNRVRBX0tFWSwgeyB2YWx1ZTogZGVmYXVsdE1ldGFkYXRhIH0pO1xuICB9XG4gIHJldHVybiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBtZXRhZGF0YSBhdHRhY2hlZCB0byB0aGUgc3RhdGUgY2xhc3MgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0b3JlTWV0YWRhdGEodGFyZ2V0OiBTdGF0ZUNsYXNzSW50ZXJuYWwpOiBNZXRhRGF0YU1vZGVsIHtcbiAgcmV0dXJuIHRhcmdldFtNRVRBX0tFWV0hO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgbWV0YWRhdGEgaXMgYXR0YWNoZWQgdG8gdGhlIHNlbGVjdG9yIGFuZCByZXR1cm5zIGl0LlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVNlbGVjdG9yTWV0YWRhdGEodGFyZ2V0OiBGdW5jdGlvbik6IFNlbGVjdG9yTWV0YURhdGFNb2RlbCB7XG4gIGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KFNFTEVDVE9SX01FVEFfS0VZKSkge1xuICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YTogU2VsZWN0b3JNZXRhRGF0YU1vZGVsID0ge1xuICAgICAgbWFrZVJvb3RTZWxlY3RvcjogbnVsbCxcbiAgICAgIG9yaWdpbmFsRm46IG51bGwsXG4gICAgICBjb250YWluZXJDbGFzczogbnVsbCxcbiAgICAgIHNlbGVjdG9yTmFtZTogbnVsbCxcbiAgICAgIGdldFNlbGVjdG9yT3B0aW9uczogKCkgPT4gKHt9KVxuICAgIH07XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBTRUxFQ1RPUl9NRVRBX0tFWSwgeyB2YWx1ZTogZGVmYXVsdE1ldGFkYXRhIH0pO1xuICB9XG5cbiAgcmV0dXJuIGdldFNlbGVjdG9yTWV0YWRhdGEodGFyZ2V0KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG1ldGFkYXRhIGF0dGFjaGVkIHRvIHRoZSBzZWxlY3RvciBpZiBpdCBleGlzdHMuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0b3JNZXRhZGF0YSh0YXJnZXQ6IGFueSk6IFNlbGVjdG9yTWV0YURhdGFNb2RlbCB7XG4gIHJldHVybiB0YXJnZXRbU0VMRUNUT1JfTUVUQV9LRVldO1xufVxuXG4vKipcbiAqIEdldCBhIGRlZXBseSBuZXN0ZWQgdmFsdWUuIEV4YW1wbGU6XG4gKlxuICogICAgZ2V0VmFsdWUoeyBmb286IGJhcjogW10gfSwgJ2Zvby5iYXInKSAvLz0+IFtdXG4gKlxuICogTm90ZTogVGhpcyBpcyBub3QgYXMgZmFzdCBhcyB0aGUgYGZhc3RQcm9wR2V0dGVyYCBidXQgaXMgc3RyaWN0IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGNvbXBsaWFudC5cbiAqIFNlZSBwZXJmIGhpdDogaHR0cHM6Ly9qc3BlcmYuY29tL2Zhc3QtdmFsdWUtZ2V0dGVyLWdpdmVuLXBhdGgvMVxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gY29tcGxpYW50UHJvcEdldHRlcihwYXRoczogc3RyaW5nW10pOiAoeDogYW55KSA9PiBhbnkge1xuICBjb25zdCBjb3B5T2ZQYXRocyA9IHBhdGhzLnNsaWNlKCk7XG4gIHJldHVybiBvYmogPT4gY29weU9mUGF0aHMucmVkdWNlKChhY2M6IGFueSwgcGFydDogc3RyaW5nKSA9PiBhY2MgJiYgYWNjW3BhcnRdLCBvYmopO1xufVxuXG4vKipcbiAqIFRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gaXMgZmFzdGVyIHRoYW46XG4gKiAtIHBsdWNrIChPYnNlcnZhYmxlIG9wZXJhdG9yKVxuICogLSBtZW1vaXplXG4gKlxuICogQGlnbm9yZVxuICovXG5mdW5jdGlvbiBmYXN0UHJvcEdldHRlcihwYXRoczogc3RyaW5nW10pOiAoeDogYW55KSA9PiBhbnkge1xuICBjb25zdCBzZWdtZW50cyA9IHBhdGhzO1xuICBsZXQgc2VnID0gJ3N0b3JlLicgKyBzZWdtZW50c1swXTtcbiAgbGV0IGkgPSAwO1xuICBjb25zdCBsID0gc2VnbWVudHMubGVuZ3RoO1xuXG4gIGxldCBleHByID0gc2VnO1xuICB3aGlsZSAoKytpIDwgbCkge1xuICAgIGV4cHIgPSBleHByICsgJyAmJiAnICsgKHNlZyA9IHNlZyArICcuJyArIHNlZ21lbnRzW2ldKTtcbiAgfVxuXG4gIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKCdzdG9yZScsICdyZXR1cm4gJyArIGV4cHIgKyAnOycpO1xuXG4gIHJldHVybiA8KHg6IGFueSkgPT4gYW55PmZuO1xufVxuXG4vKipcbiAqIEdldCBhIGRlZXBseSBuZXN0ZWQgdmFsdWUuIEV4YW1wbGU6XG4gKlxuICogICAgZ2V0VmFsdWUoeyBmb286IGJhcjogW10gfSwgJ2Zvby5iYXInKSAvLz0+IFtdXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcEdldHRlcihwYXRoczogc3RyaW5nW10sIGNvbmZpZzogTmd4c0NvbmZpZykge1xuICBpZiAoY29uZmlnICYmIGNvbmZpZy5jb21wYXRpYmlsaXR5ICYmIGNvbmZpZy5jb21wYXRpYmlsaXR5LnN0cmljdENvbnRlbnRTZWN1cml0eVBvbGljeSkge1xuICAgIHJldHVybiBjb21wbGlhbnRQcm9wR2V0dGVyKHBhdGhzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFzdFByb3BHZXR0ZXIocGF0aHMpO1xuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2Ygc3RhdGVzLCBpdCB3aWxsIHJldHVybiBhIG9iamVjdCBncmFwaC4gRXhhbXBsZTpcbiAqICAgIGNvbnN0IHN0YXRlcyA9IFtcbiAqICAgICAgQ2FydCxcbiAqICAgICAgQ2FydFNhdmVkLFxuICogICAgICBDYXJ0U2F2ZWRJdGVtc1xuICogICAgXVxuICpcbiAqIHdvdWxkIHJldHVybjpcbiAqXG4gKiAgY29uc3QgZ3JhcGggPSB7XG4gKiAgICBjYXJ0OiBbJ3NhdmVkJ10sXG4gKiAgICBzYXZlZDogWydpdGVtcyddLFxuICogICAgaXRlbXM6IFtdXG4gKiAgfTtcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyYXBoKHN0YXRlQ2xhc3NlczogU3RhdGVDbGFzc0ludGVybmFsW10pOiBTdGF0ZUtleUdyYXBoIHtcbiAgY29uc3QgZmluZE5hbWUgPSAoc3RhdGVDbGFzczogU3RhdGVDbGFzc0ludGVybmFsKSA9PiB7XG4gICAgY29uc3QgbWV0YSA9IHN0YXRlQ2xhc3Nlcy5maW5kKGcgPT4gZyA9PT0gc3RhdGVDbGFzcyk7XG5cbiAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAvLyBjcmVhdGluZyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgcHJvamVjdHMgdGhhdCBzdGlsbCB1c2UgdGhlIFZpZXcgRW5naW5lLlxuICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiAhbWV0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2hpbGQgc3RhdGUgbm90IGZvdW5kOiAke3N0YXRlQ2xhc3N9LiBcXHJcXG5Zb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGFkZCBzdGF0ZXMgdG8gbW9kdWxlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YSFbTUVUQV9LRVldIS5uYW1lITtcbiAgfTtcblxuICByZXR1cm4gc3RhdGVDbGFzc2VzLnJlZHVjZTxTdGF0ZUtleUdyYXBoPihcbiAgICAocmVzdWx0OiBTdGF0ZUtleUdyYXBoLCBzdGF0ZUNsYXNzOiBTdGF0ZUNsYXNzSW50ZXJuYWwpID0+IHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgY2hpbGRyZW4gfSA9IHN0YXRlQ2xhc3NbTUVUQV9LRVldITtcbiAgICAgIHJlc3VsdFtuYW1lIV0gPSAoY2hpbGRyZW4gfHwgW10pLm1hcChmaW5kTmFtZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAge31cbiAgKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIHN0YXRlcyBhcnJheSwgcmV0dXJucyBvYmplY3QgZ3JhcGhcbiAqIHJldHVybmluZyB0aGUgbmFtZSBhbmQgc3RhdGUgbWV0YWRhdGEuIEV4YW1wbGU6XG4gKlxuICogIGNvbnN0IGdyYXBoID0ge1xuICogICAgY2FydDogeyBtZXRhZGF0YSB9XG4gKiAgfTtcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lVG9TdGF0ZShzdGF0ZXM6IFN0YXRlQ2xhc3NJbnRlcm5hbFtdKTogUGxhaW5PYmplY3RPZjxTdGF0ZUNsYXNzSW50ZXJuYWw+IHtcbiAgcmV0dXJuIHN0YXRlcy5yZWR1Y2U8UGxhaW5PYmplY3RPZjxTdGF0ZUNsYXNzSW50ZXJuYWw+PihcbiAgICAocmVzdWx0OiBQbGFpbk9iamVjdE9mPFN0YXRlQ2xhc3NJbnRlcm5hbD4sIHN0YXRlQ2xhc3M6IFN0YXRlQ2xhc3NJbnRlcm5hbCkgPT4ge1xuICAgICAgY29uc3QgbWV0YSA9IHN0YXRlQ2xhc3NbTUVUQV9LRVldITtcbiAgICAgIHJlc3VsdFttZXRhLm5hbWUhXSA9IHN0YXRlQ2xhc3M7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAge31cbiAgKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIG9iamVjdCByZWxhdGlvbnNoaXAgZ3JhcGggd2lsbCByZXR1cm4gdGhlIGZ1bGwgcGF0aFxuICogZm9yIHRoZSBjaGlsZCBpdGVtcy4gRXhhbXBsZTpcbiAqXG4gKiAgY29uc3QgZ3JhcGggPSB7XG4gKiAgICBjYXJ0OiBbJ3NhdmVkJ10sXG4gKiAgICBzYXZlZDogWydpdGVtcyddLFxuICogICAgaXRlbXM6IFtdXG4gKiAgfTtcbiAqXG4gKiB3b3VsZCByZXR1cm46XG4gKlxuICogIGNvbnN0IHIgPSB7XG4gKiAgICBjYXJ0OiAnY2FydCcsXG4gKiAgICBzYXZlZDogJ2NhcnQuc2F2ZWQnLFxuICogICAgaXRlbXM6ICdjYXJ0LnNhdmVkLml0ZW1zJ1xuICogIH07XG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEZ1bGxQYXJlbnRQYXRoKFxuICBvYmo6IFN0YXRlS2V5R3JhcGgsXG4gIG5ld09iajogUGxhaW5PYmplY3RPZjxzdHJpbmc+ID0ge31cbik6IFBsYWluT2JqZWN0T2Y8c3RyaW5nPiB7XG4gIGNvbnN0IHZpc2l0ID0gKGNoaWxkOiBTdGF0ZUtleUdyYXBoLCBrZXlUb0ZpbmQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBjaGlsZFtrZXldLmluZGV4T2Yoa2V5VG9GaW5kKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHZpc2l0KGNoaWxkLCBrZXkpO1xuICAgICAgICByZXR1cm4gcGFyZW50ICE9PSBudWxsID8gYCR7cGFyZW50fS4ke2tleX1gIDoga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHZpc2l0KG9iaiwga2V5KTtcbiAgICAgIG5ld09ialtrZXldID0gcGFyZW50ID8gYCR7cGFyZW50fS4ke2tleX1gIDoga2V5O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdPYmo7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBvYmplY3QgZ3JhcGgsIGl0IHdpbGwgcmV0dXJuIHRoZSBpdGVtcyB0b3BvbG9naWNhbGx5IHNvcnRlZCBFeGFtcGxlOlxuICpcbiAqICBjb25zdCBncmFwaCA9IHtcbiAqICAgIGNhcnQ6IFsnc2F2ZWQnXSxcbiAqICAgIHNhdmVkOiBbJ2l0ZW1zJ10sXG4gKiAgICBpdGVtczogW11cbiAqICB9O1xuICpcbiAqIHdvdWxkIHJldHVybjpcbiAqXG4gKiAgY29uc3QgcmVzdWx0cyA9IFtcbiAqICAgICdpdGVtcycsXG4gKiAgICAnc2F2ZWQnLFxuICogICAgJ2NhcnQnXG4gKiAgXTtcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b3BvbG9naWNhbFNvcnQoZ3JhcGg6IFN0YXRlS2V5R3JhcGgpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHNvcnRlZDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgdmlzaXRlZDogUGxhaW5PYmplY3RPZjxib29sZWFuPiA9IHt9O1xuXG4gIGNvbnN0IHZpc2l0ID0gKG5hbWU6IHN0cmluZywgYW5jZXN0b3JzOiBzdHJpbmdbXSA9IFtdKSA9PiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFuY2VzdG9ycykpIHtcbiAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgIH1cblxuICAgIGFuY2VzdG9ycy5wdXNoKG5hbWUpO1xuICAgIHZpc2l0ZWRbbmFtZV0gPSB0cnVlO1xuXG4gICAgZ3JhcGhbbmFtZV0uZm9yRWFjaCgoZGVwOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIENhcmV0YWtlciBub3RlOiB3ZSBoYXZlIHN0aWxsIGxlZnQgdGhlIGB0eXBlb2ZgIGNvbmRpdGlvbiBpbiBvcmRlciB0byBhdm9pZFxuICAgICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cbiAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiBhbmNlc3RvcnMuaW5kZXhPZihkZXApID49IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDaXJjdWxhciBkZXBlbmRlbmN5ICcke2RlcH0nIGlzIHJlcXVpcmVkIGJ5ICcke25hbWV9JzogJHthbmNlc3RvcnMuam9pbignIC0+ICcpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZpc2l0ZWRbZGVwXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZpc2l0KGRlcCwgYW5jZXN0b3JzLnNsaWNlKDApKTtcbiAgICB9KTtcblxuICAgIGlmIChzb3J0ZWQuaW5kZXhPZihuYW1lKSA8IDApIHtcbiAgICAgIHNvcnRlZC5wdXNoKG5hbWUpO1xuICAgIH1cbiAgfTtcblxuICBPYmplY3Qua2V5cyhncmFwaCkuZm9yRWFjaChrID0+IHZpc2l0KGspKTtcblxuICByZXR1cm4gc29ydGVkLnJldmVyc2UoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGlmIHRoZSBwYXJhbWV0ZXIgaXMgYSBvYmplY3Qgb3Igbm90LlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KG9iajogYW55KSB7XG4gIHJldHVybiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGVEaWZmQ2hhbmdlczxUPihcbiAgbWFwcGVkU3RvcmU6IE1hcHBlZFN0b3JlLFxuICBkaWZmOiBSb290U3RhdGVEaWZmPFQ+XG4pOiBOZ3hzU2ltcGxlQ2hhbmdlIHtcbiAgY29uc3QgcHJldmlvdXNWYWx1ZTogVCA9IGdldFZhbHVlKGRpZmYuY3VycmVudEFwcFN0YXRlLCBtYXBwZWRTdG9yZS5wYXRoKTtcbiAgY29uc3QgY3VycmVudFZhbHVlOiBUID0gZ2V0VmFsdWUoZGlmZi5uZXdBcHBTdGF0ZSwgbWFwcGVkU3RvcmUucGF0aCk7XG4gIHJldHVybiBuZXcgTmd4c1NpbXBsZUNoYW5nZShwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUsICFtYXBwZWRTdG9yZS5pc0luaXRpYWxpc2VkKTtcbn1cbiJdfQ==
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvc3RvcmUvIiwic291cmNlcyI6WyJzcmMvaW50ZXJuYWwvaW50ZXJuYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLGdCQUFnQixFQUVoQixpQkFBaUIsRUFFbEIsTUFBTSxZQUFZLENBQUM7Ozs7O0FBSXBCLHdDQUdDOzs7Ozs7Ozs7OztBQUtELHFDQU1DOzs7OztJQUxDLHFEQUFjOzs7OztJQUVkLHdEQUFvQjs7Ozs7SUFFcEIsb0VBQXlEOzs7OztBQUczRCxtQ0FPQzs7O0lBTkMsNkJBQW9COztJQUNwQixnQ0FBZ0Q7O0lBQ2hELGlDQUFjOztJQUNkLDZCQUFvQjs7SUFDcEIseUNBQXlDOztJQUN6QyxpQ0FBZ0M7Ozs7O0FBR2xDLDRDQUdDOzs7Ozs7SUFGQyxxRUFBOEM7Ozs7O0lBQzlDLGtGQUFnRjs7Ozs7QUFNbEYsMkNBR0M7OztJQUZDLHFEQUErQjs7SUFDL0IsK0NBQXlCOzs7OztBQUczQiwyQ0FNQzs7O0lBTEMsaURBQXlDOztJQUN6QywyQ0FBNEI7O0lBQzVCLCtDQUFvQjs7SUFDcEIsNkNBQTRCOztJQUM1QixtREFBZ0Q7Ozs7O0FBR2xELGlDQU9DOzs7SUFOQywyQkFBYTs7SUFDYixvQ0FBdUI7O0lBQ3ZCLDhCQUFnRDs7SUFDaEQsK0JBQWM7O0lBQ2QsK0JBQWM7O0lBQ2QsMkJBQWE7Ozs7O0FBR2YsdUNBR0M7OztJQUZDLHFDQUFjOztJQUNkLG1DQUFzQjs7Ozs7Ozs7O0FBUXhCLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUEwQjtJQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTs7Y0FDOUIsZUFBZSxHQUFrQjtZQUNyQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFLEVBQUU7WUFDWixJQUFJLEVBQUUsSUFBSTs7Ozs7WUFDVixn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O0lBQy9CLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaW5PYmplY3RPZiwgU3RhdGVDbGFzcyB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIE1FVEFfS0VZLFxuICBNRVRBX09QVElPTlNfS0VZLFxuICBOZ3hzQ29uZmlnLFxuICBTRUxFQ1RPUl9NRVRBX0tFWSxcbiAgU3RvcmVPcHRpb25zXG59IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgQWN0aW9uSGFuZGxlck1ldGFEYXRhIH0gZnJvbSAnLi4vYWN0aW9ucy9zeW1ib2xzJztcblxuLy8gaW5zcGlyZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDM2NzQzODlcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVDbGFzc0ludGVybmFsPFQgPSBhbnksIFUgPSBhbnk+IGV4dGVuZHMgU3RhdGVDbGFzczxUPiB7XG4gIFtNRVRBX0tFWV0/OiBNZXRhRGF0YU1vZGVsO1xuICBbTUVUQV9PUFRJT05TX0tFWV0/OiBTdG9yZU9wdGlvbnM8VT47XG59XG5cbmV4cG9ydCB0eXBlIFN0YXRlS2V5R3JhcGggPSBQbGFpbk9iamVjdE9mPHN0cmluZ1tdPjtcbmV4cG9ydCB0eXBlIFN0YXRlc0J5TmFtZSA9IFBsYWluT2JqZWN0T2Y8U3RhdGVDbGFzc0ludGVybmFsPjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZU9wZXJhdGlvbnM8VD4ge1xuICBnZXRTdGF0ZSgpOiBUO1xuXG4gIHNldFN0YXRlKHZhbDogVCk6IFQ7XG5cbiAgZGlzcGF0Y2goYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YURhdGFNb2RlbCB7XG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGFjdGlvbnM6IFBsYWluT2JqZWN0T2Y8QWN0aW9uSGFuZGxlck1ldGFEYXRhW10+O1xuICBkZWZhdWx0czogYW55O1xuICBwYXRoOiBzdHJpbmcgfCBudWxsO1xuICBtYWtlUm9vdFNlbGVjdG9yOiBTZWxlY3RvckZhY3RvcnkgfCBudWxsO1xuICBjaGlsZHJlbj86IFN0YXRlQ2xhc3NJbnRlcm5hbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVTZWxlY3RvckNvbnRleHQge1xuICBnZXRTdGF0ZUdldHRlcihrZXk6IGFueSk6IChzdGF0ZTogYW55KSA9PiBhbnk7XG4gIGdldFNlbGVjdG9yT3B0aW9ucyhsb2NhbE9wdGlvbnM/OiBTaGFyZWRTZWxlY3Rvck9wdGlvbnMpOiBTaGFyZWRTZWxlY3Rvck9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZyb21Sb290U3RhdGUgPSAocm9vdFN0YXRlOiBhbnkpID0+IGFueTtcbmV4cG9ydCB0eXBlIFNlbGVjdG9yRmFjdG9yeSA9IChydW50aW1lQ29udGV4dDogUnVudGltZVNlbGVjdG9yQ29udGV4dCkgPT4gU2VsZWN0RnJvbVJvb3RTdGF0ZTtcblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTZWxlY3Rvck9wdGlvbnMge1xuICBpbmplY3RDb250YWluZXJTdGF0ZT86IGJvb2xlYW47XG4gIHN1cHByZXNzRXJyb3JzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rvck1ldGFEYXRhTW9kZWwge1xuICBtYWtlUm9vdFNlbGVjdG9yOiBTZWxlY3RvckZhY3RvcnkgfCBudWxsO1xuICBvcmlnaW5hbEZuOiBGdW5jdGlvbiB8IG51bGw7XG4gIGNvbnRhaW5lckNsYXNzOiBhbnk7XG4gIHNlbGVjdG9yTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgZ2V0U2VsZWN0b3JPcHRpb25zOiAoKSA9PiBTaGFyZWRTZWxlY3Rvck9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwcGVkU3RvcmUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlzSW5pdGlhbGlzZWQ6IGJvb2xlYW47XG4gIGFjdGlvbnM6IFBsYWluT2JqZWN0T2Y8QWN0aW9uSGFuZGxlck1ldGFEYXRhW10+O1xuICBkZWZhdWx0czogYW55O1xuICBpbnN0YW5jZTogYW55O1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVzQW5kRGVmYXVsdHMge1xuICBkZWZhdWx0czogYW55O1xuICBzdGF0ZXM6IE1hcHBlZFN0b3JlW107XG59XG5cbi8qKlxuICogRW5zdXJlcyBtZXRhZGF0YSBpcyBhdHRhY2hlZCB0byB0aGUgY2xhc3MgYW5kIHJldHVybnMgaXQuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RvcmVNZXRhZGF0YSh0YXJnZXQ6IFN0YXRlQ2xhc3NJbnRlcm5hbCk6IE1ldGFEYXRhTW9kZWwge1xuICBpZiAoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShNRVRBX0tFWSkpIHtcbiAgICBjb25zdCBkZWZhdWx0TWV0YWRhdGE6IE1ldGFEYXRhTW9kZWwgPSB7XG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgYWN0aW9uczoge30sXG4gICAgICBkZWZhdWx0czoge30sXG4gICAgICBwYXRoOiBudWxsLFxuICAgICAgbWFrZVJvb3RTZWxlY3Rvcihjb250ZXh0OiBSdW50aW1lU2VsZWN0b3JDb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0LmdldFN0YXRlR2V0dGVyKGRlZmF1bHRNZXRhZGF0YS5uYW1lKTtcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgTUVUQV9LRVksIHsgdmFsdWU6IGRlZmF1bHRNZXRhZGF0YSB9KTtcbiAgfVxuICByZXR1cm4gZ2V0U3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhlIHN0YXRlIGNsYXNzIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldDogU3RhdGVDbGFzc0ludGVybmFsKTogTWV0YURhdGFNb2RlbCB7XG4gIHJldHVybiB0YXJnZXRbTUVUQV9LRVldITtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIG1ldGFkYXRhIGlzIGF0dGFjaGVkIHRvIHRoZSBzZWxlY3RvciBhbmQgcmV0dXJucyBpdC5cbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTZWxlY3Rvck1ldGFkYXRhKHRhcmdldDogRnVuY3Rpb24pOiBTZWxlY3Rvck1ldGFEYXRhTW9kZWwge1xuICBpZiAoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShTRUxFQ1RPUl9NRVRBX0tFWSkpIHtcbiAgICBjb25zdCBkZWZhdWx0TWV0YWRhdGE6IFNlbGVjdG9yTWV0YURhdGFNb2RlbCA9IHtcbiAgICAgIG1ha2VSb290U2VsZWN0b3I6IG51bGwsXG4gICAgICBvcmlnaW5hbEZuOiBudWxsLFxuICAgICAgY29udGFpbmVyQ2xhc3M6IG51bGwsXG4gICAgICBzZWxlY3Rvck5hbWU6IG51bGwsXG4gICAgICBnZXRTZWxlY3Rvck9wdGlvbnM6ICgpID0+ICh7fSlcbiAgICB9O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgU0VMRUNUT1JfTUVUQV9LRVksIHsgdmFsdWU6IGRlZmF1bHRNZXRhZGF0YSB9KTtcbiAgfVxuXG4gIHJldHVybiBnZXRTZWxlY3Rvck1ldGFkYXRhKHRhcmdldCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBtZXRhZGF0YSBhdHRhY2hlZCB0byB0aGUgc2VsZWN0b3IgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdG9yTWV0YWRhdGEodGFyZ2V0OiBhbnkpOiBTZWxlY3Rvck1ldGFEYXRhTW9kZWwge1xuICByZXR1cm4gdGFyZ2V0W1NFTEVDVE9SX01FVEFfS0VZXTtcbn1cblxuLyoqXG4gKiBHZXQgYSBkZWVwbHkgbmVzdGVkIHZhbHVlLiBFeGFtcGxlOlxuICpcbiAqICAgIGdldFZhbHVlKHsgZm9vOiBiYXI6IFtdIH0sICdmb28uYmFyJykgLy89PiBbXVxuICpcbiAqIE5vdGU6IFRoaXMgaXMgbm90IGFzIGZhc3QgYXMgdGhlIGBmYXN0UHJvcEdldHRlcmAgYnV0IGlzIHN0cmljdCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb21wbGlhbnQuXG4gKiBTZWUgcGVyZiBoaXQ6IGh0dHBzOi8vanNwZXJmLmNvbS9mYXN0LXZhbHVlLWdldHRlci1naXZlbi1wYXRoLzFcbiAqXG4gKiBAaWdub3JlXG4gKi9cbmZ1bmN0aW9uIGNvbXBsaWFudFByb3BHZXR0ZXIocGF0aHM6IHN0cmluZ1tdKTogKHg6IGFueSkgPT4gYW55IHtcbiAgY29uc3QgY29weU9mUGF0aHMgPSBwYXRocy5zbGljZSgpO1xuICByZXR1cm4gb2JqID0+IGNvcHlPZlBhdGhzLnJlZHVjZSgoYWNjOiBhbnksIHBhcnQ6IHN0cmluZykgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2VuZXJhdGVkIGZ1bmN0aW9uIGlzIGZhc3RlciB0aGFuOlxuICogLSBwbHVjayAoT2JzZXJ2YWJsZSBvcGVyYXRvcilcbiAqIC0gbWVtb2l6ZVxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gZmFzdFByb3BHZXR0ZXIocGF0aHM6IHN0cmluZ1tdKTogKHg6IGFueSkgPT4gYW55IHtcbiAgY29uc3Qgc2VnbWVudHMgPSBwYXRocztcbiAgbGV0IHNlZyA9ICdzdG9yZS4nICsgc2VnbWVudHNbMF07XG4gIGxldCBpID0gMDtcbiAgY29uc3QgbCA9IHNlZ21lbnRzLmxlbmd0aDtcblxuICBsZXQgZXhwciA9IHNlZztcbiAgd2hpbGUgKCsraSA8IGwpIHtcbiAgICBleHByID0gZXhwciArICcgJiYgJyArIChzZWcgPSBzZWcgKyAnLicgKyBzZWdtZW50c1tpXSk7XG4gIH1cblxuICBjb25zdCBmbiA9IG5ldyBGdW5jdGlvbignc3RvcmUnLCAncmV0dXJuICcgKyBleHByICsgJzsnKTtcblxuICByZXR1cm4gPCh4OiBhbnkpID0+IGFueT5mbjtcbn1cblxuLyoqXG4gKiBHZXQgYSBkZWVwbHkgbmVzdGVkIHZhbHVlLiBFeGFtcGxlOlxuICpcbiAqICAgIGdldFZhbHVlKHsgZm9vOiBiYXI6IFtdIH0sICdmb28uYmFyJykgLy89PiBbXVxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BHZXR0ZXIocGF0aHM6IHN0cmluZ1tdLCBjb25maWc6IE5neHNDb25maWcpIHtcbiAgaWYgKGNvbmZpZyAmJiBjb25maWcuY29tcGF0aWJpbGl0eSAmJiBjb25maWcuY29tcGF0aWJpbGl0eS5zdHJpY3RDb250ZW50U2VjdXJpdHlQb2xpY3kpIHtcbiAgICByZXR1cm4gY29tcGxpYW50UHJvcEdldHRlcihwYXRocyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhc3RQcm9wR2V0dGVyKHBhdGhzKTtcbiAgfVxufVxuXG4vKipcbiAqIEdpdmVuIGFuIGFycmF5IG9mIHN0YXRlcywgaXQgd2lsbCByZXR1cm4gYSBvYmplY3QgZ3JhcGguIEV4YW1wbGU6XG4gKiAgICBjb25zdCBzdGF0ZXMgPSBbXG4gKiAgICAgIENhcnQsXG4gKiAgICAgIENhcnRTYXZlZCxcbiAqICAgICAgQ2FydFNhdmVkSXRlbXNcbiAqICAgIF1cbiAqXG4gKiB3b3VsZCByZXR1cm46XG4gKlxuICogIGNvbnN0IGdyYXBoID0ge1xuICogICAgY2FydDogWydzYXZlZCddLFxuICogICAgc2F2ZWQ6IFsnaXRlbXMnXSxcbiAqICAgIGl0ZW1zOiBbXVxuICogIH07XG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRHcmFwaChzdGF0ZUNsYXNzZXM6IFN0YXRlQ2xhc3NJbnRlcm5hbFtdKTogU3RhdGVLZXlHcmFwaCB7XG4gIGNvbnN0IGZpbmROYW1lID0gKHN0YXRlQ2xhc3M6IFN0YXRlQ2xhc3NJbnRlcm5hbCkgPT4ge1xuICAgIGNvbnN0IG1ldGEgPSBzdGF0ZUNsYXNzZXMuZmluZChnID0+IGcgPT09IHN0YXRlQ2xhc3MpO1xuXG4gICAgLy8gQ2FyZXRha2VyIG5vdGU6IHdlIGhhdmUgc3RpbGwgbGVmdCB0aGUgYHR5cGVvZmAgY29uZGl0aW9uIGluIG9yZGVyIHRvIGF2b2lkXG4gICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cbiAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgIW1ldGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENoaWxkIHN0YXRlIG5vdCBmb3VuZDogJHtzdGF0ZUNsYXNzfS4gXFxyXFxuWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBhZGQgc3RhdGVzIHRvIG1vZHVsZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGEhW01FVEFfS0VZXSEubmFtZSE7XG4gIH07XG5cbiAgcmV0dXJuIHN0YXRlQ2xhc3Nlcy5yZWR1Y2U8U3RhdGVLZXlHcmFwaD4oXG4gICAgKHJlc3VsdDogU3RhdGVLZXlHcmFwaCwgc3RhdGVDbGFzczogU3RhdGVDbGFzc0ludGVybmFsKSA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIGNoaWxkcmVuIH0gPSBzdGF0ZUNsYXNzW01FVEFfS0VZXSE7XG4gICAgICByZXN1bHRbbmFtZSFdID0gKGNoaWxkcmVuIHx8IFtdKS5tYXAoZmluZE5hbWUpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBzdGF0ZXMgYXJyYXksIHJldHVybnMgb2JqZWN0IGdyYXBoXG4gKiByZXR1cm5pbmcgdGhlIG5hbWUgYW5kIHN0YXRlIG1ldGFkYXRhLiBFeGFtcGxlOlxuICpcbiAqICBjb25zdCBncmFwaCA9IHtcbiAqICAgIGNhcnQ6IHsgbWV0YWRhdGEgfVxuICogIH07XG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvU3RhdGUoc3RhdGVzOiBTdGF0ZUNsYXNzSW50ZXJuYWxbXSk6IFBsYWluT2JqZWN0T2Y8U3RhdGVDbGFzc0ludGVybmFsPiB7XG4gIHJldHVybiBzdGF0ZXMucmVkdWNlPFBsYWluT2JqZWN0T2Y8U3RhdGVDbGFzc0ludGVybmFsPj4oXG4gICAgKHJlc3VsdDogUGxhaW5PYmplY3RPZjxTdGF0ZUNsYXNzSW50ZXJuYWw+LCBzdGF0ZUNsYXNzOiBTdGF0ZUNsYXNzSW50ZXJuYWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGEgPSBzdGF0ZUNsYXNzW01FVEFfS0VZXSE7XG4gICAgICByZXN1bHRbbWV0YS5uYW1lIV0gPSBzdGF0ZUNsYXNzO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBvYmplY3QgcmVsYXRpb25zaGlwIGdyYXBoIHdpbGwgcmV0dXJuIHRoZSBmdWxsIHBhdGhcbiAqIGZvciB0aGUgY2hpbGQgaXRlbXMuIEV4YW1wbGU6XG4gKlxuICogIGNvbnN0IGdyYXBoID0ge1xuICogICAgY2FydDogWydzYXZlZCddLFxuICogICAgc2F2ZWQ6IFsnaXRlbXMnXSxcbiAqICAgIGl0ZW1zOiBbXVxuICogIH07XG4gKlxuICogd291bGQgcmV0dXJuOlxuICpcbiAqICBjb25zdCByID0ge1xuICogICAgY2FydDogJ2NhcnQnLFxuICogICAgc2F2ZWQ6ICdjYXJ0LnNhdmVkJyxcbiAqICAgIGl0ZW1zOiAnY2FydC5zYXZlZC5pdGVtcydcbiAqICB9O1xuICpcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGdWxsUGFyZW50UGF0aChcbiAgb2JqOiBTdGF0ZUtleUdyYXBoLFxuICBuZXdPYmo6IFBsYWluT2JqZWN0T2Y8c3RyaW5nPiA9IHt9XG4pOiBQbGFpbk9iamVjdE9mPHN0cmluZz4ge1xuICBjb25zdCB2aXNpdCA9IChjaGlsZDogU3RhdGVLZXlHcmFwaCwga2V5VG9GaW5kOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLmhhc093blByb3BlcnR5KGtleSkgJiYgY2hpbGRba2V5XS5pbmRleE9mKGtleVRvRmluZCkgPj0gMCkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB2aXNpdChjaGlsZCwga2V5KTtcbiAgICAgICAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IGAke3BhcmVudH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB2aXNpdChvYmosIGtleSk7XG4gICAgICBuZXdPYmpba2V5XSA9IHBhcmVudCA/IGAke3BhcmVudH0uJHtrZXl9YCA6IGtleTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3T2JqO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgb2JqZWN0IGdyYXBoLCBpdCB3aWxsIHJldHVybiB0aGUgaXRlbXMgdG9wb2xvZ2ljYWxseSBzb3J0ZWQgRXhhbXBsZTpcbiAqXG4gKiAgY29uc3QgZ3JhcGggPSB7XG4gKiAgICBjYXJ0OiBbJ3NhdmVkJ10sXG4gKiAgICBzYXZlZDogWydpdGVtcyddLFxuICogICAgaXRlbXM6IFtdXG4gKiAgfTtcbiAqXG4gKiB3b3VsZCByZXR1cm46XG4gKlxuICogIGNvbnN0IHJlc3VsdHMgPSBbXG4gKiAgICAnaXRlbXMnLFxuICogICAgJ3NhdmVkJyxcbiAqICAgICdjYXJ0J1xuICogIF07XG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9wb2xvZ2ljYWxTb3J0KGdyYXBoOiBTdGF0ZUtleUdyYXBoKTogc3RyaW5nW10ge1xuICBjb25zdCBzb3J0ZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQ6IFBsYWluT2JqZWN0T2Y8Ym9vbGVhbj4gPSB7fTtcblxuICBjb25zdCB2aXNpdCA9IChuYW1lOiBzdHJpbmcsIGFuY2VzdG9yczogc3RyaW5nW10gPSBbXSkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhbmNlc3RvcnMpKSB7XG4gICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICB9XG5cbiAgICBhbmNlc3RvcnMucHVzaChuYW1lKTtcbiAgICB2aXNpdGVkW25hbWVdID0gdHJ1ZTtcblxuICAgIGdyYXBoW25hbWVdLmZvckVhY2goKGRlcDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAgIC8vIGNyZWF0aW5nIGEgYnJlYWtpbmcgY2hhbmdlIGZvciBwcm9qZWN0cyB0aGF0IHN0aWxsIHVzZSB0aGUgVmlldyBFbmdpbmUuXG4gICAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgYW5jZXN0b3JzLmluZGV4T2YoZGVwKSA+PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2lyY3VsYXIgZGVwZW5kZW5jeSAnJHtkZXB9JyBpcyByZXF1aXJlZCBieSAnJHtuYW1lfSc6ICR7YW5jZXN0b3JzLmpvaW4oJyAtPiAnKX1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2aXNpdGVkW2RlcF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2aXNpdChkZXAsIGFuY2VzdG9ycy5zbGljZSgwKSk7XG4gICAgfSk7XG5cbiAgICBpZiAoc29ydGVkLmluZGV4T2YobmFtZSkgPCAwKSB7XG4gICAgICBzb3J0ZWQucHVzaChuYW1lKTtcbiAgICB9XG4gIH07XG5cbiAgT2JqZWN0LmtleXMoZ3JhcGgpLmZvckVhY2goayA9PiB2aXNpdChrKSk7XG5cbiAgcmV0dXJuIHNvcnRlZC5yZXZlcnNlKCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBpZiB0aGUgcGFyYW1ldGVyIGlzIGEgb2JqZWN0IG9yIG5vdC5cbiAqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChvYmo6IGFueSkge1xuICByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkgfHwgdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJztcbn1cbiJdfQ==