@angular/core 18.1.0-next.1 → 18.1.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/rxjs-interop/src/to_signal.mjs +7 -3
- package/esm2022/src/authoring/model/model_signal.mjs +2 -3
- package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
- package/esm2022/src/core.mjs +1 -1
- package/esm2022/src/core_render3_private_export.mjs +2 -2
- package/esm2022/src/defer/instructions.mjs +2 -10
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/event_emitter.mjs +20 -11
- package/esm2022/src/hydration/event_replay.mjs +32 -14
- package/esm2022/src/linker/component_factory.mjs +1 -1
- package/esm2022/src/pending_tasks.mjs +15 -20
- package/esm2022/src/render3/after_render_hooks.mjs +67 -132
- package/esm2022/src/render3/chained_injector.mjs +34 -0
- package/esm2022/src/render3/component.mjs +1 -1
- package/esm2022/src/render3/component_ref.mjs +23 -35
- package/esm2022/src/render3/index.mjs +2 -2
- package/esm2022/src/render3/instructions/all.mjs +2 -1
- package/esm2022/src/render3/instructions/change_detection.mjs +27 -24
- package/esm2022/src/render3/instructions/let_declaration.mjs +39 -0
- package/esm2022/src/render3/jit/environment.mjs +4 -1
- package/esm2022/src/render3/reactive_lview_consumer.mjs +56 -3
- package/esm2022/src/render3/util/injector_discovery_utils.mjs +14 -5
- package/esm2022/src/render3/util/injector_utils.mjs +10 -1
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/logger.mjs +3 -3
- package/fesm2022/core.mjs +500 -424
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +7 -3
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/index.d.ts +246 -32
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +13 -6
- package/schematics/migrations/after-render-phase/bundle.js +623 -0
- package/schematics/migrations/after-render-phase/bundle.js.map +7 -0
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +265 -61
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +4 -4
- package/schematics/migrations.json +5 -0
- package/schematics/ng-generate/control-flow-migration/bundle.js +272 -61
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +4 -4
- package/schematics/ng-generate/standalone-migration/bundle.js +320 -727
- package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
- package/testing/index.d.ts +1 -1
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
-
import { consumerAfterComputation, consumerBeforeComputation, consumerPollProducersForChange, } from '@angular/core/primitives/signals';
|
|
8
|
+
import { consumerAfterComputation, consumerBeforeComputation, consumerDestroy, consumerPollProducersForChange, getActiveConsumer, } from '@angular/core/primitives/signals';
|
|
9
9
|
import { RuntimeError } from '../../errors';
|
|
10
10
|
import { assertDefined, assertEqual } from '../../util/assert';
|
|
11
11
|
import { executeCheckHooks, executeInitAndCheckHooks, incrementInitPhaseFlags } from '../hooks';
|
|
12
12
|
import { CONTAINER_HEADER_OFFSET, LContainerFlags, MOVED_VIEWS } from '../interfaces/container';
|
|
13
13
|
import { CONTEXT, EFFECTS_TO_SCHEDULE, ENVIRONMENT, FLAGS, REACTIVE_TEMPLATE_CONSUMER, TVIEW, } from '../interfaces/view';
|
|
14
|
-
import { getOrBorrowReactiveLViewConsumer, maybeReturnReactiveLViewConsumer, } from '../reactive_lview_consumer';
|
|
14
|
+
import { getOrCreateTemporaryConsumer, getOrBorrowReactiveLViewConsumer, maybeReturnReactiveLViewConsumer, viewShouldHaveReactiveConsumer, } from '../reactive_lview_consumer';
|
|
15
15
|
import { CheckNoChangesMode, enterView, isExhaustiveCheckNoChanges, isInCheckNoChangesMode, isRefreshingViews, leaveView, setBindingIndex, setIsInCheckNoChangesMode, setIsRefreshingViews, } from '../state';
|
|
16
16
|
import { getFirstLContainer, getNextLContainer } from '../util/view_traversal_utils';
|
|
17
17
|
import { getComponentLViewByIndex, isCreationMode, markAncestorsForTraversal, markViewForRefresh, requiresRefreshOrTraversal, resetPreOrderHookFlags, viewAttachedToChangeDetector, } from '../util/view_utils';
|
|
@@ -113,11 +113,29 @@ export function refreshView(tView, lView, templateFn, context) {
|
|
|
113
113
|
// - We might already be in a reactive context if this is an embedded view of the host.
|
|
114
114
|
// - We might be descending into a view that needs a consumer.
|
|
115
115
|
enterView(lView);
|
|
116
|
+
let returnConsumerToPool = true;
|
|
116
117
|
let prevConsumer = null;
|
|
117
118
|
let currentConsumer = null;
|
|
118
|
-
if (!isInCheckNoChangesPass
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
if (!isInCheckNoChangesPass) {
|
|
120
|
+
if (viewShouldHaveReactiveConsumer(tView)) {
|
|
121
|
+
currentConsumer = getOrBorrowReactiveLViewConsumer(lView);
|
|
122
|
+
prevConsumer = consumerBeforeComputation(currentConsumer);
|
|
123
|
+
}
|
|
124
|
+
else if (getActiveConsumer() === null) {
|
|
125
|
+
// If the current view should not have a reactive consumer but we don't have an active consumer,
|
|
126
|
+
// we still need to create a temporary consumer to track any signal reads in this template.
|
|
127
|
+
// This is a rare case that can happen with `viewContainerRef.createEmbeddedView(...).detectChanges()`.
|
|
128
|
+
// This temporary consumer marks the first parent that _should_ have a consumer for refresh.
|
|
129
|
+
// Once that refresh happens, the signals will be tracked in the parent consumer and we can destroy
|
|
130
|
+
// the temporary one.
|
|
131
|
+
returnConsumerToPool = false;
|
|
132
|
+
currentConsumer = getOrCreateTemporaryConsumer(lView);
|
|
133
|
+
prevConsumer = consumerBeforeComputation(currentConsumer);
|
|
134
|
+
}
|
|
135
|
+
else if (lView[REACTIVE_TEMPLATE_CONSUMER]) {
|
|
136
|
+
consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]);
|
|
137
|
+
lView[REACTIVE_TEMPLATE_CONSUMER] = null;
|
|
138
|
+
}
|
|
121
139
|
}
|
|
122
140
|
try {
|
|
123
141
|
resetPreOrderHookFlags(lView);
|
|
@@ -243,28 +261,13 @@ export function refreshView(tView, lView, templateFn, context) {
|
|
|
243
261
|
finally {
|
|
244
262
|
if (currentConsumer !== null) {
|
|
245
263
|
consumerAfterComputation(currentConsumer, prevConsumer);
|
|
246
|
-
|
|
264
|
+
if (returnConsumerToPool) {
|
|
265
|
+
maybeReturnReactiveLViewConsumer(currentConsumer);
|
|
266
|
+
}
|
|
247
267
|
}
|
|
248
268
|
leaveView();
|
|
249
269
|
}
|
|
250
270
|
}
|
|
251
|
-
/**
|
|
252
|
-
* Indicates if the view should get its own reactive consumer node.
|
|
253
|
-
*
|
|
254
|
-
* In the current design, all embedded views share a consumer with the component view. This allows
|
|
255
|
-
* us to refresh at the component level rather than at a per-view level. In addition, root views get
|
|
256
|
-
* their own reactive node because root component will have a host view that executes the
|
|
257
|
-
* component's host bindings. This needs to be tracked in a consumer as well.
|
|
258
|
-
*
|
|
259
|
-
* To get a more granular change detection than per-component, all we would just need to update the
|
|
260
|
-
* condition here so that a given view gets a reactive consumer which can become dirty independently
|
|
261
|
-
* from its parent component. For example embedded views for signal components could be created with
|
|
262
|
-
* a new type "SignalEmbeddedView" and the condition here wouldn't even need updating in order to
|
|
263
|
-
* get granular per-view change detection for signal components.
|
|
264
|
-
*/
|
|
265
|
-
function viewShouldHaveReactiveConsumer(tView) {
|
|
266
|
-
return tView.type !== 2 /* TViewType.Embedded */;
|
|
267
|
-
}
|
|
268
271
|
/**
|
|
269
272
|
* Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
|
|
270
273
|
* them by executing an associated template function.
|
|
@@ -370,4 +373,4 @@ function detectChangesInChildComponents(hostLView, components, mode) {
|
|
|
370
373
|
detectChangesInComponent(hostLView, components[i], mode);
|
|
371
374
|
}
|
|
372
375
|
}
|
|
373
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW5zdHJ1Y3Rpb25zL2NoYW5nZV9kZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsOEJBQThCLEdBRS9CLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsT0FBTyxFQUFDLFlBQVksRUFBbUIsTUFBTSxjQUFjLENBQUM7QUFDNUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUYsT0FBTyxFQUFDLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RixPQUFPLEVBQ0wsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsS0FBSyxFQUlMLDBCQUEwQixFQUMxQixLQUFLLEdBR04sTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUVqQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YseUJBQXlCLEVBQ3pCLG9CQUFvQixHQUNyQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsa0JB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LENBQUMsQ0FBQyxnRkFBMEQsQ0FBQyxDQUFDO0lBRTlFLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7U0FBTSxJQUFJLEtBQUssK0NBQW9DLEVBQUUsQ0FBQztRQUNyRCw0QkFBNEIsQ0FBQyxLQUFLLHVDQUErQixDQUFDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEIsOEJBQThCLENBQUMsS0FBSyxFQUFFLFVBQVUsdUNBQStCLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLFNBQVMsOEJBQThCLENBQ3JDLFNBQWdCLEVBQ2hCLFVBQW9CLEVBQ3BCLElBQXlCO0lBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0Msd0JBQXdCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBjb25zdW1lckFmdGVyQ29tcHV0YXRpb24sXG4gIGNvbnN1bWVyQmVmb3JlQ29tcHV0YXRpb24sXG4gIGNvbnN1bWVyUG9sbFByb2R1Y2Vyc0ZvckNoYW5nZSxcbiAgUmVhY3RpdmVOb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscyc7XG5cbmltcG9ydCB7UnVudGltZUVycm9yLCBSdW50aW1lRXJyb3JDb2RlfSBmcm9tICcuLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHthc3NlcnREZWZpbmVkLCBhc3NlcnRFcXVhbH0gZnJvbSAnLi4vLi4vdXRpbC9hc3NlcnQnO1xuaW1wb3J0IHtleGVjdXRlQ2hlY2tIb29rcywgZXhlY3V0ZUluaXRBbmRDaGVja0hvb2tzLCBpbmNyZW1lbnRJbml0UGhhc2VGbGFnc30gZnJvbSAnLi4vaG9va3MnO1xuaW1wb3J0IHtDT05UQUlORVJfSEVBREVSX09GRlNFVCwgTENvbnRhaW5lckZsYWdzLCBNT1ZFRF9WSUVXU30gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb250YWluZXInO1xuaW1wb3J0IHtDb21wb25lbnRUZW1wbGF0ZSwgUmVuZGVyRmxhZ3N9IGZyb20gJy4uL2ludGVyZmFjZXMvZGVmaW5pdGlvbic7XG5pbXBvcnQge1xuICBDT05URVhULFxuICBFRkZFQ1RTX1RPX1NDSEVEVUxFLFxuICBFTlZJUk9OTUVOVCxcbiAgRkxBR1MsXG4gIEluaXRQaGFzZVN0YXRlLFxuICBMVmlldyxcbiAgTFZpZXdGbGFncyxcbiAgUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVIsXG4gIFRWSUVXLFxuICBUVmlldyxcbiAgVFZpZXdUeXBlLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXcnO1xuaW1wb3J0IHtcbiAgZ2V0T3JCb3Jyb3dSZWFjdGl2ZUxWaWV3Q29uc3VtZXIsXG4gIG1heWJlUmV0dXJuUmVhY3RpdmVMVmlld0NvbnN1bWVyLFxuICBSZWFjdGl2ZUxWaWV3Q29uc3VtZXIsXG59IGZyb20gJy4uL3JlYWN0aXZlX2x2aWV3X2NvbnN1bWVyJztcbmltcG9ydCB7XG4gIENoZWNrTm9DaGFuZ2VzTW9kZSxcbiAgZW50ZXJWaWV3LFxuICBpc0V4aGF1c3RpdmVDaGVja05vQ2hhbmdlcyxcbiAgaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZSxcbiAgaXNSZWZyZXNoaW5nVmlld3MsXG4gIGxlYXZlVmlldyxcbiAgc2V0QmluZGluZ0luZGV4LFxuICBzZXRJc0luQ2hlY2tOb0NoYW5nZXNNb2RlLFxuICBzZXRJc1JlZnJlc2hpbmdWaWV3cyxcbn0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHtnZXRGaXJzdExDb250YWluZXIsIGdldE5leHRMQ29udGFpbmVyfSBmcm9tICcuLi91dGlsL3ZpZXdfdHJhdmVyc2FsX3V0aWxzJztcbmltcG9ydCB7XG4gIGdldENvbXBvbmVudExWaWV3QnlJbmRleCxcbiAgaXNDcmVhdGlvbk1vZGUsXG4gIG1hcmtBbmNlc3RvcnNGb3JUcmF2ZXJzYWwsXG4gIG1hcmtWaWV3Rm9yUmVmcmVzaCxcbiAgcmVxdWlyZXNSZWZyZXNoT3JUcmF2ZXJzYWwsXG4gIHJlc2V0UHJlT3JkZXJIb29rRmxhZ3MsXG4gIHZpZXdBdHRhY2hlZFRvQ2hhbmdlRGV0ZWN0b3IsXG59IGZyb20gJy4uL3V0aWwvdmlld191dGlscyc7XG5cbmltcG9ydCB7XG4gIGV4ZWN1dGVUZW1wbGF0ZSxcbiAgZXhlY3V0ZVZpZXdRdWVyeUZuLFxuICBoYW5kbGVFcnJvcixcbiAgcHJvY2Vzc0hvc3RCaW5kaW5nT3BDb2RlcyxcbiAgcmVmcmVzaENvbnRlbnRRdWVyaWVzLFxufSBmcm9tICcuL3NoYXJlZCc7XG5cbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRyYXZlcnNhbCB3aWxsIHJlcnVuIGJlZm9yZSB0aHJvd2luZyBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWElNVU1fUkVGUkVTSF9SRVJVTlMgPSAxMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW50ZXJuYWwoXG4gIGxWaWV3OiBMVmlldyxcbiAgbm90aWZ5RXJyb3JIYW5kbGVyID0gdHJ1ZSxcbiAgbW9kZSA9IENoYW5nZURldGVjdGlvbk1vZGUuR2xvYmFsLFxuKSB7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gbFZpZXdbRU5WSVJPTk1FTlRdO1xuICBjb25zdCByZW5kZXJlckZhY3RvcnkgPSBlbnZpcm9ubWVudC5yZW5kZXJlckZhY3Rvcnk7XG5cbiAgLy8gQ2hlY2sgbm8gY2hhbmdlcyBtb2RlIGlzIGEgZGV2IG9ubHkgbW9kZSB1c2VkIHRvIHZlcmlmeSB0aGF0IGJpbmRpbmdzIGhhdmUgbm90IGNoYW5nZWRcbiAgLy8gc2luY2UgdGhleSB3ZXJlIGFzc2lnbmVkLiBXZSBkbyBub3Qgd2FudCB0byBpbnZva2UgcmVuZGVyZXIgZmFjdG9yeSBmdW5jdGlvbnMgaW4gdGhhdCBtb2RlXG4gIC8vIHRvIGF2b2lkIGFueSBwb3NzaWJsZSBzaWRlLWVmZmVjdHMuXG4gIGNvbnN0IGNoZWNrTm9DaGFuZ2VzTW9kZSA9ICEhbmdEZXZNb2RlICYmIGlzSW5DaGVja05vQ2hhbmdlc01vZGUoKTtcblxuICBpZiAoIWNoZWNrTm9DaGFuZ2VzTW9kZSkge1xuICAgIHJlbmRlcmVyRmFjdG9yeS5iZWdpbj8uKCk7XG4gIH1cblxuICB0cnkge1xuICAgIGRldGVjdENoYW5nZXNJblZpZXdXaGlsZURpcnR5KGxWaWV3LCBtb2RlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAobm90aWZ5RXJyb3JIYW5kbGVyKSB7XG4gICAgICBoYW5kbGVFcnJvcihsVmlldywgZXJyb3IpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoIWNoZWNrTm9DaGFuZ2VzTW9kZSkge1xuICAgICAgcmVuZGVyZXJGYWN0b3J5LmVuZD8uKCk7XG5cbiAgICAgIC8vIE9uZSBmaW5hbCBmbHVzaCBvZiB0aGUgZWZmZWN0cyBxdWV1ZSB0byBjYXRjaCBhbnkgZWZmZWN0cyBjcmVhdGVkIGluIGBuZ0FmdGVyVmlld0luaXRgIG9yXG4gICAgICAvLyBvdGhlciBwb3N0LW9yZGVyIGhvb2tzLlxuICAgICAgZW52aXJvbm1lbnQuaW5saW5lRWZmZWN0UnVubmVyPy5mbHVzaCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW5WaWV3V2hpbGVEaXJ0eShsVmlldzogTFZpZXcsIG1vZGU6IENoYW5nZURldGVjdGlvbk1vZGUpIHtcbiAgY29uc3QgbGFzdElzUmVmcmVzaGluZ1ZpZXdzVmFsdWUgPSBpc1JlZnJlc2hpbmdWaWV3cygpO1xuICB0cnkge1xuICAgIHNldElzUmVmcmVzaGluZ1ZpZXdzKHRydWUpO1xuICAgIGRldGVjdENoYW5nZXNJblZpZXcobFZpZXcsIG1vZGUpO1xuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCBvciB3YW50IHRvIGRvIGFueSBsb29waW5nIHdoZW4gaW4gZXhoYXVzdGl2ZSBjaGVja05vQ2hhbmdlcyBiZWNhdXNlIHdlXG4gICAgLy8gYWxyZWFkeSB0cmF2ZXJzZSBhbGwgdGhlIHZpZXdzIGFuZCBub3RoaW5nIHNob3VsZCBjaGFuZ2Ugc28gd2Ugc2hvdWxkbid0IGhhdmUgdG8gZG9cbiAgICAvLyBhbm90aGVyIHBhc3MgdG8gcGljayB1cCBuZXcgY2hhbmdlcy5cbiAgICBpZiAobmdEZXZNb2RlICYmIGlzRXhoYXVzdGl2ZUNoZWNrTm9DaGFuZ2VzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmV0cmllcyA9IDA7XG4gICAgLy8gSWYgYWZ0ZXIgcnVubmluZyBjaGFuZ2UgZGV0ZWN0aW9uLCB0aGlzIHZpZXcgc3RpbGwgbmVlZHMgdG8gYmUgcmVmcmVzaGVkIG9yIHRoZXJlIGFyZVxuICAgIC8vIGRlc2NlbmRhbnRzIHZpZXdzIHRoYXQgbmVlZCB0byBiZSByZWZyZXNoZWQgZHVlIHRvIHJlLWRpcnR5aW5nIGR1cmluZyB0aGUgY2hhbmdlIGRldGVjdGlvblxuICAgIC8vIHJ1biwgZGV0ZWN0IGNoYW5nZXMgb24gdGhlIHZpZXcgYWdhaW4uIFdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGluIGBUYXJnZXRlZGAgbW9kZSB0byBvbmx5XG4gICAgLy8gcmVmcmVzaCB2aWV3cyB3aXRoIHRoZSBgUmVmcmVzaFZpZXdgIGZsYWcuXG4gICAgd2hpbGUgKHJlcXVpcmVzUmVmcmVzaE9yVHJhdmVyc2FsKGxWaWV3KSkge1xuICAgICAgaWYgKHJldHJpZXMgPT09IE1BWElNVU1fUkVGUkVTSF9SRVJVTlMpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICBSdW50aW1lRXJyb3JDb2RlLklORklOSVRFX0NIQU5HRV9ERVRFQ1RJT04sXG4gICAgICAgICAgbmdEZXZNb2RlICYmXG4gICAgICAgICAgICAnSW5maW5pdGUgY2hhbmdlIGRldGVjdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB2aWV3cy4gJyArXG4gICAgICAgICAgICAgICdUaGVyZSBtYXkgYmUgY29tcG9uZW50cyB3aGljaCBlYWNoIGNhdXNlIHRoZSBvdGhlciB0byByZXF1aXJlIGEgcmVmcmVzaCwgJyArXG4gICAgICAgICAgICAgICdjYXVzaW5nIGFuIGluZmluaXRlIGxvb3AuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHJpZXMrKztcbiAgICAgIC8vIEV2ZW4gaWYgdGhpcyB2aWV3IGlzIGRldGFjaGVkLCB3ZSBzdGlsbCBkZXRlY3QgY2hhbmdlcyBpbiB0YXJnZXRlZCBtb2RlIGJlY2F1c2UgdGhpcyB3YXNcbiAgICAgIC8vIHRoZSByb290IG9mIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bi5cbiAgICAgIGRldGVjdENoYW5nZXNJblZpZXcobFZpZXcsIENoYW5nZURldGVjdGlvbk1vZGUuVGFyZ2V0ZWQpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyByZXN0b3JlIHN0YXRlIHRvIHdoYXQgaXQgd2FzIGJlZm9yZSBlbnRlcmluZyB0aGlzIGNoYW5nZSBkZXRlY3Rpb24gbG9vcFxuICAgIHNldElzUmVmcmVzaGluZ1ZpZXdzKGxhc3RJc1JlZnJlc2hpbmdWaWV3c1ZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tOb0NoYW5nZXNJbnRlcm5hbChcbiAgbFZpZXc6IExWaWV3LFxuICBtb2RlOiBDaGVja05vQ2hhbmdlc01vZGUsXG4gIG5vdGlmeUVycm9ySGFuZGxlciA9IHRydWUsXG4pIHtcbiAgc2V0SXNJbkNoZWNrTm9DaGFuZ2VzTW9kZShtb2RlKTtcbiAgdHJ5IHtcbiAgICBkZXRlY3RDaGFuZ2VzSW50ZXJuYWwobFZpZXcsIG5vdGlmeUVycm9ySGFuZGxlcik7XG4gIH0gZmluYWxseSB7XG4gICAgc2V0SXNJbkNoZWNrTm9DaGFuZ2VzTW9kZShDaGVja05vQ2hhbmdlc01vZGUuT2ZmKTtcbiAgfVxufVxuXG4vKipcbiAqIERpZmZlcmVudCBtb2RlcyBvZiB0cmF2ZXJzaW5nIHRoZSBsb2dpY2FsIHZpZXcgdHJlZSBkdXJpbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAqXG4gKlxuICogVGhlIGNoYW5nZSBkZXRlY3Rpb24gdHJhdmVyc2FsIGFsZ29yaXRobSBzd2l0Y2hlcyBiZXR3ZWVuIHRoZXNlIG1vZGVzIGJhc2VkIG9uIHZhcmlvdXNcbiAqIGNvbmRpdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIENoYW5nZURldGVjdGlvbk1vZGUge1xuICAvKipcbiAgICogSW4gYEdsb2JhbGAgbW9kZSwgYERpcnR5YCBhbmQgYENoZWNrQWx3YXlzYCB2aWV3cyBhcmUgcmVmcmVzaGVkIGFzIHdlbGwgYXMgdmlld3Mgd2l0aCB0aGVcbiAgICogYFJlZnJlc2hWaWV3YCBmbGFnLlxuICAgKi9cbiAgR2xvYmFsLFxuICAvKipcbiAgICogSW4gYFRhcmdldGVkYCBtb2RlLCBvbmx5IHZpZXdzIHdpdGggdGhlIGBSZWZyZXNoVmlld2AgZmxhZyBvciB1cGRhdGVkIHNpZ25hbHMgYXJlIHJlZnJlc2hlZC5cbiAgICovXG4gIFRhcmdldGVkLFxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIHZpZXcgaW4gdXBkYXRlIG1vZGUuIFRoaXMgaW5jbHVkZXMgYSBudW1iZXIgb2Ygc3RlcHMgaW4gYSBzcGVjaWZpYyBvcmRlcjpcbiAqIC0gZXhlY3V0aW5nIGEgdGVtcGxhdGUgZnVuY3Rpb24gaW4gdXBkYXRlIG1vZGU7XG4gKiAtIGV4ZWN1dGluZyBob29rcztcbiAqIC0gcmVmcmVzaGluZyBxdWVyaWVzO1xuICogLSBzZXR0aW5nIGhvc3QgYmluZGluZ3M7XG4gKiAtIHJlZnJlc2hpbmcgY2hpbGQgKGVtYmVkZGVkIGFuZCBjb21wb25lbnQpIHZpZXdzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoVmlldzxUPihcbiAgdFZpZXc6IFRWaWV3LFxuICBsVmlldzogTFZpZXcsXG4gIHRlbXBsYXRlRm46IENvbXBvbmVudFRlbXBsYXRlPHt9PiB8IG51bGwsXG4gIGNvbnRleHQ6IFQsXG4pIHtcbiAgbmdEZXZNb2RlICYmIGFzc2VydEVxdWFsKGlzQ3JlYXRpb25Nb2RlKGxWaWV3KSwgZmFsc2UsICdTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlJyk7XG4gIGNvbnN0IGZsYWdzID0gbFZpZXdbRkxBR1NdO1xuICBpZiAoKGZsYWdzICYgTFZpZXdGbGFncy5EZXN0cm95ZWQpID09PSBMVmlld0ZsYWdzLkRlc3Ryb3llZCkgcmV0dXJuO1xuXG4gIC8vIENoZWNrIG5vIGNoYW5nZXMgbW9kZSBpcyBhIGRldiBvbmx5IG1vZGUgdXNlZCB0byB2ZXJpZnkgdGhhdCBiaW5kaW5ncyBoYXZlIG5vdCBjaGFuZ2VkXG4gIC8vIHNpbmNlIHRoZXkgd2VyZSBhc3NpZ25lZC4gV2UgZG8gbm90IHdhbnQgdG8gZXhlY3V0ZSBsaWZlY3ljbGUgaG9va3MgaW4gdGhhdCBtb2RlLlxuICBjb25zdCBpc0luQ2hlY2tOb0NoYW5nZXNQYXNzID0gbmdEZXZNb2RlICYmIGlzSW5DaGVja05vQ2hhbmdlc01vZGUoKTtcbiAgY29uc3QgaXNJbkV4aGF1c3RpdmVDaGVja05vQ2hhbmdlc1Bhc3MgPSBuZ0Rldk1vZGUgJiYgaXNFeGhhdXN0aXZlQ2hlY2tOb0NoYW5nZXMoKTtcblxuICAhaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcyAmJiBsVmlld1tFTlZJUk9OTUVOVF0uaW5saW5lRWZmZWN0UnVubmVyPy5mbHVzaCgpO1xuXG4gIC8vIFN0YXJ0IGNvbXBvbmVudCByZWFjdGl2ZSBjb250ZXh0XG4gIC8vIC0gV2UgbWlnaHQgYWxyZWFkeSBiZSBpbiBhIHJlYWN0aXZlIGNvbnRleHQgaWYgdGhpcyBpcyBhbiBlbWJlZGRlZCB2aWV3IG9mIHRoZSBob3N0LlxuICAvLyAtIFdlIG1pZ2h0IGJlIGRlc2NlbmRpbmcgaW50byBhIHZpZXcgdGhhdCBuZWVkcyBhIGNvbnN1bWVyLlxuICBlbnRlclZpZXcobFZpZXcpO1xuICBsZXQgcHJldkNvbnN1bWVyOiBSZWFjdGl2ZU5vZGUgfCBudWxsID0gbnVsbDtcbiAgbGV0IGN1cnJlbnRDb25zdW1lcjogUmVhY3RpdmVMVmlld0NvbnN1bWVyIHwgbnVsbCA9IG51bGw7XG4gIGlmICghaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcyAmJiB2aWV3U2hvdWxkSGF2ZVJlYWN0aXZlQ29uc3VtZXIodFZpZXcpKSB7XG4gICAgY3VycmVudENvbnN1bWVyID0gZ2V0T3JCb3Jyb3dSZWFjdGl2ZUxWaWV3Q29uc3VtZXIobFZpZXcpO1xuICAgIHByZXZDb25zdW1lciA9IGNvbnN1bWVyQmVmb3JlQ29tcHV0YXRpb24oY3VycmVudENvbnN1bWVyKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmVzZXRQcmVPcmRlckhvb2tGbGFncyhsVmlldyk7XG5cbiAgICBzZXRCaW5kaW5nSW5kZXgodFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpO1xuICAgIGlmICh0ZW1wbGF0ZUZuICE9PSBudWxsKSB7XG4gICAgICBleGVjdXRlVGVtcGxhdGUodFZpZXcsIGxWaWV3LCB0ZW1wbGF0ZUZuLCBSZW5kZXJGbGFncy5VcGRhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGhvb2tzSW5pdFBoYXNlQ29tcGxldGVkID1cbiAgICAgIChmbGFncyAmIExWaWV3RmxhZ3MuSW5pdFBoYXNlU3RhdGVNYXNrKSA9PT0gSW5pdFBoYXNlU3RhdGUuSW5pdFBoYXNlQ29tcGxldGVkO1xuXG4gICAgLy8gZXhlY3V0ZSBwcmUtb3JkZXIgaG9va3MgKE9uSW5pdCwgT25DaGFuZ2VzLCBEb0NoZWNrKVxuICAgIC8vIFBFUkYgV0FSTklORzogZG8gTk9UIGV4dHJhY3QgdGhpcyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHdpdGhvdXQgcnVubmluZyBiZW5jaG1hcmtzXG4gICAgaWYgKCFpc0luQ2hlY2tOb0NoYW5nZXNQYXNzKSB7XG4gICAgICBpZiAoaG9va3NJbml0UGhhc2VDb21wbGV0ZWQpIHtcbiAgICAgICAgY29uc3QgcHJlT3JkZXJDaGVja0hvb2tzID0gdFZpZXcucHJlT3JkZXJDaGVja0hvb2tzO1xuICAgICAgICBpZiAocHJlT3JkZXJDaGVja0hvb2tzICE9PSBudWxsKSB7XG4gICAgICAgICAgZXhlY3V0ZUNoZWNrSG9va3MobFZpZXcsIHByZU9yZGVyQ2hlY2tIb29rcywgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZU9yZGVySG9va3MgPSB0Vmlldy5wcmVPcmRlckhvb2tzO1xuICAgICAgICBpZiAocHJlT3JkZXJIb29rcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGV4ZWN1dGVJbml0QW5kQ2hlY2tIb29rcyhsVmlldywgcHJlT3JkZXJIb29rcywgSW5pdFBoYXNlU3RhdGUuT25Jbml0SG9va3NUb0JlUnVuLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpbmNyZW1lbnRJbml0UGhhc2VGbGFncyhsVmlldywgSW5pdFBoYXNlU3RhdGUuT25Jbml0SG9va3NUb0JlUnVuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBtYXJrIHRyYW5zcGxhbnRlZCB2aWV3cyBmb3IgcmVmcmVzaCB3aGVuIGRvaW5nIGV4aGF1c3RpdmUgY2hlY2tzXG4gICAgLy8gYmVjYXVzZSBhbGwgdmlld3Mgd2lsbCBiZSByZWFjaGVkIGFueXdheXMgZHVyaW5nIHRoZSB0cmF2ZXJzYWwuXG4gICAgaWYgKCFpc0luRXhoYXVzdGl2ZUNoZWNrTm9DaGFuZ2VzUGFzcykge1xuICAgICAgLy8gRmlyc3QgbWFyayB0cmFuc3BsYW50ZWQgdmlld3MgdGhhdCBhcmUgZGVjbGFyZWQgaW4gdGhpcyBsVmlldyBhcyBuZWVkaW5nIGEgcmVmcmVzaCBhdCB0aGVpclxuICAgICAgLy8gaW5zZXJ0aW9uIHBvaW50cy4gVGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgdGVtcGxhdGUgaXMgZGVmaW5lZCBpbiB0aGlzXG4gICAgICAvLyBgTFZpZXdgIGJ1dCBpdHMgZGVjbGFyYXRpb24gYXBwZWFycyBhZnRlciB0aGUgaW5zZXJ0aW9uIGNvbXBvbmVudC5cbiAgICAgIG1hcmtUcmFuc3BsYW50ZWRWaWV3c0ZvclJlZnJlc2gobFZpZXcpO1xuICAgIH1cbiAgICBkZXRlY3RDaGFuZ2VzSW5FbWJlZGRlZFZpZXdzKGxWaWV3LCBDaGFuZ2VEZXRlY3Rpb25Nb2RlLkdsb2JhbCk7XG5cbiAgICAvLyBDb250ZW50IHF1ZXJ5IHJlc3VsdHMgbXVzdCBiZSByZWZyZXNoZWQgYmVmb3JlIGNvbnRlbnQgaG9va3MgYXJlIGNhbGxlZC5cbiAgICBpZiAodFZpZXcuY29udGVudFF1ZXJpZXMgIT09IG51bGwpIHtcbiAgICAgIHJlZnJlc2hDb250ZW50UXVlcmllcyh0VmlldywgbFZpZXcpO1xuICAgIH1cblxuICAgIC8vIGV4ZWN1dGUgY29udGVudCBob29rcyAoQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZClcbiAgICAvLyBQRVJGIFdBUk5JTkc6IGRvIE5PVCBleHRyYWN0IHRoaXMgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiB3aXRob3V0IHJ1bm5pbmcgYmVuY2htYXJrc1xuICAgIGlmICghaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcykge1xuICAgICAgaWYgKGhvb2tzSW5pdFBoYXNlQ29tcGxldGVkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRDaGVja0hvb2tzID0gdFZpZXcuY29udGVudENoZWNrSG9va3M7XG4gICAgICAgIGlmIChjb250ZW50Q2hlY2tIb29rcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGV4ZWN1dGVDaGVja0hvb2tzKGxWaWV3LCBjb250ZW50Q2hlY2tIb29rcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRIb29rcyA9IHRWaWV3LmNvbnRlbnRIb29rcztcbiAgICAgICAgaWYgKGNvbnRlbnRIb29rcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGV4ZWN1dGVJbml0QW5kQ2hlY2tIb29rcyhcbiAgICAgICAgICAgIGxWaWV3LFxuICAgICAgICAgICAgY29udGVudEhvb2tzLFxuICAgICAgICAgICAgSW5pdFBoYXNlU3RhdGUuQWZ0ZXJDb250ZW50SW5pdEhvb2tzVG9CZVJ1bixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGluY3JlbWVudEluaXRQaGFzZUZsYWdzKGxWaWV3LCBJbml0UGhhc2VTdGF0ZS5BZnRlckNvbnRlbnRJbml0SG9va3NUb0JlUnVuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzSG9zdEJpbmRpbmdPcENvZGVzKHRWaWV3LCBsVmlldyk7XG5cbiAgICAvLyBSZWZyZXNoIGNoaWxkIGNvbXBvbmVudCB2aWV3cy5cbiAgICBjb25zdCBjb21wb25lbnRzID0gdFZpZXcuY29tcG9uZW50cztcbiAgICBpZiAoY29tcG9uZW50cyAhPT0gbnVsbCkge1xuICAgICAgZGV0ZWN0Q2hhbmdlc0luQ2hpbGRDb21wb25lbnRzKGxWaWV3LCBjb21wb25lbnRzLCBDaGFuZ2VEZXRlY3Rpb25Nb2RlLkdsb2JhbCk7XG4gICAgfVxuXG4gICAgLy8gVmlldyBxdWVyaWVzIG11c3QgZXhlY3V0ZSBhZnRlciByZWZyZXNoaW5nIGNoaWxkIGNvbXBvbmVudHMgYmVjYXVzZSBhIHRlbXBsYXRlIGluIHRoaXMgdmlld1xuICAgIC8vIGNvdWxkIGJlIGluc2VydGVkIGluIGEgY2hpbGQgY29tcG9uZW50LiBJZiB0aGUgdmlldyBxdWVyeSBleGVjdXRlcyBiZWZvcmUgY2hpbGQgY29tcG9uZW50XG4gICAgLy8gcmVmcmVzaCwgdGhlIHRlbXBsYXRlIG1pZ2h0IG5vdCB5ZXQgYmUgaW5zZXJ0ZWQuXG4gICAgY29uc3Qgdmlld1F1ZXJ5ID0gdFZpZXcudmlld1F1ZXJ5O1xuICAgIGlmICh2aWV3UXVlcnkgIT09IG51bGwpIHtcbiAgICAgIGV4ZWN1dGVWaWV3UXVlcnlGbjxUPihSZW5kZXJGbGFncy5VcGRhdGUsIHZpZXdRdWVyeSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgLy8gZXhlY3V0ZSB2aWV3IGhvb2tzIChBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkKVxuICAgIC8vIFBFUkYgV0FSTklORzogZG8gTk9UIGV4dHJhY3QgdGhpcyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHdpdGhvdXQgcnVubmluZyBiZW5jaG1hcmtzXG4gICAgaWYgKCFpc0luQ2hlY2tOb0NoYW5nZXNQYXNzKSB7XG4gICAgICBpZiAoaG9va3NJbml0UGhhc2VDb21wbGV0ZWQpIHtcbiAgICAgICAgY29uc3Qgdmlld0NoZWNrSG9va3MgPSB0Vmlldy52aWV3Q2hlY2tIb29rcztcbiAgICAgICAgaWYgKHZpZXdDaGVja0hvb2tzICE9PSBudWxsKSB7XG4gICAgICAgICAgZXhlY3V0ZUNoZWNrSG9va3MobFZpZXcsIHZpZXdDaGVja0hvb2tzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgdmlld0hvb2tzID0gdFZpZXcudmlld0hvb2tzO1xuICAgICAgICBpZiAodmlld0hvb2tzICE9PSBudWxsKSB7XG4gICAgICAgICAgZXhlY3V0ZUluaXRBbmRDaGVja0hvb2tzKGxWaWV3LCB2aWV3SG9va3MsIEluaXRQaGFzZVN0YXRlLkFmdGVyVmlld0luaXRIb29rc1RvQmVSdW4pO1xuICAgICAgICB9XG4gICAgICAgIGluY3JlbWVudEluaXRQaGFzZUZsYWdzKGxWaWV3LCBJbml0UGhhc2VTdGF0ZS5BZnRlclZpZXdJbml0SG9va3NUb0JlUnVuKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRWaWV3LmZpcnN0VXBkYXRlUGFzcyA9PT0gdHJ1ZSkge1xuICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBvbmx5IGZsaXAgdGhlIGZsYWcgb24gc3VjY2Vzc2Z1bCBgcmVmcmVzaFZpZXdgIG9ubHlcbiAgICAgIC8vIERvbid0IGRvIHRoaXMgaW4gYGZpbmFsbHlgIGJsb2NrLlxuICAgICAgLy8gSWYgd2UgZGlkIHRoaXMgaW4gYGZpbmFsbHlgIGJsb2NrIHRoZW4gYW4gZXhjZXB0aW9uIGNvdWxkIGJsb2NrIHRoZSBleGVjdXRpb24gb2Ygc3R5bGluZ1xuICAgICAgLy8gaW5zdHJ1Y3Rpb25zIHdoaWNoIGluIHR1cm4gd291bGQgYmUgdW5hYmxlIHRvIGluc2VydCB0aGVtc2VsdmVzIGludG8gdGhlIHN0eWxpbmcgbGlua2VkXG4gICAgICAvLyBsaXN0LiBUaGUgcmVzdWx0IG9mIHRoaXMgd291bGQgYmUgdGhhdCBpZiB0aGUgZXhjZXB0aW9uIHdvdWxkIG5vdCBiZSB0aHJvdyBvbiBzdWJzZXF1ZW50IENEXG4gICAgICAvLyB0aGUgc3R5bGluZyB3b3VsZCBiZSB1bmFibGUgdG8gcHJvY2VzcyBpdCBkYXRhIGFuZCByZWZsZWN0IHRvIHRoZSBET00uXG4gICAgICB0Vmlldy5maXJzdFVwZGF0ZVBhc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTY2hlZHVsZSBhbnkgZWZmZWN0cyB0aGF0IGFyZSB3YWl0aW5nIG9uIHRoZSB1cGRhdGUgcGFzcyBvZiB0aGlzIHZpZXcuXG4gICAgaWYgKGxWaWV3W0VGRkVDVFNfVE9fU0NIRURVTEVdKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vdGlmeUVmZmVjdCBvZiBsVmlld1tFRkZFQ1RTX1RPX1NDSEVEVUxFXSkge1xuICAgICAgICBub3RpZnlFZmZlY3QoKTtcbiAgICAgIH1cblxuICAgICAgLy8gT25jZSB0aGV5J3ZlIGJlZW4gcnVuLCB3ZSBjYW4gZHJvcCB0aGUgYXJyYXkuXG4gICAgICBsVmlld1tFRkZFQ1RTX1RPX1NDSEVEVUxFXSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gRG8gbm90IHJlc2V0IHRoZSBkaXJ0eSBzdGF0ZSB3aGVuIHJ1bm5pbmcgaW4gY2hlY2sgbm8gY2hhbmdlcyBtb2RlLiBXZSBkb24ndCB3YW50IGNvbXBvbmVudHNcbiAgICAvLyB0byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgY2hlY2sgbm8gY2hhbmdlcyBpcyBlbmFibGVkIG9yIG5vdC4gRm9yIGV4YW1wbGU6XG4gICAgLy8gTWFya2luZyBhbiBPblB1c2ggY29tcG9uZW50IGFzIGRpcnR5IGZyb20gd2l0aGluIHRoZSBgbmdBZnRlclZpZXdJbml0YCBob29rIGluIG9yZGVyIHRvXG4gICAgLy8gcmVmcmVzaCBhIGBOZ0NsYXNzYCBiaW5kaW5nIHNob3VsZCB3b3JrLiBJZiB3ZSB3b3VsZCByZXNldCB0aGUgZGlydHkgc3RhdGUgaW4gdGhlIGNoZWNrXG4gICAgLy8gbm8gY2hhbmdlcyBjeWNsZSwgdGhlIGNvbXBvbmVudCB3b3VsZCBiZSBub3QgYmUgZGlydHkgZm9yIHRoZSBuZXh0IHVwZGF0ZSBwYXNzLiBUaGlzIHdvdWxkXG4gICAgLy8gYmUgZGlmZmVyZW50IGluIHByb2R1Y3Rpb24gbW9kZSB3aGVyZSB0aGUgY29tcG9uZW50IGRpcnR5IHN0YXRlIGlzIG5vdCByZXNldC5cbiAgICBpZiAoIWlzSW5DaGVja05vQ2hhbmdlc1Bhc3MpIHtcbiAgICAgIGxWaWV3W0ZMQUdTXSAmPSB+KExWaWV3RmxhZ3MuRGlydHkgfCBMVmlld0ZsYWdzLkZpcnN0TFZpZXdQYXNzKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWlzSW5DaGVja05vQ2hhbmdlc1Bhc3MpIHtcbiAgICAgIC8vIElmIHJlZnJlc2hpbmcgYSB2aWV3IGNhdXNlcyBhbiBlcnJvciwgd2UgbmVlZCB0byByZW1hcmsgdGhlIGFuY2VzdG9ycyBhcyBuZWVkaW5nIHRyYXZlcnNhbFxuICAgICAgLy8gYmVjYXVzZSB0aGUgZXJyb3IgbWlnaHQgaGF2ZSBjYXVzZWQgYSBzaXR1YXRpb24gd2hlcmUgdmlld3MgYmVsb3cgdGhlIGN1cnJlbnQgbG9jYXRpb24gYXJlXG4gICAgICAvLyBkaXJ0eSBidXQgd2lsbCBiZSB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoZSBcImhhcyBkaXJ0eSBjaGlsZHJlblwiIGZsYWcgaW4gdGhlIGFuY2VzdG9ycyBoYXMgYmVlblxuICAgICAgLy8gY2xlYXJlZCBkdXJpbmcgY2hhbmdlIGRldGVjdGlvbiBhbmQgd2UgZmFpbGVkIHRvIHJ1biB0byBjb21wbGV0aW9uLlxuICAgICAgbWFya0FuY2VzdG9yc0ZvclRyYXZlcnNhbChsVmlldyk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKGN1cnJlbnRDb25zdW1lciAhPT0gbnVsbCkge1xuICAgICAgY29uc3VtZXJBZnRlckNvbXB1dGF0aW9uKGN1cnJlbnRDb25zdW1lciwgcHJldkNvbnN1bWVyKTtcbiAgICAgIG1heWJlUmV0dXJuUmVhY3RpdmVMVmlld0NvbnN1bWVyKGN1cnJlbnRDb25zdW1lcik7XG4gICAgfVxuICAgIGxlYXZlVmlldygpO1xuICB9XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIGlmIHRoZSB2aWV3IHNob3VsZCBnZXQgaXRzIG93biByZWFjdGl2ZSBjb25zdW1lciBub2RlLlxuICpcbiAqIEluIHRoZSBjdXJyZW50IGRlc2lnbiwgYWxsIGVtYmVkZGVkIHZpZXdzIHNoYXJlIGEgY29uc3VtZXIgd2l0aCB0aGUgY29tcG9uZW50IHZpZXcuIFRoaXMgYWxsb3dzXG4gKiB1cyB0byByZWZyZXNoIGF0IHRoZSBjb21wb25lbnQgbGV2ZWwgcmF0aGVyIHRoYW4gYXQgYSBwZXItdmlldyBsZXZlbC4gSW4gYWRkaXRpb24sIHJvb3Qgdmlld3MgZ2V0XG4gKiB0aGVpciBvd24gcmVhY3RpdmUgbm9kZSBiZWNhdXNlIHJvb3QgY29tcG9uZW50IHdpbGwgaGF2ZSBhIGhvc3QgdmlldyB0aGF0IGV4ZWN1dGVzIHRoZVxuICogY29tcG9uZW50J3MgaG9zdCBiaW5kaW5ncy4gVGhpcyBuZWVkcyB0byBiZSB0cmFja2VkIGluIGEgY29uc3VtZXIgYXMgd2VsbC5cbiAqXG4gKiBUbyBnZXQgYSBtb3JlIGdyYW51bGFyIGNoYW5nZSBkZXRlY3Rpb24gdGhhbiBwZXItY29tcG9uZW50LCBhbGwgd2Ugd291bGQganVzdCBuZWVkIHRvIHVwZGF0ZSB0aGVcbiAqIGNvbmRpdGlvbiBoZXJlIHNvIHRoYXQgYSBnaXZlbiB2aWV3IGdldHMgYSByZWFjdGl2ZSBjb25zdW1lciB3aGljaCBjYW4gYmVjb21lIGRpcnR5IGluZGVwZW5kZW50bHlcbiAqIGZyb20gaXRzIHBhcmVudCBjb21wb25lbnQuIEZvciBleGFtcGxlIGVtYmVkZGVkIHZpZXdzIGZvciBzaWduYWwgY29tcG9uZW50cyBjb3VsZCBiZSBjcmVhdGVkIHdpdGhcbiAqIGEgbmV3IHR5cGUgXCJTaWduYWxFbWJlZGRlZFZpZXdcIiBhbmQgdGhlIGNvbmRpdGlvbiBoZXJlIHdvdWxkbid0IGV2ZW4gbmVlZCB1cGRhdGluZyBpbiBvcmRlciB0b1xuICogZ2V0IGdyYW51bGFyIHBlci12aWV3IGNoYW5nZSBkZXRlY3Rpb24gZm9yIHNpZ25hbCBjb21wb25lbnRzLlxuICovXG5mdW5jdGlvbiB2aWV3U2hvdWxkSGF2ZVJlYWN0aXZlQ29uc3VtZXIodFZpZXc6IFRWaWV3KSB7XG4gIHJldHVybiB0Vmlldy50eXBlICE9PSBUVmlld1R5cGUuRW1iZWRkZWQ7XG59XG5cbi8qKlxuICogR29lcyBvdmVyIGVtYmVkZGVkIHZpZXdzIChvbmVzIGNyZWF0ZWQgdGhyb3VnaCBWaWV3Q29udGFpbmVyUmVmIEFQSXMpIGFuZCByZWZyZXNoZXNcbiAqIHRoZW0gYnkgZXhlY3V0aW5nIGFuIGFzc29jaWF0ZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJbkVtYmVkZGVkVmlld3MobFZpZXc6IExWaWV3LCBtb2RlOiBDaGFuZ2VEZXRlY3Rpb25Nb2RlKSB7XG4gIGZvciAoXG4gICAgbGV0IGxDb250YWluZXIgPSBnZXRGaXJzdExDb250YWluZXIobFZpZXcpO1xuICAgIGxDb250YWluZXIgIT09IG51bGw7XG4gICAgbENvbnRhaW5lciA9IGdldE5leHRMQ29udGFpbmVyKGxDb250YWluZXIpXG4gICkge1xuICAgIGZvciAobGV0IGkgPSBDT05UQUlORVJfSEVBREVSX09GRlNFVDsgaSA8IGxDb250YWluZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVtYmVkZGVkTFZpZXcgPSBsQ29udGFpbmVyW2ldO1xuICAgICAgZGV0ZWN0Q2hhbmdlc0luVmlld0lmQXR0YWNoZWQoZW1iZWRkZWRMVmlldywgbW9kZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWFyayB0cmFuc3BsYW50ZWQgdmlld3MgYXMgbmVlZGluZyB0byBiZSByZWZyZXNoZWQgYXQgdGhlaXIgYXR0YWNobWVudCBwb2ludHMuXG4gKlxuICogQHBhcmFtIGxWaWV3IFRoZSBgTFZpZXdgIHRoYXQgbWF5IGhhdmUgdHJhbnNwbGFudGVkIHZpZXdzLlxuICovXG5mdW5jdGlvbiBtYXJrVHJhbnNwbGFudGVkVmlld3NGb3JSZWZyZXNoKGxWaWV3OiBMVmlldykge1xuICBmb3IgKFxuICAgIGxldCBsQ29udGFpbmVyID0gZ2V0Rmlyc3RMQ29udGFpbmVyKGxWaWV3KTtcbiAgICBsQ29udGFpbmVyICE9PSBudWxsO1xuICAgIGxDb250YWluZXIgPSBnZXROZXh0TENvbnRhaW5lcihsQ29udGFpbmVyKVxuICApIHtcbiAgICBpZiAoIShsQ29udGFpbmVyW0ZMQUdTXSAmIExDb250YWluZXJGbGFncy5IYXNUcmFuc3BsYW50ZWRWaWV3cykpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgbW92ZWRWaWV3cyA9IGxDb250YWluZXJbTU9WRURfVklFV1NdITtcbiAgICBuZ0Rldk1vZGUgJiYgYXNzZXJ0RGVmaW5lZChtb3ZlZFZpZXdzLCAnVHJhbnNwbGFudGVkIFZpZXcgZmxhZ3Mgc2V0IGJ1dCBtaXNzaW5nIE1PVkVEX1ZJRVdTJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlZFZpZXdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtb3ZlZExWaWV3ID0gbW92ZWRWaWV3c1tpXSE7XG4gICAgICBtYXJrVmlld0ZvclJlZnJlc2gobW92ZWRMVmlldyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGV0ZWN0cyBjaGFuZ2VzIGluIGEgY29tcG9uZW50IGJ5IGVudGVyaW5nIHRoZSBjb21wb25lbnQgdmlldyBhbmQgcHJvY2Vzc2luZyBpdHMgYmluZGluZ3MsXG4gKiBxdWVyaWVzLCBldGMuIGlmIGl0IGlzIENoZWNrQWx3YXlzLCBPblB1c2ggYW5kIERpcnR5LCBldGMuXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudEhvc3RJZHggIEVsZW1lbnQgaW5kZXggaW4gTFZpZXdbXSAoYWRqdXN0ZWQgZm9yIEhFQURFUl9PRkZTRVQpXG4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJbkNvbXBvbmVudChcbiAgaG9zdExWaWV3OiBMVmlldyxcbiAgY29tcG9uZW50SG9zdElkeDogbnVtYmVyLFxuICBtb2RlOiBDaGFuZ2VEZXRlY3Rpb25Nb2RlLFxuKTogdm9pZCB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnRFcXVhbChpc0NyZWF0aW9uTW9kZShob3N0TFZpZXcpLCBmYWxzZSwgJ1Nob3VsZCBiZSBydW4gaW4gdXBkYXRlIG1vZGUnKTtcbiAgY29uc3QgY29tcG9uZW50VmlldyA9IGdldENvbXBvbmVudExWaWV3QnlJbmRleChjb21wb25lbnRIb3N0SWR4LCBob3N0TFZpZXcpO1xuICBkZXRlY3RDaGFuZ2VzSW5WaWV3SWZBdHRhY2hlZChjb21wb25lbnRWaWV3LCBtb2RlKTtcbn1cblxuLyoqXG4gKiBWaXNpdHMgYSB2aWV3IGFzIHBhcnQgb2YgY2hhbmdlIGRldGVjdGlvbiB0cmF2ZXJzYWwuXG4gKlxuICogSWYgdGhlIHZpZXcgaXMgZGV0YWNoZWQsIG5vIGFkZGl0aW9uYWwgdHJhdmVyc2FsIGhhcHBlbnMuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJblZpZXdJZkF0dGFjaGVkKGxWaWV3OiBMVmlldywgbW9kZTogQ2hhbmdlRGV0ZWN0aW9uTW9kZSkge1xuICBpZiAoIXZpZXdBdHRhY2hlZFRvQ2hhbmdlRGV0ZWN0b3IobFZpZXcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRldGVjdENoYW5nZXNJblZpZXcobFZpZXcsIG1vZGUpO1xufVxuXG4vKipcbiAqIFZpc2l0cyBhIHZpZXcgYXMgcGFydCBvZiBjaGFuZ2UgZGV0ZWN0aW9uIHRyYXZlcnNhbC5cbiAqXG4gKiBUaGUgdmlldyBpcyByZWZyZXNoZWQgaWY6XG4gKiAtIElmIHRoZSB2aWV3IGlzIENoZWNrQWx3YXlzIG9yIERpcnR5IGFuZCBDaGFuZ2VEZXRlY3Rpb25Nb2RlIGlzIGBHbG9iYWxgXG4gKiAtIElmIHRoZSB2aWV3IGhhcyB0aGUgYFJlZnJlc2hWaWV3YCBmbGFnXG4gKlxuICogVGhlIHZpZXcgaXMgbm90IHJlZnJlc2hlZCwgYnV0IGRlc2NlbmRhbnRzIGFyZSB0cmF2ZXJzZWQgaW4gYENoYW5nZURldGVjdGlvbk1vZGUuVGFyZ2V0ZWRgIGlmIHRoZVxuICogdmlldyBIYXNDaGlsZFZpZXdzVG9SZWZyZXNoIGZsYWcgaXMgc2V0LlxuICovXG5mdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW5WaWV3KGxWaWV3OiBMVmlldywgbW9kZTogQ2hhbmdlRGV0ZWN0aW9uTW9kZSkge1xuICBjb25zdCBpc0luQ2hlY2tOb0NoYW5nZXNQYXNzID0gbmdEZXZNb2RlICYmIGlzSW5DaGVja05vQ2hhbmdlc01vZGUoKTtcbiAgY29uc3QgdFZpZXcgPSBsVmlld1tUVklFV107XG4gIGNvbnN0IGZsYWdzID0gbFZpZXdbRkxBR1NdO1xuICBjb25zdCBjb25zdW1lciA9IGxWaWV3W1JFQUNUSVZFX1RFTVBMQVRFX0NPTlNVTUVSXTtcblxuICAvLyBSZWZyZXNoIENoZWNrQWx3YXlzIHZpZXdzIGluIEdsb2JhbCBtb2RlLlxuICBsZXQgc2hvdWxkUmVmcmVzaFZpZXc6IGJvb2xlYW4gPSAhIShcbiAgICBtb2RlID09PSBDaGFuZ2VEZXRlY3Rpb25Nb2RlLkdsb2JhbCAmJiBmbGFncyAmIExWaWV3RmxhZ3MuQ2hlY2tBbHdheXNcbiAgKTtcblxuICAvLyBSZWZyZXNoIERpcnR5IHZpZXdzIGluIEdsb2JhbCBtb2RlLCBhcyBsb25nIGFzIHdlJ3JlIG5vdCBpbiBjaGVja05vQ2hhbmdlcy5cbiAgLy8gQ2hlY2tOb0NoYW5nZXMgbmV2ZXIgd29ya2VkIHdpdGggYE9uUHVzaGAgY29tcG9uZW50cyBiZWNhdXNlIHRoZSBgRGlydHlgIGZsYWcgd2FzXG4gIC8vIGNsZWFyZWQgYmVmb3JlIGNoZWNrTm9DaGFuZ2VzIHJhbi4gQmVjYXVzZSB0aGVyZSBpcyBub3cgYSBsb29wIGZvciB0byBjaGVjayBmb3JcbiAgLy8gYmFja3dhcmRzIHZpZXdzLCBpdCBnaXZlcyBhbiBvcHBvcnR1bml0eSBmb3IgYE9uUHVzaGAgY29tcG9uZW50cyB0byBiZSBtYXJrZWQgYERpcnR5YFxuICAvLyBiZWZvcmUgdGhlIENoZWNrTm9DaGFuZ2VzIHBhc3MuIFdlIGRvbid0IHdhbnQgZXhpc3RpbmcgZXJyb3JzIHRoYXQgYXJlIGhpZGRlbiBieSB0aGVcbiAgLy8gY3VycmVudCBDaGVja05vQ2hhbmdlcyBidWcgdG8gc3VyZmFjZSB3aGVuIG1ha2luZyB1bnJlbGF0ZWQgY2hhbmdlcy5cbiAgc2hvdWxkUmVmcmVzaFZpZXcgfHw9ICEhKFxuICAgIGZsYWdzICYgTFZpZXdGbGFncy5EaXJ0eSAmJlxuICAgIG1vZGUgPT09IENoYW5nZURldGVjdGlvbk1vZGUuR2xvYmFsICYmXG4gICAgIWlzSW5DaGVja05vQ2hhbmdlc1Bhc3NcbiAgKTtcblxuICAvLyBBbHdheXMgcmVmcmVzaCB2aWV3cyBtYXJrZWQgZm9yIHJlZnJlc2gsIHJlZ2FyZGxlc3Mgb2YgbW9kZS5cbiAgc2hvdWxkUmVmcmVzaFZpZXcgfHw9ICEhKGZsYWdzICYgTFZpZXdGbGFncy5SZWZyZXNoVmlldyk7XG5cbiAgLy8gUmVmcmVzaCB2aWV3cyB3aGVuIHRoZXkgaGF2ZSBhIGRpcnR5IHJlYWN0aXZlIGNvbnN1bWVyLCByZWdhcmRsZXNzIG9mIG1vZGUuXG4gIHNob3VsZFJlZnJlc2hWaWV3IHx8PSAhIShjb25zdW1lcj8uZGlydHkgJiYgY29uc3VtZXJQb2xsUHJvZHVjZXJzRm9yQ2hhbmdlKGNvbnN1bWVyKSk7XG5cbiAgc2hvdWxkUmVmcmVzaFZpZXcgfHw9ICEhKG5nRGV2TW9kZSAmJiBpc0V4aGF1c3RpdmVDaGVja05vQ2hhbmdlcygpKTtcblxuICAvLyBNYXJrIHRoZSBGbGFncyBhbmQgYFJlYWN0aXZlTm9kZWAgYXMgbm90IGRpcnR5IGJlZm9yZSByZWZyZXNoaW5nIHRoZSBjb21wb25lbnQsIHNvIHRoYXQgdGhleVxuICAvLyBjYW4gYmUgcmUtZGlydGllZCBkdXJpbmcgdGhlIHJlZnJlc2ggcHJvY2Vzcy5cbiAgaWYgKGNvbnN1bWVyKSB7XG4gICAgY29uc3VtZXIuZGlydHkgPSBmYWxzZTtcbiAgfVxuICBsVmlld1tGTEFHU10gJj0gfihMVmlld0ZsYWdzLkhhc0NoaWxkVmlld3NUb1JlZnJlc2ggfCBMVmlld0ZsYWdzLlJlZnJlc2hWaWV3KTtcblxuICBpZiAoc2hvdWxkUmVmcmVzaFZpZXcpIHtcbiAgICByZWZyZXNoVmlldyh0VmlldywgbFZpZXcsIHRWaWV3LnRlbXBsYXRlLCBsVmlld1tDT05URVhUXSk7XG4gIH0gZWxzZSBpZiAoZmxhZ3MgJiBMVmlld0ZsYWdzLkhhc0NoaWxkVmlld3NUb1JlZnJlc2gpIHtcbiAgICBkZXRlY3RDaGFuZ2VzSW5FbWJlZGRlZFZpZXdzKGxWaWV3LCBDaGFuZ2VEZXRlY3Rpb25Nb2RlLlRhcmdldGVkKTtcbiAgICBjb25zdCBjb21wb25lbnRzID0gdFZpZXcuY29tcG9uZW50cztcbiAgICBpZiAoY29tcG9uZW50cyAhPT0gbnVsbCkge1xuICAgICAgZGV0ZWN0Q2hhbmdlc0luQ2hpbGRDb21wb25lbnRzKGxWaWV3LCBjb21wb25lbnRzLCBDaGFuZ2VEZXRlY3Rpb25Nb2RlLlRhcmdldGVkKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFJlZnJlc2hlcyBjaGlsZCBjb21wb25lbnRzIGluIHRoZSBjdXJyZW50IHZpZXcgKHVwZGF0ZSBtb2RlKS4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJbkNoaWxkQ29tcG9uZW50cyhcbiAgaG9zdExWaWV3OiBMVmlldyxcbiAgY29tcG9uZW50czogbnVtYmVyW10sXG4gIG1vZGU6IENoYW5nZURldGVjdGlvbk1vZGUsXG4pOiB2b2lkIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGV0ZWN0Q2hhbmdlc0luQ29tcG9uZW50KGhvc3RMVmlldywgY29tcG9uZW50c1tpXSwgbW9kZSk7XG4gIH1cbn1cbiJdfQ==
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW5zdHJ1Y3Rpb25zL2NoYW5nZV9kZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixpQkFBaUIsR0FFbEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUMsWUFBWSxFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUM1RCxPQUFPLEVBQUMsYUFBYSxFQUFFLFdBQVcsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTlGLE9BQU8sRUFDTCxPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxLQUFLLEVBSUwsMEJBQTBCLEVBQzFCLEtBQUssR0FFTixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUVoQyw4QkFBOEIsR0FDL0IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixvQkFBb0IsR0FDckIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDbkYs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QUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0Msd0JBQXdCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBjb25zdW1lckFmdGVyQ29tcHV0YXRpb24sXG4gIGNvbnN1bWVyQmVmb3JlQ29tcHV0YXRpb24sXG4gIGNvbnN1bWVyRGVzdHJveSxcbiAgY29uc3VtZXJQb2xsUHJvZHVjZXJzRm9yQ2hhbmdlLFxuICBnZXRBY3RpdmVDb25zdW1lcixcbiAgUmVhY3RpdmVOb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3ByaW1pdGl2ZXMvc2lnbmFscyc7XG5cbmltcG9ydCB7UnVudGltZUVycm9yLCBSdW50aW1lRXJyb3JDb2RlfSBmcm9tICcuLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHthc3NlcnREZWZpbmVkLCBhc3NlcnRFcXVhbH0gZnJvbSAnLi4vLi4vdXRpbC9hc3NlcnQnO1xuaW1wb3J0IHtleGVjdXRlQ2hlY2tIb29rcywgZXhlY3V0ZUluaXRBbmRDaGVja0hvb2tzLCBpbmNyZW1lbnRJbml0UGhhc2VGbGFnc30gZnJvbSAnLi4vaG9va3MnO1xuaW1wb3J0IHtDT05UQUlORVJfSEVBREVSX09GRlNFVCwgTENvbnRhaW5lckZsYWdzLCBNT1ZFRF9WSUVXU30gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb250YWluZXInO1xuaW1wb3J0IHtDb21wb25lbnRUZW1wbGF0ZSwgUmVuZGVyRmxhZ3N9IGZyb20gJy4uL2ludGVyZmFjZXMvZGVmaW5pdGlvbic7XG5pbXBvcnQge1xuICBDT05URVhULFxuICBFRkZFQ1RTX1RPX1NDSEVEVUxFLFxuICBFTlZJUk9OTUVOVCxcbiAgRkxBR1MsXG4gIEluaXRQaGFzZVN0YXRlLFxuICBMVmlldyxcbiAgTFZpZXdGbGFncyxcbiAgUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVIsXG4gIFRWSUVXLFxuICBUVmlldyxcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3JztcbmltcG9ydCB7XG4gIGdldE9yQ3JlYXRlVGVtcG9yYXJ5Q29uc3VtZXIsXG4gIGdldE9yQm9ycm93UmVhY3RpdmVMVmlld0NvbnN1bWVyLFxuICBtYXliZVJldHVyblJlYWN0aXZlTFZpZXdDb25zdW1lcixcbiAgUmVhY3RpdmVMVmlld0NvbnN1bWVyLFxuICB2aWV3U2hvdWxkSGF2ZVJlYWN0aXZlQ29uc3VtZXIsXG59IGZyb20gJy4uL3JlYWN0aXZlX2x2aWV3X2NvbnN1bWVyJztcbmltcG9ydCB7XG4gIENoZWNrTm9DaGFuZ2VzTW9kZSxcbiAgZW50ZXJWaWV3LFxuICBpc0V4aGF1c3RpdmVDaGVja05vQ2hhbmdlcyxcbiAgaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZSxcbiAgaXNSZWZyZXNoaW5nVmlld3MsXG4gIGxlYXZlVmlldyxcbiAgc2V0QmluZGluZ0luZGV4LFxuICBzZXRJc0luQ2hlY2tOb0NoYW5nZXNNb2RlLFxuICBzZXRJc1JlZnJlc2hpbmdWaWV3cyxcbn0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHtnZXRGaXJzdExDb250YWluZXIsIGdldE5leHRMQ29udGFpbmVyfSBmcm9tICcuLi91dGlsL3ZpZXdfdHJhdmVyc2FsX3V0aWxzJztcbmltcG9ydCB7XG4gIGdldENvbXBvbmVudExWaWV3QnlJbmRleCxcbiAgaXNDcmVhdGlvbk1vZGUsXG4gIG1hcmtBbmNlc3RvcnNGb3JUcmF2ZXJzYWwsXG4gIG1hcmtWaWV3Rm9yUmVmcmVzaCxcbiAgcmVxdWlyZXNSZWZyZXNoT3JUcmF2ZXJzYWwsXG4gIHJlc2V0UHJlT3JkZXJIb29rRmxhZ3MsXG4gIHZpZXdBdHRhY2hlZFRvQ2hhbmdlRGV0ZWN0b3IsXG59IGZyb20gJy4uL3V0aWwvdmlld191dGlscyc7XG5cbmltcG9ydCB7XG4gIGV4ZWN1dGVUZW1wbGF0ZSxcbiAgZXhlY3V0ZVZpZXdRdWVyeUZuLFxuICBoYW5kbGVFcnJvcixcbiAgcHJvY2Vzc0hvc3RCaW5kaW5nT3BDb2RlcyxcbiAgcmVmcmVzaENvbnRlbnRRdWVyaWVzLFxufSBmcm9tICcuL3NoYXJlZCc7XG5cbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRyYXZlcnNhbCB3aWxsIHJlcnVuIGJlZm9yZSB0aHJvd2luZyBhbiBlcnJvci5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWElNVU1fUkVGUkVTSF9SRVJVTlMgPSAxMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW50ZXJuYWwoXG4gIGxWaWV3OiBMVmlldyxcbiAgbm90aWZ5RXJyb3JIYW5kbGVyID0gdHJ1ZSxcbiAgbW9kZSA9IENoYW5nZURldGVjdGlvbk1vZGUuR2xvYmFsLFxuKSB7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gbFZpZXdbRU5WSVJPTk1FTlRdO1xuICBjb25zdCByZW5kZXJlckZhY3RvcnkgPSBlbnZpcm9ubWVudC5yZW5kZXJlckZhY3Rvcnk7XG5cbiAgLy8gQ2hlY2sgbm8gY2hhbmdlcyBtb2RlIGlzIGEgZGV2IG9ubHkgbW9kZSB1c2VkIHRvIHZlcmlmeSB0aGF0IGJpbmRpbmdzIGhhdmUgbm90IGNoYW5nZWRcbiAgLy8gc2luY2UgdGhleSB3ZXJlIGFzc2lnbmVkLiBXZSBkbyBub3Qgd2FudCB0byBpbnZva2UgcmVuZGVyZXIgZmFjdG9yeSBmdW5jdGlvbnMgaW4gdGhhdCBtb2RlXG4gIC8vIHRvIGF2b2lkIGFueSBwb3NzaWJsZSBzaWRlLWVmZmVjdHMuXG4gIGNvbnN0IGNoZWNrTm9DaGFuZ2VzTW9kZSA9ICEhbmdEZXZNb2RlICYmIGlzSW5DaGVja05vQ2hhbmdlc01vZGUoKTtcblxuICBpZiAoIWNoZWNrTm9DaGFuZ2VzTW9kZSkge1xuICAgIHJlbmRlcmVyRmFjdG9yeS5iZWdpbj8uKCk7XG4gIH1cblxuICB0cnkge1xuICAgIGRldGVjdENoYW5nZXNJblZpZXdXaGlsZURpcnR5KGxWaWV3LCBtb2RlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAobm90aWZ5RXJyb3JIYW5kbGVyKSB7XG4gICAgICBoYW5kbGVFcnJvcihsVmlldywgZXJyb3IpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoIWNoZWNrTm9DaGFuZ2VzTW9kZSkge1xuICAgICAgcmVuZGVyZXJGYWN0b3J5LmVuZD8uKCk7XG5cbiAgICAgIC8vIE9uZSBmaW5hbCBmbHVzaCBvZiB0aGUgZWZmZWN0cyBxdWV1ZSB0byBjYXRjaCBhbnkgZWZmZWN0cyBjcmVhdGVkIGluIGBuZ0FmdGVyVmlld0luaXRgIG9yXG4gICAgICAvLyBvdGhlciBwb3N0LW9yZGVyIGhvb2tzLlxuICAgICAgZW52aXJvbm1lbnQuaW5saW5lRWZmZWN0UnVubmVyPy5mbHVzaCgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW5WaWV3V2hpbGVEaXJ0eShsVmlldzogTFZpZXcsIG1vZGU6IENoYW5nZURldGVjdGlvbk1vZGUpIHtcbiAgY29uc3QgbGFzdElzUmVmcmVzaGluZ1ZpZXdzVmFsdWUgPSBpc1JlZnJlc2hpbmdWaWV3cygpO1xuICB0cnkge1xuICAgIHNldElzUmVmcmVzaGluZ1ZpZXdzKHRydWUpO1xuICAgIGRldGVjdENoYW5nZXNJblZpZXcobFZpZXcsIG1vZGUpO1xuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCBvciB3YW50IHRvIGRvIGFueSBsb29waW5nIHdoZW4gaW4gZXhoYXVzdGl2ZSBjaGVja05vQ2hhbmdlcyBiZWNhdXNlIHdlXG4gICAgLy8gYWxyZWFkeSB0cmF2ZXJzZSBhbGwgdGhlIHZpZXdzIGFuZCBub3RoaW5nIHNob3VsZCBjaGFuZ2Ugc28gd2Ugc2hvdWxkbid0IGhhdmUgdG8gZG9cbiAgICAvLyBhbm90aGVyIHBhc3MgdG8gcGljayB1cCBuZXcgY2hhbmdlcy5cbiAgICBpZiAobmdEZXZNb2RlICYmIGlzRXhoYXVzdGl2ZUNoZWNrTm9DaGFuZ2VzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmV0cmllcyA9IDA7XG4gICAgLy8gSWYgYWZ0ZXIgcnVubmluZyBjaGFuZ2UgZGV0ZWN0aW9uLCB0aGlzIHZpZXcgc3RpbGwgbmVlZHMgdG8gYmUgcmVmcmVzaGVkIG9yIHRoZXJlIGFyZVxuICAgIC8vIGRlc2NlbmRhbnRzIHZpZXdzIHRoYXQgbmVlZCB0byBiZSByZWZyZXNoZWQgZHVlIHRvIHJlLWRpcnR5aW5nIGR1cmluZyB0aGUgY2hhbmdlIGRldGVjdGlvblxuICAgIC8vIHJ1biwgZGV0ZWN0IGNoYW5nZXMgb24gdGhlIHZpZXcgYWdhaW4uIFdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGluIGBUYXJnZXRlZGAgbW9kZSB0byBvbmx5XG4gICAgLy8gcmVmcmVzaCB2aWV3cyB3aXRoIHRoZSBgUmVmcmVzaFZpZXdgIGZsYWcuXG4gICAgd2hpbGUgKHJlcXVpcmVzUmVmcmVzaE9yVHJhdmVyc2FsKGxWaWV3KSkge1xuICAgICAgaWYgKHJldHJpZXMgPT09IE1BWElNVU1fUkVGUkVTSF9SRVJVTlMpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICBSdW50aW1lRXJyb3JDb2RlLklORklOSVRFX0NIQU5HRV9ERVRFQ1RJT04sXG4gICAgICAgICAgbmdEZXZNb2RlICYmXG4gICAgICAgICAgICAnSW5maW5pdGUgY2hhbmdlIGRldGVjdGlvbiB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB2aWV3cy4gJyArXG4gICAgICAgICAgICAgICdUaGVyZSBtYXkgYmUgY29tcG9uZW50cyB3aGljaCBlYWNoIGNhdXNlIHRoZSBvdGhlciB0byByZXF1aXJlIGEgcmVmcmVzaCwgJyArXG4gICAgICAgICAgICAgICdjYXVzaW5nIGFuIGluZmluaXRlIGxvb3AuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHJpZXMrKztcbiAgICAgIC8vIEV2ZW4gaWYgdGhpcyB2aWV3IGlzIGRldGFjaGVkLCB3ZSBzdGlsbCBkZXRlY3QgY2hhbmdlcyBpbiB0YXJnZXRlZCBtb2RlIGJlY2F1c2UgdGhpcyB3YXNcbiAgICAgIC8vIHRoZSByb290IG9mIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bi5cbiAgICAgIGRldGVjdENoYW5nZXNJblZpZXcobFZpZXcsIENoYW5nZURldGVjdGlvbk1vZGUuVGFyZ2V0ZWQpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyByZXN0b3JlIHN0YXRlIHRvIHdoYXQgaXQgd2FzIGJlZm9yZSBlbnRlcmluZyB0aGlzIGNoYW5nZSBkZXRlY3Rpb24gbG9vcFxuICAgIHNldElzUmVmcmVzaGluZ1ZpZXdzKGxhc3RJc1JlZnJlc2hpbmdWaWV3c1ZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tOb0NoYW5nZXNJbnRlcm5hbChcbiAgbFZpZXc6IExWaWV3LFxuICBtb2RlOiBDaGVja05vQ2hhbmdlc01vZGUsXG4gIG5vdGlmeUVycm9ySGFuZGxlciA9IHRydWUsXG4pIHtcbiAgc2V0SXNJbkNoZWNrTm9DaGFuZ2VzTW9kZShtb2RlKTtcbiAgdHJ5IHtcbiAgICBkZXRlY3RDaGFuZ2VzSW50ZXJuYWwobFZpZXcsIG5vdGlmeUVycm9ySGFuZGxlcik7XG4gIH0gZmluYWxseSB7XG4gICAgc2V0SXNJbkNoZWNrTm9DaGFuZ2VzTW9kZShDaGVja05vQ2hhbmdlc01vZGUuT2ZmKTtcbiAgfVxufVxuXG4vKipcbiAqIERpZmZlcmVudCBtb2RlcyBvZiB0cmF2ZXJzaW5nIHRoZSBsb2dpY2FsIHZpZXcgdHJlZSBkdXJpbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAqXG4gKlxuICogVGhlIGNoYW5nZSBkZXRlY3Rpb24gdHJhdmVyc2FsIGFsZ29yaXRobSBzd2l0Y2hlcyBiZXR3ZWVuIHRoZXNlIG1vZGVzIGJhc2VkIG9uIHZhcmlvdXNcbiAqIGNvbmRpdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIENoYW5nZURldGVjdGlvbk1vZGUge1xuICAvKipcbiAgICogSW4gYEdsb2JhbGAgbW9kZSwgYERpcnR5YCBhbmQgYENoZWNrQWx3YXlzYCB2aWV3cyBhcmUgcmVmcmVzaGVkIGFzIHdlbGwgYXMgdmlld3Mgd2l0aCB0aGVcbiAgICogYFJlZnJlc2hWaWV3YCBmbGFnLlxuICAgKi9cbiAgR2xvYmFsLFxuICAvKipcbiAgICogSW4gYFRhcmdldGVkYCBtb2RlLCBvbmx5IHZpZXdzIHdpdGggdGhlIGBSZWZyZXNoVmlld2AgZmxhZyBvciB1cGRhdGVkIHNpZ25hbHMgYXJlIHJlZnJlc2hlZC5cbiAgICovXG4gIFRhcmdldGVkLFxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIHZpZXcgaW4gdXBkYXRlIG1vZGUuIFRoaXMgaW5jbHVkZXMgYSBudW1iZXIgb2Ygc3RlcHMgaW4gYSBzcGVjaWZpYyBvcmRlcjpcbiAqIC0gZXhlY3V0aW5nIGEgdGVtcGxhdGUgZnVuY3Rpb24gaW4gdXBkYXRlIG1vZGU7XG4gKiAtIGV4ZWN1dGluZyBob29rcztcbiAqIC0gcmVmcmVzaGluZyBxdWVyaWVzO1xuICogLSBzZXR0aW5nIGhvc3QgYmluZGluZ3M7XG4gKiAtIHJlZnJlc2hpbmcgY2hpbGQgKGVtYmVkZGVkIGFuZCBjb21wb25lbnQpIHZpZXdzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoVmlldzxUPihcbiAgdFZpZXc6IFRWaWV3LFxuICBsVmlldzogTFZpZXcsXG4gIHRlbXBsYXRlRm46IENvbXBvbmVudFRlbXBsYXRlPHt9PiB8IG51bGwsXG4gIGNvbnRleHQ6IFQsXG4pIHtcbiAgbmdEZXZNb2RlICYmIGFzc2VydEVxdWFsKGlzQ3JlYXRpb25Nb2RlKGxWaWV3KSwgZmFsc2UsICdTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlJyk7XG4gIGNvbnN0IGZsYWdzID0gbFZpZXdbRkxBR1NdO1xuICBpZiAoKGZsYWdzICYgTFZpZXdGbGFncy5EZXN0cm95ZWQpID09PSBMVmlld0ZsYWdzLkRlc3Ryb3llZCkgcmV0dXJuO1xuXG4gIC8vIENoZWNrIG5vIGNoYW5nZXMgbW9kZSBpcyBhIGRldiBvbmx5IG1vZGUgdXNlZCB0byB2ZXJpZnkgdGhhdCBiaW5kaW5ncyBoYXZlIG5vdCBjaGFuZ2VkXG4gIC8vIHNpbmNlIHRoZXkgd2VyZSBhc3NpZ25lZC4gV2UgZG8gbm90IHdhbnQgdG8gZXhlY3V0ZSBsaWZlY3ljbGUgaG9va3MgaW4gdGhhdCBtb2RlLlxuICBjb25zdCBpc0luQ2hlY2tOb0NoYW5nZXNQYXNzID0gbmdEZXZNb2RlICYmIGlzSW5DaGVja05vQ2hhbmdlc01vZGUoKTtcbiAgY29uc3QgaXNJbkV4aGF1c3RpdmVDaGVja05vQ2hhbmdlc1Bhc3MgPSBuZ0Rldk1vZGUgJiYgaXNFeGhhdXN0aXZlQ2hlY2tOb0NoYW5nZXMoKTtcblxuICAhaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcyAmJiBsVmlld1tFTlZJUk9OTUVOVF0uaW5saW5lRWZmZWN0UnVubmVyPy5mbHVzaCgpO1xuXG4gIC8vIFN0YXJ0IGNvbXBvbmVudCByZWFjdGl2ZSBjb250ZXh0XG4gIC8vIC0gV2UgbWlnaHQgYWxyZWFkeSBiZSBpbiBhIHJlYWN0aXZlIGNvbnRleHQgaWYgdGhpcyBpcyBhbiBlbWJlZGRlZCB2aWV3IG9mIHRoZSBob3N0LlxuICAvLyAtIFdlIG1pZ2h0IGJlIGRlc2NlbmRpbmcgaW50byBhIHZpZXcgdGhhdCBuZWVkcyBhIGNvbnN1bWVyLlxuICBlbnRlclZpZXcobFZpZXcpO1xuICBsZXQgcmV0dXJuQ29uc3VtZXJUb1Bvb2wgPSB0cnVlO1xuICBsZXQgcHJldkNvbnN1bWVyOiBSZWFjdGl2ZU5vZGUgfCBudWxsID0gbnVsbDtcbiAgbGV0IGN1cnJlbnRDb25zdW1lcjogUmVhY3RpdmVMVmlld0NvbnN1bWVyIHwgbnVsbCA9IG51bGw7XG4gIGlmICghaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcykge1xuICAgIGlmICh2aWV3U2hvdWxkSGF2ZVJlYWN0aXZlQ29uc3VtZXIodFZpZXcpKSB7XG4gICAgICBjdXJyZW50Q29uc3VtZXIgPSBnZXRPckJvcnJvd1JlYWN0aXZlTFZpZXdDb25zdW1lcihsVmlldyk7XG4gICAgICBwcmV2Q29uc3VtZXIgPSBjb25zdW1lckJlZm9yZUNvbXB1dGF0aW9uKGN1cnJlbnRDb25zdW1lcik7XG4gICAgfSBlbHNlIGlmIChnZXRBY3RpdmVDb25zdW1lcigpID09PSBudWxsKSB7XG4gICAgICAvLyBJZiB0aGUgY3VycmVudCB2aWV3IHNob3VsZCBub3QgaGF2ZSBhIHJlYWN0aXZlIGNvbnN1bWVyIGJ1dCB3ZSBkb24ndCBoYXZlIGFuIGFjdGl2ZSBjb25zdW1lcixcbiAgICAgIC8vIHdlIHN0aWxsIG5lZWQgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IGNvbnN1bWVyIHRvIHRyYWNrIGFueSBzaWduYWwgcmVhZHMgaW4gdGhpcyB0ZW1wbGF0ZS5cbiAgICAgIC8vIFRoaXMgaXMgYSByYXJlIGNhc2UgdGhhdCBjYW4gaGFwcGVuIHdpdGggYHZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KC4uLikuZGV0ZWN0Q2hhbmdlcygpYC5cbiAgICAgIC8vIFRoaXMgdGVtcG9yYXJ5IGNvbnN1bWVyIG1hcmtzIHRoZSBmaXJzdCBwYXJlbnQgdGhhdCBfc2hvdWxkXyBoYXZlIGEgY29uc3VtZXIgZm9yIHJlZnJlc2guXG4gICAgICAvLyBPbmNlIHRoYXQgcmVmcmVzaCBoYXBwZW5zLCB0aGUgc2lnbmFscyB3aWxsIGJlIHRyYWNrZWQgaW4gdGhlIHBhcmVudCBjb25zdW1lciBhbmQgd2UgY2FuIGRlc3Ryb3lcbiAgICAgIC8vIHRoZSB0ZW1wb3Jhcnkgb25lLlxuICAgICAgcmV0dXJuQ29uc3VtZXJUb1Bvb2wgPSBmYWxzZTtcbiAgICAgIGN1cnJlbnRDb25zdW1lciA9IGdldE9yQ3JlYXRlVGVtcG9yYXJ5Q29uc3VtZXIobFZpZXcpO1xuICAgICAgcHJldkNvbnN1bWVyID0gY29uc3VtZXJCZWZvcmVDb21wdXRhdGlvbihjdXJyZW50Q29uc3VtZXIpO1xuICAgIH0gZWxzZSBpZiAobFZpZXdbUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVJdKSB7XG4gICAgICBjb25zdW1lckRlc3Ryb3kobFZpZXdbUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVJdKTtcbiAgICAgIGxWaWV3W1JFQUNUSVZFX1RFTVBMQVRFX0NPTlNVTUVSXSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXNldFByZU9yZGVySG9va0ZsYWdzKGxWaWV3KTtcblxuICAgIHNldEJpbmRpbmdJbmRleCh0Vmlldy5iaW5kaW5nU3RhcnRJbmRleCk7XG4gICAgaWYgKHRlbXBsYXRlRm4gIT09IG51bGwpIHtcbiAgICAgIGV4ZWN1dGVUZW1wbGF0ZSh0VmlldywgbFZpZXcsIHRlbXBsYXRlRm4sIFJlbmRlckZsYWdzLlVwZGF0ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgaG9va3NJbml0UGhhc2VDb21wbGV0ZWQgPVxuICAgICAgKGZsYWdzICYgTFZpZXdGbGFncy5Jbml0UGhhc2VTdGF0ZU1hc2spID09PSBJbml0UGhhc2VTdGF0ZS5Jbml0UGhhc2VDb21wbGV0ZWQ7XG5cbiAgICAvLyBleGVjdXRlIHByZS1vcmRlciBob29rcyAoT25Jbml0LCBPbkNoYW5nZXMsIERvQ2hlY2spXG4gICAgLy8gUEVSRiBXQVJOSU5HOiBkbyBOT1QgZXh0cmFjdCB0aGlzIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gd2l0aG91dCBydW5uaW5nIGJlbmNobWFya3NcbiAgICBpZiAoIWlzSW5DaGVja05vQ2hhbmdlc1Bhc3MpIHtcbiAgICAgIGlmIChob29rc0luaXRQaGFzZUNvbXBsZXRlZCkge1xuICAgICAgICBjb25zdCBwcmVPcmRlckNoZWNrSG9va3MgPSB0Vmlldy5wcmVPcmRlckNoZWNrSG9va3M7XG4gICAgICAgIGlmIChwcmVPcmRlckNoZWNrSG9va3MgIT09IG51bGwpIHtcbiAgICAgICAgICBleGVjdXRlQ2hlY2tIb29rcyhsVmlldywgcHJlT3JkZXJDaGVja0hvb2tzLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJlT3JkZXJIb29rcyA9IHRWaWV3LnByZU9yZGVySG9va3M7XG4gICAgICAgIGlmIChwcmVPcmRlckhvb2tzICE9PSBudWxsKSB7XG4gICAgICAgICAgZXhlY3V0ZUluaXRBbmRDaGVja0hvb2tzKGxWaWV3LCBwcmVPcmRlckhvb2tzLCBJbml0UGhhc2VTdGF0ZS5PbkluaXRIb29rc1RvQmVSdW4sIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGluY3JlbWVudEluaXRQaGFzZUZsYWdzKGxWaWV3LCBJbml0UGhhc2VTdGF0ZS5PbkluaXRIb29rc1RvQmVSdW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIG1hcmsgdHJhbnNwbGFudGVkIHZpZXdzIGZvciByZWZyZXNoIHdoZW4gZG9pbmcgZXhoYXVzdGl2ZSBjaGVja3NcbiAgICAvLyBiZWNhdXNlIGFsbCB2aWV3cyB3aWxsIGJlIHJlYWNoZWQgYW55d2F5cyBkdXJpbmcgdGhlIHRyYXZlcnNhbC5cbiAgICBpZiAoIWlzSW5FeGhhdXN0aXZlQ2hlY2tOb0NoYW5nZXNQYXNzKSB7XG4gICAgICAvLyBGaXJzdCBtYXJrIHRyYW5zcGxhbnRlZCB2aWV3cyB0aGF0IGFyZSBkZWNsYXJlZCBpbiB0aGlzIGxWaWV3IGFzIG5lZWRpbmcgYSByZWZyZXNoIGF0IHRoZWlyXG4gICAgICAvLyBpbnNlcnRpb24gcG9pbnRzLiBUaGlzIGlzIG5lZWRlZCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIHRoZSB0ZW1wbGF0ZSBpcyBkZWZpbmVkIGluIHRoaXNcbiAgICAgIC8vIGBMVmlld2AgYnV0IGl0cyBkZWNsYXJhdGlvbiBhcHBlYXJzIGFmdGVyIHRoZSBpbnNlcnRpb24gY29tcG9uZW50LlxuICAgICAgbWFya1RyYW5zcGxhbnRlZFZpZXdzRm9yUmVmcmVzaChsVmlldyk7XG4gICAgfVxuICAgIGRldGVjdENoYW5nZXNJbkVtYmVkZGVkVmlld3MobFZpZXcsIENoYW5nZURldGVjdGlvbk1vZGUuR2xvYmFsKTtcblxuICAgIC8vIENvbnRlbnQgcXVlcnkgcmVzdWx0cyBtdXN0IGJlIHJlZnJlc2hlZCBiZWZvcmUgY29udGVudCBob29rcyBhcmUgY2FsbGVkLlxuICAgIGlmICh0Vmlldy5jb250ZW50UXVlcmllcyAhPT0gbnVsbCkge1xuICAgICAgcmVmcmVzaENvbnRlbnRRdWVyaWVzKHRWaWV3LCBsVmlldyk7XG4gICAgfVxuXG4gICAgLy8gZXhlY3V0ZSBjb250ZW50IGhvb2tzIChBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkKVxuICAgIC8vIFBFUkYgV0FSTklORzogZG8gTk9UIGV4dHJhY3QgdGhpcyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHdpdGhvdXQgcnVubmluZyBiZW5jaG1hcmtzXG4gICAgaWYgKCFpc0luQ2hlY2tOb0NoYW5nZXNQYXNzKSB7XG4gICAgICBpZiAoaG9va3NJbml0UGhhc2VDb21wbGV0ZWQpIHtcbiAgICAgICAgY29uc3QgY29udGVudENoZWNrSG9va3MgPSB0Vmlldy5jb250ZW50Q2hlY2tIb29rcztcbiAgICAgICAgaWYgKGNvbnRlbnRDaGVja0hvb2tzICE9PSBudWxsKSB7XG4gICAgICAgICAgZXhlY3V0ZUNoZWNrSG9va3MobFZpZXcsIGNvbnRlbnRDaGVja0hvb2tzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udGVudEhvb2tzID0gdFZpZXcuY29udGVudEhvb2tzO1xuICAgICAgICBpZiAoY29udGVudEhvb2tzICE9PSBudWxsKSB7XG4gICAgICAgICAgZXhlY3V0ZUluaXRBbmRDaGVja0hvb2tzKFxuICAgICAgICAgICAgbFZpZXcsXG4gICAgICAgICAgICBjb250ZW50SG9va3MsXG4gICAgICAgICAgICBJbml0UGhhc2VTdGF0ZS5BZnRlckNvbnRlbnRJbml0SG9va3NUb0JlUnVuLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaW5jcmVtZW50SW5pdFBoYXNlRmxhZ3MobFZpZXcsIEluaXRQaGFzZVN0YXRlLkFmdGVyQ29udGVudEluaXRIb29rc1RvQmVSdW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NIb3N0QmluZGluZ09wQ29kZXModFZpZXcsIGxWaWV3KTtcblxuICAgIC8vIFJlZnJlc2ggY2hpbGQgY29tcG9uZW50IHZpZXdzLlxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0Vmlldy5jb21wb25lbnRzO1xuICAgIGlmIChjb21wb25lbnRzICE9PSBudWxsKSB7XG4gICAgICBkZXRlY3RDaGFuZ2VzSW5DaGlsZENvbXBvbmVudHMobFZpZXcsIGNvbXBvbmVudHMsIENoYW5nZURldGVjdGlvbk1vZGUuR2xvYmFsKTtcbiAgICB9XG5cbiAgICAvLyBWaWV3IHF1ZXJpZXMgbXVzdCBleGVjdXRlIGFmdGVyIHJlZnJlc2hpbmcgY2hpbGQgY29tcG9uZW50cyBiZWNhdXNlIGEgdGVtcGxhdGUgaW4gdGhpcyB2aWV3XG4gICAgLy8gY291bGQgYmUgaW5zZXJ0ZWQgaW4gYSBjaGlsZCBjb21wb25lbnQuIElmIHRoZSB2aWV3IHF1ZXJ5IGV4ZWN1dGVzIGJlZm9yZSBjaGlsZCBjb21wb25lbnRcbiAgICAvLyByZWZyZXNoLCB0aGUgdGVtcGxhdGUgbWlnaHQgbm90IHlldCBiZSBpbnNlcnRlZC5cbiAgICBjb25zdCB2aWV3UXVlcnkgPSB0Vmlldy52aWV3UXVlcnk7XG4gICAgaWYgKHZpZXdRdWVyeSAhPT0gbnVsbCkge1xuICAgICAgZXhlY3V0ZVZpZXdRdWVyeUZuPFQ+KFJlbmRlckZsYWdzLlVwZGF0ZSwgdmlld1F1ZXJ5LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICAvLyBleGVjdXRlIHZpZXcgaG9va3MgKEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQpXG4gICAgLy8gUEVSRiBXQVJOSU5HOiBkbyBOT1QgZXh0cmFjdCB0aGlzIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gd2l0aG91dCBydW5uaW5nIGJlbmNobWFya3NcbiAgICBpZiAoIWlzSW5DaGVja05vQ2hhbmdlc1Bhc3MpIHtcbiAgICAgIGlmIChob29rc0luaXRQaGFzZUNvbXBsZXRlZCkge1xuICAgICAgICBjb25zdCB2aWV3Q2hlY2tIb29rcyA9IHRWaWV3LnZpZXdDaGVja0hvb2tzO1xuICAgICAgICBpZiAodmlld0NoZWNrSG9va3MgIT09IG51bGwpIHtcbiAgICAgICAgICBleGVjdXRlQ2hlY2tIb29rcyhsVmlldywgdmlld0NoZWNrSG9va3MpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2aWV3SG9va3MgPSB0Vmlldy52aWV3SG9va3M7XG4gICAgICAgIGlmICh2aWV3SG9va3MgIT09IG51bGwpIHtcbiAgICAgICAgICBleGVjdXRlSW5pdEFuZENoZWNrSG9va3MobFZpZXcsIHZpZXdIb29rcywgSW5pdFBoYXNlU3RhdGUuQWZ0ZXJWaWV3SW5pdEhvb2tzVG9CZVJ1bik7XG4gICAgICAgIH1cbiAgICAgICAgaW5jcmVtZW50SW5pdFBoYXNlRmxhZ3MobFZpZXcsIEluaXRQaGFzZVN0YXRlLkFmdGVyVmlld0luaXRIb29rc1RvQmVSdW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodFZpZXcuZmlyc3RVcGRhdGVQYXNzID09PSB0cnVlKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIG9ubHkgZmxpcCB0aGUgZmxhZyBvbiBzdWNjZXNzZnVsIGByZWZyZXNoVmlld2Agb25seVxuICAgICAgLy8gRG9uJ3QgZG8gdGhpcyBpbiBgZmluYWxseWAgYmxvY2suXG4gICAgICAvLyBJZiB3ZSBkaWQgdGhpcyBpbiBgZmluYWxseWAgYmxvY2sgdGhlbiBhbiBleGNlcHRpb24gY291bGQgYmxvY2sgdGhlIGV4ZWN1dGlvbiBvZiBzdHlsaW5nXG4gICAgICAvLyBpbnN0cnVjdGlvbnMgd2hpY2ggaW4gdHVybiB3b3VsZCBiZSB1bmFibGUgdG8gaW5zZXJ0IHRoZW1zZWx2ZXMgaW50byB0aGUgc3R5bGluZyBsaW5rZWRcbiAgICAgIC8vIGxpc3QuIFRoZSByZXN1bHQgb2YgdGhpcyB3b3VsZCBiZSB0aGF0IGlmIHRoZSBleGNlcHRpb24gd291bGQgbm90IGJlIHRocm93IG9uIHN1YnNlcXVlbnQgQ0RcbiAgICAgIC8vIHRoZSBzdHlsaW5nIHdvdWxkIGJlIHVuYWJsZSB0byBwcm9jZXNzIGl0IGRhdGEgYW5kIHJlZmxlY3QgdG8gdGhlIERPTS5cbiAgICAgIHRWaWV3LmZpcnN0VXBkYXRlUGFzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNjaGVkdWxlIGFueSBlZmZlY3RzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIHVwZGF0ZSBwYXNzIG9mIHRoaXMgdmlldy5cbiAgICBpZiAobFZpZXdbRUZGRUNUU19UT19TQ0hFRFVMRV0pIHtcbiAgICAgIGZvciAoY29uc3Qgbm90aWZ5RWZmZWN0IG9mIGxWaWV3W0VGRkVDVFNfVE9fU0NIRURVTEVdKSB7XG4gICAgICAgIG5vdGlmeUVmZmVjdCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBPbmNlIHRoZXkndmUgYmVlbiBydW4sIHdlIGNhbiBkcm9wIHRoZSBhcnJheS5cbiAgICAgIGxWaWV3W0VGRkVDVFNfVE9fU0NIRURVTEVdID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBEbyBub3QgcmVzZXQgdGhlIGRpcnR5IHN0YXRlIHdoZW4gcnVubmluZyBpbiBjaGVjayBubyBjaGFuZ2VzIG1vZGUuIFdlIGRvbid0IHdhbnQgY29tcG9uZW50c1xuICAgIC8vIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciBjaGVjayBubyBjaGFuZ2VzIGlzIGVuYWJsZWQgb3Igbm90LiBGb3IgZXhhbXBsZTpcbiAgICAvLyBNYXJraW5nIGFuIE9uUHVzaCBjb21wb25lbnQgYXMgZGlydHkgZnJvbSB3aXRoaW4gdGhlIGBuZ0FmdGVyVmlld0luaXRgIGhvb2sgaW4gb3JkZXIgdG9cbiAgICAvLyByZWZyZXNoIGEgYE5nQ2xhc3NgIGJpbmRpbmcgc2hvdWxkIHdvcmsuIElmIHdlIHdvdWxkIHJlc2V0IHRoZSBkaXJ0eSBzdGF0ZSBpbiB0aGUgY2hlY2tcbiAgICAvLyBubyBjaGFuZ2VzIGN5Y2xlLCB0aGUgY29tcG9uZW50IHdvdWxkIGJlIG5vdCBiZSBkaXJ0eSBmb3IgdGhlIG5leHQgdXBkYXRlIHBhc3MuIFRoaXMgd291bGRcbiAgICAvLyBiZSBkaWZmZXJlbnQgaW4gcHJvZHVjdGlvbiBtb2RlIHdoZXJlIHRoZSBjb21wb25lbnQgZGlydHkgc3RhdGUgaXMgbm90IHJlc2V0LlxuICAgIGlmICghaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcykge1xuICAgICAgbFZpZXdbRkxBR1NdICY9IH4oTFZpZXdGbGFncy5EaXJ0eSB8IExWaWV3RmxhZ3MuRmlyc3RMVmlld1Bhc3MpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghaXNJbkNoZWNrTm9DaGFuZ2VzUGFzcykge1xuICAgICAgLy8gSWYgcmVmcmVzaGluZyBhIHZpZXcgY2F1c2VzIGFuIGVycm9yLCB3ZSBuZWVkIHRvIHJlbWFyayB0aGUgYW5jZXN0b3JzIGFzIG5lZWRpbmcgdHJhdmVyc2FsXG4gICAgICAvLyBiZWNhdXNlIHRoZSBlcnJvciBtaWdodCBoYXZlIGNhdXNlZCBhIHNpdHVhdGlvbiB3aGVyZSB2aWV3cyBiZWxvdyB0aGUgY3VycmVudCBsb2NhdGlvbiBhcmVcbiAgICAgIC8vIGRpcnR5IGJ1dCB3aWxsIGJlIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhlIFwiaGFzIGRpcnR5IGNoaWxkcmVuXCIgZmxhZyBpbiB0aGUgYW5jZXN0b3JzIGhhcyBiZWVuXG4gICAgICAvLyBjbGVhcmVkIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCB3ZSBmYWlsZWQgdG8gcnVuIHRvIGNvbXBsZXRpb24uXG4gICAgICBtYXJrQW5jZXN0b3JzRm9yVHJhdmVyc2FsKGxWaWV3KTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoY3VycmVudENvbnN1bWVyICE9PSBudWxsKSB7XG4gICAgICBjb25zdW1lckFmdGVyQ29tcHV0YXRpb24oY3VycmVudENvbnN1bWVyLCBwcmV2Q29uc3VtZXIpO1xuICAgICAgaWYgKHJldHVybkNvbnN1bWVyVG9Qb29sKSB7XG4gICAgICAgIG1heWJlUmV0dXJuUmVhY3RpdmVMVmlld0NvbnN1bWVyKGN1cnJlbnRDb25zdW1lcik7XG4gICAgICB9XG4gICAgfVxuICAgIGxlYXZlVmlldygpO1xuICB9XG59XG5cbi8qKlxuICogR29lcyBvdmVyIGVtYmVkZGVkIHZpZXdzIChvbmVzIGNyZWF0ZWQgdGhyb3VnaCBWaWV3Q29udGFpbmVyUmVmIEFQSXMpIGFuZCByZWZyZXNoZXNcbiAqIHRoZW0gYnkgZXhlY3V0aW5nIGFuIGFzc29jaWF0ZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJbkVtYmVkZGVkVmlld3MobFZpZXc6IExWaWV3LCBtb2RlOiBDaGFuZ2VEZXRlY3Rpb25Nb2RlKSB7XG4gIGZvciAoXG4gICAgbGV0IGxDb250YWluZXIgPSBnZXRGaXJzdExDb250YWluZXIobFZpZXcpO1xuICAgIGxDb250YWluZXIgIT09IG51bGw7XG4gICAgbENvbnRhaW5lciA9IGdldE5leHRMQ29udGFpbmVyKGxDb250YWluZXIpXG4gICkge1xuICAgIGZvciAobGV0IGkgPSBDT05UQUlORVJfSEVBREVSX09GRlNFVDsgaSA8IGxDb250YWluZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVtYmVkZGVkTFZpZXcgPSBsQ29udGFpbmVyW2ldO1xuICAgICAgZGV0ZWN0Q2hhbmdlc0luVmlld0lmQXR0YWNoZWQoZW1iZWRkZWRMVmlldywgbW9kZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWFyayB0cmFuc3BsYW50ZWQgdmlld3MgYXMgbmVlZGluZyB0byBiZSByZWZyZXNoZWQgYXQgdGhlaXIgYXR0YWNobWVudCBwb2ludHMuXG4gKlxuICogQHBhcmFtIGxWaWV3IFRoZSBgTFZpZXdgIHRoYXQgbWF5IGhhdmUgdHJhbnNwbGFudGVkIHZpZXdzLlxuICovXG5mdW5jdGlvbiBtYXJrVHJhbnNwbGFudGVkVmlld3NGb3JSZWZyZXNoKGxWaWV3OiBMVmlldykge1xuICBmb3IgKFxuICAgIGxldCBsQ29udGFpbmVyID0gZ2V0Rmlyc3RMQ29udGFpbmVyKGxWaWV3KTtcbiAgICBsQ29udGFpbmVyICE9PSBudWxsO1xuICAgIGxDb250YWluZXIgPSBnZXROZXh0TENvbnRhaW5lcihsQ29udGFpbmVyKVxuICApIHtcbiAgICBpZiAoIShsQ29udGFpbmVyW0ZMQUdTXSAmIExDb250YWluZXJGbGFncy5IYXNUcmFuc3BsYW50ZWRWaWV3cykpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgbW92ZWRWaWV3cyA9IGxDb250YWluZXJbTU9WRURfVklFV1NdITtcbiAgICBuZ0Rldk1vZGUgJiYgYXNzZXJ0RGVmaW5lZChtb3ZlZFZpZXdzLCAnVHJhbnNwbGFudGVkIFZpZXcgZmxhZ3Mgc2V0IGJ1dCBtaXNzaW5nIE1PVkVEX1ZJRVdTJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb3ZlZFZpZXdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtb3ZlZExWaWV3ID0gbW92ZWRWaWV3c1tpXSE7XG4gICAgICBtYXJrVmlld0ZvclJlZnJlc2gobW92ZWRMVmlldyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGV0ZWN0cyBjaGFuZ2VzIGluIGEgY29tcG9uZW50IGJ5IGVudGVyaW5nIHRoZSBjb21wb25lbnQgdmlldyBhbmQgcHJvY2Vzc2luZyBpdHMgYmluZGluZ3MsXG4gKiBxdWVyaWVzLCBldGMuIGlmIGl0IGlzIENoZWNrQWx3YXlzLCBPblB1c2ggYW5kIERpcnR5LCBldGMuXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudEhvc3RJZHggIEVsZW1lbnQgaW5kZXggaW4gTFZpZXdbXSAoYWRqdXN0ZWQgZm9yIEhFQURFUl9PRkZTRVQpXG4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJbkNvbXBvbmVudChcbiAgaG9zdExWaWV3OiBMVmlldyxcbiAgY29tcG9uZW50SG9zdElkeDogbnVtYmVyLFxuICBtb2RlOiBDaGFuZ2VEZXRlY3Rpb25Nb2RlLFxuKTogdm9pZCB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnRFcXVhbChpc0NyZWF0aW9uTW9kZShob3N0TFZpZXcpLCBmYWxzZSwgJ1Nob3VsZCBiZSBydW4gaW4gdXBkYXRlIG1vZGUnKTtcbiAgY29uc3QgY29tcG9uZW50VmlldyA9IGdldENvbXBvbmVudExWaWV3QnlJbmRleChjb21wb25lbnRIb3N0SWR4LCBob3N0TFZpZXcpO1xuICBkZXRlY3RDaGFuZ2VzSW5WaWV3SWZBdHRhY2hlZChjb21wb25lbnRWaWV3LCBtb2RlKTtcbn1cblxuLyoqXG4gKiBWaXNpdHMgYSB2aWV3IGFzIHBhcnQgb2YgY2hhbmdlIGRldGVjdGlvbiB0cmF2ZXJzYWwuXG4gKlxuICogSWYgdGhlIHZpZXcgaXMgZGV0YWNoZWQsIG5vIGFkZGl0aW9uYWwgdHJhdmVyc2FsIGhhcHBlbnMuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJblZpZXdJZkF0dGFjaGVkKGxWaWV3OiBMVmlldywgbW9kZTogQ2hhbmdlRGV0ZWN0aW9uTW9kZSkge1xuICBpZiAoIXZpZXdBdHRhY2hlZFRvQ2hhbmdlRGV0ZWN0b3IobFZpZXcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRldGVjdENoYW5nZXNJblZpZXcobFZpZXcsIG1vZGUpO1xufVxuXG4vKipcbiAqIFZpc2l0cyBhIHZpZXcgYXMgcGFydCBvZiBjaGFuZ2UgZGV0ZWN0aW9uIHRyYXZlcnNhbC5cbiAqXG4gKiBUaGUgdmlldyBpcyByZWZyZXNoZWQgaWY6XG4gKiAtIElmIHRoZSB2aWV3IGlzIENoZWNrQWx3YXlzIG9yIERpcnR5IGFuZCBDaGFuZ2VEZXRlY3Rpb25Nb2RlIGlzIGBHbG9iYWxgXG4gKiAtIElmIHRoZSB2aWV3IGhhcyB0aGUgYFJlZnJlc2hWaWV3YCBmbGFnXG4gKlxuICogVGhlIHZpZXcgaXMgbm90IHJlZnJlc2hlZCwgYnV0IGRlc2NlbmRhbnRzIGFyZSB0cmF2ZXJzZWQgaW4gYENoYW5nZURldGVjdGlvbk1vZGUuVGFyZ2V0ZWRgIGlmIHRoZVxuICogdmlldyBIYXNDaGlsZFZpZXdzVG9SZWZyZXNoIGZsYWcgaXMgc2V0LlxuICovXG5mdW5jdGlvbiBkZXRlY3RDaGFuZ2VzSW5WaWV3KGxWaWV3OiBMVmlldywgbW9kZTogQ2hhbmdlRGV0ZWN0aW9uTW9kZSkge1xuICBjb25zdCBpc0luQ2hlY2tOb0NoYW5nZXNQYXNzID0gbmdEZXZNb2RlICYmIGlzSW5DaGVja05vQ2hhbmdlc01vZGUoKTtcbiAgY29uc3QgdFZpZXcgPSBsVmlld1tUVklFV107XG4gIGNvbnN0IGZsYWdzID0gbFZpZXdbRkxBR1NdO1xuICBjb25zdCBjb25zdW1lciA9IGxWaWV3W1JFQUNUSVZFX1RFTVBMQVRFX0NPTlNVTUVSXTtcblxuICAvLyBSZWZyZXNoIENoZWNrQWx3YXlzIHZpZXdzIGluIEdsb2JhbCBtb2RlLlxuICBsZXQgc2hvdWxkUmVmcmVzaFZpZXc6IGJvb2xlYW4gPSAhIShcbiAgICBtb2RlID09PSBDaGFuZ2VEZXRlY3Rpb25Nb2RlLkdsb2JhbCAmJiBmbGFncyAmIExWaWV3RmxhZ3MuQ2hlY2tBbHdheXNcbiAgKTtcblxuICAvLyBSZWZyZXNoIERpcnR5IHZpZXdzIGluIEdsb2JhbCBtb2RlLCBhcyBsb25nIGFzIHdlJ3JlIG5vdCBpbiBjaGVja05vQ2hhbmdlcy5cbiAgLy8gQ2hlY2tOb0NoYW5nZXMgbmV2ZXIgd29ya2VkIHdpdGggYE9uUHVzaGAgY29tcG9uZW50cyBiZWNhdXNlIHRoZSBgRGlydHlgIGZsYWcgd2FzXG4gIC8vIGNsZWFyZWQgYmVmb3JlIGNoZWNrTm9DaGFuZ2VzIHJhbi4gQmVjYXVzZSB0aGVyZSBpcyBub3cgYSBsb29wIGZvciB0byBjaGVjayBmb3JcbiAgLy8gYmFja3dhcmRzIHZpZXdzLCBpdCBnaXZlcyBhbiBvcHBvcnR1bml0eSBmb3IgYE9uUHVzaGAgY29tcG9uZW50cyB0byBiZSBtYXJrZWQgYERpcnR5YFxuICAvLyBiZWZvcmUgdGhlIENoZWNrTm9DaGFuZ2VzIHBhc3MuIFdlIGRvbid0IHdhbnQgZXhpc3RpbmcgZXJyb3JzIHRoYXQgYXJlIGhpZGRlbiBieSB0aGVcbiAgLy8gY3VycmVudCBDaGVja05vQ2hhbmdlcyBidWcgdG8gc3VyZmFjZSB3aGVuIG1ha2luZyB1bnJlbGF0ZWQgY2hhbmdlcy5cbiAgc2hvdWxkUmVmcmVzaFZpZXcgfHw9ICEhKFxuICAgIGZsYWdzICYgTFZpZXdGbGFncy5EaXJ0eSAmJlxuICAgIG1vZGUgPT09IENoYW5nZURldGVjdGlvbk1vZGUuR2xvYmFsICYmXG4gICAgIWlzSW5DaGVja05vQ2hhbmdlc1Bhc3NcbiAgKTtcblxuICAvLyBBbHdheXMgcmVmcmVzaCB2aWV3cyBtYXJrZWQgZm9yIHJlZnJlc2gsIHJlZ2FyZGxlc3Mgb2YgbW9kZS5cbiAgc2hvdWxkUmVmcmVzaFZpZXcgfHw9ICEhKGZsYWdzICYgTFZpZXdGbGFncy5SZWZyZXNoVmlldyk7XG5cbiAgLy8gUmVmcmVzaCB2aWV3cyB3aGVuIHRoZXkgaGF2ZSBhIGRpcnR5IHJlYWN0aXZlIGNvbnN1bWVyLCByZWdhcmRsZXNzIG9mIG1vZGUuXG4gIHNob3VsZFJlZnJlc2hWaWV3IHx8PSAhIShjb25zdW1lcj8uZGlydHkgJiYgY29uc3VtZXJQb2xsUHJvZHVjZXJzRm9yQ2hhbmdlKGNvbnN1bWVyKSk7XG5cbiAgc2hvdWxkUmVmcmVzaFZpZXcgfHw9ICEhKG5nRGV2TW9kZSAmJiBpc0V4aGF1c3RpdmVDaGVja05vQ2hhbmdlcygpKTtcblxuICAvLyBNYXJrIHRoZSBGbGFncyBhbmQgYFJlYWN0aXZlTm9kZWAgYXMgbm90IGRpcnR5IGJlZm9yZSByZWZyZXNoaW5nIHRoZSBjb21wb25lbnQsIHNvIHRoYXQgdGhleVxuICAvLyBjYW4gYmUgcmUtZGlydGllZCBkdXJpbmcgdGhlIHJlZnJlc2ggcHJvY2Vzcy5cbiAgaWYgKGNvbnN1bWVyKSB7XG4gICAgY29uc3VtZXIuZGlydHkgPSBmYWxzZTtcbiAgfVxuICBsVmlld1tGTEFHU10gJj0gfihMVmlld0ZsYWdzLkhhc0NoaWxkVmlld3NUb1JlZnJlc2ggfCBMVmlld0ZsYWdzLlJlZnJlc2hWaWV3KTtcblxuICBpZiAoc2hvdWxkUmVmcmVzaFZpZXcpIHtcbiAgICByZWZyZXNoVmlldyh0VmlldywgbFZpZXcsIHRWaWV3LnRlbXBsYXRlLCBsVmlld1tDT05URVhUXSk7XG4gIH0gZWxzZSBpZiAoZmxhZ3MgJiBMVmlld0ZsYWdzLkhhc0NoaWxkVmlld3NUb1JlZnJlc2gpIHtcbiAgICBkZXRlY3RDaGFuZ2VzSW5FbWJlZGRlZFZpZXdzKGxWaWV3LCBDaGFuZ2VEZXRlY3Rpb25Nb2RlLlRhcmdldGVkKTtcbiAgICBjb25zdCBjb21wb25lbnRzID0gdFZpZXcuY29tcG9uZW50cztcbiAgICBpZiAoY29tcG9uZW50cyAhPT0gbnVsbCkge1xuICAgICAgZGV0ZWN0Q2hhbmdlc0luQ2hpbGRDb21wb25lbnRzKGxWaWV3LCBjb21wb25lbnRzLCBDaGFuZ2VEZXRlY3Rpb25Nb2RlLlRhcmdldGVkKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFJlZnJlc2hlcyBjaGlsZCBjb21wb25lbnRzIGluIHRoZSBjdXJyZW50IHZpZXcgKHVwZGF0ZSBtb2RlKS4gKi9cbmZ1bmN0aW9uIGRldGVjdENoYW5nZXNJbkNoaWxkQ29tcG9uZW50cyhcbiAgaG9zdExWaWV3OiBMVmlldyxcbiAgY29tcG9uZW50czogbnVtYmVyW10sXG4gIG1vZGU6IENoYW5nZURldGVjdGlvbk1vZGUsXG4pOiB2b2lkIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGV0ZWN0Q2hhbmdlc0luQ29tcG9uZW50KGhvc3RMVmlldywgY29tcG9uZW50c1tpXSwgbW9kZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Declares an `@let` at a specific data slot.
|
|
10
|
+
*
|
|
11
|
+
* @param index Index at which to declare the `@let`.
|
|
12
|
+
*
|
|
13
|
+
* @codeGenApi
|
|
14
|
+
*/
|
|
15
|
+
export function ɵɵdeclareLet(index) {
|
|
16
|
+
// TODO(crisbeto): implement this
|
|
17
|
+
return ɵɵdeclareLet;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Instruction that stores the value of a `@let` declaration on the current view.
|
|
21
|
+
*
|
|
22
|
+
* @codeGenApi
|
|
23
|
+
*/
|
|
24
|
+
export function ɵɵstoreLet(value) {
|
|
25
|
+
// TODO(crisbeto): implement this
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Retrieves the value of a `@let` declaration defined within the same view.
|
|
30
|
+
*
|
|
31
|
+
* @param index Index of the declaration within the view.
|
|
32
|
+
*
|
|
33
|
+
* @codeGenApi
|
|
34
|
+
*/
|
|
35
|
+
export function ɵɵreadContextLet(index) {
|
|
36
|
+
// TODO(crisbeto): implement this
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV0X2RlY2xhcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9pbnN0cnVjdGlvbnMvbGV0X2RlY2xhcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYTtJQUN4QyxpQ0FBaUM7SUFDakMsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFJLEtBQVE7SUFDcEMsaUNBQWlDO0lBQ2pDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBSSxLQUFhO0lBQy9DLGlDQUFpQztJQUNqQyxPQUFPLElBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogRGVjbGFyZXMgYW4gYEBsZXRgIGF0IGEgc3BlY2lmaWMgZGF0YSBzbG90LlxuICpcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBkZWNsYXJlIHRoZSBgQGxldGAuXG4gKlxuICogQGNvZGVHZW5BcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIMm1ybVkZWNsYXJlTGV0KGluZGV4OiBudW1iZXIpOiB0eXBlb2YgybXJtWRlY2xhcmVMZXQge1xuICAvLyBUT0RPKGNyaXNiZXRvKTogaW1wbGVtZW50IHRoaXNcbiAgcmV0dXJuIMm1ybVkZWNsYXJlTGV0O1xufVxuXG4vKipcbiAqIEluc3RydWN0aW9uIHRoYXQgc3RvcmVzIHRoZSB2YWx1ZSBvZiBhIGBAbGV0YCBkZWNsYXJhdGlvbiBvbiB0aGUgY3VycmVudCB2aWV3LlxuICpcbiAqIEBjb2RlR2VuQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiDJtcm1c3RvcmVMZXQ8VD4odmFsdWU6IFQpOiBUIHtcbiAgLy8gVE9ETyhjcmlzYmV0byk6IGltcGxlbWVudCB0aGlzXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIGEgYEBsZXRgIGRlY2xhcmF0aW9uIGRlZmluZWQgd2l0aGluIHRoZSBzYW1lIHZpZXcuXG4gKlxuICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSBkZWNsYXJhdGlvbiB3aXRoaW4gdGhlIHZpZXcuXG4gKlxuICogQGNvZGVHZW5BcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIMm1ybVyZWFkQ29udGV4dExldDxUPihpbmRleDogbnVtYmVyKTogVCB7XG4gIC8vIFRPRE8oY3Jpc2JldG8pOiBpbXBsZW1lbnQgdGhpc1xuICByZXR1cm4gbnVsbCBhcyBhbnk7XG59XG4iXX0=
|
|
@@ -185,6 +185,9 @@ export const angularCoreEnv = (() => ({
|
|
|
185
185
|
'ɵɵregisterNgModuleType': registerNgModuleType,
|
|
186
186
|
'ɵɵgetComponentDepsFactory': r3.ɵɵgetComponentDepsFactory,
|
|
187
187
|
'ɵsetClassDebugInfo': r3.ɵsetClassDebugInfo,
|
|
188
|
+
'ɵɵdeclareLet': r3.ɵɵdeclareLet,
|
|
189
|
+
'ɵɵstoreLet': r3.ɵɵstoreLet,
|
|
190
|
+
'ɵɵreadContextLet': r3.ɵɵreadContextLet,
|
|
188
191
|
'ɵɵsanitizeHtml': sanitization.ɵɵsanitizeHtml,
|
|
189
192
|
'ɵɵsanitizeStyle': sanitization.ɵɵsanitizeStyle,
|
|
190
193
|
'ɵɵsanitizeResourceUrl': sanitization.ɵɵsanitizeResourceUrl,
|
|
@@ -200,4 +203,4 @@ export const angularCoreEnv = (() => ({
|
|
|
200
203
|
'ɵɵtwoWayBindingSet': r3.ɵɵtwoWayBindingSet,
|
|
201
204
|
'ɵɵtwoWayListener': r3.ɵɵtwoWayListener,
|
|
202
205
|
}))();
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ppdC9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyx1QkFBdUIsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEtBQUssWUFBWSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9COzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQThCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMvRCxhQUFhLEVBQUUsRUFBRSxDQUFDLFdBQVc7SUFDN0IseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVB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QkFBZ0I7SUFDakQsZUFBZSxFQUFFLFlBQVksQ0FBQyxhQUFhO0lBQzNDLDRCQUE0QixFQUFFLFlBQVksQ0FBQywwQkFBMEI7SUFDckUscUJBQXFCLEVBQUUsWUFBWSxDQUFDLG1CQUFtQjtJQUN2RCw0QkFBNEIsRUFBRSxZQUFZLENBQUMsMEJBQTBCO0lBQ3JFLDJCQUEyQixFQUFFLHVCQUF1QixDQUFDLHlCQUF5QjtJQUU5RSxZQUFZLEVBQUUsVUFBVTtJQUN4QixtQkFBbUIsRUFBRSxpQkFBaUI7SUFFdEMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQjtJQUN2QyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCO0lBQzNDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxnQkFBZ0I7Q0FDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2ZvcndhcmRSZWYsIHJlc29sdmVGb3J3YXJkUmVmfSBmcm9tICcuLi8uLi9kaS9mb3J3YXJkX3JlZic7XG5pbXBvcnQge8m1ybVpbmplY3QsIMm1ybVpbnZhbGlkRmFjdG9yeURlcH0gZnJvbSAnLi4vLi4vZGkvaW5qZWN0b3JfY29tcGF0aWJpbGl0eSc7XG5pbXBvcnQge8m1ybVkZWZpbmVJbmplY3RhYmxlLCDJtcm1ZGVmaW5lSW5qZWN0b3J9IGZyb20gJy4uLy4uL2RpL2ludGVyZmFjZS9kZWZzJztcbmltcG9ydCB7cmVnaXN0ZXJOZ01vZHVsZVR5cGV9IGZyb20gJy4uLy4uL2xpbmtlci9uZ19tb2R1bGVfcmVnaXN0cmF0aW9uJztcbmltcG9ydCAqIGFzIGlmcmFtZV9hdHRyc192YWxpZGF0aW9uIGZyb20gJy4uLy4uL3Nhbml0aXphdGlvbi9pZnJhbWVfYXR0cnNfdmFsaWRhdGlvbic7XG5pbXBvcnQgKiBhcyBzYW5pdGl6YXRpb24gZnJvbSAnLi4vLi4vc2FuaXRpemF0aW9uL3Nhbml0aXphdGlvbic7XG5pbXBvcnQgKiBhcyByMyBmcm9tICcuLi9pbmRleCc7XG5cbi8qKlxuICogQSBtYXBwaW5nIG9mIHRoZSBAYW5ndWxhci9jb3JlIEFQSSBzdXJmYWNlIHVzZWQgaW4gZ2VuZXJhdGVkIGV4cHJlc3Npb25zIHRvIHRoZSBhY3R1YWwgc3ltYm9scy5cbiAqXG4gKiBUaGlzIHNob3VsZCBiZSBrZXB0IHVwIHRvIGRhdGUgd2l0aCB0aGUgcHVibGljIGV4cG9ydHMgb2YgQGFuZ3VsYXIvY29yZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGFuZ3VsYXJDb3JlRW52OiB7W25hbWU6IHN0cmluZ106IHVua25vd259ID0gKCgpID0+ICh7XG4gICfJtcm1YXR0cmlidXRlJzogcjMuybXJtWF0dHJpYnV0ZSxcbiAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTEnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUxLFxuICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMic6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTIsXG4gICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUzJzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMyxcbiAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTQnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU0LFxuICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNSc6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTUsXG4gICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU2JzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNixcbiAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTcnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU3LFxuICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlOCc6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTgsXG4gICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGVWJzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlVixcbiAgJ8m1ybVkZWZpbmVDb21wb25lbnQnOiByMy7Jtcm1ZGVmaW5lQ29tcG9uZW50LFxuICAnybXJtWRlZmluZURpcmVjdGl2ZSc6IHIzLsm1ybVkZWZpbmVEaXJlY3RpdmUsXG4gICfJtcm1ZGVmaW5lSW5qZWN0YWJsZSc6IMm1ybVkZWZpbmVJbmplY3RhYmxlLFxuICAnybXJtWRlZmluZUluamVjdG9yJzogybXJtWRlZmluZUluamVjdG9yLFxuICAnybXJtWRlZmluZU5nTW9kdWxlJzogcjMuybXJtWRlZmluZU5nTW9kdWxlLFxuICAnybXJtWRlZmluZVBpcGUnOiByMy7Jtcm1ZGVmaW5lUGlwZSxcbiAgJ8m1ybVkaXJlY3RpdmVJbmplY3QnOiByMy7Jtcm1ZGlyZWN0aXZlSW5qZWN0LFxuICAnybXJtWdldEluaGVyaXRlZEZhY3RvcnknOiByMy7Jtcm1Z2V0SW5oZXJpdGVkRmFjdG9yeSxcbiAgJ8m1ybVpbmplY3QnOiDJtcm1aW5qZWN0LFxuICAnybXJtWluamVjdEF0dHJpYnV0ZSc6IHIzLsm1ybVpbmplY3RBdHRyaWJ1dGUsXG4gICfJtcm1aW52YWxpZEZhY3RvcnknOiByMy7Jtcm1aW52YWxpZEZhY3RvcnksXG4gICfJtcm1aW52YWxpZEZhY3RvcnlEZXAnOiDJtcm1aW52YWxpZEZhY3RvcnlEZXAsXG4gICfJtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3InOiByMy7Jtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3IsXG4gICfJtcm1cmVzZXRWaWV3JzogcjMuybXJtXJlc2V0VmlldyxcbiAgJ8m1ybVIb3N0RGlyZWN0aXZlc0ZlYXR1cmUnOiByMy7Jtcm1SG9zdERpcmVjdGl2ZXNGZWF0dXJlLFxuICAnybXJtU5nT25DaGFuZ2VzRmVhdHVyZSc6IHIzLsm1ybVOZ09uQ2hhbmdlc0ZlYXR1cmUsXG4gICfJtcm1UHJvdmlkZXJzRmVhdHVyZSc6IHIzLsm1ybVQcm92aWRlcnNGZWF0dXJlLFxuICAnybXJtUNvcHlEZWZpbml0aW9uRmVhdHVyZSc6IHIzLsm1ybVDb3B5RGVmaW5pdGlvbkZlYXR1cmUsXG4gICfJtcm1SW5oZXJpdERlZmluaXRpb25GZWF0dXJlJzogcjMuybXJtUluaGVyaXREZWZpbml0aW9uRmVhdHVyZSxcbiAgJ8m1ybVJbnB1dFRyYW5zZm9ybXNGZWF0dXJlJzogcjMuybXJtUlucHV0VHJhbnNmb3Jtc0ZlYXR1cmUsXG4gICfJtcm1U3RhbmRhbG9uZUZlYXR1cmUnOiByMy7Jtcm1U3RhbmRhbG9uZUZlYXR1cmUsXG4gICfJtcm1bmV4dENvbnRleHQnOiByMy7Jtcm1bmV4dENvbnRleHQsXG4gICfJtcm1bmFtZXNwYWNlSFRNTCc6IHIzLsm1ybVuYW1lc3BhY2VIVE1MLFxuICAnybXJtW5hbWVzcGFjZU1hdGhNTCc6IHIzLsm1ybVuYW1lc3BhY2VNYXRoTUwsXG4gICfJtcm1bmFtZXNwYWNlU1ZHJzogcjMuybXJtW5hbWVzcGFjZVNWRyxcbiAgJ8m1ybVlbmFibGVCaW5kaW5ncyc6IHIzLsm1ybVlbmFibGVCaW5kaW5ncyxcbiAgJ8m1ybVkaXNhYmxlQmluZGluZ3MnOiByMy7Jtcm1ZGlzYWJsZUJpbmRpbmdzLFxuICAnybXJtWVsZW1lbnRTdGFydCc6IHIzLsm1ybVlbGVtZW50U3RhcnQsXG4gICfJtcm1ZWxlbWVudEVuZCc6IHIzLsm1ybVlbGVtZW50RW5kLFxuICAnybXJtWVsZW1lbnQnOiByMy7Jtcm1ZWxlbWVudCxcbiAgJ8m1ybVlbGVtZW50Q29udGFpbmVyU3RhcnQnOiByMy7Jtcm1ZWxlbWVudENvbnRhaW5lclN0YXJ0LFxuICAnybXJtWVsZW1lbnRDb250YWluZXJFbmQnOiByMy7Jtcm1ZWxlbWVudENvbnRhaW5lckVuZCxcbiAgJ8m1ybVlbGVtZW50Q29udGFpbmVyJzogcjMuybXJtWVsZW1lbnRDb250YWluZXIsXG4gICfJtcm1cHVyZUZ1bmN0aW9uMCc6IHIzLsm1ybVwdXJlRnVuY3Rpb24wLFxuICAnybXJtXB1cmVGdW5jdGlvbjEnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMSxcbiAgJ8m1ybVwdXJlRnVuY3Rpb24yJzogcjMuybXJtXB1cmVGdW5jdGlvbjIsXG4gICfJtcm1cHVyZUZ1bmN0aW9uMyc6IHIzLsm1ybVwdXJlRnVuY3Rpb24zLFxuICAnybXJtXB1cmVGdW5jdGlvbjQnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNCxcbiAgJ8m1ybVwdXJlRnVuY3Rpb241JzogcjMuybXJtXB1cmVGdW5jdGlvbjUsXG4gICfJtcm1cHVyZUZ1bmN0aW9uNic6IHIzLsm1ybVwdXJlRnVuY3Rpb242LFxuICAnybXJtXB1cmVGdW5jdGlvbjcnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNyxcbiAgJ8m1ybVwdXJlRnVuY3Rpb244JzogcjMuybXJtXB1cmVGdW5jdGlvbjgsXG4gICfJtcm1cHVyZUZ1bmN0aW9uVic6IHIzLsm1ybVwdXJlRnVuY3Rpb25WLFxuICAnybXJtWdldEN1cnJlbnRWaWV3JzogcjMuybXJtWdldEN1cnJlbnRWaWV3LFxuICAnybXJtXJlc3RvcmVWaWV3JzogcjMuybXJtXJlc3RvcmVWaWV3LFxuICAnybXJtWxpc3RlbmVyJzogcjMuybXJtWxpc3RlbmVyLFxuICAnybXJtXByb2plY3Rpb24nOiByMy7Jtcm1cHJvamVjdGlvbixcbiAgJ8m1ybVzeW50aGV0aWNIb3N0UHJvcGVydHknOiByMy7Jtcm1c3ludGhldGljSG9zdFByb3BlcnR5LFxuICAnybXJtXN5bnRoZXRpY0hvc3RMaXN0ZW5lcic6IHIzLsm1ybVzeW50aGV0aWNIb3N0TGlzdGVuZXIsXG4gICfJtcm1cGlwZUJpbmQxJzogcjMuybXJtXBpcGVCaW5kMSxcbiAgJ8m1ybVwaXBlQmluZDInOiByMy7Jtcm1cGlwZUJpbmQyLFxuICAnybXJtXBpcGVCaW5kMyc6IHIzLsm1ybVwaXBlQmluZDMsXG4gICfJtcm1cGlwZUJpbmQ0JzogcjMuybXJtXBpcGVCaW5kNCxcbiAgJ8m1ybVwaXBlQmluZFYnOiByMy7Jtcm1cGlwZUJpbmRWLFxuICAnybXJtXByb2plY3Rpb25EZWYnOiByMy7Jtcm1cHJvamVjdGlvbkRlZixcbiAgJ8m1ybVob3N0UHJvcGVydHknOiByMy7Jtcm1aG9zdFByb3BlcnR5LFxuICAnybXJtXByb3BlcnR5JzogcjMuybXJtXByb3BlcnR5LFxuICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGUnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZSxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlMSc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMSxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlMic6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMixcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlMyc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMyxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNCc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNCxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNSc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNSxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNic6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNixcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNyc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNyxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlOCc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlOCxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlVic6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlVixcbiAgJ8m1ybVwaXBlJzogcjMuybXJtXBpcGUsXG4gICfJtcm1cXVlcnlSZWZyZXNoJzogcjMuybXJtXF1ZXJ5UmVmcmVzaCxcbiAgJ8m1ybVxdWVyeUFkdmFuY2UnOiByMy7Jtcm1cXVlcnlBZHZhbmNlLFxuICAnybXJtXZpZXdRdWVyeSc6IHIzLsm1ybV2aWV3UXVlcnksXG4gICfJtcm1dmlld1F1ZXJ5U2lnbmFsJzogcjMuybXJtXZpZXdRdWVyeVNpZ25hbCxcbiAgJ8m1ybVsb2FkUXVlcnknOiByMy7Jtcm1bG9hZFF1ZXJ5LFxuICAnybXJtWNvbnRlbnRRdWVyeSc6IHIzLsm1ybVjb250ZW50UXVlcnksXG4gICfJtcm1Y29udGVudFF1ZXJ5U2lnbmFsJzogcjMuybXJtWNvbnRlbnRRdWVyeVNpZ25hbCxcbiAgJ8m1ybVyZWZlcmVuY2UnOiByMy7Jtcm1cmVmZXJlbmNlLFxuICAnybXJtWNsYXNzTWFwJzogcjMuybXJtWNsYXNzTWFwLFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUxJzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUxLFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUyJzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUyLFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUzJzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUzLFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU0JzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU0LFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU1JzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU1LFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU2JzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU2LFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU3JzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU3LFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU4JzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU4LFxuICAnybXJtWNsYXNzTWFwSW50ZXJwb2xhdGVWJzogcjMuybXJtWNsYXNzTWFwSW50ZXJwb2xhdGVWLFxuICAnybXJtXN0eWxlTWFwJzogcjMuybXJtXN0eWxlTWFwLFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUxJzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUxLFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUyJzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUyLFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUzJzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGUzLFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU0JzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU0LFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU1JzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU1LFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU2JzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU2LFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU3JzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU3LFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU4JzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGU4LFxuICAnybXJtXN0eWxlTWFwSW50ZXJwb2xhdGVWJzogcjMuybXJtXN0eWxlTWFwSW50ZXJwb2xhdGVWLFxuICAnybXJtXN0eWxlUHJvcCc6IHIzLsm1ybVzdHlsZVByb3AsXG4gICfJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUxJzogcjMuybXJtXN0eWxlUHJvcEludGVycG9sYXRlMSxcbiAgJ8m1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTInOiByMy7Jtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUyLFxuICAnybXJtXN0eWxlUHJvcEludGVycG9sYXRlMyc6IHIzLsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTMsXG4gICfJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU0JzogcjMuybXJtXN0eWxlUHJvcEludGVycG9sYXRlNCxcbiAgJ8m1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTUnOiByMy7Jtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU1LFxuICAnybXJtXN0eWxlUHJvcEludGVycG9sYXRlNic6IHIzLsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTYsXG4gICfJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU3JzogcjMuybXJtXN0eWxlUHJvcEludGVycG9sYXRlNyxcbiAgJ8m1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTgnOiByMy7Jtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU4LFxuICAnybXJtXN0eWxlUHJvcEludGVycG9sYXRlVic6IHIzLsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZVYsXG4gICfJtcm1Y2xhc3NQcm9wJzogcjMuybXJtWNsYXNzUHJvcCxcbiAgJ8m1ybVhZHZhbmNlJzogcjMuybXJtWFkdmFuY2UsXG4gICfJtcm1dGVtcGxhdGUnOiByMy7Jtcm1dGVtcGxhdGUsXG4gICfJtcm1Y29uZGl0aW9uYWwnOiByMy7Jtcm1Y29uZGl0aW9uYWwsXG4gICfJtcm1ZGVmZXInOiByMy7Jtcm1ZGVmZXIsXG4gICfJtcm1ZGVmZXJXaGVuJzogcjMuybXJtWRlZmVyV2hlbixcbiAgJ8m1ybVkZWZlck9uSWRsZSc6IHIzLsm1ybVkZWZlck9uSWRsZSxcbiAgJ8m1ybVkZWZlck9uSW1tZWRpYXRlJzogcjMuybXJtWRlZmVyT25JbW1lZGlhdGUsXG4gICfJtcm1ZGVmZXJPblRpbWVyJzogcjMuybXJtWRlZmVyT25UaW1lcixcbiAgJ8m1ybVkZWZlck9uSG92ZXInOiByMy7Jtcm1ZGVmZXJPbkhvdmVyLFxuICAnybXJtWRlZmVyT25JbnRlcmFjdGlvbic6IHIzLsm1ybVkZWZlck9uSW50ZXJhY3Rpb24sXG4gICfJtcm1ZGVmZXJPblZpZXdwb3J0JzogcjMuybXJtWRlZmVyT25WaWV3cG9ydCxcbiAgJ8m1ybVkZWZlclByZWZldGNoV2hlbic6IHIzLsm1ybVkZWZlclByZWZldGNoV2hlbixcbiAgJ8m1ybVkZWZlclByZWZldGNoT25JZGxlJzogcjMuybXJtWRlZmVyUHJlZmV0Y2hPbklkbGUsXG4gICfJtcm1ZGVmZXJQcmVmZXRjaE9uSW1tZWRpYXRlJzogcjMuybXJtWRlZmVyUHJlZmV0Y2hPbkltbWVkaWF0ZSxcbiAgJ8m1ybVkZWZlclByZWZldGNoT25UaW1lcic6IHIzLsm1ybVkZWZlclByZWZldGNoT25UaW1lcixcbiAgJ8m1ybVkZWZlclByZWZldGNoT25Ib3Zlcic6IHIzLsm1ybVkZWZlclByZWZldGNoT25Ib3ZlcixcbiAgJ8m1ybVkZWZlclByZWZldGNoT25JbnRlcmFjdGlvbic6IHIzLsm1ybVkZWZlclByZWZldGNoT25JbnRlcmFjdGlvbixcbiAgJ8m1ybVkZWZlclByZWZldGNoT25WaWV3cG9ydCc6IHIzLsm1ybVkZWZlclByZWZldGNoT25WaWV3cG9ydCxcbiAgJ8m1ybVkZWZlckVuYWJsZVRpbWVyU2NoZWR1bGluZyc6IHIzLsm1ybVkZWZlckVuYWJsZVRpbWVyU2NoZWR1bGluZyxcbiAgJ8m1ybVyZXBlYXRlcic6IHIzLsm1ybVyZXBlYXRlcixcbiAgJ8m1ybVyZXBlYXRlckNyZWF0ZSc6IHIzLsm1ybVyZXBlYXRlckNyZWF0ZSxcbiAgJ8m1ybVyZXBlYXRlclRyYWNrQnlJbmRleCc6IHIzLsm1ybVyZXBlYXRlclRyYWNrQnlJbmRleCxcbiAgJ8m1ybVyZXBlYXRlclRyYWNrQnlJZGVudGl0eSc6IHIzLsm1ybVyZXBlYXRlclRyYWNrQnlJZGVudGl0eSxcbiAgJ8m1ybVjb21wb25lbnRJbnN0YW5jZSc6IHIzLsm1ybVjb21wb25lbnRJbnN0YW5jZSxcbiAgJ8m1ybV0ZXh0JzogcjMuybXJtXRleHQsXG4gICfJtcm1dGV4dEludGVycG9sYXRlJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZSxcbiAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGUxJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTEsXG4gICfJtcm1dGV4dEludGVycG9sYXRlMic6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGUyLFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZTMnOiByMy7Jtcm1dGV4dEludGVycG9sYXRlMyxcbiAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU0JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTQsXG4gICfJtcm1dGV4dEludGVycG9sYXRlNSc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGU1LFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZTYnOiByMy7Jtcm1dGV4dEludGVycG9sYXRlNixcbiAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU3JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTcsXG4gICfJtcm1dGV4dEludGVycG9sYXRlOCc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGU4LFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZVYnOiByMy7Jtcm1dGV4dEludGVycG9sYXRlVixcbiAgJ8m1ybVpMThuJzogcjMuybXJtWkxOG4sXG4gICfJtcm1aTE4bkF0dHJpYnV0ZXMnOiByMy7Jtcm1aTE4bkF0dHJpYnV0ZXMsXG4gICfJtcm1aTE4bkV4cCc6IHIzLsm1ybVpMThuRXhwLFxuICAnybXJtWkxOG5TdGFydCc6IHIzLsm1ybVpMThuU3RhcnQsXG4gICfJtcm1aTE4bkVuZCc6IHIzLsm1ybVpMThuRW5kLFxuICAnybXJtWkxOG5BcHBseSc6IHIzLsm1ybVpMThuQXBwbHksXG4gICfJtcm1aTE4blBvc3Rwcm9jZXNzJzogcjMuybXJtWkxOG5Qb3N0cHJvY2VzcyxcbiAgJ8m1ybVyZXNvbHZlV2luZG93JzogcjMuybXJtXJlc29sdmVXaW5kb3csXG4gICfJtcm1cmVzb2x2ZURvY3VtZW50JzogcjMuybXJtXJlc29sdmVEb2N1bWVudCxcbiAgJ8m1ybVyZXNvbHZlQm9keSc6IHIzLsm1ybVyZXNvbHZlQm9keSxcbiAgJ8m1ybVzZXRDb21wb25lbnRTY29wZSc6IHIzLsm1ybVzZXRDb21wb25lbnRTY29wZSxcbiAgJ8m1ybVzZXROZ01vZHVsZVNjb3BlJzogcjMuybXJtXNldE5nTW9kdWxlU2NvcGUsXG4gICfJtcm1cmVnaXN0ZXJOZ01vZHVsZVR5cGUnOiByZWdpc3Rlck5nTW9kdWxlVHlwZSxcbiAgJ8m1ybVnZXRDb21wb25lbnREZXBzRmFjdG9yeSc6IHIzLsm1ybVnZXRDb21wb25lbnREZXBzRmFjdG9yeSxcbiAgJ8m1c2V0Q2xhc3NEZWJ1Z0luZm8nOiByMy7JtXNldENsYXNzRGVidWdJbmZvLFxuXG4gICfJtcm1c2FuaXRpemVIdG1sJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZUh0bWwsXG4gICfJtcm1c2FuaXRpemVTdHlsZSc6IHNhbml0aXphdGlvbi7Jtcm1c2FuaXRpemVTdHlsZSxcbiAgJ8m1ybVzYW5pdGl6ZVJlc291cmNlVXJsJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVJlc291cmNlVXJsLFxuICAnybXJtXNhbml0aXplU2NyaXB0Jzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVNjcmlwdCxcbiAgJ8m1ybVzYW5pdGl6ZVVybCc6IHNhbml0aXphdGlvbi7Jtcm1c2FuaXRpemVVcmwsXG4gICfJtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVVybE9yUmVzb3VyY2VVcmwsXG4gICfJtcm1dHJ1c3RDb25zdGFudEh0bWwnOiBzYW5pdGl6YXRpb24uybXJtXRydXN0Q29uc3RhbnRIdG1sLFxuICAnybXJtXRydXN0Q29uc3RhbnRSZXNvdXJjZVVybCc6IHNhbml0aXphdGlvbi7Jtcm1dHJ1c3RDb25zdGFudFJlc291cmNlVXJsLFxuICAnybXJtXZhbGlkYXRlSWZyYW1lQXR0cmlidXRlJzogaWZyYW1lX2F0dHJzX3ZhbGlkYXRpb24uybXJtXZhbGlkYXRlSWZyYW1lQXR0cmlidXRlLFxuXG4gICdmb3J3YXJkUmVmJzogZm9yd2FyZFJlZixcbiAgJ3Jlc29sdmVGb3J3YXJkUmVmJzogcmVzb2x2ZUZvcndhcmRSZWYsXG5cbiAgJ8m1ybV0d29XYXlQcm9wZXJ0eSc6IHIzLsm1ybV0d29XYXlQcm9wZXJ0eSxcbiAgJ8m1ybV0d29XYXlCaW5kaW5nU2V0JzogcjMuybXJtXR3b1dheUJpbmRpbmdTZXQsXG4gICfJtcm1dHdvV2F5TGlzdGVuZXInOiByMy7Jtcm1dHdvV2F5TGlzdGVuZXIsXG59KSkoKTtcbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ppdC9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyx1QkFBdUIsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEtBQUssWUFBWSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9COzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQThCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMvRCxhQUFhLEVBQUUsRUFBRSxDQUFDLFdBQVc7SUFDN0IseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVB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SUFDN0MsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLGVBQWU7SUFDL0MsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLHFCQUFxQjtJQUMzRCxrQkFBa0IsRUFBRSxZQUFZLENBQUMsZ0JBQWdCO0lBQ2pELGVBQWUsRUFBRSxZQUFZLENBQUMsYUFBYTtJQUMzQyw0QkFBNEIsRUFBRSxZQUFZLENBQUMsMEJBQTBCO0lBQ3JFLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxtQkFBbUI7SUFDdkQsNEJBQTRCLEVBQUUsWUFBWSxDQUFDLDBCQUEwQjtJQUNyRSwyQkFBMkIsRUFBRSx1QkFBdUIsQ0FBQyx5QkFBeUI7SUFFOUUsWUFBWSxFQUFFLFVBQVU7SUFDeEIsbUJBQW1CLEVBQUUsaUJBQWlCO0lBRXRDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxnQkFBZ0I7SUFDdkMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLGtCQUFrQjtJQUMzQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsZ0JBQWdCO0NBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtmb3J3YXJkUmVmLCByZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnLi4vLi4vZGkvZm9yd2FyZF9yZWYnO1xuaW1wb3J0IHvJtcm1aW5qZWN0LCDJtcm1aW52YWxpZEZhY3RvcnlEZXB9IGZyb20gJy4uLy4uL2RpL2luamVjdG9yX2NvbXBhdGliaWxpdHknO1xuaW1wb3J0IHvJtcm1ZGVmaW5lSW5qZWN0YWJsZSwgybXJtWRlZmluZUluamVjdG9yfSBmcm9tICcuLi8uLi9kaS9pbnRlcmZhY2UvZGVmcyc7XG5pbXBvcnQge3JlZ2lzdGVyTmdNb2R1bGVUeXBlfSBmcm9tICcuLi8uLi9saW5rZXIvbmdfbW9kdWxlX3JlZ2lzdHJhdGlvbic7XG5pbXBvcnQgKiBhcyBpZnJhbWVfYXR0cnNfdmFsaWRhdGlvbiBmcm9tICcuLi8uLi9zYW5pdGl6YXRpb24vaWZyYW1lX2F0dHJzX3ZhbGlkYXRpb24nO1xuaW1wb3J0ICogYXMgc2FuaXRpemF0aW9uIGZyb20gJy4uLy4uL3Nhbml0aXphdGlvbi9zYW5pdGl6YXRpb24nO1xuaW1wb3J0ICogYXMgcjMgZnJvbSAnLi4vaW5kZXgnO1xuXG4vKipcbiAqIEEgbWFwcGluZyBvZiB0aGUgQGFuZ3VsYXIvY29yZSBBUEkgc3VyZmFjZSB1c2VkIGluIGdlbmVyYXRlZCBleHByZXNzaW9ucyB0byB0aGUgYWN0dWFsIHN5bWJvbHMuXG4gKlxuICogVGhpcyBzaG91bGQgYmUga2VwdCB1cCB0byBkYXRlIHdpdGggdGhlIHB1YmxpYyBleHBvcnRzIG9mIEBhbmd1bGFyL2NvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBhbmd1bGFyQ29yZUVudjoge1tuYW1lOiBzdHJpbmddOiB1bmtub3dufSA9ICgoKSA9PiAoe1xuICAnybXJtWF0dHJpYnV0ZSc6IHIzLsm1ybVhdHRyaWJ1dGUsXG4gICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUxJzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMSxcbiAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTInOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUyLFxuICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMyc6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTMsXG4gICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU0JzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNCxcbiAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTUnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU1LFxuICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNic6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTYsXG4gICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU3JzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNyxcbiAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTgnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU4LFxuICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlVic6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZVYsXG4gICfJtcm1ZGVmaW5lQ29tcG9uZW50JzogcjMuybXJtWRlZmluZUNvbXBvbmVudCxcbiAgJ8m1ybVkZWZpbmVEaXJlY3RpdmUnOiByMy7Jtcm1ZGVmaW5lRGlyZWN0aXZlLFxuICAnybXJtWRlZmluZUluamVjdGFibGUnOiDJtcm1ZGVmaW5lSW5qZWN0YWJsZSxcbiAgJ8m1ybVkZWZpbmVJbmplY3Rvcic6IMm1ybVkZWZpbmVJbmplY3RvcixcbiAgJ8m1ybVkZWZpbmVOZ01vZHVsZSc6IHIzLsm1ybVkZWZpbmVOZ01vZHVsZSxcbiAgJ8m1ybVkZWZpbmVQaXBlJzogcjMuybXJtWRlZmluZVBpcGUsXG4gICfJtcm1ZGlyZWN0aXZlSW5qZWN0JzogcjMuybXJtWRpcmVjdGl2ZUluamVjdCxcbiAgJ8m1ybVnZXRJbmhlcml0ZWRGYWN0b3J5JzogcjMuybXJtWdldEluaGVyaXRlZEZhY3RvcnksXG4gICfJtcm1aW5qZWN0JzogybXJtWluamVjdCxcbiAgJ8m1ybVpbmplY3RBdHRyaWJ1dGUnOiByMy7Jtcm1aW5qZWN0QXR0cmlidXRlLFxuICAnybXJtWludmFsaWRGYWN0b3J5JzogcjMuybXJtWludmFsaWRGYWN0b3J5LFxuICAnybXJtWludmFsaWRGYWN0b3J5RGVwJzogybXJtWludmFsaWRGYWN0b3J5RGVwLFxuICAnybXJtXRlbXBsYXRlUmVmRXh0cmFjdG9yJzogcjMuybXJtXRlbXBsYXRlUmVmRXh0cmFjdG9yLFxuICAnybXJtXJlc2V0Vmlldyc6IHIzLsm1ybVyZXNldFZpZXcsXG4gICfJtcm1SG9zdERpcmVjdGl2ZXNGZWF0dXJlJzogcjMuybXJtUhvc3REaXJlY3RpdmVzRmVhdHVyZSxcbiAgJ8m1ybVOZ09uQ2hhbmdlc0ZlYXR1cmUnOiByMy7Jtcm1TmdPbkNoYW5nZXNGZWF0dXJlLFxuICAnybXJtVByb3ZpZGVyc0ZlYXR1cmUnOiByMy7Jtcm1UHJvdmlkZXJzRmVhdHVyZSxcbiAgJ8m1ybVDb3B5RGVmaW5pdGlvbkZlYXR1cmUnOiByMy7Jtcm1Q29weURlZmluaXRpb25GZWF0dXJlLFxuICAnybXJtUluaGVyaXREZWZpbml0aW9uRmVhdHVyZSc6IHIzLsm1ybVJbmhlcml0RGVmaW5pdGlvbkZlYXR1cmUsXG4gICfJtcm1SW5wdXRUcmFuc2Zvcm1zRmVhdHVyZSc6IHIzLsm1ybVJbnB1dFRyYW5zZm9ybXNGZWF0dXJlLFxuICAnybXJtVN0YW5kYWxvbmVGZWF0dXJlJzogcjMuybXJtVN0YW5kYWxvbmVGZWF0dXJlLFxuICAnybXJtW5leHRDb250ZXh0JzogcjMuybXJtW5leHRDb250ZXh0LFxuICAnybXJtW5hbWVzcGFjZUhUTUwnOiByMy7Jtcm1bmFtZXNwYWNlSFRNTCxcbiAgJ8m1ybVuYW1lc3BhY2VNYXRoTUwnOiByMy7Jtcm1bmFtZXNwYWNlTWF0aE1MLFxuICAnybXJtW5hbWVzcGFjZVNWRyc6IHIzLsm1ybVuYW1lc3BhY2VTVkcsXG4gICfJtcm1ZW5hYmxlQmluZGluZ3MnOiByMy7Jtcm1ZW5hYmxlQmluZGluZ3MsXG4gICfJtcm1ZGlzYWJsZUJpbmRpbmdzJzogcjMuybXJtWRpc2FibGVCaW5kaW5ncyxcbiAgJ8m1ybVlbGVtZW50U3RhcnQnOiByMy7Jtcm1ZWxlbWVudFN0YXJ0LFxuICAnybXJtWVsZW1lbnRFbmQnOiByMy7Jtcm1ZWxlbWVudEVuZCxcbiAgJ8m1ybVlbGVtZW50JzogcjMuybXJtWVsZW1lbnQsXG4gICfJtcm1ZWxlbWVudENvbnRhaW5lclN0YXJ0JzogcjMuybXJtWVsZW1lbnRDb250YWluZXJTdGFydCxcbiAgJ8m1ybVlbGVtZW50Q29udGFpbmVyRW5kJzogcjMuybXJtWVsZW1lbnRDb250YWluZXJFbmQsXG4gICfJtcm1ZWxlbWVudENvbnRhaW5lcic6IHIzLsm1ybVlbGVtZW50Q29udGFpbmVyLFxuICAnybXJtXB1cmVGdW5jdGlvbjAnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMCxcbiAgJ8m1ybVwdXJlRnVuY3Rpb24xJzogcjMuybXJtXB1cmVGdW5jdGlvbjEsXG4gICfJtcm1cHVyZUZ1bmN0aW9uMic6IHIzLsm1ybVwdXJlRnVuY3Rpb24yLFxuICAnybXJtXB1cmVGdW5jdGlvbjMnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMyxcbiAgJ8m1ybVwdXJlRnVuY3Rpb240JzogcjMuybXJtXB1cmVGdW5jdGlvbjQsXG4gICfJtcm1cHVyZUZ1bmN0aW9uNSc6IHIzLsm1ybVwdXJlRnVuY3Rpb241LFxuICAnybXJtXB1cmVGdW5jdGlvbjYnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNixcbiAgJ8m1ybVwdXJlRnVuY3Rpb243JzogcjMuybXJtXB1cmVGdW5jdGlvbjcsXG4gICfJtcm1cHVyZUZ1bmN0aW9uOCc6IHIzLsm1ybVwdXJlRnVuY3Rpb244LFxuICAnybXJtXB1cmVGdW5jdGlvblYnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uVixcbiAgJ8m1ybVnZXRDdXJyZW50Vmlldyc6IHIzLsm1ybVnZXRDdXJyZW50VmlldyxcbiAgJ8m1ybVyZXN0b3JlVmlldyc6IHIzLsm1ybVyZXN0b3JlVmlldyxcbiAgJ8m1ybVsaXN0ZW5lcic6IHIzLsm1ybVsaXN0ZW5lcixcbiAgJ8m1ybVwcm9qZWN0aW9uJzogcjMuybXJtXByb2plY3Rpb24sXG4gICfJtcm1c3ludGhldGljSG9zdFByb3BlcnR5JzogcjMuybXJtXN5bnRoZXRpY0hvc3RQcm9wZXJ0eSxcbiAgJ8m1ybVzeW50aGV0aWNIb3N0TGlzdGVuZXInOiByMy7Jtcm1c3ludGhldGljSG9zdExpc3RlbmVyLFxuICAnybXJtXBpcGVCaW5kMSc6IHIzLsm1ybVwaXBlQmluZDEsXG4gICfJtcm1cGlwZUJpbmQyJzogcjMuybXJtXBpcGVCaW5kMixcbiAgJ8m1ybVwaXBlQmluZDMnOiByMy7Jtcm1cGlwZUJpbmQzLFxuICAnybXJtXBpcGVCaW5kNCc6IHIzLsm1ybVwaXBlQmluZDQsXG4gICfJtcm1cGlwZUJpbmRWJzogcjMuybXJtXBpcGVCaW5kVixcbiAgJ8m1ybVwcm9qZWN0aW9uRGVmJzogcjMuybXJtXByb2plY3Rpb25EZWYsXG4gICfJtcm1aG9zdFByb3BlcnR5JzogcjMuybXJtWhvc3RQcm9wZXJ0eSxcbiAgJ8m1ybVwcm9wZXJ0eSc6IHIzLsm1ybVwcm9wZXJ0eSxcbiAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlJzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGUsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTEnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTEsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTInOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTIsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTQnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTQsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTcnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTcsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgsXG4gICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYsXG4gICfJtcm1cGlwZSc6IHIzLsm1ybVwaXBlLFxuICAnybXJtXF1ZXJ5UmVmcmVzaCc6IHIzLsm1ybVxdWVyeVJlZnJlc2gsXG4gICfJtcm1cXVlcnlBZHZhbmNlJzogcjMuybXJtXF1ZXJ5QWR2YW5jZSxcbiAgJ8m1ybV2aWV3UXVlcnknOiByMy7Jtcm1dmlld1F1ZXJ5LFxuICAnybXJtXZpZXdRdWVyeVNpZ25hbCc6IHIzLsm1ybV2aWV3UXVlcnlTaWduYWwsXG4gICfJtcm1bG9hZFF1ZXJ5JzogcjMuybXJtWxvYWRRdWVyeSxcbiAgJ8m1ybVjb250ZW50UXVlcnknOiByMy7Jtcm1Y29udGVudFF1ZXJ5LFxuICAnybXJtWNvbnRlbnRRdWVyeVNpZ25hbCc6IHIzLsm1ybVjb250ZW50UXVlcnlTaWduYWwsXG4gICfJtcm1cmVmZXJlbmNlJzogcjMuybXJtXJlZmVyZW5jZSxcbiAgJ8m1ybVjbGFzc01hcCc6IHIzLsm1ybVjbGFzc01hcCxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlMSc6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlMSxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlMic6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlMixcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlMyc6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlMyxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlNCc6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlNCxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlNSc6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlNSxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlNic6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlNixcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlNyc6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlNyxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlOCc6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlOCxcbiAgJ8m1ybVjbGFzc01hcEludGVycG9sYXRlVic6IHIzLsm1ybVjbGFzc01hcEludGVycG9sYXRlVixcbiAgJ8m1ybVzdHlsZU1hcCc6IHIzLsm1ybVzdHlsZU1hcCxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlMSc6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlMSxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlMic6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlMixcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlMyc6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlMyxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlNCc6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlNCxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlNSc6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlNSxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlNic6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlNixcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlNyc6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlNyxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlOCc6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlOCxcbiAgJ8m1ybVzdHlsZU1hcEludGVycG9sYXRlVic6IHIzLsm1ybVzdHlsZU1hcEludGVycG9sYXRlVixcbiAgJ8m1ybVzdHlsZVByb3AnOiByMy7Jtcm1c3R5bGVQcm9wLFxuICAnybXJtXN0eWxlUHJvcEludGVycG9sYXRlMSc6IHIzLsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTEsXG4gICfJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUyJzogcjMuybXJtXN0eWxlUHJvcEludGVycG9sYXRlMixcbiAgJ8m1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTMnOiByMy7Jtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGUzLFxuICAnybXJtXN0eWxlUHJvcEludGVycG9sYXRlNCc6IHIzLsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTQsXG4gICfJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU1JzogcjMuybXJtXN0eWxlUHJvcEludGVycG9sYXRlNSxcbiAgJ8m1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTYnOiByMy7Jtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU2LFxuICAnybXJtXN0eWxlUHJvcEludGVycG9sYXRlNyc6IHIzLsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTcsXG4gICfJtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGU4JzogcjMuybXJtXN0eWxlUHJvcEludGVycG9sYXRlOCxcbiAgJ8m1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZVYnOiByMy7Jtcm1c3R5bGVQcm9wSW50ZXJwb2xhdGVWLFxuICAnybXJtWNsYXNzUHJvcCc6IHIzLsm1ybVjbGFzc1Byb3AsXG4gICfJtcm1YWR2YW5jZSc6IHIzLsm1ybVhZHZhbmNlLFxuICAnybXJtXRlbXBsYXRlJzogcjMuybXJtXRlbXBsYXRlLFxuICAnybXJtWNvbmRpdGlvbmFsJzogcjMuybXJtWNvbmRpdGlvbmFsLFxuICAnybXJtWRlZmVyJzogcjMuybXJtWRlZmVyLFxuICAnybXJtWRlZmVyV2hlbic6IHIzLsm1ybVkZWZlcldoZW4sXG4gICfJtcm1ZGVmZXJPbklkbGUnOiByMy7Jtcm1ZGVmZXJPbklkbGUsXG4gICfJtcm1ZGVmZXJPbkltbWVkaWF0ZSc6IHIzLsm1ybVkZWZlck9uSW1tZWRpYXRlLFxuICAnybXJtWRlZmVyT25UaW1lcic6IHIzLsm1ybVkZWZlck9uVGltZXIsXG4gICfJtcm1ZGVmZXJPbkhvdmVyJzogcjMuybXJtWRlZmVyT25Ib3ZlcixcbiAgJ8m1ybVkZWZlck9uSW50ZXJhY3Rpb24nOiByMy7Jtcm1ZGVmZXJPbkludGVyYWN0aW9uLFxuICAnybXJtWRlZmVyT25WaWV3cG9ydCc6IHIzLsm1ybVkZWZlck9uVmlld3BvcnQsXG4gICfJtcm1ZGVmZXJQcmVmZXRjaFdoZW4nOiByMy7Jtcm1ZGVmZXJQcmVmZXRjaFdoZW4sXG4gICfJtcm1ZGVmZXJQcmVmZXRjaE9uSWRsZSc6IHIzLsm1ybVkZWZlclByZWZldGNoT25JZGxlLFxuICAnybXJtWRlZmVyUHJlZmV0Y2hPbkltbWVkaWF0ZSc6IHIzLsm1ybVkZWZlclByZWZldGNoT25JbW1lZGlhdGUsXG4gICfJtcm1ZGVmZXJQcmVmZXRjaE9uVGltZXInOiByMy7Jtcm1ZGVmZXJQcmVmZXRjaE9uVGltZXIsXG4gICfJtcm1ZGVmZXJQcmVmZXRjaE9uSG92ZXInOiByMy7Jtcm1ZGVmZXJQcmVmZXRjaE9uSG92ZXIsXG4gICfJtcm1ZGVmZXJQcmVmZXRjaE9uSW50ZXJhY3Rpb24nOiByMy7Jtcm1ZGVmZXJQcmVmZXRjaE9uSW50ZXJhY3Rpb24sXG4gICfJtcm1ZGVmZXJQcmVmZXRjaE9uVmlld3BvcnQnOiByMy7Jtcm1ZGVmZXJQcmVmZXRjaE9uVmlld3BvcnQsXG4gICfJtcm1ZGVmZXJFbmFibGVUaW1lclNjaGVkdWxpbmcnOiByMy7Jtcm1ZGVmZXJFbmFibGVUaW1lclNjaGVkdWxpbmcsXG4gICfJtcm1cmVwZWF0ZXInOiByMy7Jtcm1cmVwZWF0ZXIsXG4gICfJtcm1cmVwZWF0ZXJDcmVhdGUnOiByMy7Jtcm1cmVwZWF0ZXJDcmVhdGUsXG4gICfJtcm1cmVwZWF0ZXJUcmFja0J5SW5kZXgnOiByMy7Jtcm1cmVwZWF0ZXJUcmFja0J5SW5kZXgsXG4gICfJtcm1cmVwZWF0ZXJUcmFja0J5SWRlbnRpdHknOiByMy7Jtcm1cmVwZWF0ZXJUcmFja0J5SWRlbnRpdHksXG4gICfJtcm1Y29tcG9uZW50SW5zdGFuY2UnOiByMy7Jtcm1Y29tcG9uZW50SW5zdGFuY2UsXG4gICfJtcm1dGV4dCc6IHIzLsm1ybV0ZXh0LFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZSc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGUsXG4gICfJtcm1dGV4dEludGVycG9sYXRlMSc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGUxLFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZTInOiByMy7Jtcm1dGV4dEludGVycG9sYXRlMixcbiAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGUzJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTMsXG4gICfJtcm1dGV4dEludGVycG9sYXRlNCc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGU0LFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZTUnOiByMy7Jtcm1dGV4dEludGVycG9sYXRlNSxcbiAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU2JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTYsXG4gICfJtcm1dGV4dEludGVycG9sYXRlNyc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGU3LFxuICAnybXJtXRleHRJbnRlcnBvbGF0ZTgnOiByMy7Jtcm1dGV4dEludGVycG9sYXRlOCxcbiAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGVWJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZVYsXG4gICfJtcm1aTE4bic6IHIzLsm1ybVpMThuLFxuICAnybXJtWkxOG5BdHRyaWJ1dGVzJzogcjMuybXJtWkxOG5BdHRyaWJ1dGVzLFxuICAnybXJtWkxOG5FeHAnOiByMy7Jtcm1aTE4bkV4cCxcbiAgJ8m1ybVpMThuU3RhcnQnOiByMy7Jtcm1aTE4blN0YXJ0LFxuICAnybXJtWkxOG5FbmQnOiByMy7Jtcm1aTE4bkVuZCxcbiAgJ8m1ybVpMThuQXBwbHknOiByMy7Jtcm1aTE4bkFwcGx5LFxuICAnybXJtWkxOG5Qb3N0cHJvY2Vzcyc6IHIzLsm1ybVpMThuUG9zdHByb2Nlc3MsXG4gICfJtcm1cmVzb2x2ZVdpbmRvdyc6IHIzLsm1ybVyZXNvbHZlV2luZG93LFxuICAnybXJtXJlc29sdmVEb2N1bWVudCc6IHIzLsm1ybVyZXNvbHZlRG9jdW1lbnQsXG4gICfJtcm1cmVzb2x2ZUJvZHknOiByMy7Jtcm1cmVzb2x2ZUJvZHksXG4gICfJtcm1c2V0Q29tcG9uZW50U2NvcGUnOiByMy7Jtcm1c2V0Q29tcG9uZW50U2NvcGUsXG4gICfJtcm1c2V0TmdNb2R1bGVTY29wZSc6IHIzLsm1ybVzZXROZ01vZHVsZVNjb3BlLFxuICAnybXJtXJlZ2lzdGVyTmdNb2R1bGVUeXBlJzogcmVnaXN0ZXJOZ01vZHVsZVR5cGUsXG4gICfJtcm1Z2V0Q29tcG9uZW50RGVwc0ZhY3RvcnknOiByMy7Jtcm1Z2V0Q29tcG9uZW50RGVwc0ZhY3RvcnksXG4gICfJtXNldENsYXNzRGVidWdJbmZvJzogcjMuybVzZXRDbGFzc0RlYnVnSW5mbyxcbiAgJ8m1ybVkZWNsYXJlTGV0JzogcjMuybXJtWRlY2xhcmVMZXQsXG4gICfJtcm1c3RvcmVMZXQnOiByMy7Jtcm1c3RvcmVMZXQsXG4gICfJtcm1cmVhZENvbnRleHRMZXQnOiByMy7Jtcm1cmVhZENvbnRleHRMZXQsXG5cbiAgJ8m1ybVzYW5pdGl6ZUh0bWwnOiBzYW5pdGl6YXRpb24uybXJtXNhbml0aXplSHRtbCxcbiAgJ8m1ybVzYW5pdGl6ZVN0eWxlJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVN0eWxlLFxuICAnybXJtXNhbml0aXplUmVzb3VyY2VVcmwnOiBzYW5pdGl6YXRpb24uybXJtXNhbml0aXplUmVzb3VyY2VVcmwsXG4gICfJtcm1c2FuaXRpemVTY3JpcHQnOiBzYW5pdGl6YXRpb24uybXJtXNhbml0aXplU2NyaXB0LFxuICAnybXJtXNhbml0aXplVXJsJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVVybCxcbiAgJ8m1ybVzYW5pdGl6ZVVybE9yUmVzb3VyY2VVcmwnOiBzYW5pdGl6YXRpb24uybXJtXNhbml0aXplVXJsT3JSZXNvdXJjZVVybCxcbiAgJ8m1ybV0cnVzdENvbnN0YW50SHRtbCc6IHNhbml0aXphdGlvbi7Jtcm1dHJ1c3RDb25zdGFudEh0bWwsXG4gICfJtcm1dHJ1c3RDb25zdGFudFJlc291cmNlVXJsJzogc2FuaXRpemF0aW9uLsm1ybV0cnVzdENvbnN0YW50UmVzb3VyY2VVcmwsXG4gICfJtcm1dmFsaWRhdGVJZnJhbWVBdHRyaWJ1dGUnOiBpZnJhbWVfYXR0cnNfdmFsaWRhdGlvbi7Jtcm1dmFsaWRhdGVJZnJhbWVBdHRyaWJ1dGUsXG5cbiAgJ2ZvcndhcmRSZWYnOiBmb3J3YXJkUmVmLFxuICAncmVzb2x2ZUZvcndhcmRSZWYnOiByZXNvbHZlRm9yd2FyZFJlZixcblxuICAnybXJtXR3b1dheVByb3BlcnR5JzogcjMuybXJtXR3b1dheVByb3BlcnR5LFxuICAnybXJtXR3b1dheUJpbmRpbmdTZXQnOiByMy7Jtcm1dHdvV2F5QmluZGluZ1NldCxcbiAgJ8m1ybV0d29XYXlMaXN0ZW5lcic6IHIzLsm1ybV0d29XYXlMaXN0ZW5lcixcbn0pKSgpO1xuIl19
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import { REACTIVE_NODE } from '@angular/core/primitives/signals';
|
|
9
|
-
import { REACTIVE_TEMPLATE_CONSUMER } from './interfaces/view';
|
|
10
|
-
import { markAncestorsForTraversal } from './util/view_utils';
|
|
9
|
+
import { REACTIVE_TEMPLATE_CONSUMER, TVIEW, } from './interfaces/view';
|
|
10
|
+
import { getLViewParent, markAncestorsForTraversal, markViewForRefresh } from './util/view_utils';
|
|
11
11
|
let freeConsumers = [];
|
|
12
12
|
/**
|
|
13
13
|
* Create a new template consumer pointing at the specified LView.
|
|
@@ -40,4 +40,57 @@ const REACTIVE_LVIEW_CONSUMER_NODE = {
|
|
|
40
40
|
this.lView[REACTIVE_TEMPLATE_CONSUMER] = this;
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Creates a temporary consumer for use with `LView`s that should not have consumers.
|
|
45
|
+
* If the LView already has a consumer, returns the existing one instead.
|
|
46
|
+
*
|
|
47
|
+
* This is necessary because some APIs may cause change detection directly on an LView
|
|
48
|
+
* that we do not want to have a consumer (Embedded views today). As a result, there
|
|
49
|
+
* would be no active consumer from running change detection on its host component
|
|
50
|
+
* and any signals in the LView template would be untracked. Instead, we create
|
|
51
|
+
* this temporary consumer that marks the first parent that _should_ have a consumer
|
|
52
|
+
* for refresh. Once change detection runs as part of that refresh, we throw away
|
|
53
|
+
* this consumer because its signals will then be tracked by the parent's consumer.
|
|
54
|
+
*/
|
|
55
|
+
export function getOrCreateTemporaryConsumer(lView) {
|
|
56
|
+
const consumer = lView[REACTIVE_TEMPLATE_CONSUMER] ?? Object.create(TEMPORARY_CONSUMER_NODE);
|
|
57
|
+
consumer.lView = lView;
|
|
58
|
+
return consumer;
|
|
59
|
+
}
|
|
60
|
+
const TEMPORARY_CONSUMER_NODE = {
|
|
61
|
+
...REACTIVE_NODE,
|
|
62
|
+
consumerIsAlwaysLive: true,
|
|
63
|
+
consumerMarkedDirty: (node) => {
|
|
64
|
+
let parent = getLViewParent(node.lView);
|
|
65
|
+
while (parent && !viewShouldHaveReactiveConsumer(parent[TVIEW])) {
|
|
66
|
+
parent = getLViewParent(parent);
|
|
67
|
+
}
|
|
68
|
+
if (!parent) {
|
|
69
|
+
// If we can't find an appropriate parent that should have a consumer, we
|
|
70
|
+
// don't have a way of appropriately refreshing this LView as part of application synchronization.
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
markViewForRefresh(parent);
|
|
74
|
+
},
|
|
75
|
+
consumerOnSignalRead() {
|
|
76
|
+
this.lView[REACTIVE_TEMPLATE_CONSUMER] = this;
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Indicates if the view should get its own reactive consumer node.
|
|
81
|
+
*
|
|
82
|
+
* In the current design, all embedded views share a consumer with the component view. This allows
|
|
83
|
+
* us to refresh at the component level rather than at a per-view level. In addition, root views get
|
|
84
|
+
* their own reactive node because root component will have a host view that executes the
|
|
85
|
+
* component's host bindings. This needs to be tracked in a consumer as well.
|
|
86
|
+
*
|
|
87
|
+
* To get a more granular change detection than per-component, all we would just need to update the
|
|
88
|
+
* condition here so that a given view gets a reactive consumer which can become dirty independently
|
|
89
|
+
* from its parent component. For example embedded views for signal components could be created with
|
|
90
|
+
* a new type "SignalEmbeddedView" and the condition here wouldn't even need updating in order to
|
|
91
|
+
* get granular per-view change detection for signal components.
|
|
92
|
+
*/
|
|
93
|
+
export function viewShouldHaveReactiveConsumer(tView) {
|
|
94
|
+
return tView.type !== 2 /* TViewType.Embedded */;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmVfbHZpZXdfY29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3JlYWN0aXZlX2x2aWV3X2NvbnN1bWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQWUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RSxPQUFPLEVBR0wsMEJBQTBCLEVBQzFCLEtBQUssR0FHTixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBQyxjQUFjLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRyxJQUFJLGFBQWEsR0FBbUIsRUFBRSxDQUFDO0FBS3ZDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsS0FBWTtJQUMzRCxPQUFPLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFDLEtBQVk7SUFDL0MsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNwRixRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLFFBQStCO0lBQzlFLElBQUksUUFBUSxDQUFDLEtBQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdELDhCQUE4QjtRQUM5QixPQUFPO0lBQ1QsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sNEJBQTRCLEdBQXlDO0lBQ3pFLEdBQUcsYUFBYTtJQUNoQixvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLG1CQUFtQixFQUFFLENBQUMsSUFBMkIsRUFBRSxFQUFFO1FBQ25ELHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0Qsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxLQUFNLENBQUMsMEJBQTBCLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakQsQ0FBQztDQUNGLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxLQUFZO0lBQ3ZELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RixRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSx1QkFBdUIsR0FBRztJQUM5QixHQUFHLGFBQWE7SUFDaEIsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixtQkFBbUIsRUFBRSxDQUFDLElBQTJCLEVBQUUsRUFBRTtRQUNuRCxJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWix5RUFBeUU7WUFDekUsa0dBQWtHO1lBQ2xHLE9BQU87UUFDVCxDQUFDO1FBRUQsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsS0FBTSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pELENBQUM7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxLQUFZO0lBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksK0JBQXVCLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1JFQUNUSVZFX05PREUsIFJlYWN0aXZlTm9kZX0gZnJvbSAnQGFuZ3VsYXIvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMnO1xuXG5pbXBvcnQge1xuICBMVmlldyxcbiAgUEFSRU5ULFxuICBSRUFDVElWRV9URU1QTEFURV9DT05TVU1FUixcbiAgVFZJRVcsXG4gIFRWaWV3LFxuICBUVmlld1R5cGUsXG59IGZyb20gJy4vaW50ZXJmYWNlcy92aWV3JztcbmltcG9ydCB7Z2V0TFZpZXdQYXJlbnQsIG1hcmtBbmNlc3RvcnNGb3JUcmF2ZXJzYWwsIG1hcmtWaWV3Rm9yUmVmcmVzaH0gZnJvbSAnLi91dGlsL3ZpZXdfdXRpbHMnO1xuaW1wb3J0IHthc3NlcnREZWZpbmVkfSBmcm9tICcuLi91dGlsL2Fzc2VydCc7XG5cbmxldCBmcmVlQ29uc3VtZXJzOiBSZWFjdGl2ZU5vZGVbXSA9IFtdO1xuZXhwb3J0IGludGVyZmFjZSBSZWFjdGl2ZUxWaWV3Q29uc3VtZXIgZXh0ZW5kcyBSZWFjdGl2ZU5vZGUge1xuICBsVmlldzogTFZpZXcgfCBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB0ZW1wbGF0ZSBjb25zdW1lciBwb2ludGluZyBhdCB0aGUgc3BlY2lmaWVkIExWaWV3LlxuICogU29tZXRpbWVzLCBhIHByZXZpb3VzbHkgY3JlYXRlZCBjb25zdW1lciBtYXkgYmUgcmV1c2VkLCBpbiBvcmRlciB0byBzYXZlIG9uIGFsbG9jYXRpb25zLiBJbiB0aGF0XG4gKiBjYXNlLCB0aGUgTFZpZXcgd2lsbCBiZSB1cGRhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JCb3Jyb3dSZWFjdGl2ZUxWaWV3Q29uc3VtZXIobFZpZXc6IExWaWV3KTogUmVhY3RpdmVMVmlld0NvbnN1bWVyIHtcbiAgcmV0dXJuIGxWaWV3W1JFQUNUSVZFX1RFTVBMQVRFX0NPTlNVTUVSXSA/PyBib3Jyb3dSZWFjdGl2ZUxWaWV3Q29uc3VtZXIobFZpZXcpO1xufVxuXG5mdW5jdGlvbiBib3Jyb3dSZWFjdGl2ZUxWaWV3Q29uc3VtZXIobFZpZXc6IExWaWV3KTogUmVhY3RpdmVMVmlld0NvbnN1bWVyIHtcbiAgY29uc3QgY29uc3VtZXIgPSBmcmVlQ29uc3VtZXJzLnBvcCgpID8/IE9iamVjdC5jcmVhdGUoUkVBQ1RJVkVfTFZJRVdfQ09OU1VNRVJfTk9ERSk7XG4gIGNvbnN1bWVyLmxWaWV3ID0gbFZpZXc7XG4gIHJldHVybiBjb25zdW1lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heWJlUmV0dXJuUmVhY3RpdmVMVmlld0NvbnN1bWVyKGNvbnN1bWVyOiBSZWFjdGl2ZUxWaWV3Q29uc3VtZXIpOiB2b2lkIHtcbiAgaWYgKGNvbnN1bWVyLmxWaWV3IVtSRUFDVElWRV9URU1QTEFURV9DT05TVU1FUl0gPT09IGNvbnN1bWVyKSB7XG4gICAgLy8gVGhlIGNvbnN1bWVyIGdvdCBjb21taXR0ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN1bWVyLmxWaWV3ID0gbnVsbDtcbiAgZnJlZUNvbnN1bWVycy5wdXNoKGNvbnN1bWVyKTtcbn1cblxuY29uc3QgUkVBQ1RJVkVfTFZJRVdfQ09OU1VNRVJfTk9ERTogT21pdDxSZWFjdGl2ZUxWaWV3Q29uc3VtZXIsICdsVmlldyc+ID0ge1xuICAuLi5SRUFDVElWRV9OT0RFLFxuICBjb25zdW1lcklzQWx3YXlzTGl2ZTogdHJ1ZSxcbiAgY29uc3VtZXJNYXJrZWREaXJ0eTogKG5vZGU6IFJlYWN0aXZlTFZpZXdDb25zdW1lcikgPT4ge1xuICAgIG1hcmtBbmNlc3RvcnNGb3JUcmF2ZXJzYWwobm9kZS5sVmlldyEpO1xuICB9LFxuICBjb25zdW1lck9uU2lnbmFsUmVhZCh0aGlzOiBSZWFjdGl2ZUxWaWV3Q29uc3VtZXIpOiB2b2lkIHtcbiAgICB0aGlzLmxWaWV3IVtSRUFDVElWRV9URU1QTEFURV9DT05TVU1FUl0gPSB0aGlzO1xuICB9LFxufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGNvbnN1bWVyIGZvciB1c2Ugd2l0aCBgTFZpZXdgcyB0aGF0IHNob3VsZCBub3QgaGF2ZSBjb25zdW1lcnMuXG4gKiBJZiB0aGUgTFZpZXcgYWxyZWFkeSBoYXMgYSBjb25zdW1lciwgcmV0dXJucyB0aGUgZXhpc3Rpbmcgb25lIGluc3RlYWQuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzb21lIEFQSXMgbWF5IGNhdXNlIGNoYW5nZSBkZXRlY3Rpb24gZGlyZWN0bHkgb24gYW4gTFZpZXdcbiAqIHRoYXQgd2UgZG8gbm90IHdhbnQgdG8gaGF2ZSBhIGNvbnN1bWVyIChFbWJlZGRlZCB2aWV3cyB0b2RheSkuIEFzIGEgcmVzdWx0LCB0aGVyZVxuICogd291bGQgYmUgbm8gYWN0aXZlIGNvbnN1bWVyIGZyb20gcnVubmluZyBjaGFuZ2UgZGV0ZWN0aW9uIG9uIGl0cyBob3N0IGNvbXBvbmVudFxuICogYW5kIGFueSBzaWduYWxzIGluIHRoZSBMVmlldyB0ZW1wbGF0ZSB3b3VsZCBiZSB1bnRyYWNrZWQuIEluc3RlYWQsIHdlIGNyZWF0ZVxuICogdGhpcyB0ZW1wb3JhcnkgY29uc3VtZXIgdGhhdCBtYXJrcyB0aGUgZmlyc3QgcGFyZW50IHRoYXQgX3Nob3VsZF8gaGF2ZSBhIGNvbnN1bWVyXG4gKiBmb3IgcmVmcmVzaC4gT25jZSBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bnMgYXMgcGFydCBvZiB0aGF0IHJlZnJlc2gsIHdlIHRocm93IGF3YXlcbiAqIHRoaXMgY29uc3VtZXIgYmVjYXVzZSBpdHMgc2lnbmFscyB3aWxsIHRoZW4gYmUgdHJhY2tlZCBieSB0aGUgcGFyZW50J3MgY29uc3VtZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckNyZWF0ZVRlbXBvcmFyeUNvbnN1bWVyKGxWaWV3OiBMVmlldyk6IFJlYWN0aXZlTFZpZXdDb25zdW1lciB7XG4gIGNvbnN0IGNvbnN1bWVyID0gbFZpZXdbUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVJdID8/IE9iamVjdC5jcmVhdGUoVEVNUE9SQVJZX0NPTlNVTUVSX05PREUpO1xuICBjb25zdW1lci5sVmlldyA9IGxWaWV3O1xuICByZXR1cm4gY29uc3VtZXI7XG59XG5cbmNvbnN0IFRFTVBPUkFSWV9DT05TVU1FUl9OT0RFID0ge1xuICAuLi5SRUFDVElWRV9OT0RFLFxuICBjb25zdW1lcklzQWx3YXlzTGl2ZTogdHJ1ZSxcbiAgY29uc3VtZXJNYXJrZWREaXJ0eTogKG5vZGU6IFJlYWN0aXZlTFZpZXdDb25zdW1lcikgPT4ge1xuICAgIGxldCBwYXJlbnQgPSBnZXRMVmlld1BhcmVudChub2RlLmxWaWV3ISk7XG4gICAgd2hpbGUgKHBhcmVudCAmJiAhdmlld1Nob3VsZEhhdmVSZWFjdGl2ZUNvbnN1bWVyKHBhcmVudFtUVklFV10pKSB7XG4gICAgICBwYXJlbnQgPSBnZXRMVmlld1BhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbiBhcHByb3ByaWF0ZSBwYXJlbnQgdGhhdCBzaG91bGQgaGF2ZSBhIGNvbnN1bWVyLCB3ZVxuICAgICAgLy8gZG9uJ3QgaGF2ZSBhIHdheSBvZiBhcHByb3ByaWF0ZWx5IHJlZnJlc2hpbmcgdGhpcyBMVmlldyBhcyBwYXJ0IG9mIGFwcGxpY2F0aW9uIHN5bmNocm9uaXphdGlvbi5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtYXJrVmlld0ZvclJlZnJlc2gocGFyZW50KTtcbiAgfSxcbiAgY29uc3VtZXJPblNpZ25hbFJlYWQodGhpczogUmVhY3RpdmVMVmlld0NvbnN1bWVyKTogdm9pZCB7XG4gICAgdGhpcy5sVmlldyFbUkVBQ1RJVkVfVEVNUExBVEVfQ09OU1VNRVJdID0gdGhpcztcbiAgfSxcbn07XG5cbi8qKlxuICogSW5kaWNhdGVzIGlmIHRoZSB2aWV3IHNob3VsZCBnZXQgaXRzIG93biByZWFjdGl2ZSBjb25zdW1lciBub2RlLlxuICpcbiAqIEluIHRoZSBjdXJyZW50IGRlc2lnbiwgYWxsIGVtYmVkZGVkIHZpZXdzIHNoYXJlIGEgY29uc3VtZXIgd2l0aCB0aGUgY29tcG9uZW50IHZpZXcuIFRoaXMgYWxsb3dzXG4gKiB1cyB0byByZWZyZXNoIGF0IHRoZSBjb21wb25lbnQgbGV2ZWwgcmF0aGVyIHRoYW4gYXQgYSBwZXItdmlldyBsZXZlbC4gSW4gYWRkaXRpb24sIHJvb3Qgdmlld3MgZ2V0XG4gKiB0aGVpciBvd24gcmVhY3RpdmUgbm9kZSBiZWNhdXNlIHJvb3QgY29tcG9uZW50IHdpbGwgaGF2ZSBhIGhvc3QgdmlldyB0aGF0IGV4ZWN1dGVzIHRoZVxuICogY29tcG9uZW50J3MgaG9zdCBiaW5kaW5ncy4gVGhpcyBuZWVkcyB0byBiZSB0cmFja2VkIGluIGEgY29uc3VtZXIgYXMgd2VsbC5cbiAqXG4gKiBUbyBnZXQgYSBtb3JlIGdyYW51bGFyIGNoYW5nZSBkZXRlY3Rpb24gdGhhbiBwZXItY29tcG9uZW50LCBhbGwgd2Ugd291bGQganVzdCBuZWVkIHRvIHVwZGF0ZSB0aGVcbiAqIGNvbmRpdGlvbiBoZXJlIHNvIHRoYXQgYSBnaXZlbiB2aWV3IGdldHMgYSByZWFjdGl2ZSBjb25zdW1lciB3aGljaCBjYW4gYmVjb21lIGRpcnR5IGluZGVwZW5kZW50bHlcbiAqIGZyb20gaXRzIHBhcmVudCBjb21wb25lbnQuIEZvciBleGFtcGxlIGVtYmVkZGVkIHZpZXdzIGZvciBzaWduYWwgY29tcG9uZW50cyBjb3VsZCBiZSBjcmVhdGVkIHdpdGhcbiAqIGEgbmV3IHR5cGUgXCJTaWduYWxFbWJlZGRlZFZpZXdcIiBhbmQgdGhlIGNvbmRpdGlvbiBoZXJlIHdvdWxkbid0IGV2ZW4gbmVlZCB1cGRhdGluZyBpbiBvcmRlciB0b1xuICogZ2V0IGdyYW51bGFyIHBlci12aWV3IGNoYW5nZSBkZXRlY3Rpb24gZm9yIHNpZ25hbCBjb21wb25lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmlld1Nob3VsZEhhdmVSZWFjdGl2ZUNvbnN1bWVyKHRWaWV3OiBUVmlldykge1xuICByZXR1cm4gdFZpZXcudHlwZSAhPT0gVFZpZXdUeXBlLkVtYmVkZGVkO1xufVxuIl19
|