@angular/core 18.0.0 → 18.0.2
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/primitives/event-dispatch/index.mjs +4 -2
- package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +51 -35
- package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +8 -6
- package/esm2022/primitives/event-dispatch/src/event.mjs +3 -7
- package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +128 -0
- package/esm2022/primitives/event-dispatch/src/event_type.mjs +85 -1
- package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +5 -8
- package/esm2022/primitives/signals/src/graph.mjs +6 -5
- package/esm2022/src/application/create_application.mjs +8 -3
- package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +5 -14
- package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
- package/esm2022/src/core_private_export.mjs +3 -2
- package/esm2022/src/error_details_base_url.mjs +2 -2
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/event_delegation_utils.mjs +68 -0
- package/esm2022/src/hydration/annotate.mjs +24 -8
- package/esm2022/src/hydration/api.mjs +2 -2
- package/esm2022/src/hydration/event_replay.mjs +55 -81
- package/esm2022/src/hydration/tokens.mjs +6 -1
- package/esm2022/src/image_performance_warning.mjs +3 -3
- package/esm2022/src/platform/platform_ref.mjs +10 -3
- package/esm2022/src/render3/component_ref.mjs +1 -1
- package/esm2022/src/render3/instructions/listener.mjs +8 -11
- package/esm2022/src/render3/instructions/shared.mjs +3 -3
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/logger.mjs +3 -3
- package/esm2022/testing/src/test_bed_compiler.mjs +7 -3
- package/fesm2022/core.mjs +340 -292
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1402 -1189
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +6 -5
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +7 -3
- package/fesm2022/testing.mjs.map +1 -1
- package/index.d.ts +45 -3
- package/package.json +2 -2
- package/primitives/event-dispatch/index.d.ts +109 -116
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/migrations/http-providers/bundle.js +25 -17
- package/schematics/migrations/http-providers/bundle.js.map +2 -2
- package/schematics/migrations/invalid-two-way-bindings/bundle.js +337 -166
- package/schematics/migrations/invalid-two-way-bindings/bundle.js.map +3 -3
- package/schematics/ng-generate/control-flow-migration/bundle.js +361 -183
- package/schematics/ng-generate/control-flow-migration/bundle.js.map +3 -3
- package/schematics/ng-generate/standalone-migration/bundle.js +812 -497
- package/schematics/ng-generate/standalone-migration/bundle.js.map +3 -3
- package/testing/index.d.ts +1 -1
- package/esm2022/src/change_detection/scheduling/flags.mjs +0 -10
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
import { ActionResolver } from './action_resolver';
|
|
9
|
+
import { Dispatcher } from './dispatcher';
|
|
10
|
+
import { Restriction } from './restriction';
|
|
11
|
+
/** An internal symbol used to indicate whether propagation should be stopped or not. */
|
|
12
|
+
export const PROPAGATION_STOPPED_SYMBOL = Symbol.for('propagationStopped');
|
|
13
|
+
/** Extra event phases beyond what the browser provides. */
|
|
14
|
+
export const EventPhase = {
|
|
15
|
+
REPLAY: 101,
|
|
16
|
+
};
|
|
17
|
+
const PREVENT_DEFAULT_ERROR_MESSAGE_DETAILS = ' Because event replay occurs after browser dispatch, `preventDefault` would have no ' +
|
|
18
|
+
'effect. You can check whether an event is being replayed by accessing the event phase: ' +
|
|
19
|
+
'`event.eventPhase === EventPhase.REPLAY`.';
|
|
20
|
+
const PREVENT_DEFAULT_ERROR_MESSAGE = `\`preventDefault\` called during event replay.`;
|
|
21
|
+
const COMPOSED_PATH_ERROR_MESSAGE_DETAILS = ' Because event replay occurs after browser ' +
|
|
22
|
+
'dispatch, `composedPath()` will be empty. Iterate parent nodes from `event.target` or ' +
|
|
23
|
+
'`event.currentTarget` if you need to check elements in the event path.';
|
|
24
|
+
const COMPOSED_PATH_ERROR_MESSAGE = `\`composedPath\` called during event replay.`;
|
|
25
|
+
/**
|
|
26
|
+
* A dispatcher that uses browser-based `Event` semantics, for example bubbling, `stopPropagation`,
|
|
27
|
+
* `currentTarget`, etc.
|
|
28
|
+
*/
|
|
29
|
+
export class EventDispatcher {
|
|
30
|
+
constructor(dispatchDelegate) {
|
|
31
|
+
this.dispatchDelegate = dispatchDelegate;
|
|
32
|
+
this.actionResolver = new ActionResolver();
|
|
33
|
+
this.dispatcher = new Dispatcher((eventInfoWrapper) => {
|
|
34
|
+
this.dispatchToDelegate(eventInfoWrapper);
|
|
35
|
+
}, {
|
|
36
|
+
actionResolver: this.actionResolver,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The entrypoint for the `EventContract` dispatch.
|
|
41
|
+
*/
|
|
42
|
+
dispatch(eventInfo) {
|
|
43
|
+
this.dispatcher.dispatch(eventInfo);
|
|
44
|
+
}
|
|
45
|
+
/** Internal method that does basic disaptching. */
|
|
46
|
+
dispatchToDelegate(eventInfoWrapper) {
|
|
47
|
+
if (eventInfoWrapper.getIsReplay()) {
|
|
48
|
+
prepareEventForReplay(eventInfoWrapper);
|
|
49
|
+
}
|
|
50
|
+
prepareEventForBubbling(eventInfoWrapper);
|
|
51
|
+
while (eventInfoWrapper.getAction()) {
|
|
52
|
+
prepareEventForDispatch(eventInfoWrapper);
|
|
53
|
+
this.dispatchDelegate(eventInfoWrapper.getEvent(), eventInfoWrapper.getAction().name);
|
|
54
|
+
if (propagationStopped(eventInfoWrapper)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.actionResolver.resolveParentAction(eventInfoWrapper.eventInfo);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function prepareEventForBubbling(eventInfoWrapper) {
|
|
62
|
+
const event = eventInfoWrapper.getEvent();
|
|
63
|
+
const stopPropagation = () => {
|
|
64
|
+
event[PROPAGATION_STOPPED_SYMBOL] = true;
|
|
65
|
+
};
|
|
66
|
+
patchEventInstance(event, 'stopPropagation', stopPropagation);
|
|
67
|
+
patchEventInstance(event, 'stopImmediatePropagation', stopPropagation);
|
|
68
|
+
}
|
|
69
|
+
function propagationStopped(eventInfoWrapper) {
|
|
70
|
+
const event = eventInfoWrapper.getEvent();
|
|
71
|
+
return !!event[PROPAGATION_STOPPED_SYMBOL];
|
|
72
|
+
}
|
|
73
|
+
function prepareEventForReplay(eventInfoWrapper) {
|
|
74
|
+
const event = eventInfoWrapper.getEvent();
|
|
75
|
+
const target = eventInfoWrapper.getTargetElement();
|
|
76
|
+
patchEventInstance(event, 'target', target);
|
|
77
|
+
patchEventInstance(event, 'eventPhase', EventPhase.REPLAY);
|
|
78
|
+
patchEventInstance(event, 'preventDefault', () => {
|
|
79
|
+
throw new Error(PREVENT_DEFAULT_ERROR_MESSAGE + (ngDevMode ? PREVENT_DEFAULT_ERROR_MESSAGE_DETAILS : ''));
|
|
80
|
+
});
|
|
81
|
+
patchEventInstance(event, 'composedPath', () => {
|
|
82
|
+
throw new Error(COMPOSED_PATH_ERROR_MESSAGE + (ngDevMode ? COMPOSED_PATH_ERROR_MESSAGE_DETAILS : ''));
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function prepareEventForDispatch(eventInfoWrapper) {
|
|
86
|
+
const event = eventInfoWrapper.getEvent();
|
|
87
|
+
const currentTarget = eventInfoWrapper.getAction()?.element;
|
|
88
|
+
if (currentTarget) {
|
|
89
|
+
patchEventInstance(event, 'currentTarget', currentTarget, {
|
|
90
|
+
// `currentTarget` is going to get reassigned every dispatch.
|
|
91
|
+
configurable: true,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Patch `Event` instance during non-standard `Event` dispatch. This patches just the `Event`
|
|
97
|
+
* instance that the browser created, it does not patch global properties or methods.
|
|
98
|
+
*
|
|
99
|
+
* This is necessary because dispatching an `Event` outside of browser dispatch results in
|
|
100
|
+
* incorrect properties and methods that need to be polyfilled or do not work.
|
|
101
|
+
*
|
|
102
|
+
* JSAction dispatch adds two extra "phases" to event dispatch:
|
|
103
|
+
* 1. Event delegation - the event is being dispatched by a delegating event handler on a container
|
|
104
|
+
* (typically `window.document.documentElement`), to a delegated event handler on some child
|
|
105
|
+
* element. Certain `Event` properties will be unintuitive, such as `currentTarget`, which would
|
|
106
|
+
* be the container rather than the child element. Bubbling would also not work. In order to
|
|
107
|
+
* emulate the browser, these properties and methods on the `Event` are patched.
|
|
108
|
+
* 2. Event replay - the event is being dispatched by the framework once the handlers have been
|
|
109
|
+
* loaded (during hydration, or late-loaded). Certain `Event` properties can be unset by the
|
|
110
|
+
* browser because the `Event` is no longer actively being dispatched, such as `target`. Other
|
|
111
|
+
* methods have no effect because the `Event` has already been dispatched, such as
|
|
112
|
+
* `preventDefault`. Bubbling would also not work. These properties and methods are patched,
|
|
113
|
+
* either to fill in information that the browser may have removed, or to throw errors in methods
|
|
114
|
+
* that no longer behave as expected.
|
|
115
|
+
*/
|
|
116
|
+
function patchEventInstance(event, property, value, { configurable = false } = {}) {
|
|
117
|
+
Object.defineProperty(event, property, { value, configurable });
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Registers deferred functionality for an EventContract and a Jsaction
|
|
121
|
+
* Dispatcher.
|
|
122
|
+
*/
|
|
123
|
+
export function registerDispatcher(eventContract, dispatcher) {
|
|
124
|
+
eventContract.ecrd((eventInfo) => {
|
|
125
|
+
dispatcher.dispatch(eventInfo);
|
|
126
|
+
}, Restriction.I_AM_THE_JSACTION_FRAMEWORK);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfZGlzcGF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUd4QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBTzFDLHdGQUF3RjtBQUN4RixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFM0UsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixNQUFNLEVBQUUsR0FBRztDQUNaLENBQUM7QUFFRixNQUFNLHFDQUFxQyxHQUN6QyxzRkFBc0Y7SUFDdEYseUZBQXlGO0lBQ3pGLDJDQUEyQyxDQUFDO0FBQzlDLE1BQU0sNkJBQTZCLEdBQUcsZ0RBQWdELENBQUM7QUFDdkYsTUFBTSxtQ0FBbUMsR0FDdkMsNkNBQTZDO0lBQzdDLHdGQUF3RjtJQUN4Rix3RUFBd0UsQ0FBQztBQUMzRSxNQUFNLDJCQUEyQixHQUFHLDhDQUE4QyxDQUFDO0FBUW5GOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQTZCLGdCQUE0RDtRQUE1RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRDO1FBQ3ZGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUM5QixDQUFDLGdCQUFrQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFn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Q0FBQyxTQUFTLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDNUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRTtZQUN4RCw2REFBNkQ7WUFDN0QsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixLQUFZLEVBQ1osUUFBZ0IsRUFDaEIsS0FBUSxFQUNSLEVBQUMsWUFBWSxHQUFHLEtBQUssS0FBOEIsRUFBRTtJQUVyRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxhQUFxQyxFQUNyQyxVQUEyQjtJQUUzQixhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBb0IsRUFBRSxFQUFFO1FBQzFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQyxFQUFFLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBY3Rpb25SZXNvbHZlcn0gZnJvbSAnLi9hY3Rpb25fcmVzb2x2ZXInO1xuaW1wb3J0IHtEaXNwYXRjaGVyfSBmcm9tICcuL2Rpc3BhdGNoZXInO1xuaW1wb3J0IHtFdmVudEluZm8sIEV2ZW50SW5mb1dyYXBwZXJ9IGZyb20gJy4vZXZlbnRfaW5mbyc7XG5pbXBvcnQge1VucmVuYW1lZEV2ZW50Q29udHJhY3R9IGZyb20gJy4vZXZlbnRjb250cmFjdCc7XG5pbXBvcnQge1Jlc3RyaWN0aW9ufSBmcm9tICcuL3Jlc3RyaWN0aW9uJztcblxuLyoqXG4gKiBBIHJlcGxheWVyIGlzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgcXVldWVkIGV2ZW50cywgZnJvbSB0aGUgYEV2ZW50Q29udHJhY3RgLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYXllciA9IChldmVudEluZm9XcmFwcGVyczogRXZlbnRbXSkgPT4gdm9pZDtcblxuLyoqIEFuIGludGVybmFsIHN5bWJvbCB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgcHJvcGFnYXRpb24gc2hvdWxkIGJlIHN0b3BwZWQgb3Igbm90LiAqL1xuZXhwb3J0IGNvbnN0IFBST1BBR0FUSU9OX1NUT1BQRURfU1lNQk9MID0gU3ltYm9sLmZvcigncHJvcGFnYXRpb25TdG9wcGVkJyk7XG5cbi8qKiBFeHRyYSBldmVudCBwaGFzZXMgYmV5b25kIHdoYXQgdGhlIGJyb3dzZXIgcHJvdmlkZXMuICovXG5leHBvcnQgY29uc3QgRXZlbnRQaGFzZSA9IHtcbiAgUkVQTEFZOiAxMDEsXG59O1xuXG5jb25zdCBQUkVWRU5UX0RFRkFVTFRfRVJST1JfTUVTU0FHRV9ERVRBSUxTID1cbiAgJyBCZWNhdXNlIGV2ZW50IHJlcGxheSBvY2N1cnMgYWZ0ZXIgYnJvd3NlciBkaXNwYXRjaCwgYHByZXZlbnREZWZhdWx0YCB3b3VsZCBoYXZlIG5vICcgK1xuICAnZWZmZWN0LiBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgYW4gZXZlbnQgaXMgYmVpbmcgcmVwbGF5ZWQgYnkgYWNjZXNzaW5nIHRoZSBldmVudCBwaGFzZTogJyArXG4gICdgZXZlbnQuZXZlbnRQaGFzZSA9PT0gRXZlbnRQaGFzZS5SRVBMQVlgLic7XG5jb25zdCBQUkVWRU5UX0RFRkFVTFRfRVJST1JfTUVTU0FHRSA9IGBcXGBwcmV2ZW50RGVmYXVsdFxcYCBjYWxsZWQgZHVyaW5nIGV2ZW50IHJlcGxheS5gO1xuY29uc3QgQ09NUE9TRURfUEFUSF9FUlJPUl9NRVNTQUdFX0RFVEFJTFMgPVxuICAnIEJlY2F1c2UgZXZlbnQgcmVwbGF5IG9jY3VycyBhZnRlciBicm93c2VyICcgK1xuICAnZGlzcGF0Y2gsIGBjb21wb3NlZFBhdGgoKWAgd2lsbCBiZSBlbXB0eS4gSXRlcmF0ZSBwYXJlbnQgbm9kZXMgZnJvbSBgZXZlbnQudGFyZ2V0YCBvciAnICtcbiAgJ2BldmVudC5jdXJyZW50VGFyZ2V0YCBpZiB5b3UgbmVlZCB0byBjaGVjayBlbGVtZW50cyBpbiB0aGUgZXZlbnQgcGF0aC4nO1xuY29uc3QgQ09NUE9TRURfUEFUSF9FUlJPUl9NRVNTQUdFID0gYFxcYGNvbXBvc2VkUGF0aFxcYCBjYWxsZWQgZHVyaW5nIGV2ZW50IHJlcGxheS5gO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBFdmVudCB7XG4gICAgW1BST1BBR0FUSU9OX1NUT1BQRURfU1lNQk9MXT86IGJvb2xlYW47XG4gIH1cbn1cblxuLyoqXG4gKiBBIGRpc3BhdGNoZXIgdGhhdCB1c2VzIGJyb3dzZXItYmFzZWQgYEV2ZW50YCBzZW1hbnRpY3MsIGZvciBleGFtcGxlIGJ1YmJsaW5nLCBgc3RvcFByb3BhZ2F0aW9uYCxcbiAqIGBjdXJyZW50VGFyZ2V0YCwgZXRjLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnREaXNwYXRjaGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25SZXNvbHZlcjogQWN0aW9uUmVzb2x2ZXI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlzcGF0Y2hEZWxlZ2F0ZTogKGV2ZW50OiBFdmVudCwgYWN0aW9uTmFtZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hY3Rpb25SZXNvbHZlciA9IG5ldyBBY3Rpb25SZXNvbHZlcigpO1xuICAgIHRoaXMuZGlzcGF0Y2hlciA9IG5ldyBEaXNwYXRjaGVyKFxuICAgICAgKGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaFRvRGVsZWdhdGUoZXZlbnRJbmZvV3JhcHBlcik7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb25SZXNvbHZlcjogdGhpcy5hY3Rpb25SZXNvbHZlcixcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZW50cnlwb2ludCBmb3IgdGhlIGBFdmVudENvbnRyYWN0YCBkaXNwYXRjaC5cbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50SW5mbzogRXZlbnRJbmZvKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLmRpc3BhdGNoKGV2ZW50SW5mbyk7XG4gIH1cblxuICAvKiogSW50ZXJuYWwgbWV0aG9kIHRoYXQgZG9lcyBiYXNpYyBkaXNhcHRjaGluZy4gKi9cbiAgcHJpdmF0ZSBkaXNwYXRjaFRvRGVsZWdhdGUoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikge1xuICAgIGlmIChldmVudEluZm9XcmFwcGVyLmdldElzUmVwbGF5KCkpIHtcbiAgICAgIHByZXBhcmVFdmVudEZvclJlcGxheShldmVudEluZm9XcmFwcGVyKTtcbiAgICB9XG4gICAgcHJlcGFyZUV2ZW50Rm9yQnViYmxpbmcoZXZlbnRJbmZvV3JhcHBlcik7XG4gICAgd2hpbGUgKGV2ZW50SW5mb1dyYXBwZXIuZ2V0QWN0aW9uKCkpIHtcbiAgICAgIHByZXBhcmVFdmVudEZvckRpc3BhdGNoKGV2ZW50SW5mb1dyYXBwZXIpO1xuICAgICAgdGhpcy5kaXNwYXRjaERlbGVnYXRlKGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKSwgZXZlbnRJbmZvV3JhcHBlci5nZXRBY3Rpb24oKSEubmFtZSk7XG4gICAgICBpZiAocHJvcGFnYXRpb25TdG9wcGVkKGV2ZW50SW5mb1dyYXBwZXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWN0aW9uUmVzb2x2ZXIucmVzb2x2ZVBhcmVudEFjdGlvbihldmVudEluZm9XcmFwcGVyLmV2ZW50SW5mbyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFdmVudEZvckJ1YmJsaW5nKGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpIHtcbiAgY29uc3QgZXZlbnQgPSBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCk7XG4gIGNvbnN0IHN0b3BQcm9wYWdhdGlvbiA9ICgpID0+IHtcbiAgICBldmVudFtQUk9QQUdBVElPTl9TVE9QUEVEX1NZTUJPTF0gPSB0cnVlO1xuICB9O1xuICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICdzdG9wUHJvcGFnYXRpb24nLCBzdG9wUHJvcGFnYXRpb24pO1xuICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICdzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24nLCBzdG9wUHJvcGFnYXRpb24pO1xufVxuXG5mdW5jdGlvbiBwcm9wYWdhdGlvblN0b3BwZWQoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikge1xuICBjb25zdCBldmVudCA9IGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKTtcbiAgcmV0dXJuICEhZXZlbnRbUFJPUEFHQVRJT05fU1RPUFBFRF9TWU1CT0xdO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlRXZlbnRGb3JSZXBsYXkoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikge1xuICBjb25zdCBldmVudCA9IGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKTtcbiAgY29uc3QgdGFyZ2V0ID0gZXZlbnRJbmZvV3JhcHBlci5nZXRUYXJnZXRFbGVtZW50KCk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ3RhcmdldCcsIHRhcmdldCk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ2V2ZW50UGhhc2UnLCBFdmVudFBoYXNlLlJFUExBWSk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ3ByZXZlbnREZWZhdWx0JywgKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFBSRVZFTlRfREVGQVVMVF9FUlJPUl9NRVNTQUdFICsgKG5nRGV2TW9kZSA/IFBSRVZFTlRfREVGQVVMVF9FUlJPUl9NRVNTQUdFX0RFVEFJTFMgOiAnJyksXG4gICAgKTtcbiAgfSk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ2NvbXBvc2VkUGF0aCcsICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBDT01QT1NFRF9QQVRIX0VSUk9SX01FU1NBR0UgKyAobmdEZXZNb2RlID8gQ09NUE9TRURfUEFUSF9FUlJPUl9NRVNTQUdFX0RFVEFJTFMgOiAnJyksXG4gICAgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFdmVudEZvckRpc3BhdGNoKGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpIHtcbiAgY29uc3QgZXZlbnQgPSBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCk7XG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudEluZm9XcmFwcGVyLmdldEFjdGlvbigpPy5lbGVtZW50O1xuICBpZiAoY3VycmVudFRhcmdldCkge1xuICAgIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ2N1cnJlbnRUYXJnZXQnLCBjdXJyZW50VGFyZ2V0LCB7XG4gICAgICAvLyBgY3VycmVudFRhcmdldGAgaXMgZ29pbmcgdG8gZ2V0IHJlYXNzaWduZWQgZXZlcnkgZGlzcGF0Y2guXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXRjaCBgRXZlbnRgIGluc3RhbmNlIGR1cmluZyBub24tc3RhbmRhcmQgYEV2ZW50YCBkaXNwYXRjaC4gVGhpcyBwYXRjaGVzIGp1c3QgdGhlIGBFdmVudGBcbiAqIGluc3RhbmNlIHRoYXQgdGhlIGJyb3dzZXIgY3JlYXRlZCwgaXQgZG9lcyBub3QgcGF0Y2ggZ2xvYmFsIHByb3BlcnRpZXMgb3IgbWV0aG9kcy5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGRpc3BhdGNoaW5nIGFuIGBFdmVudGAgb3V0c2lkZSBvZiBicm93c2VyIGRpc3BhdGNoIHJlc3VsdHMgaW5cbiAqIGluY29ycmVjdCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgbmVlZCB0byBiZSBwb2x5ZmlsbGVkIG9yIGRvIG5vdCB3b3JrLlxuICpcbiAqIEpTQWN0aW9uIGRpc3BhdGNoIGFkZHMgdHdvIGV4dHJhIFwicGhhc2VzXCIgdG8gZXZlbnQgZGlzcGF0Y2g6XG4gKiAxLiBFdmVudCBkZWxlZ2F0aW9uIC0gdGhlIGV2ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQgYnkgYSBkZWxlZ2F0aW5nIGV2ZW50IGhhbmRsZXIgb24gYSBjb250YWluZXJcbiAqICAgICh0eXBpY2FsbHkgYHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRgKSwgdG8gYSBkZWxlZ2F0ZWQgZXZlbnQgaGFuZGxlciBvbiBzb21lIGNoaWxkXG4gKiAgICBlbGVtZW50LiBDZXJ0YWluIGBFdmVudGAgcHJvcGVydGllcyB3aWxsIGJlIHVuaW50dWl0aXZlLCBzdWNoIGFzIGBjdXJyZW50VGFyZ2V0YCwgd2hpY2ggd291bGRcbiAqICAgIGJlIHRoZSBjb250YWluZXIgcmF0aGVyIHRoYW4gdGhlIGNoaWxkIGVsZW1lbnQuIEJ1YmJsaW5nIHdvdWxkIGFsc28gbm90IHdvcmsuIEluIG9yZGVyIHRvXG4gKiAgICBlbXVsYXRlIHRoZSBicm93c2VyLCB0aGVzZSBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIG9uIHRoZSBgRXZlbnRgIGFyZSBwYXRjaGVkLlxuICogMi4gRXZlbnQgcmVwbGF5IC0gdGhlIGV2ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQgYnkgdGhlIGZyYW1ld29yayBvbmNlIHRoZSBoYW5kbGVycyBoYXZlIGJlZW5cbiAqICAgIGxvYWRlZCAoZHVyaW5nIGh5ZHJhdGlvbiwgb3IgbGF0ZS1sb2FkZWQpLiBDZXJ0YWluIGBFdmVudGAgcHJvcGVydGllcyBjYW4gYmUgdW5zZXQgYnkgdGhlXG4gKiAgICBicm93c2VyIGJlY2F1c2UgdGhlIGBFdmVudGAgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IGJlaW5nIGRpc3BhdGNoZWQsIHN1Y2ggYXMgYHRhcmdldGAuIE90aGVyXG4gKiAgICBtZXRob2RzIGhhdmUgbm8gZWZmZWN0IGJlY2F1c2UgdGhlIGBFdmVudGAgaGFzIGFscmVhZHkgYmVlbiBkaXNwYXRjaGVkLCBzdWNoIGFzXG4gKiAgICBgcHJldmVudERlZmF1bHRgLiBCdWJibGluZyB3b3VsZCBhbHNvIG5vdCB3b3JrLiBUaGVzZSBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGFyZSBwYXRjaGVkLFxuICogICAgZWl0aGVyIHRvIGZpbGwgaW4gaW5mb3JtYXRpb24gdGhhdCB0aGUgYnJvd3NlciBtYXkgaGF2ZSByZW1vdmVkLCBvciB0byB0aHJvdyBlcnJvcnMgaW4gbWV0aG9kc1xuICogICAgdGhhdCBubyBsb25nZXIgYmVoYXZlIGFzIGV4cGVjdGVkLlxuICovXG5mdW5jdGlvbiBwYXRjaEV2ZW50SW5zdGFuY2U8VD4oXG4gIGV2ZW50OiBFdmVudCxcbiAgcHJvcGVydHk6IHN0cmluZyxcbiAgdmFsdWU6IFQsXG4gIHtjb25maWd1cmFibGUgPSBmYWxzZX06IHtjb25maWd1cmFibGU/OiBib29sZWFufSA9IHt9LFxuKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgcHJvcGVydHksIHt2YWx1ZSwgY29uZmlndXJhYmxlfSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGRlZmVycmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGFuIEV2ZW50Q29udHJhY3QgYW5kIGEgSnNhY3Rpb25cbiAqIERpc3BhdGNoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRpc3BhdGNoZXIoXG4gIGV2ZW50Q29udHJhY3Q6IFVucmVuYW1lZEV2ZW50Q29udHJhY3QsXG4gIGRpc3BhdGNoZXI6IEV2ZW50RGlzcGF0Y2hlcixcbikge1xuICBldmVudENvbnRyYWN0LmVjcmQoKGV2ZW50SW5mbzogRXZlbnRJbmZvKSA9PiB7XG4gICAgZGlzcGF0Y2hlci5kaXNwYXRjaChldmVudEluZm8pO1xuICB9LCBSZXN0cmljdGlvbi5JX0FNX1RIRV9KU0FDVElPTl9GUkFNRVdPUkspO1xufVxuIl19
|
|
@@ -241,4 +241,88 @@ export const EventType = {
|
|
|
241
241
|
*/
|
|
242
242
|
CUSTOM: '_custom',
|
|
243
243
|
};
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2Qjs7O09BR0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxNQUFNLEVBQUUsUUFBUTtJQUVoQjs7Ozs7T0FLRztJQUNILEtBQUssRUFBRSxPQUFPO0lBRWQ7Ozs7O09BS0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7O09BRUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLE9BQU87SUFFZDs7OztPQUlHO0lBQ0gsT0FBTyxFQUFFLFNBQVM7SUFFbEI7O09BRUc7SUFDSCxJQUFJLEVBQUUsTUFBTTtJQUVaOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQVU7SUFFcEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFFaEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSxTQUFTO0lBRWxCOzs7T0FHRztJQUNILFFBQVEsRUFBRSxVQUFVO0lBRXBCOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOzs7O09BSUc7SUFDSCxPQUFPLEVBQUUsU0FBUztJQUVsQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7Ozs7T0FJRztJQUNILFNBQVMsRUFBRSxXQUFXO0lBRXRCOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7T0FFRztJQUNILFNBQVMsRUFBRSxXQUFXO0lBRXRCOzs7O09BSUc7SUFDSCxTQUFTLEVBQUUsV0FBVztJQUV0Qjs7OztPQUlHO0lBQ0gsV0FBVyxFQUFFLGFBQWE7SUFFMUI7Ozs7T0FJRztJQUNILFdBQVcsRUFBRSxhQUFhO0lBRTFCOzs7O09BSUc7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7O09BR0c7SUFDSCxZQUFZLEVBQUUsY0FBYztJQUU1Qjs7O09BR0c7SUFDSCxZQUFZLEVBQUUsY0FBYztJQUU1Qjs7T0FFRztJQUNILFdBQVcsRUFBRSxhQUFhO0lBRTFCOztPQUVHO0lBQ0gsYUFBYSxFQUFFLGVBQWU7SUFFOUI7Ozs7T0FJRztJQUNILGlCQUFpQixFQUFFLG1CQUFtQjtJQUV0Qzs7OztPQUlHO0lBQ0gsa0JBQWtCLEVBQUUsb0JBQW9CO0lBRXhDOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOzs7O09BSUc7SUFDSCxJQUFJLEVBQUUsTUFBTTtJQUVaOztPQUVHO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFFaEI7OztPQUdHO0lBQ0gsVUFBVSxFQUFFLFlBQVk7SUFFeEI7OztPQUdHO0lBQ0gsUUFBUSxFQUFFLFVBQVU7SUFFcEI7OztPQUdHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7O09BRUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOztPQUVHO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFFaEI7Ozs7T0FJRztJQUNILE1BQU0sRUFBRSxRQUFRO0lBRWhCOzs7Ozs7O09BT0c7SUFDSCxNQUFNLEVBQUUsU0FBUztDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qXG4gKiBOYW1lcyBvZiBldmVudHMgdGhhdCBhcmUgc3BlY2lhbCB0byBqc2FjdGlvbi4gVGhlc2UgYXJlIG5vdCBhbGxcbiAqIGV2ZW50IHR5cGVzIHRoYXQgYXJlIGxlZ2FsIHRvIHVzZSBpbiBlaXRoZXIgSFRNTCBvciB0aGUgYWRkRXZlbnQoKVxuICogQVBJLCBidXQgdGhlc2UgYXJlIHRoZSBvbmVzIHRoYXQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5LiBBbGwgb3RoZXJcbiAqIERPTSBldmVudHMgY2FuIGJlIHVzZWQgaW4gZWl0aGVyIGFkZEV2ZW50KCkgb3IgaW4gdGhlIHZhbHVlIG9mIHRoZVxuICoganNhY3Rpb24gYXR0cmlidXRlLiBCZXdhcmUgb2YgYnJvd3NlciBzcGVjaWZpYyBldmVudHMgb3IgZXZlbnRzXG4gKiB0aGF0IGRvbid0IGJ1YmJsZSB0aG91Z2g6IElmIHRoZXkgYXJlIG5vdCBtZW50aW9uZWQgaGVyZSwgdGhlblxuICogZXZlbnQgY29udHJhY3QgZG9lc24ndCB3b3JrIGFyb3VuZCB0aGVpciBwZWN1bGlhcml0aWVzLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRUeXBlID0ge1xuICAvKipcbiAgICogTW91c2UgbWlkZGxlIGNsaWNrLCBpbnRyb2R1Y2VkIGluIENocm9tZSA1NSBhbmQgbm90IHlldCBzdXBwb3J0ZWQgb25cbiAgICogb3RoZXIgYnJvd3NlcnMuXG4gICAqL1xuICBBVVhDTElDSzogJ2F1eGNsaWNrJyxcblxuICAvKipcbiAgICogVGhlIGNoYW5nZSBldmVudCBmaXJlZCBieSBicm93c2VycyB3aGVuIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBvZiBpbnB1dCxcbiAgICogc2VsZWN0LCBhbmQgdGV4dGFyZWEgZWxlbWVudHMgYXJlIGNoYW5nZWQuXG4gICAqL1xuICBDSEFOR0U6ICdjaGFuZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgY2xpY2sgZXZlbnQuIEluIGFkZEV2ZW50KCkgcmVmZXJzIHRvIGFsbCBjbGljayBldmVudHMsIGluIHRoZVxuICAgKiBqc2FjdGlvbiBhdHRyaWJ1dGUgaXQgcmVmZXJzIHRvIHRoZSB1bm1vZGlmaWVkIGNsaWNrIGFuZCBFbnRlci9TcGFjZVxuICAgKiBrZXlwcmVzcyBldmVudHMuICBJbiB0aGUgbGF0dGVyIGNhc2UsIGEganNhY3Rpb24gY2xpY2sgd2lsbCBiZSB0cmlnZ2VyZWQsXG4gICAqIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMuICBTZWUgY2xpY2ttb2QgYW5kIGNsaWNrb25seSwgYmVsb3cuXG4gICAqL1xuICBDTElDSzogJ2NsaWNrJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBqc2FjdGlvbiBmb3IgYSBtb2RpZmllZCBjbGljayBldmVudCAoaS5lLiBhIG1vdXNlXG4gICAqIGNsaWNrIHdpdGggdGhlIG1vZGlmaWVyIGtleSBDbWQvQ3RybCBwcmVzc2VkKS4gVGhpcyBldmVudCBpc24ndFxuICAgKiBzZXBhcmF0ZWx5IGVuYWJsZWQgaW4gYWRkRXZlbnQoKSwgYmVjYXVzZSBpbiB0aGUgRE9NLCBpdCdzIGp1c3QgYVxuICAgKiBjbGljayBldmVudC5cbiAgICovXG4gIENMSUNLTU9EOiAnY2xpY2ttb2QnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGpzYWN0aW9uIGZvciBhIGNsaWNrLW9ubHkgZXZlbnQuICBDbGljay1vbmx5IGRvZXNuJ3QgdGFrZVxuICAgKiBpbnRvIGFjY291bnQgdGhlIGNhc2Ugd2hlcmUgYW4gZWxlbWVudCB3aXRoIGZvY3VzIHJlY2VpdmVzIGFuIEVudGVyL1NwYWNlXG4gICAqIGtleXByZXNzLiAgVGhpcyBldmVudCBpc24ndCBzZXBhcmF0ZWx5IGVuYWJsZWQgaW4gYWRkRXZlbnQoKS5cbiAgICovXG4gIENMSUNLT05MWTogJ2NsaWNrb25seScsXG5cbiAgLyoqXG4gICAqIFRoZSBkYmxjbGljayBldmVudC5cbiAgICovXG4gIERCTENMSUNLOiAnZGJsY2xpY2snLFxuXG4gIC8qKlxuICAgKiBGb2N1cyBkb2Vzbid0IGJ1YmJsZSwgYnV0IHlvdSBjYW4gdXNlIGl0IGluIGFkZEV2ZW50KCkgYW5kXG4gICAqIGpzYWN0aW9uIGFueXdheS4gRXZlbnRDb250cmFjdCBkb2VzIHRoZSByaWdodCB0aGluZyB1bmRlciB0aGVcbiAgICogaG9vZC5cbiAgICovXG4gIEZPQ1VTOiAnZm9jdXMnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgZXhpc3RzIGluIElFLiBGb3IgYWRkRXZlbnQoKSBhbmQganNhY3Rpb24sIHVzZVxuICAgKiBmb2N1cyBpbnN0ZWFkOyBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGV2ZW4gdGhvdWdoXG4gICAqIGZvY3VzIGRvZXNuJ3QgYnViYmxlLlxuICAgKi9cbiAgRk9DVVNJTjogJ2ZvY3VzaW4nLFxuXG4gIC8qKlxuICAgKiBBbmFsb2cgdG8gZm9jdXMuXG4gICAqL1xuICBCTFVSOiAnYmx1cicsXG5cbiAgLyoqXG4gICAqIEFuYWxvZyB0byBmb2N1c2luLlxuICAgKi9cbiAgRk9DVVNPVVQ6ICdmb2N1c291dCcsXG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBkb2Vzbid0IGJ1YmJsZSwgc28gaXQgY2Fubm90IGJlIHVzZWQgd2l0aCBldmVudFxuICAgKiBjb250cmFjdC4gSG93ZXZlciwgdGhlIGJyb3dzZXIgaGVscGZ1bGx5IGZpcmVzIGEgY2xpY2sgZXZlbnQgb25cbiAgICogdGhlIHN1Ym1pdCBidXR0b24gb2YgYSBmb3JtIChldmVuIGlmIHRoZSBmb3JtIGlzIG5vdCBzdWJtaXR0ZWQgYnlcbiAgICogYSBjbGljayBvbiB0aGUgc3VibWl0IGJ1dHRvbikuIFNvIHlvdSBzaG91bGQgaGFuZGxlIGNsaWNrIG9uIHRoZVxuICAgKiBzdWJtaXQgYnV0dG9uIGluc3RlYWQuXG4gICAqL1xuICBTVUJNSVQ6ICdzdWJtaXQnLFxuXG4gIC8qKlxuICAgKiBUaGUga2V5ZG93biBldmVudC4gSW4gYWRkRXZlbnQoKSBhbmQgbm9uLWNsaWNrIGpzYWN0aW9uIGl0IHJlcHJlc2VudHMgdGhlXG4gICAqIHJlZ3VsYXIgRE9NIGtleWRvd24gZXZlbnQuIEl0IHJlcHJlc2VudHMgY2xpY2sgYWN0aW9ucyBpbiBub24tR2Vja29cbiAgICogYnJvd3NlcnMuXG4gICAqL1xuICBLRVlET1dOOiAna2V5ZG93bicsXG5cbiAgLyoqXG4gICAqIFRoZSBrZXlwcmVzcyBldmVudC4gSW4gYWRkRXZlbnQoKSBhbmQgbm9uLWNsaWNrIGpzYWN0aW9uIGl0IHJlcHJlc2VudHMgdGhlXG4gICAqIHJlZ3VsYXIgRE9NIGtleXByZXNzIGV2ZW50LiBJdCByZXByZXNlbnRzIGNsaWNrIGFjdGlvbnMgaW4gR2Vja28gYnJvd3NlcnMuXG4gICAqL1xuICBLRVlQUkVTUzogJ2tleXByZXNzJyxcblxuICAvKipcbiAgICogVGhlIGtleXVwIGV2ZW50LiBJbiBhZGRFdmVudCgpIGFuZCBub24tY2xpY2sganNhY3Rpb24gaXQgcmVwcmVzZW50cyB0aGVcbiAgICogcmVndWxhciBET00ga2V5dXAgZXZlbnQuIEl0IHJlcHJlc2VudHMgY2xpY2sgYWN0aW9ucyBpbiBub24tR2Vja29cbiAgICogYnJvd3NlcnMuXG4gICAqL1xuICBLRVlVUDogJ2tleXVwJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNldXAgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZXVwIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNldXAgZXZlbnQuXG4gICAqL1xuICBNT1VTRVVQOiAnbW91c2V1cCcsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZWRvd24gZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZWVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3ZlciBldmVudC5cbiAgICovXG4gIE1PVVNFRE9XTjogJ21vdXNlZG93bicsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZW92ZXIgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZWVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3ZlciBldmVudC5cbiAgICovXG4gIE1PVVNFT1ZFUjogJ21vdXNlb3ZlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZW91dCBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIG1vdXNlb3ZlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBtb3VzZW91dCBldmVudC5cbiAgICovXG4gIE1PVVNFT1VUOiAnbW91c2VvdXQnLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2VlbnRlciBldmVudC4gRG9lcyBub3QgYnViYmxlIGFuZCBmaXJlcyBpbmRpdmlkdWFsbHkgb24gZWFjaFxuICAgKiBlbGVtZW50IGJlaW5nIGVudGVyZWQgd2l0aGluIGEgRE9NIHRyZWUuXG4gICAqL1xuICBNT1VTRUVOVEVSOiAnbW91c2VlbnRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZWxlYXZlIGV2ZW50LiBEb2VzIG5vdCBidWJibGUgYW5kIGZpcmVzIGluZGl2aWR1YWxseSBvbiBlYWNoXG4gICAqIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCB3aXRoaW4gYSBET00gdHJlZS5cbiAgICovXG4gIE1PVVNFTEVBVkU6ICdtb3VzZWxlYXZlJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlbW92ZSBldmVudC5cbiAgICovXG4gIE1PVVNFTU9WRTogJ21vdXNlbW92ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVydXAgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVydXAgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogcG9pbnRlcnVwIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUlVQOiAncG9pbnRlcnVwJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJkb3duIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgcG9pbnRlcmVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3ZlciBldmVudC5cbiAgICovXG4gIFBPSU5URVJET1dOOiAncG9pbnRlcmRvd24nLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcm92ZXIgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVyZW50ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogcG9pbnRlcm92ZXIgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVST1ZFUjogJ3BvaW50ZXJvdmVyJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJvdXQgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVyb3ZlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBwb2ludGVyb3V0IGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUk9VVDogJ3BvaW50ZXJvdXQnLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcmVudGVyIGV2ZW50LiBEb2VzIG5vdCBidWJibGUgYW5kIGZpcmVzIGluZGl2aWR1YWxseSBvbiBlYWNoXG4gICAqIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCB3aXRoaW4gYSBET00gdHJlZS5cbiAgICovXG4gIFBPSU5URVJFTlRFUjogJ3BvaW50ZXJlbnRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVybGVhdmUgZXZlbnQuIERvZXMgbm90IGJ1YmJsZSBhbmQgZmlyZXMgaW5kaXZpZHVhbGx5IG9uIGVhY2hcbiAgICogZWxlbWVudCBiZWluZyBlbnRlcmVkIHdpdGhpbiBhIERPTSB0cmVlLlxuICAgKi9cbiAgUE9JTlRFUkxFQVZFOiAncG9pbnRlcmxlYXZlJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJtb3ZlIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUk1PVkU6ICdwb2ludGVybW92ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyY2FuY2VsIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUkNBTkNFTDogJ3BvaW50ZXJjYW5jZWwnLFxuXG4gIC8qKlxuICAgKiBUaGUgZ290cG9pbnRlcmNhcHR1cmUgZXZlbnQgaXMgZmlyZWQgd2hlblxuICAgKiBFbGVtZW50LnNldFBvaW50ZXJDYXB0dXJlKHBvaW50ZXJJZCkgaXMgY2FsbGVkIG9uIGEgbW91c2UgaW5wdXQsIG9yXG4gICAqIGltcGxpY2l0bHkgd2hlbiBhIHRvdWNoIGlucHV0IGJlZ2lucy5cbiAgICovXG4gIEdPVFBPSU5URVJDQVBUVVJFOiAnZ290cG9pbnRlcmNhcHR1cmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgbG9zdHBvaW50ZXJjYXB0dXJlIGV2ZW50IGlzIGZpcmVkIHdoZW5cbiAgICogRWxlbWVudC5yZWxlYXNlUG9pbnRlckNhcHR1cmUocG9pbnRlcklkKSBpcyBjYWxsZWQsIG9yIGltcGxpY2l0bHkgYWZ0ZXIgYVxuICAgKiB0b3VjaCBpbnB1dCBlbmRzLlxuICAgKi9cbiAgTE9TVFBPSU5URVJDQVBUVVJFOiAnbG9zdHBvaW50ZXJjYXB0dXJlJyxcblxuICAvKipcbiAgICogVGhlIGVycm9yIGV2ZW50LiBUaGUgZXJyb3IgZXZlbnQgZG9lc24ndCBidWJibGUsIGJ1dCB5b3UgY2FuIHVzZSBpdCBpblxuICAgKiBhZGRFdmVudCgpIGFuZCBqc2FjdGlvbiBhbnl3YXkuIEV2ZW50Q29udHJhY3QgZG9lcyB0aGUgcmlnaHQgdGhpbmcgdW5kZXJcbiAgICogdGhlIGhvb2QgKGV4Y2VwdCBpbiBJRTggd2hpY2ggZG9lcyBub3QgdXNlIGVycm9yIGV2ZW50cykuXG4gICAqL1xuICBFUlJPUjogJ2Vycm9yJyxcblxuICAvKipcbiAgICogVGhlIGxvYWQgZXZlbnQuIFRoZSBsb2FkIGV2ZW50IGRvZXNuJ3QgYnViYmxlLCBidXQgeW91IGNhbiB1c2UgaXQgaW5cbiAgICogYWRkRXZlbnQoKSBhbmQganNhY3Rpb24gYW55d2F5LiBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nXG4gICAqIHVuZGVyIHRoZSBob29kLlxuICAgKi9cbiAgTE9BRDogJ2xvYWQnLFxuXG4gIC8qKlxuICAgKiBUaGUgdW5sb2FkIGV2ZW50LlxuICAgKi9cbiAgVU5MT0FEOiAndW5sb2FkJyxcblxuICAvKipcbiAgICogVGhlIHRvdWNoc3RhcnQgZXZlbnQuIEJ1YmJsZXMsIHdpbGwgb25seSBldmVyIGZpcmUgaW4gYnJvd3NlcnMgd2l0aFxuICAgKiB0b3VjaCBzdXBwb3J0LlxuICAgKi9cbiAgVE9VQ0hTVEFSVDogJ3RvdWNoc3RhcnQnLFxuXG4gIC8qKlxuICAgKiBUaGUgdG91Y2hlbmQgZXZlbnQuIEJ1YmJsZXMsIHdpbGwgb25seSBldmVyIGZpcmUgaW4gYnJvd3NlcnMgd2l0aFxuICAgKiB0b3VjaCBzdXBwb3J0LlxuICAgKi9cbiAgVE9VQ0hFTkQ6ICd0b3VjaGVuZCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0b3VjaG1vdmUgZXZlbnQuIEJ1YmJsZXMsIHdpbGwgb25seSBldmVyIGZpcmUgaW4gYnJvd3NlcnMgd2l0aFxuICAgKiB0b3VjaCBzdXBwb3J0LlxuICAgKi9cbiAgVE9VQ0hNT1ZFOiAndG91Y2htb3ZlJyxcblxuICAvKipcbiAgICogVGhlIGlucHV0IGV2ZW50LlxuICAgKi9cbiAgSU5QVVQ6ICdpbnB1dCcsXG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgZXZlbnQuXG4gICAqL1xuICBTQ1JPTEw6ICdzY3JvbGwnLFxuXG4gIC8qKlxuICAgKiBUaGUgdG9nZ2xlIGV2ZW50LiBUaGUgdG9nZ2xlIGV2ZW50IGRvZXNuJ3QgYnViYmxlLCBidXQgeW91IGNhbiB1c2UgaXQgaW5cbiAgICogYWRkRXZlbnQoKSBhbmQganNhY3Rpb24gYW55d2F5LiBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nXG4gICAqIHVuZGVyIHRoZSBob29kLlxuICAgKi9cbiAgVE9HR0xFOiAndG9nZ2xlJyxcblxuICAvKipcbiAgICogQSBjdXN0b20gZXZlbnQuIFRoZSBhY3R1YWwgY3VzdG9tIGV2ZW50IHR5cGUgaXMgZGVjbGFyZWQgYXMgdGhlICd0eXBlJ1xuICAgKiBmaWVsZCBpbiB0aGUgZXZlbnQgZGV0YWlscy4gU3VwcG9ydGVkIGluIEZpcmVmb3ggNissIElFIDkrLCBhbmQgYWxsIENocm9tZVxuICAgKiB2ZXJzaW9ucy5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBuYW1lLiBVc2VycyBzaG91bGQgdXNlIGpzYWN0aW9uJ3MgZmlyZUN1c3RvbUV2ZW50IHRvXG4gICAqIGZpcmUgY3VzdG9tIGV2ZW50cyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhpcyB0eXBlIHRvIGNyZWF0ZSB0aGVtLlxuICAgKi9cbiAgQ1VTVE9NOiAnX2N1c3RvbScsXG59O1xuIl19
|
|
244
|
+
export const NON_BUBBLING_MOUSE_EVENTS = [
|
|
245
|
+
EventType.MOUSEENTER,
|
|
246
|
+
EventType.MOUSELEAVE,
|
|
247
|
+
'pointerenter',
|
|
248
|
+
'pointerleave',
|
|
249
|
+
];
|
|
250
|
+
/**
|
|
251
|
+
* Detects whether a given event type is supported by JSAction.
|
|
252
|
+
*/
|
|
253
|
+
export const isSupportedEvent = (eventType) => SUPPORTED_EVENTS.indexOf(eventType) >= 0;
|
|
254
|
+
const SUPPORTED_EVENTS = [
|
|
255
|
+
EventType.CLICK,
|
|
256
|
+
EventType.DBLCLICK,
|
|
257
|
+
EventType.FOCUS,
|
|
258
|
+
EventType.FOCUSIN,
|
|
259
|
+
EventType.BLUR,
|
|
260
|
+
EventType.ERROR,
|
|
261
|
+
EventType.FOCUSOUT,
|
|
262
|
+
EventType.KEYDOWN,
|
|
263
|
+
EventType.KEYUP,
|
|
264
|
+
EventType.KEYPRESS,
|
|
265
|
+
EventType.LOAD,
|
|
266
|
+
EventType.MOUSEOVER,
|
|
267
|
+
EventType.MOUSEOUT,
|
|
268
|
+
EventType.SUBMIT,
|
|
269
|
+
EventType.TOGGLE,
|
|
270
|
+
EventType.TOUCHSTART,
|
|
271
|
+
EventType.TOUCHEND,
|
|
272
|
+
EventType.TOUCHMOVE,
|
|
273
|
+
'touchcancel',
|
|
274
|
+
'auxclick',
|
|
275
|
+
'change',
|
|
276
|
+
'compositionstart',
|
|
277
|
+
'compositionupdate',
|
|
278
|
+
'compositionend',
|
|
279
|
+
'beforeinput',
|
|
280
|
+
'input',
|
|
281
|
+
'select',
|
|
282
|
+
'copy',
|
|
283
|
+
'cut',
|
|
284
|
+
'paste',
|
|
285
|
+
'mousedown',
|
|
286
|
+
'mouseup',
|
|
287
|
+
'wheel',
|
|
288
|
+
'contextmenu',
|
|
289
|
+
'dragover',
|
|
290
|
+
'dragenter',
|
|
291
|
+
'dragleave',
|
|
292
|
+
'drop',
|
|
293
|
+
'dragstart',
|
|
294
|
+
'dragend',
|
|
295
|
+
'pointerdown',
|
|
296
|
+
'pointermove',
|
|
297
|
+
'pointerup',
|
|
298
|
+
'pointercancel',
|
|
299
|
+
'pointerover',
|
|
300
|
+
'pointerout',
|
|
301
|
+
'gotpointercapture',
|
|
302
|
+
'lostpointercapture',
|
|
303
|
+
// Video events.
|
|
304
|
+
'ended',
|
|
305
|
+
'loadedmetadata',
|
|
306
|
+
// Page visibility events.
|
|
307
|
+
'pagehide',
|
|
308
|
+
'pageshow',
|
|
309
|
+
'visibilitychange',
|
|
310
|
+
// Content visibility events.
|
|
311
|
+
'beforematch',
|
|
312
|
+
];
|
|
313
|
+
/**
|
|
314
|
+
*
|
|
315
|
+
* Decides whether or not an event type is an event that only has a capture phase.
|
|
316
|
+
*
|
|
317
|
+
* @param eventType
|
|
318
|
+
* @returns bool
|
|
319
|
+
*/
|
|
320
|
+
export const isCaptureEvent = (eventType) => CAPTURE_EVENTS.indexOf(eventType) >= 0;
|
|
321
|
+
const CAPTURE_EVENTS = [
|
|
322
|
+
EventType.FOCUS,
|
|
323
|
+
EventType.BLUR,
|
|
324
|
+
EventType.ERROR,
|
|
325
|
+
EventType.LOAD,
|
|
326
|
+
EventType.TOGGLE,
|
|
327
|
+
];
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2Qjs7O09BR0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxNQUFNLEVBQUUsUUFBUTtJQUVoQjs7Ozs7T0FLRztJQUNILEtBQUssRUFBRSxPQUFPO0lBRWQ7Ozs7O09BS0c7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7O09BRUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLE9BQU87SUFFZDs7OztPQUlHO0lBQ0gsT0FBTyxFQUFFLFNBQVM7SUFFbEI7O09BRUc7SUFDSCxJQUFJLEVBQUUsTUFBTTtJQUVaOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQVU7SUFFcEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFFaEI7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSxTQUFTO0lBRWxCOzs7T0FHRztJQUNILFFBQVEsRUFBRSxVQUFVO0lBRXBCOzs7O09BSUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOzs7O09BSUc7SUFDSCxPQUFPLEVBQUUsU0FBUztJQUVsQjs7OztPQUlHO0lBQ0gsU0FBUyxFQUFFLFdBQVc7SUFFdEI7Ozs7T0FJRztJQUNILFNBQVMsRUFBRSxXQUFXO0lBRXRCOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsVUFBVTtJQUVwQjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFBWTtJQUV4Qjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsWUFB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Y0FBYyxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFNUYsTUFBTSxjQUFjLEdBQUc7SUFDckIsU0FBUyxDQUFDLEtBQUs7SUFDZixTQUFTLENBQUMsSUFBSTtJQUNkLFNBQVMsQ0FBQyxLQUFLO0lBQ2YsU0FBUyxDQUFDLElBQUk7SUFDZCxTQUFTLENBQUMsTUFBTTtDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qXG4gKiBOYW1lcyBvZiBldmVudHMgdGhhdCBhcmUgc3BlY2lhbCB0byBqc2FjdGlvbi4gVGhlc2UgYXJlIG5vdCBhbGxcbiAqIGV2ZW50IHR5cGVzIHRoYXQgYXJlIGxlZ2FsIHRvIHVzZSBpbiBlaXRoZXIgSFRNTCBvciB0aGUgYWRkRXZlbnQoKVxuICogQVBJLCBidXQgdGhlc2UgYXJlIHRoZSBvbmVzIHRoYXQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5LiBBbGwgb3RoZXJcbiAqIERPTSBldmVudHMgY2FuIGJlIHVzZWQgaW4gZWl0aGVyIGFkZEV2ZW50KCkgb3IgaW4gdGhlIHZhbHVlIG9mIHRoZVxuICoganNhY3Rpb24gYXR0cmlidXRlLiBCZXdhcmUgb2YgYnJvd3NlciBzcGVjaWZpYyBldmVudHMgb3IgZXZlbnRzXG4gKiB0aGF0IGRvbid0IGJ1YmJsZSB0aG91Z2g6IElmIHRoZXkgYXJlIG5vdCBtZW50aW9uZWQgaGVyZSwgdGhlblxuICogZXZlbnQgY29udHJhY3QgZG9lc24ndCB3b3JrIGFyb3VuZCB0aGVpciBwZWN1bGlhcml0aWVzLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRUeXBlID0ge1xuICAvKipcbiAgICogTW91c2UgbWlkZGxlIGNsaWNrLCBpbnRyb2R1Y2VkIGluIENocm9tZSA1NSBhbmQgbm90IHlldCBzdXBwb3J0ZWQgb25cbiAgICogb3RoZXIgYnJvd3NlcnMuXG4gICAqL1xuICBBVVhDTElDSzogJ2F1eGNsaWNrJyxcblxuICAvKipcbiAgICogVGhlIGNoYW5nZSBldmVudCBmaXJlZCBieSBicm93c2VycyB3aGVuIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBvZiBpbnB1dCxcbiAgICogc2VsZWN0LCBhbmQgdGV4dGFyZWEgZWxlbWVudHMgYXJlIGNoYW5nZWQuXG4gICAqL1xuICBDSEFOR0U6ICdjaGFuZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgY2xpY2sgZXZlbnQuIEluIGFkZEV2ZW50KCkgcmVmZXJzIHRvIGFsbCBjbGljayBldmVudHMsIGluIHRoZVxuICAgKiBqc2FjdGlvbiBhdHRyaWJ1dGUgaXQgcmVmZXJzIHRvIHRoZSB1bm1vZGlmaWVkIGNsaWNrIGFuZCBFbnRlci9TcGFjZVxuICAgKiBrZXlwcmVzcyBldmVudHMuICBJbiB0aGUgbGF0dGVyIGNhc2UsIGEganNhY3Rpb24gY2xpY2sgd2lsbCBiZSB0cmlnZ2VyZWQsXG4gICAqIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMuICBTZWUgY2xpY2ttb2QgYW5kIGNsaWNrb25seSwgYmVsb3cuXG4gICAqL1xuICBDTElDSzogJ2NsaWNrJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBqc2FjdGlvbiBmb3IgYSBtb2RpZmllZCBjbGljayBldmVudCAoaS5lLiBhIG1vdXNlXG4gICAqIGNsaWNrIHdpdGggdGhlIG1vZGlmaWVyIGtleSBDbWQvQ3RybCBwcmVzc2VkKS4gVGhpcyBldmVudCBpc24ndFxuICAgKiBzZXBhcmF0ZWx5IGVuYWJsZWQgaW4gYWRkRXZlbnQoKSwgYmVjYXVzZSBpbiB0aGUgRE9NLCBpdCdzIGp1c3QgYVxuICAgKiBjbGljayBldmVudC5cbiAgICovXG4gIENMSUNLTU9EOiAnY2xpY2ttb2QnLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGpzYWN0aW9uIGZvciBhIGNsaWNrLW9ubHkgZXZlbnQuICBDbGljay1vbmx5IGRvZXNuJ3QgdGFrZVxuICAgKiBpbnRvIGFjY291bnQgdGhlIGNhc2Ugd2hlcmUgYW4gZWxlbWVudCB3aXRoIGZvY3VzIHJlY2VpdmVzIGFuIEVudGVyL1NwYWNlXG4gICAqIGtleXByZXNzLiAgVGhpcyBldmVudCBpc24ndCBzZXBhcmF0ZWx5IGVuYWJsZWQgaW4gYWRkRXZlbnQoKS5cbiAgICovXG4gIENMSUNLT05MWTogJ2NsaWNrb25seScsXG5cbiAgLyoqXG4gICAqIFRoZSBkYmxjbGljayBldmVudC5cbiAgICovXG4gIERCTENMSUNLOiAnZGJsY2xpY2snLFxuXG4gIC8qKlxuICAgKiBGb2N1cyBkb2Vzbid0IGJ1YmJsZSwgYnV0IHlvdSBjYW4gdXNlIGl0IGluIGFkZEV2ZW50KCkgYW5kXG4gICAqIGpzYWN0aW9uIGFueXdheS4gRXZlbnRDb250cmFjdCBkb2VzIHRoZSByaWdodCB0aGluZyB1bmRlciB0aGVcbiAgICogaG9vZC5cbiAgICovXG4gIEZPQ1VTOiAnZm9jdXMnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgZXhpc3RzIGluIElFLiBGb3IgYWRkRXZlbnQoKSBhbmQganNhY3Rpb24sIHVzZVxuICAgKiBmb2N1cyBpbnN0ZWFkOyBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGV2ZW4gdGhvdWdoXG4gICAqIGZvY3VzIGRvZXNuJ3QgYnViYmxlLlxuICAgKi9cbiAgRk9DVVNJTjogJ2ZvY3VzaW4nLFxuXG4gIC8qKlxuICAgKiBBbmFsb2cgdG8gZm9jdXMuXG4gICAqL1xuICBCTFVSOiAnYmx1cicsXG5cbiAgLyoqXG4gICAqIEFuYWxvZyB0byBmb2N1c2luLlxuICAgKi9cbiAgRk9DVVNPVVQ6ICdmb2N1c291dCcsXG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBkb2Vzbid0IGJ1YmJsZSwgc28gaXQgY2Fubm90IGJlIHVzZWQgd2l0aCBldmVudFxuICAgKiBjb250cmFjdC4gSG93ZXZlciwgdGhlIGJyb3dzZXIgaGVscGZ1bGx5IGZpcmVzIGEgY2xpY2sgZXZlbnQgb25cbiAgICogdGhlIHN1Ym1pdCBidXR0b24gb2YgYSBmb3JtIChldmVuIGlmIHRoZSBmb3JtIGlzIG5vdCBzdWJtaXR0ZWQgYnlcbiAgICogYSBjbGljayBvbiB0aGUgc3VibWl0IGJ1dHRvbikuIFNvIHlvdSBzaG91bGQgaGFuZGxlIGNsaWNrIG9uIHRoZVxuICAgKiBzdWJtaXQgYnV0dG9uIGluc3RlYWQuXG4gICAqL1xuICBTVUJNSVQ6ICdzdWJtaXQnLFxuXG4gIC8qKlxuICAgKiBUaGUga2V5ZG93biBldmVudC4gSW4gYWRkRXZlbnQoKSBhbmQgbm9uLWNsaWNrIGpzYWN0aW9uIGl0IHJlcHJlc2VudHMgdGhlXG4gICAqIHJlZ3VsYXIgRE9NIGtleWRvd24gZXZlbnQuIEl0IHJlcHJlc2VudHMgY2xpY2sgYWN0aW9ucyBpbiBub24tR2Vja29cbiAgICogYnJvd3NlcnMuXG4gICAqL1xuICBLRVlET1dOOiAna2V5ZG93bicsXG5cbiAgLyoqXG4gICAqIFRoZSBrZXlwcmVzcyBldmVudC4gSW4gYWRkRXZlbnQoKSBhbmQgbm9uLWNsaWNrIGpzYWN0aW9uIGl0IHJlcHJlc2VudHMgdGhlXG4gICAqIHJlZ3VsYXIgRE9NIGtleXByZXNzIGV2ZW50LiBJdCByZXByZXNlbnRzIGNsaWNrIGFjdGlvbnMgaW4gR2Vja28gYnJvd3NlcnMuXG4gICAqL1xuICBLRVlQUkVTUzogJ2tleXByZXNzJyxcblxuICAvKipcbiAgICogVGhlIGtleXVwIGV2ZW50LiBJbiBhZGRFdmVudCgpIGFuZCBub24tY2xpY2sganNhY3Rpb24gaXQgcmVwcmVzZW50cyB0aGVcbiAgICogcmVndWxhciBET00ga2V5dXAgZXZlbnQuIEl0IHJlcHJlc2VudHMgY2xpY2sgYWN0aW9ucyBpbiBub24tR2Vja29cbiAgICogYnJvd3NlcnMuXG4gICAqL1xuICBLRVlVUDogJ2tleXVwJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNldXAgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZXVwIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNldXAgZXZlbnQuXG4gICAqL1xuICBNT1VTRVVQOiAnbW91c2V1cCcsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZWRvd24gZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZWVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3ZlciBldmVudC5cbiAgICovXG4gIE1PVVNFRE9XTjogJ21vdXNlZG93bicsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZW92ZXIgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBtb3VzZWVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3ZlciBldmVudC5cbiAgICovXG4gIE1PVVNFT1ZFUjogJ21vdXNlb3ZlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZW91dCBldmVudC4gQ2FuIGVpdGhlciBiZSB1c2VkIGRpcmVjdGx5IG9yIHVzZWQgaW1wbGljaXRseSB0b1xuICAgKiBjYXB0dXJlIG1vdXNlb3ZlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBtb3VzZW91dCBldmVudC5cbiAgICovXG4gIE1PVVNFT1VUOiAnbW91c2VvdXQnLFxuXG4gIC8qKlxuICAgKiBUaGUgbW91c2VlbnRlciBldmVudC4gRG9lcyBub3QgYnViYmxlIGFuZCBmaXJlcyBpbmRpdmlkdWFsbHkgb24gZWFjaFxuICAgKiBlbGVtZW50IGJlaW5nIGVudGVyZWQgd2l0aGluIGEgRE9NIHRyZWUuXG4gICAqL1xuICBNT1VTRUVOVEVSOiAnbW91c2VlbnRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBtb3VzZWxlYXZlIGV2ZW50LiBEb2VzIG5vdCBidWJibGUgYW5kIGZpcmVzIGluZGl2aWR1YWxseSBvbiBlYWNoXG4gICAqIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCB3aXRoaW4gYSBET00gdHJlZS5cbiAgICovXG4gIE1PVVNFTEVBVkU6ICdtb3VzZWxlYXZlJyxcblxuICAvKipcbiAgICogVGhlIG1vdXNlbW92ZSBldmVudC5cbiAgICovXG4gIE1PVVNFTU9WRTogJ21vdXNlbW92ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVydXAgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVydXAgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogcG9pbnRlcnVwIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUlVQOiAncG9pbnRlcnVwJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJkb3duIGV2ZW50LiBDYW4gZWl0aGVyIGJlIHVzZWQgZGlyZWN0bHkgb3IgdXNlZCBpbXBsaWNpdGx5IHRvXG4gICAqIGNhcHR1cmUgcG9pbnRlcmVudGVyIGV2ZW50cy4gSW4gYWRkRXZlbnQoKSwgaXQgcmVwcmVzZW50cyBhIHJlZ3VsYXIgRE9NXG4gICAqIG1vdXNlb3ZlciBldmVudC5cbiAgICovXG4gIFBPSU5URVJET1dOOiAncG9pbnRlcmRvd24nLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcm92ZXIgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVyZW50ZXIgZXZlbnRzLiBJbiBhZGRFdmVudCgpLCBpdCByZXByZXNlbnRzIGEgcmVndWxhciBET01cbiAgICogcG9pbnRlcm92ZXIgZXZlbnQuXG4gICAqL1xuICBQT0lOVEVST1ZFUjogJ3BvaW50ZXJvdmVyJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJvdXQgZXZlbnQuIENhbiBlaXRoZXIgYmUgdXNlZCBkaXJlY3RseSBvciB1c2VkIGltcGxpY2l0bHkgdG9cbiAgICogY2FwdHVyZSBwb2ludGVyb3ZlciBldmVudHMuIEluIGFkZEV2ZW50KCksIGl0IHJlcHJlc2VudHMgYSByZWd1bGFyIERPTVxuICAgKiBwb2ludGVyb3V0IGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUk9VVDogJ3BvaW50ZXJvdXQnLFxuXG4gIC8qKlxuICAgKiBUaGUgcG9pbnRlcmVudGVyIGV2ZW50LiBEb2VzIG5vdCBidWJibGUgYW5kIGZpcmVzIGluZGl2aWR1YWxseSBvbiBlYWNoXG4gICAqIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCB3aXRoaW4gYSBET00gdHJlZS5cbiAgICovXG4gIFBPSU5URVJFTlRFUjogJ3BvaW50ZXJlbnRlcicsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVybGVhdmUgZXZlbnQuIERvZXMgbm90IGJ1YmJsZSBhbmQgZmlyZXMgaW5kaXZpZHVhbGx5IG9uIGVhY2hcbiAgICogZWxlbWVudCBiZWluZyBlbnRlcmVkIHdpdGhpbiBhIERPTSB0cmVlLlxuICAgKi9cbiAgUE9JTlRFUkxFQVZFOiAncG9pbnRlcmxlYXZlJyxcblxuICAvKipcbiAgICogVGhlIHBvaW50ZXJtb3ZlIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUk1PVkU6ICdwb2ludGVybW92ZScsXG5cbiAgLyoqXG4gICAqIFRoZSBwb2ludGVyY2FuY2VsIGV2ZW50LlxuICAgKi9cbiAgUE9JTlRFUkNBTkNFTDogJ3BvaW50ZXJjYW5jZWwnLFxuXG4gIC8qKlxuICAgKiBUaGUgZ290cG9pbnRlcmNhcHR1cmUgZXZlbnQgaXMgZmlyZWQgd2hlblxuICAgKiBFbGVtZW50LnNldFBvaW50ZXJDYXB0dXJlKHBvaW50ZXJJZCkgaXMgY2FsbGVkIG9uIGEgbW91c2UgaW5wdXQsIG9yXG4gICAqIGltcGxpY2l0bHkgd2hlbiBhIHRvdWNoIGlucHV0IGJlZ2lucy5cbiAgICovXG4gIEdPVFBPSU5URVJDQVBUVVJFOiAnZ290cG9pbnRlcmNhcHR1cmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgbG9zdHBvaW50ZXJjYXB0dXJlIGV2ZW50IGlzIGZpcmVkIHdoZW5cbiAgICogRWxlbWVudC5yZWxlYXNlUG9pbnRlckNhcHR1cmUocG9pbnRlcklkKSBpcyBjYWxsZWQsIG9yIGltcGxpY2l0bHkgYWZ0ZXIgYVxuICAgKiB0b3VjaCBpbnB1dCBlbmRzLlxuICAgKi9cbiAgTE9TVFBPSU5URVJDQVBUVVJFOiAnbG9zdHBvaW50ZXJjYXB0dXJlJyxcblxuICAvKipcbiAgICogVGhlIGVycm9yIGV2ZW50LiBUaGUgZXJyb3IgZXZlbnQgZG9lc24ndCBidWJibGUsIGJ1dCB5b3UgY2FuIHVzZSBpdCBpblxuICAgKiBhZGRFdmVudCgpIGFuZCBqc2FjdGlvbiBhbnl3YXkuIEV2ZW50Q29udHJhY3QgZG9lcyB0aGUgcmlnaHQgdGhpbmcgdW5kZXJcbiAgICogdGhlIGhvb2QgKGV4Y2VwdCBpbiBJRTggd2hpY2ggZG9lcyBub3QgdXNlIGVycm9yIGV2ZW50cykuXG4gICAqL1xuICBFUlJPUjogJ2Vycm9yJyxcblxuICAvKipcbiAgICogVGhlIGxvYWQgZXZlbnQuIFRoZSBsb2FkIGV2ZW50IGRvZXNuJ3QgYnViYmxlLCBidXQgeW91IGNhbiB1c2UgaXQgaW5cbiAgICogYWRkRXZlbnQoKSBhbmQganNhY3Rpb24gYW55d2F5LiBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nXG4gICAqIHVuZGVyIHRoZSBob29kLlxuICAgKi9cbiAgTE9BRDogJ2xvYWQnLFxuXG4gIC8qKlxuICAgKiBUaGUgdW5sb2FkIGV2ZW50LlxuICAgKi9cbiAgVU5MT0FEOiAndW5sb2FkJyxcblxuICAvKipcbiAgICogVGhlIHRvdWNoc3RhcnQgZXZlbnQuIEJ1YmJsZXMsIHdpbGwgb25seSBldmVyIGZpcmUgaW4gYnJvd3NlcnMgd2l0aFxuICAgKiB0b3VjaCBzdXBwb3J0LlxuICAgKi9cbiAgVE9VQ0hTVEFSVDogJ3RvdWNoc3RhcnQnLFxuXG4gIC8qKlxuICAgKiBUaGUgdG91Y2hlbmQgZXZlbnQuIEJ1YmJsZXMsIHdpbGwgb25seSBldmVyIGZpcmUgaW4gYnJvd3NlcnMgd2l0aFxuICAgKiB0b3VjaCBzdXBwb3J0LlxuICAgKi9cbiAgVE9VQ0hFTkQ6ICd0b3VjaGVuZCcsXG5cbiAgLyoqXG4gICAqIFRoZSB0b3VjaG1vdmUgZXZlbnQuIEJ1YmJsZXMsIHdpbGwgb25seSBldmVyIGZpcmUgaW4gYnJvd3NlcnMgd2l0aFxuICAgKiB0b3VjaCBzdXBwb3J0LlxuICAgKi9cbiAgVE9VQ0hNT1ZFOiAndG91Y2htb3ZlJyxcblxuICAvKipcbiAgICogVGhlIGlucHV0IGV2ZW50LlxuICAgKi9cbiAgSU5QVVQ6ICdpbnB1dCcsXG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgZXZlbnQuXG4gICAqL1xuICBTQ1JPTEw6ICdzY3JvbGwnLFxuXG4gIC8qKlxuICAgKiBUaGUgdG9nZ2xlIGV2ZW50LiBUaGUgdG9nZ2xlIGV2ZW50IGRvZXNuJ3QgYnViYmxlLCBidXQgeW91IGNhbiB1c2UgaXQgaW5cbiAgICogYWRkRXZlbnQoKSBhbmQganNhY3Rpb24gYW55d2F5LiBFdmVudENvbnRyYWN0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nXG4gICAqIHVuZGVyIHRoZSBob29kLlxuICAgKi9cbiAgVE9HR0xFOiAndG9nZ2xlJyxcblxuICAvKipcbiAgICogQSBjdXN0b20gZXZlbnQuIFRoZSBhY3R1YWwgY3VzdG9tIGV2ZW50IHR5cGUgaXMgZGVjbGFyZWQgYXMgdGhlICd0eXBlJ1xuICAgKiBmaWVsZCBpbiB0aGUgZXZlbnQgZGV0YWlscy4gU3VwcG9ydGVkIGluIEZpcmVmb3ggNissIElFIDkrLCBhbmQgYWxsIENocm9tZVxuICAgKiB2ZXJzaW9ucy5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBuYW1lLiBVc2VycyBzaG91bGQgdXNlIGpzYWN0aW9uJ3MgZmlyZUN1c3RvbUV2ZW50IHRvXG4gICAqIGZpcmUgY3VzdG9tIGV2ZW50cyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhpcyB0eXBlIHRvIGNyZWF0ZSB0aGVtLlxuICAgKi9cbiAgQ1VTVE9NOiAnX2N1c3RvbScsXG59O1xuXG5leHBvcnQgY29uc3QgTk9OX0JVQkJMSU5HX01PVVNFX0VWRU5UUyA9IFtcbiAgRXZlbnRUeXBlLk1PVVNFRU5URVIsXG4gIEV2ZW50VHlwZS5NT1VTRUxFQVZFLFxuICAncG9pbnRlcmVudGVyJyxcbiAgJ3BvaW50ZXJsZWF2ZScsXG5dO1xuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGdpdmVuIGV2ZW50IHR5cGUgaXMgc3VwcG9ydGVkIGJ5IEpTQWN0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNTdXBwb3J0ZWRFdmVudCA9IChldmVudFR5cGU6IHN0cmluZykgPT4gU1VQUE9SVEVEX0VWRU5UUy5pbmRleE9mKGV2ZW50VHlwZSkgPj0gMDtcblxuY29uc3QgU1VQUE9SVEVEX0VWRU5UUyA9IFtcbiAgRXZlbnRUeXBlLkNMSUNLLFxuICBFdmVudFR5cGUuREJMQ0xJQ0ssXG4gIEV2ZW50VHlwZS5GT0NVUyxcbiAgRXZlbnRUeXBlLkZPQ1VTSU4sXG4gIEV2ZW50VHlwZS5CTFVSLFxuICBFdmVudFR5cGUuRVJST1IsXG4gIEV2ZW50VHlwZS5GT0NVU09VVCxcbiAgRXZlbnRUeXBlLktFWURPV04sXG4gIEV2ZW50VHlwZS5LRVlVUCxcbiAgRXZlbnRUeXBlLktFWVBSRVNTLFxuICBFdmVudFR5cGUuTE9BRCxcbiAgRXZlbnRUeXBlLk1PVVNFT1ZFUixcbiAgRXZlbnRUeXBlLk1PVVNFT1VULFxuICBFdmVudFR5cGUuU1VCTUlULFxuICBFdmVudFR5cGUuVE9HR0xFLFxuICBFdmVudFR5cGUuVE9VQ0hTVEFSVCxcbiAgRXZlbnRUeXBlLlRPVUNIRU5ELFxuICBFdmVudFR5cGUuVE9VQ0hNT1ZFLFxuICAndG91Y2hjYW5jZWwnLFxuXG4gICdhdXhjbGljaycsXG4gICdjaGFuZ2UnLFxuICAnY29tcG9zaXRpb25zdGFydCcsXG4gICdjb21wb3NpdGlvbnVwZGF0ZScsXG4gICdjb21wb3NpdGlvbmVuZCcsXG4gICdiZWZvcmVpbnB1dCcsXG4gICdpbnB1dCcsXG4gICdzZWxlY3QnLFxuXG4gICdjb3B5JyxcbiAgJ2N1dCcsXG4gICdwYXN0ZScsXG4gICdtb3VzZWRvd24nLFxuICAnbW91c2V1cCcsXG4gICd3aGVlbCcsXG4gICdjb250ZXh0bWVudScsXG5cbiAgJ2RyYWdvdmVyJyxcbiAgJ2RyYWdlbnRlcicsXG4gICdkcmFnbGVhdmUnLFxuICAnZHJvcCcsXG4gICdkcmFnc3RhcnQnLFxuICAnZHJhZ2VuZCcsXG5cbiAgJ3BvaW50ZXJkb3duJyxcbiAgJ3BvaW50ZXJtb3ZlJyxcbiAgJ3BvaW50ZXJ1cCcsXG4gICdwb2ludGVyY2FuY2VsJyxcbiAgJ3BvaW50ZXJvdmVyJyxcbiAgJ3BvaW50ZXJvdXQnLFxuICAnZ290cG9pbnRlcmNhcHR1cmUnLFxuICAnbG9zdHBvaW50ZXJjYXB0dXJlJyxcblxuICAvLyBWaWRlbyBldmVudHMuXG4gICdlbmRlZCcsXG4gICdsb2FkZWRtZXRhZGF0YScsXG5cbiAgLy8gUGFnZSB2aXNpYmlsaXR5IGV2ZW50cy5cbiAgJ3BhZ2VoaWRlJyxcbiAgJ3BhZ2VzaG93JyxcbiAgJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gIC8vIENvbnRlbnQgdmlzaWJpbGl0eSBldmVudHMuXG4gICdiZWZvcmVtYXRjaCcsXG5dO1xuXG4vKipcbiAqXG4gKiBEZWNpZGVzIHdoZXRoZXIgb3Igbm90IGFuIGV2ZW50IHR5cGUgaXMgYW4gZXZlbnQgdGhhdCBvbmx5IGhhcyBhIGNhcHR1cmUgcGhhc2UuXG4gKlxuICogQHBhcmFtIGV2ZW50VHlwZVxuICogQHJldHVybnMgYm9vbFxuICovXG5leHBvcnQgY29uc3QgaXNDYXB0dXJlRXZlbnQgPSAoZXZlbnRUeXBlOiBzdHJpbmcpID0+IENBUFRVUkVfRVZFTlRTLmluZGV4T2YoZXZlbnRUeXBlKSA+PSAwO1xuXG5jb25zdCBDQVBUVVJFX0VWRU5UUyA9IFtcbiAgRXZlbnRUeXBlLkZPQ1VTLFxuICBFdmVudFR5cGUuQkxVUixcbiAgRXZlbnRUeXBlLkVSUk9SLFxuICBFdmVudFR5cGUuTE9BRCxcbiAgRXZlbnRUeXBlLlRPR0dMRSxcbl07XG4iXX0=
|
|
@@ -33,7 +33,7 @@ import { ActionResolver } from './action_resolver';
|
|
|
33
33
|
import * as eventLib from './event';
|
|
34
34
|
import { A11Y_CLICK_SUPPORT, MOUSE_SPECIAL_SUPPORT } from './event_contract_defines';
|
|
35
35
|
import * as eventInfoLib from './event_info';
|
|
36
|
-
import { EventType } from './event_type';
|
|
36
|
+
import { EventType, NON_BUBBLING_MOUSE_EVENTS } from './event_type';
|
|
37
37
|
/**
|
|
38
38
|
* EventContract intercepts events in the bubbling phase at the
|
|
39
39
|
* boundary of a container element, and maps them to generic actions
|
|
@@ -108,7 +108,8 @@ export class EventContract {
|
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
110
|
if (this.useActionResolver) {
|
|
111
|
-
this.actionResolver.
|
|
111
|
+
this.actionResolver.resolveEventType(eventInfo);
|
|
112
|
+
this.actionResolver.resolveAction(eventInfo);
|
|
112
113
|
}
|
|
113
114
|
this.dispatcher(eventInfo);
|
|
114
115
|
}
|
|
@@ -129,11 +130,7 @@ export class EventContract {
|
|
|
129
130
|
if (eventType in this.eventHandlers || !this.containerManager) {
|
|
130
131
|
return;
|
|
131
132
|
}
|
|
132
|
-
if (!EventContract.MOUSE_SPECIAL_SUPPORT &&
|
|
133
|
-
(eventType === EventType.MOUSEENTER ||
|
|
134
|
-
eventType === EventType.MOUSELEAVE ||
|
|
135
|
-
eventType === EventType.POINTERENTER ||
|
|
136
|
-
eventType === EventType.POINTERLEAVE)) {
|
|
133
|
+
if (!EventContract.MOUSE_SPECIAL_SUPPORT && NON_BUBBLING_MOUSE_EVENTS.indexOf(eventType) >= 0) {
|
|
137
134
|
return;
|
|
138
135
|
}
|
|
139
136
|
const eventHandler = (eventType, event, container) => {
|
|
@@ -287,4 +284,4 @@ function removeEventListeners(container, eventTypes, earlyEventHandler, capture)
|
|
|
287
284
|
export function addDeferredA11yClickSupport(eventContract) {
|
|
288
285
|
eventContract.ecaacs?.(a11yClickLib.updateEventInfoForA11yClick, a11yClickLib.preventDefaultForA11yClick, a11yClickLib.populateClickOnlyAction);
|
|
289
286
|
}
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRjb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRjb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sS0FBSyxZQUFZLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRixPQUFPLEtBQUssWUFBWSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBK0J2Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7YUFDakIsdUJBQWtCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBQ3hDLDBCQUFxQixHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQXlDckQsWUFDRSxnQkFBK0MsRUFDOUIsb0JBQW9CLElBQUk7UUFBeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFPO1FBckMzQzs7Ozs7O1dBTUc7UUFDSyxrQkFBYSxHQUFrQyxFQUFFLENBQUM7UUFFbEQsc0NBQWlDLEdBQThCLEVBQUUsQ0FBQztRQUUxRTs7Ozs7O1dBTUc7UUFDSyxlQUFVLEdBQXNCLElBQUksQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSyxxQkFBZ0IsR0FBb0MsRUFBRSxDQUFDO1FBRS9ELDZDQUE2QztRQUNyQyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFZbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pD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QUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCLENBQzdCLDJCQUE0RSxFQUM1RSwwQkFBMEUsRUFDMUUsdUJBQW9FO1FBRXBFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBZSxDQUFDLG1CQUFtQixDQUN0QywyQkFBMkIsRUFDM0IsMEJBQTBCLEVBQzFCLHVCQUF1QixDQUN4QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBR0gsU0FBUyxvQkFBb0IsQ0FDM0IsU0FBc0IsRUFDdEIsVUFBb0IsRUFDcEIsaUJBQXFDLEVBQ3JDLE9BQWlCO0lBRWpCLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDakQsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGFBQTRCO0lBQ3RFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FDcEIsWUFBWSxDQUFDLDJCQUEyQixFQUN4QyxZQUFZLENBQUMsMEJBQTBCLEVBQ3ZDLFlBQVksQ0FBQyx1QkFBdUIsQ0FDckMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgdGhlIGxvY2FsIGV2ZW50IGhhbmRsaW5nIGNvbnRyYWN0LiBUaGlzXG4gKiBhbGxvd3MgRE9NIG9iamVjdHMgaW4gYSBjb250YWluZXIgdGhhdCBlbnRlcnMgaW50byB0aGlzIGNvbnRyYWN0IHRvXG4gKiBkZWZpbmUgZXZlbnQgaGFuZGxlcnMgd2hpY2ggYXJlIGV4ZWN1dGVkIGluIGEgbG9jYWwgY29udGV4dC5cbiAqXG4gKiBPbmUgRXZlbnRDb250cmFjdCBpbnN0YW5jZSBjYW4gbWFuYWdlIHRoZSBjb250cmFjdCBmb3IgbXVsdGlwbGVcbiAqIGNvbnRhaW5lcnMsIHdoaWNoIGFyZSBhZGRlZCB1c2luZyB0aGUgYWRkQ29udGFpbmVyKCkgbWV0aG9kLlxuICpcbiAqIEV2ZW50cyBjYW4gYmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgYWRkRXZlbnQoKSBtZXRob2QuXG4gKlxuICogQSBEaXNwYXRjaGVyIGlzIGFkZGVkIHVzaW5nIHRoZSByZWdpc3RlckRpc3BhdGNoZXIoKSBtZXRob2QuIFVudGlsIHRoZXJlIGlzXG4gKiBhIGRpc3BhdGNoZXIsIGV2ZW50cyBhcmUgcXVldWVkLiBUaGUgaWRlYSBpcyB0aGF0IHRoZSBFdmVudENvbnRyYWN0XG4gKiBjbGFzcyBpcyBpbmxpbmVkIGluIHRoZSBIVE1MIG9mIHRoZSB0b3AgbGV2ZWwgcGFnZSBhbmQgaW5zdGFudGlhdGVkXG4gKiByaWdodCBhZnRlciB0aGUgc3RhcnQgb2YgPGJvZHk+LiBUaGUgRGlzcGF0Y2hlciBjbGFzcyBpcyBjb250YWluZWRcbiAqIGluIHRoZSBleHRlcm5hbCBkZWZlcnJlZCBqcywgYW5kIGluc3RhbnRpYXRlZCBhbmQgcmVnaXN0ZXJlZCB3aXRoXG4gKiBFdmVudENvbnRyYWN0IHdoZW4gdGhlIGV4dGVybmFsIGphdmFzY3JpcHQgaW4gdGhlIHBhZ2UgbG9hZHMuIFRoZVxuICogZXh0ZXJuYWwgamF2YXNjcmlwdCB3aWxsIGFsc28gcmVnaXN0ZXIgdGhlIGpzYWN0aW9uIGhhbmRsZXJzLCB3aGljaFxuICogdGhlbiBwaWNrIHVwIHRoZSBxdWV1ZWQgZXZlbnRzIGF0IHRoZSB0aW1lIG9mIHJlZ2lzdHJhdGlvbi5cbiAqXG4gKiBTaW5jZSB0aGlzIGNsYXNzIGlzIG1lYW50IHRvIGJlIGlubGluZWQgaW4gdGhlIG1haW4gcGFnZSBIVE1MLCB0aGVcbiAqIHNpemUgb2YgdGhlIGJpbmFyeSBjb21waWxlZCBmcm9tIHRoaXMgZmlsZSBNVVNUIGJlIGtlcHQgYXMgc21hbGwgYXNcbiAqIHBvc3NpYmxlIGFuZCB0aHVzIGl0cyBkZXBlbmRlbmNpZXMgdG8gYSBtaW5pbXVtLlxuICovXG5cbmltcG9ydCAqIGFzIGExMXlDbGlja0xpYiBmcm9tICcuL2ExMXlfY2xpY2snO1xuaW1wb3J0IHtBY3Rpb25SZXNvbHZlcn0gZnJvbSAnLi9hY3Rpb25fcmVzb2x2ZXInO1xuaW1wb3J0IHtFYXJseUpzYWN0aW9uRGF0YSwgRWFybHlKc2FjdGlvbkRhdGFDb250YWluZXJ9IGZyb20gJy4vZWFybHlldmVudGNvbnRyYWN0JztcbmltcG9ydCAqIGFzIGV2ZW50TGliIGZyb20gJy4vZXZlbnQnO1xuaW1wb3J0IHtFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlcn0gZnJvbSAnLi9ldmVudF9jb250cmFjdF9jb250YWluZXInO1xuaW1wb3J0IHtBMTFZX0NMSUNLX1NVUFBPUlQsIE1PVVNFX1NQRUNJQUxfU1VQUE9SVH0gZnJvbSAnLi9ldmVudF9jb250cmFjdF9kZWZpbmVzJztcbmltcG9ydCAqIGFzIGV2ZW50SW5mb0xpYiBmcm9tICcuL2V2ZW50X2luZm8nO1xuaW1wb3J0IHtFdmVudFR5cGV9IGZyb20gJy4vZXZlbnRfdHlwZSc7XG5pbXBvcnQge1Jlc3RyaWN0aW9ufSBmcm9tICcuL3Jlc3RyaWN0aW9uJztcblxuLyoqXG4gKiBUaGUgQVBJIG9mIGFuIEV2ZW50Q29udHJhY3QgdGhhdCBpcyBzYWZlIHRvIGNhbGwgZnJvbSBhbnkgY29tcGlsYXRpb24gdW5pdC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVucmVuYW1lZEV2ZW50Q29udHJhY3Qge1xuICAvLyBBbGlhcyBmb3IgSnNjdGlvbiBFdmVudENvbnRyYWN0IHJlZ2lzdGVyRGlzcGF0Y2hlci5cbiAgZWNyZChkaXNwYXRjaGVyOiBEaXNwYXRjaGVyLCByZXN0cmljdGlvbjogUmVzdHJpY3Rpb24pOiB2b2lkO1xuICAvLyBVbnJlbmFtZWQgZnVuY3Rpb24uIEFiYnJldmlhdGlvbiBmb3IgYGV2ZW50Q29udHJhY3QuYWRkQTExeUNsaWNrU3VwcG9ydGAuXG4gIGVjYWFjcz86IChcbiAgICB1cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2s6IHR5cGVvZiBhMTF5Q2xpY2tMaWIudXBkYXRlRXZlbnRJbmZvRm9yQTExeUNsaWNrLFxuICAgIHByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrOiB0eXBlb2YgYTExeUNsaWNrTGliLnByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrLFxuICAgIHBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uOiB0eXBlb2YgYTExeUNsaWNrTGliLnBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uLFxuICApID0+IHZvaWQ7XG59XG5cbi8qKiBBIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRvIGhhbmRsZSBldmVudHMgY2FwdHVyZWQgYnkgdGhlIEV2ZW50Q29udHJhY3QuICovXG5leHBvcnQgdHlwZSBEaXNwYXRjaGVyID0gKGV2ZW50SW5mbzogZXZlbnRJbmZvTGliLkV2ZW50SW5mbywgZ2xvYmFsRGlzcGF0Y2g/OiBib29sZWFuKSA9PiB2b2lkO1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGFuIGV2ZW50IGRpc3BhdGNoZWQgZnJvbSB0aGUgYnJvd3Nlci5cbiAqXG4gKiBldmVudFR5cGU6IE1heSBkaWZmZXIgZnJvbSBgZXZlbnQudHlwZWAgaWYgSlNBY3Rpb24gdXNlcyBhXG4gKiBzaG9ydC1oYW5kIG5hbWUgb3IgaXMgcGF0Y2hpbmcgb3ZlciBhbiBub24tYnViYmxpbmcgZXZlbnQgd2l0aCBhIGJ1YmJsaW5nXG4gKiB2YXJpYW50LlxuICogZXZlbnQ6IFRoZSBuYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIGNvbnRhaW5lcjogVGhlIGNvbnRhaW5lciBmb3IgdGhpcyBkaXNwYXRjaC5cbiAqL1xudHlwZSBFdmVudEhhbmRsZXIgPSAoZXZlbnRUeXBlOiBzdHJpbmcsIGV2ZW50OiBFdmVudCwgY29udGFpbmVyOiBFbGVtZW50KSA9PiB2b2lkO1xuXG4vKipcbiAqIEV2ZW50Q29udHJhY3QgaW50ZXJjZXB0cyBldmVudHMgaW4gdGhlIGJ1YmJsaW5nIHBoYXNlIGF0IHRoZVxuICogYm91bmRhcnkgb2YgYSBjb250YWluZXIgZWxlbWVudCwgYW5kIG1hcHMgdGhlbSB0byBnZW5lcmljIGFjdGlvbnNcbiAqIHdoaWNoIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGN1c3RvbSBqc2FjdGlvbiBhdHRyaWJ1dGUgaW5cbiAqIEhUTUwuIEJlaGF2aW9yIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyB0aGVuIHNwZWNpZmllZCBpbiB0ZXJtcyBvZlxuICogaGFuZGxlciBmb3Igc3VjaCBhY3Rpb25zLCBjZi4ganNhY3Rpb24uRGlzcGF0Y2hlciBpbiBkaXNwYXRjaGVyLmpzLlxuICpcbiAqIFRoaXMgaGFzIHNldmVyYWwgYmVuZWZpdHM6ICgxKSBObyBET00gZXZlbnQgaGFuZGxlcnMgbmVlZCB0byBiZVxuICogcmVnaXN0ZXJlZCBvbiB0aGUgc3BlY2lmaWMgZWxlbWVudHMgaW4gdGhlIFVJLiAoMikgVGhlIHNldCBvZlxuICogZXZlbnRzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGhhcyB0byBoYW5kbGUgY2FuIGJlIHNwZWNpZmllZCBpbiB0ZXJtc1xuICogb2YgdGhlIHNlbWFudGljcyBvZiB0aGUgYXBwbGljYXRpb24sIHJhdGhlciB0aGFuIGluIHRlcm1zIG9mIERPTVxuICogZXZlbnRzLiAoMykgSW52b2NhdGlvbiBvZiBoYW5kbGVycyBjYW4gYmUgZGVsYXllZCBhbmQgaGFuZGxlcnMgY2FuXG4gKiBiZSBkZWxheSBsb2FkZWQgaW4gYSBnZW5lcmljIHdheS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50Q29udHJhY3QgaW1wbGVtZW50cyBVbnJlbmFtZWRFdmVudENvbnRyYWN0IHtcbiAgc3RhdGljIEExMVlfQ0xJQ0tfU1VQUE9SVCA9IEExMVlfQ0xJQ0tfU1VQUE9SVDtcbiAgc3RhdGljIE1PVVNFX1NQRUNJQUxfU1VQUE9SVCA9IE1PVVNFX1NQRUNJQUxfU1VQUE9SVDtcblxuICBwcml2YXRlIGNvbnRhaW5lck1hbmFnZXI6IEV2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyIHwgbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvblJlc29sdmVyPzogQWN0aW9uUmVzb2x2ZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBET00gZXZlbnRzIHdoaWNoIHRoaXMgY29udHJhY3QgY292ZXJzLiBVc2VkIHRvIHByZXZlbnQgZG91YmxlXG4gICAqIHJlZ2lzdHJhdGlvbiBvZiBldmVudCB0eXBlcy4gVGhlIHZhbHVlIG9mIHRoZSBtYXAgaXMgdGhlXG4gICAqIGludGVybmFsbHkgY3JlYXRlZCBET00gZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlXG4gICAqIERPTSBldmVudHMuIFNlZSBhZGRFdmVudCgpLlxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBldmVudEhhbmRsZXJzOiB7W2tleTogc3RyaW5nXTogRXZlbnRIYW5kbGVyfSA9IHt9O1xuXG4gIHByaXZhdGUgYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwYXRjaGVyIGZ1bmN0aW9uLiBFdmVudHMgYXJlIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGZvclxuICAgKiBoYW5kbGluZyBvbmNlIGl0IHdhcyBzZXQgdXNpbmcgdGhlIHJlZ2lzdGVyRGlzcGF0Y2hlcigpIG1ldGhvZC4gVGhpcyBpc1xuICAgKiBkb25lIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIHBhc3NlZCBmcm9tIGFub3RoZXIganNiaW5hcnksIHNvIHBhc3NpbmcgdGhlXG4gICAqIGluc3RhbmNlIGFuZCBpbnZva2luZyB0aGUgbWV0aG9kIGhlcmUgd291bGQgcmVxdWlyZSB0byBsZWF2ZSB0aGUgbWV0aG9kXG4gICAqIHVub2JmdXNjYXRlZC5cbiAgICovXG4gIHByaXZhdGUgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzdXNwZW5kZWQgYEV2ZW50SW5mb2AgdGhhdCB3aWxsIGJlIGRpc3BhdGNoZWRcbiAgICogYXMgc29vbiBhcyB0aGUgYERpc3BhdGNoZXJgIGlzIHJlZ2lzdGVyZWQuXG4gICAqL1xuICBwcml2YXRlIHF1ZXVlZEV2ZW50SW5mb3M6IGV2ZW50SW5mb0xpYi5FdmVudEluZm9bXSB8IG51bGwgPSBbXTtcblxuICAvKiogV2hldGhlciB0byBhZGQgYW4gYTExeSBjbGljayBsaXN0ZW5lci4gKi9cbiAgcHJpdmF0ZSBhZGRBMTF5Q2xpY2tMaXN0ZW5lciA9IGZhbHNlO1xuXG4gIGVjYWFjcz86IChcbiAgICB1cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2s6IHR5cGVvZiBhMTF5Q2xpY2tMaWIudXBkYXRlRXZlbnRJbmZvRm9yQTExeUNsaWNrLFxuICAgIHByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrOiB0eXBlb2YgYTExeUNsaWNrTGliLnByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrLFxuICAgIHBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uOiB0eXBlb2YgYTExeUNsaWNrTGliLnBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uLFxuICApID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udGFpbmVyTWFuYWdlcjogRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VBY3Rpb25SZXNvbHZlciA9IHRydWUsXG4gICkge1xuICAgIHRoaXMuY29udGFpbmVyTWFuYWdlciA9IGNvbnRhaW5lck1hbmFnZXI7XG4gICAgaWYgKHRoaXMudXNlQWN0aW9uUmVzb2x2ZXIpIHtcbiAgICAgIHRoaXMuYWN0aW9uUmVzb2x2ZXIgPSBuZXcgQWN0aW9uUmVzb2x2ZXIoe1xuICAgICAgICBzeW50aGV0aWNNb3VzZUV2ZW50U3VwcG9ydDogRXZlbnRDb250cmFjdC5NT1VTRV9TUEVDSUFMX1NVUFBPUlQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKEV2ZW50Q29udHJhY3QuQTExWV9DTElDS19TVVBQT1JUKSB7XG4gICAgICAvLyBBZGQgYTExeSBjbGljayBzdXBwb3J0IHRvIHRoZSBgRXZlbnRDb250cmFjdGAuXG4gICAgICB0aGlzLmFkZEExMXlDbGlja1N1cHBvcnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCBldmVudDogRXZlbnQsIGNvbnRhaW5lcjogRWxlbWVudCkge1xuICAgIGNvbnN0IGV2ZW50SW5mbyA9IGV2ZW50SW5mb0xpYi5jcmVhdGVFdmVudEluZm9Gcm9tUGFyYW1ldGVycyhcbiAgICAgIC8qIGV2ZW50VHlwZT0gKi8gZXZlbnRUeXBlLFxuICAgICAgLyogZXZlbnQ9ICovIGV2ZW50LFxuICAgICAgLyogdGFyZ2V0RWxlbWVudD0gKi8gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQsXG4gICAgICAvKiBjb250YWluZXI9ICovIGNvbnRhaW5lcixcbiAgICAgIC8qIHRpbWVzdGFtcD0gKi8gRGF0ZS5ub3coKSxcbiAgICApO1xuICAgIHRoaXMuaGFuZGxlRXZlbnRJbmZvKGV2ZW50SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGFuIGBFdmVudEluZm9gLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVFdmVudEluZm8oZXZlbnRJbmZvOiBldmVudEluZm9MaWIuRXZlbnRJbmZvKSB7XG4gICAgaWYgKCF0aGlzLmRpc3BhdGNoZXIpIHtcbiAgICAgIC8vIEFsbCBldmVudHMgYXJlIHF1ZXVlZCB3aGVuIHRoZSBkaXNwYXRjaGVyIGlzbid0IHlldCBsb2FkZWQuXG4gICAgICBldmVudEluZm9MaWIuc2V0SXNSZXBsYXkoZXZlbnRJbmZvLCB0cnVlKTtcbiAgICAgIHRoaXMucXVldWVkRXZlbnRJbmZvcz8ucHVzaChldmVudEluZm8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy51c2VBY3Rpb25SZXNvbHZlcikge1xuICAgICAgdGhpcy5hY3Rpb25SZXNvbHZlciEucmVzb2x2ZShldmVudEluZm8pO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoZXIoZXZlbnRJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGpzYWN0aW9uIGhhbmRsZXJzIHRvIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50IHR5cGUgZ2l2ZW4gYnlcbiAgICogbmFtZS5cbiAgICpcbiAgICogSWYgdGhlIGV2ZW50IGlzIGFscmVhZHkgcmVnaXN0ZXJlZCwgdGhpcyBkb2VzIG5vdGhpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBwcmVmaXhlZEV2ZW50VHlwZSBJZiBzdXBwbGllZCwgdGhpcyBldmVudCBpcyB1c2VkIGluXG4gICAqICAgICB0aGUgYWN0dWFsIGJyb3dzZXIgZXZlbnQgcmVnaXN0cmF0aW9uIGluc3RlYWQgb2YgdGhlIG5hbWUgdGhhdCBpc1xuICAgKiAgICAgZXhwb3NlZCB0byBqc2FjdGlvbi4gVXNlIHRoaXMgaWYgeW91IGUuZy4gd2FudCB1c2VycyB0byBiZSBhYmxlXG4gICAqICAgICB0byBzdWJzY3JpYmUgdG8ganNhY3Rpb249XCJ0cmFuc2l0aW9uRW5kOmZvb1wiIHdoaWxlIHRoZSB1bmRlcmx5aW5nXG4gICAqICAgICBldmVudCBpcyB3ZWJraXRUcmFuc2l0aW9uRW5kIGluIG9uZSBicm93c2VyIGFuZCBtb3pUcmFuc2l0aW9uRW5kXG4gICAqICAgICBpbiBhbm90aGVyLlxuICAgKi9cbiAgYWRkRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIHByZWZpeGVkRXZlbnRUeXBlPzogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50VHlwZSBpbiB0aGlzLmV2ZW50SGFuZGxlcnMgfHwgIXRoaXMuY29udGFpbmVyTWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFFdmVudENvbnRyYWN0Lk1PVVNFX1NQRUNJQUxfU1VQUE9SVCAmJlxuICAgICAgKGV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFRU5URVIgfHxcbiAgICAgICAgZXZlbnRUeXBlID09PSBFdmVudFR5cGUuTU9VU0VMRUFWRSB8fFxuICAgICAgICBldmVudFR5cGUgPT09IEV2ZW50VHlwZS5QT0lOVEVSRU5URVIgfHxcbiAgICAgICAgZXZlbnRUeXBlID09PSBFdmVudFR5cGUuUE9JTlRFUkxFQVZFKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50SGFuZGxlciA9IChldmVudFR5cGU6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjb250YWluZXI6IEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoZXZlbnRUeXBlLCBldmVudCwgY29udGFpbmVyKTtcbiAgICB9O1xuXG4gICAgLy8gU3RvcmUgdGhlIGNhbGxiYWNrIHRvIGFsbG93IHVzIHRvIHJlcGxheSBldmVudHMuXG4gICAgdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50VHlwZV0gPSBldmVudEhhbmRsZXI7XG5cbiAgICBjb25zdCBicm93c2VyRXZlbnRUeXBlID0gZXZlbnRMaWIuZ2V0QnJvd3NlckV2ZW50VHlwZShwcmVmaXhlZEV2ZW50VHlwZSB8fCBldmVudFR5cGUpO1xuXG4gICAgaWYgKGJyb3dzZXJFdmVudFR5cGUgIT09IGV2ZW50VHlwZSkge1xuICAgICAgY29uc3QgZXZlbnRUeXBlcyA9IHRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzW2Jyb3dzZXJFdmVudFR5cGVdIHx8IFtdO1xuICAgICAgZXZlbnRUeXBlcy5wdXNoKGV2ZW50VHlwZSk7XG4gICAgICB0aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlc1ticm93c2VyRXZlbnRUeXBlXSA9IGV2ZW50VHlwZXM7XG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYnJvd3NlckV2ZW50VHlwZSwgKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgIHJldHVybiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlcihldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBdXRvbWF0aWNhbGx5IGluc3RhbGwgYSBrZXlwcmVzcy9rZXlkb3duIGV2ZW50IGhhbmRsZXIgaWYgc3VwcG9ydCBmb3JcbiAgICAvLyBhY2Nlc3NpYmxlIGNsaWNrcyBpcyB0dXJuZWQgb24uXG4gICAgaWYgKHRoaXMuYWRkQTExeUNsaWNrTGlzdGVuZXIgJiYgZXZlbnRUeXBlID09PSBFdmVudFR5cGUuQ0xJQ0spIHtcbiAgICAgIHRoaXMuYWRkRXZlbnQoRXZlbnRUeXBlLktFWURPV04pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBxdWV1ZWQgZWFybHkgZXZlbnRzIGFuZCByZXBsYXkgdGhlbSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlclxuICAgKiBpbiB0aGUgcHJvdmlkZWQgZXZlbnQgY29udHJhY3QuIE9uY2UgYWxsIHRoZSBldmVudHMgYXJlIHJlcGxheWVkLCBpdCBjbGVhbnNcbiAgICogdXAgdGhlIGVhcmx5IGNvbnRyYWN0LlxuICAgKi9cbiAgcmVwbGF5RWFybHlFdmVudHMoXG4gICAgZWFybHlKc2FjdGlvbkNvbnRhaW5lcjogRWFybHlKc2FjdGlvbkRhdGFDb250YWluZXIgPSB3aW5kb3cgYXMgRWFybHlKc2FjdGlvbkRhdGFDb250YWluZXIsXG4gICkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBlYXJseSBjb250cmFjdCBpcyBwcmVzZW50IGFuZCBwcmV2ZW50IGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuICAgIC8vIG1vcmUgdGhhbiBvbmNlLlxuICAgIGNvbnN0IGVhcmx5SnNhY3Rpb25EYXRhOiBFYXJseUpzYWN0aW9uRGF0YSB8IHVuZGVmaW5lZCA9IGVhcmx5SnNhY3Rpb25Db250YWluZXIuX2Vqc2E7XG4gICAgaWYgKCFlYXJseUpzYWN0aW9uRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlcGxheSB0aGUgZWFybHkgY29udHJhY3QgZXZlbnRzLlxuICAgIGNvbnN0IGVhcmx5RXZlbnRJbmZvczogZXZlbnRJbmZvTGliLkV2ZW50SW5mb1tdID0gZWFybHlKc2FjdGlvbkRhdGEucTtcbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBlYXJseUV2ZW50SW5mb3MubGVuZ3RoOyBpZHgrKykge1xuICAgICAgY29uc3QgZWFybHlFdmVudEluZm86IGV2ZW50SW5mb0xpYi5FdmVudEluZm8gPSBlYXJseUV2ZW50SW5mb3NbaWR4XTtcbiAgICAgIGNvbnN0IGV2ZW50VHlwZXMgPSB0aGlzLmdldEV2ZW50VHlwZXNGb3JCcm93c2VyRXZlbnRUeXBlKGVhcmx5RXZlbnRJbmZvLmV2ZW50VHlwZSk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50VHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZXZlbnRJbmZvID0gZXZlbnRJbmZvTGliLmNsb25lRXZlbnRJbmZvKGVhcmx5RXZlbnRJbmZvKTtcbiAgICAgICAgLy8gRXZlbnRJbmZvIGV2ZW50VHlwZSBtYXBzIHRvIEpTQWN0aW9uJ3MgaW50ZXJuYWwgZXZlbnQgdHlwZSxcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gdGhlIGJyb3dzZXIgZXZlbnQgdHlwZS5cbiAgICAgICAgZXZlbnRJbmZvTGliLnNldEV2ZW50VHlwZShldmVudEluZm8sIGV2ZW50VHlwZXNbaV0pO1xuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50SW5mbyhldmVudEluZm8pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsZWFuIHVwIHRoZSBlYXJseSBjb250cmFjdC5cbiAgICBjb25zdCBlYXJseUV2ZW50SGFuZGxlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCA9IGVhcmx5SnNhY3Rpb25EYXRhLmg7XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoZWFybHlKc2FjdGlvbkRhdGEuYywgZWFybHlKc2FjdGlvbkRhdGEuZXQsIGVhcmx5RXZlbnRIYW5kbGVyKTtcbiAgICByZW1vdmVFdmVudExpc3RlbmVycyhlYXJseUpzYWN0aW9uRGF0YS5jLCBlYXJseUpzYWN0aW9uRGF0YS5ldGMsIGVhcmx5RXZlbnRIYW5kbGVyLCB0cnVlKTtcbiAgICBkZWxldGUgZWFybHlKc2FjdGlvbkNvbnRhaW5lci5fZWpzYTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBKU0FjdGlvbiBldmVudCB0eXBlcyB0aGF0IGhhdmUgYmVlbiByZWdpc3RlcmVkIGZvciBhIGdpdmVuXG4gICAqIGJyb3dzZXIgZXZlbnQgdHlwZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0RXZlbnRUeXBlc0ZvckJyb3dzZXJFdmVudFR5cGUoYnJvd3NlckV2ZW50VHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZXZlbnRUeXBlcyA9IFtdO1xuICAgIGlmICh0aGlzLmV2ZW50SGFuZGxlcnNbYnJvd3NlckV2ZW50VHlwZV0pIHtcbiAgICAgIGV2ZW50VHlwZXMucHVzaChicm93c2VyRXZlbnRUeXBlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzW2Jyb3dzZXJFdmVudFR5cGVdKSB7XG4gICAgICBldmVudFR5cGVzLnB1c2goLi4udGhpcy5icm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXNbYnJvd3NlckV2ZW50VHlwZV0pO1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnRUeXBlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGZvciBhIGdpdmVuIGV2ZW50IHR5cGUuXG4gICAqL1xuICBoYW5kbGVyKGV2ZW50VHlwZTogc3RyaW5nKTogRXZlbnRIYW5kbGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50VHlwZV07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW5zIHVwIHRoZSBldmVudCBjb250cmFjdC4gVGhpcyByZXNldHMgYWxsIG9mIHRoZSBgRXZlbnRDb250cmFjdGAnc1xuICAgKiBpbnRlcm5hbCBzdGF0ZS4gVXNlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBub3QgdXNpbmcgdGhpcyBgRXZlbnRDb250cmFjdGBcbiAgICogYWZ0ZXIgaXQgaGFzIGJlZW4gY2xlYW5lZCB1cC5cbiAgICovXG4gIGNsZWFuVXAoKSB7XG4gICAgdGhpcy5jb250YWluZXJNYW5hZ2VyIS5jbGVhblVwKCk7XG4gICAgdGhpcy5jb250YWluZXJNYW5hZ2VyID0gbnVsbDtcbiAgICB0aGlzLmV2ZW50SGFuZGxlcnMgPSB7fTtcbiAgICB0aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlcyA9IHt9O1xuICAgIHRoaXMuZGlzcGF0Y2hlciA9IG51bGw7XG4gICAgdGhpcy5xdWV1ZWRFdmVudEluZm9zID0gW107XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBkaXNwYXRjaGVyIGZ1bmN0aW9uLiBFdmVudCBpbmZvIG9mIGVhY2ggZXZlbnQgbWFwcGVkIHRvXG4gICAqIGEganNhY3Rpb24gaXMgcGFzc2VkIGZvciBoYW5kbGluZyB0byB0aGlzIGNhbGxiYWNrLiBUaGUgcXVldWVkXG4gICAqIGV2ZW50cyBhcmUgcGFzc2VkIGFzIHdlbGwgdG8gdGhlIGRpc3BhdGNoZXIgZm9yIGxhdGVyIHJlcGxheWluZ1xuICAgKiBvbmNlIHRoZSBkaXNwYXRjaGVyIGlzIHJlZ2lzdGVyZWQuIENsZWFycyB0aGUgZXZlbnQgcXVldWUgdG8gbnVsbC5cbiAgICpcbiAgICogQHBhcmFtIGRpc3BhdGNoZXIgVGhlIGRpc3BhdGNoZXIgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSByZXN0cmljdGlvblxuICAgKi9cbiAgcmVnaXN0ZXJEaXNwYXRjaGVyKGRpc3BhdGNoZXI6IERpc3BhdGNoZXIsIHJlc3RyaWN0aW9uOiBSZXN0cmljdGlvbikge1xuICAgIHRoaXMuZWNyZChkaXNwYXRjaGVyLCByZXN0cmljdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogVW5yZW5hbWVkIGFsaWFzIGZvciByZWdpc3RlckRpc3BhdGNoZXIuIE5lY2Vzc2FyeSBmb3IgYW55IGNvZGViYXNlcyB0aGF0XG4gICAqIHNwbGl0IHRoZSBgRXZlbnRDb250cmFjdGAgYW5kIGBEaXNwYXRjaGVyYCBjb2RlIGludG8gZGlmZmVyZW50IGNvbXBpbGF0aW9uXG4gICAqIHVuaXRzLlxuICAgKi9cbiAgZWNyZChkaXNwYXRjaGVyOiBEaXNwYXRjaGVyLCByZXN0cmljdGlvbjogUmVzdHJpY3Rpb24pIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuXG4gICAgaWYgKHRoaXMucXVldWVkRXZlbnRJbmZvcz8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucXVldWVkRXZlbnRJbmZvcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50SW5mbyh0aGlzLnF1ZXVlZEV2ZW50SW5mb3NbaV0pO1xuICAgICAgfVxuICAgICAgdGhpcy5xdWV1ZWRFdmVudEluZm9zID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhMTF5IGNsaWNrIHN1cHBvcnQgdG8gdGhlIGdpdmVuIGBFdmVudENvbnRyYWN0YC4gTWVhbnQgdG8gYmUgY2FsbGVkIGluXG4gICAqIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQgYXMgdGhlIGBFdmVudENvbnRyYWN0YC5cbiAgICovXG4gIGFkZEExMXlDbGlja1N1cHBvcnQoKSB7XG4gICAgdGhpcy5hZGRBMTF5Q2xpY2tTdXBwb3J0SW1wbChcbiAgICAgIGExMXlDbGlja0xpYi51cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2ssXG4gICAgICBhMTF5Q2xpY2tMaWIucHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2ssXG4gICAgICBhMTF5Q2xpY2tMaWIucG9wdWxhdGVDbGlja09ubHlBY3Rpb24sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGExMXkgY2xpY2sgc3VwcG9ydCB0byBiZSBkZWZlcnJlZC4gTWVhbnQgdG8gYmUgY2FsbGVkIGluIHRoZSBzYW1lXG4gICAqIGNvbXBpbGF0aW9uIHVuaXQgYXMgdGhlIGBFdmVudENvbnRyYWN0YC5cbiAgICovXG4gIGV4cG9ydEFkZEExMXlDbGlja1N1cHBvcnQoKSB7XG4gICAgdGhpcy5hZGRBMTF5Q2xpY2tMaXN0ZW5lciA9IHRydWU7XG4gICAgdGhpcy5lY2FhY3MgPSB0aGlzLmFkZEExMXlDbGlja1N1cHBvcnRJbXBsLmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZW5hbWVkIGZ1bmN0aW9uIHRoYXQgbG9hZHMgYTExeUNsaWNrU3VwcG9ydC5cbiAgICovXG4gIHByaXZhdGUgYWRkQTExeUNsaWNrU3VwcG9ydEltcGwoXG4gICAgdXBkYXRlRXZlbnRJbmZvRm9yQTExeUNsaWNrOiB0eXBlb2YgYTExeUNsaWNrTGliLnVwZGF0ZUV2ZW50SW5mb0ZvckExMXlDbGljayxcbiAgICBwcmV2ZW50RGVmYXVsdEZvckExMXlDbGljazogdHlwZW9mIGExMXlDbGlja0xpYi5wcmV2ZW50RGVmYXVsdEZvckExMXlDbGljayxcbiAgICBwb3B1bGF0ZUNsaWNrT25seUFjdGlvbjogdHlwZW9mIGExMXlDbGlja0xpYi5wb3B1bGF0ZUNsaWNrT25seUFjdGlvbixcbiAgKSB7XG4gICAgdGhpcy5hZGRBMTF5Q2xpY2tMaXN0ZW5lciA9IHRydWU7XG4gICAgaWYgKHRoaXMudXNlQWN0aW9uUmVzb2x2ZXIpIHtcbiAgICAgIHRoaXMuYWN0aW9uUmVzb2x2ZXIhLmFkZEExMXlDbGlja1N1cHBvcnQoXG4gICAgICAgIHVwZGF0ZUV2ZW50SW5mb0ZvckExMXlDbGljayxcbiAgICAgICAgcHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2ssXG4gICAgICAgIHBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoXG4gIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gIGV2ZW50VHlwZXM6IHN0cmluZ1tdLFxuICBlYXJseUV2ZW50SGFuZGxlcjogKGU6IEV2ZW50KSA9PiB2b2lkLFxuICBjYXB0dXJlPzogYm9vbGVhbixcbikge1xuICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBldmVudFR5cGVzLmxlbmd0aDsgaWR4KyspIHtcbiAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGVzW2lkeF0sIGVhcmx5RXZlbnRIYW5kbGVyLCAvKiB1c2VDYXB0dXJlICovIGNhcHR1cmUpO1xuICB9XG59XG5cbi8qKlxuICogQWRkcyBhMTF5IGNsaWNrIHN1cHBvcnQgdG8gdGhlIGdpdmVuIGBFdmVudENvbnRyYWN0YC4gTWVhbnQgdG8gYmUgY2FsbGVkXG4gKiBpbiBhIGRpZmZlcmVudCBjb21waWxhdGlvbiB1bml0IGZyb20gdGhlIGBFdmVudENvbnRyYWN0YC4gVGhlIGBFdmVudENvbnRyYWN0YFxuICogbXVzdCBoYXZlIGNhbGxlZCBgZXhwb3J0QWRkQTExeUNsaWNrU3VwcG9ydGAgaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQgZm9yIHRoaXNcbiAqIHRvIGhhdmUgYW55IGVmZmVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZERlZmVycmVkQTExeUNsaWNrU3VwcG9ydChldmVudENvbnRyYWN0OiBFdmVudENvbnRyYWN0KSB7XG4gIGV2ZW50Q29udHJhY3QuZWNhYWNzPy4oXG4gICAgYTExeUNsaWNrTGliLnVwZGF0ZUV2ZW50SW5mb0ZvckExMXlDbGljayxcbiAgICBhMTF5Q2xpY2tMaWIucHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2ssXG4gICAgYTExeUNsaWNrTGliLnBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uLFxuICApO1xufVxuIl19
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRjb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRjb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sS0FBSyxZQUFZLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEtBQUssUUFBUSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRixPQUFPLEtBQUssWUFBWSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFFLHlCQUF5QixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBK0JsRTs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7YUFDakIsdUJBQWtCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBQ3hDLDBCQUFxQixHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQXlDckQsWUFDRSxnQkFBK0MsRUFDOUIsb0JBQW9CLElBQUk7UUFBeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFPO1FBckMzQzs7Ozs7O1dBTUc7UUFDSyxrQkFBYSxHQUFrQyxFQUFFLENBQUM7UUFFbEQsc0NBQWlDLEdBQThCLEVBQUUsQ0FBQztRQUUxRTs7Ozs7O1dBTUc7UUFDSyxlQUFVLEdBQXNCLElBQUksQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSyxxQkFBZ0IsR0FBb0MsRUFBRSxDQUFDO1FBRS9ELDZDQUE2QztRQUNyQyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFZbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFn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QUFDO0lBRUQ7O09BRUc7SUFDSyx1QkFBdUIsQ0FDN0IsMkJBQTRFLEVBQzVFLDBCQUEwRSxFQUMxRSx1QkFBb0U7UUFFcEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFlLENBQUMsbUJBQW1CLENBQ3RDLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIsdUJBQXVCLENBQ3hCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs7QUFHSCxTQUFTLG9CQUFvQixDQUMzQixTQUFzQixFQUN0QixVQUFvQixFQUNwQixpQkFBcUMsRUFDckMsT0FBaUI7SUFFakIsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNqRCxTQUFTLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlGLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsYUFBNEI7SUFDdEUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUNwQixZQUFZLENBQUMsMkJBQTJCLEVBQ3hDLFlBQVksQ0FBQywwQkFBMEIsRUFDdkMsWUFBWSxDQUFDLHVCQUF1QixDQUNyQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgSW1wbGVtZW50cyB0aGUgbG9jYWwgZXZlbnQgaGFuZGxpbmcgY29udHJhY3QuIFRoaXNcbiAqIGFsbG93cyBET00gb2JqZWN0cyBpbiBhIGNvbnRhaW5lciB0aGF0IGVudGVycyBpbnRvIHRoaXMgY29udHJhY3QgdG9cbiAqIGRlZmluZSBldmVudCBoYW5kbGVycyB3aGljaCBhcmUgZXhlY3V0ZWQgaW4gYSBsb2NhbCBjb250ZXh0LlxuICpcbiAqIE9uZSBFdmVudENvbnRyYWN0IGluc3RhbmNlIGNhbiBtYW5hZ2UgdGhlIGNvbnRyYWN0IGZvciBtdWx0aXBsZVxuICogY29udGFpbmVycywgd2hpY2ggYXJlIGFkZGVkIHVzaW5nIHRoZSBhZGRDb250YWluZXIoKSBtZXRob2QuXG4gKlxuICogRXZlbnRzIGNhbiBiZSByZWdpc3RlcmVkIHVzaW5nIHRoZSBhZGRFdmVudCgpIG1ldGhvZC5cbiAqXG4gKiBBIERpc3BhdGNoZXIgaXMgYWRkZWQgdXNpbmcgdGhlIHJlZ2lzdGVyRGlzcGF0Y2hlcigpIG1ldGhvZC4gVW50aWwgdGhlcmUgaXNcbiAqIGEgZGlzcGF0Y2hlciwgZXZlbnRzIGFyZSBxdWV1ZWQuIFRoZSBpZGVhIGlzIHRoYXQgdGhlIEV2ZW50Q29udHJhY3RcbiAqIGNsYXNzIGlzIGlubGluZWQgaW4gdGhlIEhUTUwgb2YgdGhlIHRvcCBsZXZlbCBwYWdlIGFuZCBpbnN0YW50aWF0ZWRcbiAqIHJpZ2h0IGFmdGVyIHRoZSBzdGFydCBvZiA8Ym9keT4uIFRoZSBEaXNwYXRjaGVyIGNsYXNzIGlzIGNvbnRhaW5lZFxuICogaW4gdGhlIGV4dGVybmFsIGRlZmVycmVkIGpzLCBhbmQgaW5zdGFudGlhdGVkIGFuZCByZWdpc3RlcmVkIHdpdGhcbiAqIEV2ZW50Q29udHJhY3Qgd2hlbiB0aGUgZXh0ZXJuYWwgamF2YXNjcmlwdCBpbiB0aGUgcGFnZSBsb2Fkcy4gVGhlXG4gKiBleHRlcm5hbCBqYXZhc2NyaXB0IHdpbGwgYWxzbyByZWdpc3RlciB0aGUganNhY3Rpb24gaGFuZGxlcnMsIHdoaWNoXG4gKiB0aGVuIHBpY2sgdXAgdGhlIHF1ZXVlZCBldmVudHMgYXQgdGhlIHRpbWUgb2YgcmVnaXN0cmF0aW9uLlxuICpcbiAqIFNpbmNlIHRoaXMgY2xhc3MgaXMgbWVhbnQgdG8gYmUgaW5saW5lZCBpbiB0aGUgbWFpbiBwYWdlIEhUTUwsIHRoZVxuICogc2l6ZSBvZiB0aGUgYmluYXJ5IGNvbXBpbGVkIGZyb20gdGhpcyBmaWxlIE1VU1QgYmUga2VwdCBhcyBzbWFsbCBhc1xuICogcG9zc2libGUgYW5kIHRodXMgaXRzIGRlcGVuZGVuY2llcyB0byBhIG1pbmltdW0uXG4gKi9cblxuaW1wb3J0ICogYXMgYTExeUNsaWNrTGliIGZyb20gJy4vYTExeV9jbGljayc7XG5pbXBvcnQge0FjdGlvblJlc29sdmVyfSBmcm9tICcuL2FjdGlvbl9yZXNvbHZlcic7XG5pbXBvcnQge0Vhcmx5SnNhY3Rpb25EYXRhLCBFYXJseUpzYWN0aW9uRGF0YUNvbnRhaW5lcn0gZnJvbSAnLi9lYXJseWV2ZW50Y29udHJhY3QnO1xuaW1wb3J0ICogYXMgZXZlbnRMaWIgZnJvbSAnLi9ldmVudCc7XG5pbXBvcnQge0V2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyfSBmcm9tICcuL2V2ZW50X2NvbnRyYWN0X2NvbnRhaW5lcic7XG5pbXBvcnQge0ExMVlfQ0xJQ0tfU1VQUE9SVCwgTU9VU0VfU1BFQ0lBTF9TVVBQT1JUfSBmcm9tICcuL2V2ZW50X2NvbnRyYWN0X2RlZmluZXMnO1xuaW1wb3J0ICogYXMgZXZlbnRJbmZvTGliIGZyb20gJy4vZXZlbnRfaW5mbyc7XG5pbXBvcnQge0V2ZW50VHlwZSwgTk9OX0JVQkJMSU5HX01PVVNFX0VWRU5UU30gZnJvbSAnLi9ldmVudF90eXBlJztcbmltcG9ydCB7UmVzdHJpY3Rpb259IGZyb20gJy4vcmVzdHJpY3Rpb24nO1xuXG4vKipcbiAqIFRoZSBBUEkgb2YgYW4gRXZlbnRDb250cmFjdCB0aGF0IGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFueSBjb21waWxhdGlvbiB1bml0LlxuICovXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVW5yZW5hbWVkRXZlbnRDb250cmFjdCB7XG4gIC8vIEFsaWFzIGZvciBKc2N0aW9uIEV2ZW50Q29udHJhY3QgcmVnaXN0ZXJEaXNwYXRjaGVyLlxuICBlY3JkKGRpc3BhdGNoZXI6IERpc3BhdGNoZXIsIHJlc3RyaWN0aW9uOiBSZXN0cmljdGlvbik6IHZvaWQ7XG4gIC8vIFVucmVuYW1lZCBmdW5jdGlvbi4gQWJicmV2aWF0aW9uIGZvciBgZXZlbnRDb250cmFjdC5hZGRBMTF5Q2xpY2tTdXBwb3J0YC5cbiAgZWNhYWNzPzogKFxuICAgIHVwZGF0ZUV2ZW50SW5mb0ZvckExMXlDbGljazogdHlwZW9mIGExMXlDbGlja0xpYi51cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2ssXG4gICAgcHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2s6IHR5cGVvZiBhMTF5Q2xpY2tMaWIucHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2ssXG4gICAgcG9wdWxhdGVDbGlja09ubHlBY3Rpb246IHR5cGVvZiBhMTF5Q2xpY2tMaWIucG9wdWxhdGVDbGlja09ubHlBY3Rpb24sXG4gICkgPT4gdm9pZDtcbn1cblxuLyoqIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gaGFuZGxlIGV2ZW50cyBjYXB0dXJlZCBieSB0aGUgRXZlbnRDb250cmFjdC4gKi9cbmV4cG9ydCB0eXBlIERpc3BhdGNoZXIgPSAoZXZlbnRJbmZvOiBldmVudEluZm9MaWIuRXZlbnRJbmZvLCBnbG9iYWxEaXNwYXRjaD86IGJvb2xlYW4pID0+IHZvaWQ7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgYW4gZXZlbnQgZGlzcGF0Y2hlZCBmcm9tIHRoZSBicm93c2VyLlxuICpcbiAqIGV2ZW50VHlwZTogTWF5IGRpZmZlciBmcm9tIGBldmVudC50eXBlYCBpZiBKU0FjdGlvbiB1c2VzIGFcbiAqIHNob3J0LWhhbmQgbmFtZSBvciBpcyBwYXRjaGluZyBvdmVyIGFuIG5vbi1idWJibGluZyBldmVudCB3aXRoIGEgYnViYmxpbmdcbiAqIHZhcmlhbnQuXG4gKiBldmVudDogVGhlIG5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogY29udGFpbmVyOiBUaGUgY29udGFpbmVyIGZvciB0aGlzIGRpc3BhdGNoLlxuICovXG50eXBlIEV2ZW50SGFuZGxlciA9IChldmVudFR5cGU6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjb250YWluZXI6IEVsZW1lbnQpID0+IHZvaWQ7XG5cbi8qKlxuICogRXZlbnRDb250cmFjdCBpbnRlcmNlcHRzIGV2ZW50cyBpbiB0aGUgYnViYmxpbmcgcGhhc2UgYXQgdGhlXG4gKiBib3VuZGFyeSBvZiBhIGNvbnRhaW5lciBlbGVtZW50LCBhbmQgbWFwcyB0aGVtIHRvIGdlbmVyaWMgYWN0aW9uc1xuICogd2hpY2ggYXJlIHNwZWNpZmllZCB1c2luZyB0aGUgY3VzdG9tIGpzYWN0aW9uIGF0dHJpYnV0ZSBpblxuICogSFRNTC4gQmVoYXZpb3Igb2YgdGhlIGFwcGxpY2F0aW9uIGlzIHRoZW4gc3BlY2lmaWVkIGluIHRlcm1zIG9mXG4gKiBoYW5kbGVyIGZvciBzdWNoIGFjdGlvbnMsIGNmLiBqc2FjdGlvbi5EaXNwYXRjaGVyIGluIGRpc3BhdGNoZXIuanMuXG4gKlxuICogVGhpcyBoYXMgc2V2ZXJhbCBiZW5lZml0czogKDEpIE5vIERPTSBldmVudCBoYW5kbGVycyBuZWVkIHRvIGJlXG4gKiByZWdpc3RlcmVkIG9uIHRoZSBzcGVjaWZpYyBlbGVtZW50cyBpbiB0aGUgVUkuICgyKSBUaGUgc2V0IG9mXG4gKiBldmVudHMgdGhhdCB0aGUgYXBwbGljYXRpb24gaGFzIHRvIGhhbmRsZSBjYW4gYmUgc3BlY2lmaWVkIGluIHRlcm1zXG4gKiBvZiB0aGUgc2VtYW50aWNzIG9mIHRoZSBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4gaW4gdGVybXMgb2YgRE9NXG4gKiBldmVudHMuICgzKSBJbnZvY2F0aW9uIG9mIGhhbmRsZXJzIGNhbiBiZSBkZWxheWVkIGFuZCBoYW5kbGVycyBjYW5cbiAqIGJlIGRlbGF5IGxvYWRlZCBpbiBhIGdlbmVyaWMgd2F5LlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRDb250cmFjdCBpbXBsZW1lbnRzIFVucmVuYW1lZEV2ZW50Q29udHJhY3Qge1xuICBzdGF0aWMgQTExWV9DTElDS19TVVBQT1JUID0gQTExWV9DTElDS19TVVBQT1JUO1xuICBzdGF0aWMgTU9VU0VfU1BFQ0lBTF9TVVBQT1JUID0gTU9VU0VfU1BFQ0lBTF9TVVBQT1JUO1xuXG4gIHByaXZhdGUgY29udGFpbmVyTWFuYWdlcjogRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXIgfCBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uUmVzb2x2ZXI/OiBBY3Rpb25SZXNvbHZlcjtcblxuICAvKipcbiAgICogVGhlIERPTSBldmVudHMgd2hpY2ggdGhpcyBjb250cmFjdCBjb3ZlcnMuIFVzZWQgdG8gcHJldmVudCBkb3VibGVcbiAgICogcmVnaXN0cmF0aW9uIG9mIGV2ZW50IHR5cGVzLiBUaGUgdmFsdWUgb2YgdGhlIG1hcCBpcyB0aGVcbiAgICogaW50ZXJuYWxseSBjcmVhdGVkIERPTSBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGVcbiAgICogRE9NIGV2ZW50cy4gU2VlIGFkZEV2ZW50KCkuXG4gICAqXG4gICAqL1xuICBwcml2YXRlIGV2ZW50SGFuZGxlcnM6IHtba2V5OiBzdHJpbmddOiBFdmVudEhhbmRsZXJ9ID0ge307XG5cbiAgcHJpdmF0ZSBicm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX0gPSB7fTtcblxuICAvKipcbiAgICogVGhlIGRpc3BhdGNoZXIgZnVuY3Rpb24uIEV2ZW50cyBhcmUgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gZm9yXG4gICAqIGhhbmRsaW5nIG9uY2UgaXQgd2FzIHNldCB1c2luZyB0aGUgcmVnaXN0ZXJEaXNwYXRjaGVyKCkgbWV0aG9kLiBUaGlzIGlzXG4gICAqIGRvbmUgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgcGFzc2VkIGZyb20gYW5vdGhlciBqc2JpbmFyeSwgc28gcGFzc2luZyB0aGVcbiAgICogaW5zdGFuY2UgYW5kIGludm9raW5nIHRoZSBtZXRob2QgaGVyZSB3b3VsZCByZXF1aXJlIHRvIGxlYXZlIHRoZSBtZXRob2RcbiAgICogdW5vYmZ1c2NhdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHN1c3BlbmRlZCBgRXZlbnRJbmZvYCB0aGF0IHdpbGwgYmUgZGlzcGF0Y2hlZFxuICAgKiBhcyBzb29uIGFzIHRoZSBgRGlzcGF0Y2hlcmAgaXMgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHByaXZhdGUgcXVldWVkRXZlbnRJbmZvczogZXZlbnRJbmZvTGliLkV2ZW50SW5mb1tdIHwgbnVsbCA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFkZCBhbiBhMTF5IGNsaWNrIGxpc3RlbmVyLiAqL1xuICBwcml2YXRlIGFkZEExMXlDbGlja0xpc3RlbmVyID0gZmFsc2U7XG5cbiAgZWNhYWNzPzogKFxuICAgIHVwZGF0ZUV2ZW50SW5mb0ZvckExMXlDbGljazogdHlwZW9mIGExMXlDbGlja0xpYi51cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2ssXG4gICAgcHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2s6IHR5cGVvZiBhMTF5Q2xpY2tMaWIucHJldmVudERlZmF1bHRGb3JBMTF5Q2xpY2ssXG4gICAgcG9wdWxhdGVDbGlja09ubHlBY3Rpb246IHR5cGVvZiBhMTF5Q2xpY2tMaWIucG9wdWxhdGVDbGlja09ubHlBY3Rpb24sXG4gICkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb250YWluZXJNYW5hZ2VyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUFjdGlvblJlc29sdmVyID0gdHJ1ZSxcbiAgKSB7XG4gICAgdGhpcy5jb250YWluZXJNYW5hZ2VyID0gY29udGFpbmVyTWFuYWdlcjtcbiAgICBpZiAodGhpcy51c2VBY3Rpb25SZXNvbHZlcikge1xuICAgICAgdGhpcy5hY3Rpb25SZXNvbHZlciA9IG5ldyBBY3Rpb25SZXNvbHZlcih7XG4gICAgICAgIHN5bnRoZXRpY01vdXNlRXZlbnRTdXBwb3J0OiBFdmVudENvbnRyYWN0Lk1PVVNFX1NQRUNJQUxfU1VQUE9SVCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoRXZlbnRDb250cmFjdC5BMTFZX0NMSUNLX1NVUFBPUlQpIHtcbiAgICAgIC8vIEFkZCBhMTF5IGNsaWNrIHN1cHBvcnQgdG8gdGhlIGBFdmVudENvbnRyYWN0YC5cbiAgICAgIHRoaXMuYWRkQTExeUNsaWNrU3VwcG9ydCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIGV2ZW50OiBFdmVudCwgY29udGFpbmVyOiBFbGVtZW50KSB7XG4gICAgY29uc3QgZXZlbnRJbmZvID0gZXZlbnRJbmZvTGliLmNyZWF0ZUV2ZW50SW5mb0Zyb21QYXJhbWV0ZXJzKFxuICAgICAgLyogZXZlbnRUeXBlPSAqLyBldmVudFR5cGUsXG4gICAgICAvKiBldmVudD0gKi8gZXZlbnQsXG4gICAgICAvKiB0YXJnZXRFbGVtZW50PSAqLyBldmVudC50YXJnZXQgYXMgRWxlbWVudCxcbiAgICAgIC8qIGNvbnRhaW5lcj0gKi8gY29udGFpbmVyLFxuICAgICAgLyogdGltZXN0YW1wPSAqLyBEYXRlLm5vdygpLFxuICAgICk7XG4gICAgdGhpcy5oYW5kbGVFdmVudEluZm8oZXZlbnRJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYW4gYEV2ZW50SW5mb2AuXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUV2ZW50SW5mbyhldmVudEluZm86IGV2ZW50SW5mb0xpYi5FdmVudEluZm8pIHtcbiAgICBpZiAoIXRoaXMuZGlzcGF0Y2hlcikge1xuICAgICAgLy8gQWxsIGV2ZW50cyBhcmUgcXVldWVkIHdoZW4gdGhlIGRpc3BhdGNoZXIgaXNuJ3QgeWV0IGxvYWRlZC5cbiAgICAgIGV2ZW50SW5mb0xpYi5zZXRJc1JlcGxheShldmVudEluZm8sIHRydWUpO1xuICAgICAgdGhpcy5xdWV1ZWRFdmVudEluZm9zPy5wdXNoKGV2ZW50SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZUFjdGlvblJlc29sdmVyKSB7XG4gICAgICB0aGlzLmFjdGlvblJlc29sdmVyIS5yZXNvbHZlRXZlbnRUeXBlKGV2ZW50SW5mbyk7XG4gICAgICB0aGlzLmFjdGlvblJlc29sdmVyIS5yZXNvbHZlQWN0aW9uKGV2ZW50SW5mbyk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hlcihldmVudEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMganNhY3Rpb24gaGFuZGxlcnMgdG8gYmUgY2FsbGVkIGZvciB0aGUgZXZlbnQgdHlwZSBnaXZlbiBieVxuICAgKiBuYW1lLlxuICAgKlxuICAgKiBJZiB0aGUgZXZlbnQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCB0aGlzIGRvZXMgbm90aGluZy5cbiAgICpcbiAgICogQHBhcmFtIHByZWZpeGVkRXZlbnRUeXBlIElmIHN1cHBsaWVkLCB0aGlzIGV2ZW50IGlzIHVzZWQgaW5cbiAgICogICAgIHRoZSBhY3R1YWwgYnJvd3NlciBldmVudCByZWdpc3RyYXRpb24gaW5zdGVhZCBvZiB0aGUgbmFtZSB0aGF0IGlzXG4gICAqICAgICBleHBvc2VkIHRvIGpzYWN0aW9uLiBVc2UgdGhpcyBpZiB5b3UgZS5nLiB3YW50IHVzZXJzIHRvIGJlIGFibGVcbiAgICogICAgIHRvIHN1YnNjcmliZSB0byBqc2FjdGlvbj1cInRyYW5zaXRpb25FbmQ6Zm9vXCIgd2hpbGUgdGhlIHVuZGVybHlpbmdcbiAgICogICAgIGV2ZW50IGlzIHdlYmtpdFRyYW5zaXRpb25FbmQgaW4gb25lIGJyb3dzZXIgYW5kIG1velRyYW5zaXRpb25FbmRcbiAgICogICAgIGluIGFub3RoZXIuXG4gICAqL1xuICBhZGRFdmVudChldmVudFR5cGU6IHN0cmluZywgcHJlZml4ZWRFdmVudFR5cGU/OiBzdHJpbmcpIHtcbiAgICBpZiAoZXZlbnRUeXBlIGluIHRoaXMuZXZlbnRIYW5kbGVycyB8fCAhdGhpcy5jb250YWluZXJNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFFdmVudENvbnRyYWN0Lk1PVVNFX1NQRUNJQUxfU1VQUE9SVCAmJiBOT05fQlVCQkxJTkdfTU9VU0VfRVZFTlRTLmluZGV4T2YoZXZlbnRUeXBlKSA+PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGV2ZW50VHlwZTogc3RyaW5nLCBldmVudDogRXZlbnQsIGNvbnRhaW5lcjogRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVFdmVudChldmVudFR5cGUsIGV2ZW50LCBjb250YWluZXIpO1xuICAgIH07XG5cbiAgICAvLyBTdG9yZSB0aGUgY2FsbGJhY2sgdG8gYWxsb3cgdXMgdG8gcmVwbGF5IGV2ZW50cy5cbiAgICB0aGlzLmV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9IGV2ZW50SGFuZGxlcjtcblxuICAgIGNvbnN0IGJyb3dzZXJFdmVudFR5cGUgPSBldmVudExpYi5nZXRCcm93c2VyRXZlbnRUeXBlKHByZWZpeGVkRXZlbnRUeXBlIHx8IGV2ZW50VHlwZSk7XG5cbiAgICBpZiAoYnJvd3NlckV2ZW50VHlwZSAhPT0gZXZlbnRUeXBlKSB7XG4gICAgICBjb25zdCBldmVudFR5cGVzID0gdGhpcy5icm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXNbYnJvd3NlckV2ZW50VHlwZV0gfHwgW107XG4gICAgICBldmVudFR5cGVzLnB1c2goZXZlbnRUeXBlKTtcbiAgICAgIHRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzW2Jyb3dzZXJFdmVudFR5cGVdID0gZXZlbnRUeXBlcztcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRhaW5lck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihicm93c2VyRXZlbnRUeXBlLCAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnRIYW5kbGVyKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEF1dG9tYXRpY2FsbHkgaW5zdGFsbCBhIGtleXByZXNzL2tleWRvd24gZXZlbnQgaGFuZGxlciBpZiBzdXBwb3J0IGZvclxuICAgIC8vIGFjY2Vzc2libGUgY2xpY2tzIGlzIHR1cm5lZCBvbi5cbiAgICBpZiAodGhpcy5hZGRBMTF5Q2xpY2tMaXN0ZW5lciAmJiBldmVudFR5cGUgPT09IEV2ZW50VHlwZS5DTElDSykge1xuICAgICAgdGhpcy5hZGRFdmVudChFdmVudFR5cGUuS0VZRE9XTik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHF1ZXVlZCBlYXJseSBldmVudHMgYW5kIHJlcGxheSB0aGVtIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyXG4gICAqIGluIHRoZSBwcm92aWRlZCBldmVudCBjb250cmFjdC4gT25jZSBhbGwgdGhlIGV2ZW50cyBhcmUgcmVwbGF5ZWQsIGl0IGNsZWFuc1xuICAgKiB1cCB0aGUgZWFybHkgY29udHJhY3QuXG4gICAqL1xuICByZXBsYXlFYXJseUV2ZW50cyhcbiAgICBlYXJseUpzYWN0aW9uQ29udGFpbmVyOiBFYXJseUpzYWN0aW9uRGF0YUNvbnRhaW5lciA9IHdpbmRvdyBhcyBFYXJseUpzYWN0aW9uRGF0YUNvbnRhaW5lcixcbiAgKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGVhcmx5IGNvbnRyYWN0IGlzIHByZXNlbnQgYW5kIHByZXZlbnQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uXG4gICAgLy8gbW9yZSB0aGFuIG9uY2UuXG4gICAgY29uc3QgZWFybHlKc2FjdGlvbkRhdGE6IEVhcmx5SnNhY3Rpb25EYXRhIHwgdW5kZWZpbmVkID0gZWFybHlKc2FjdGlvbkNvbnRhaW5lci5fZWpzYTtcbiAgICBpZiAoIWVhcmx5SnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVwbGF5IHRoZSBlYXJseSBjb250cmFjdCBldmVudHMuXG4gICAgY29uc3QgZWFybHlFdmVudEluZm9zOiBldmVudEluZm9MaWIuRXZlbnRJbmZvW10gPSBlYXJseUpzYWN0aW9uRGF0YS5xO1xuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVhcmx5RXZlbnRJbmZvcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICBjb25zdCBlYXJseUV2ZW50SW5mbzogZXZlbnRJbmZvTGliLkV2ZW50SW5mbyA9IGVhcmx5RXZlbnRJbmZvc1tpZHhdO1xuICAgICAgY29uc3QgZXZlbnRUeXBlcyA9IHRoaXMuZ2V0RXZlbnRUeXBlc0ZvckJyb3dzZXJFdmVudFR5cGUoZWFybHlFdmVudEluZm8uZXZlbnRUeXBlKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBldmVudEluZm8gPSBldmVudEluZm9MaWIuY2xvbmVFdmVudEluZm8oZWFybHlFdmVudEluZm8pO1xuICAgICAgICAvLyBFdmVudEluZm8gZXZlbnRUeXBlIG1hcHMgdG8gSlNBY3Rpb24ncyBpbnRlcm5hbCBldmVudCB0eXBlLFxuICAgICAgICAvLyByYXRoZXIgdGhhbiB0aGUgYnJvd3NlciBldmVudCB0eXBlLlxuICAgICAgICBldmVudEluZm9MaWIuc2V0RXZlbnRUeXBlKGV2ZW50SW5mbywgZXZlbnRUeXBlc1tpXSk7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRJbmZvKGV2ZW50SW5mbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2xlYW4gdXAgdGhlIGVhcmx5IGNvbnRyYWN0LlxuICAgIGNvbnN0IGVhcmx5RXZlbnRIYW5kbGVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkID0gZWFybHlKc2FjdGlvbkRhdGEuaDtcbiAgICByZW1vdmVFdmVudExpc3RlbmVycyhlYXJseUpzYWN0aW9uRGF0YS5jLCBlYXJseUpzYWN0aW9uRGF0YS5ldCwgZWFybHlFdmVudEhhbmRsZXIpO1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzKGVhcmx5SnNhY3Rpb25EYXRhLmMsIGVhcmx5SnNhY3Rpb25EYXRhLmV0YywgZWFybHlFdmVudEhhbmRsZXIsIHRydWUpO1xuICAgIGRlbGV0ZSBlYXJseUpzYWN0aW9uQ29udGFpbmVyLl9lanNhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIEpTQWN0aW9uIGV2ZW50IHR5cGVzIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW5cbiAgICogYnJvd3NlciBldmVudCB0eXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFdmVudFR5cGVzRm9yQnJvd3NlckV2ZW50VHlwZShicm93c2VyRXZlbnRUeXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBldmVudFR5cGVzID0gW107XG4gICAgaWYgKHRoaXMuZXZlbnRIYW5kbGVyc1ticm93c2VyRXZlbnRUeXBlXSkge1xuICAgICAgZXZlbnRUeXBlcy5wdXNoKGJyb3dzZXJFdmVudFR5cGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5icm93c2VyRXZlbnRUeXBlVG9FeHRyYUV2ZW50VHlwZXNbYnJvd3NlckV2ZW50VHlwZV0pIHtcbiAgICAgIGV2ZW50VHlwZXMucHVzaCguLi50aGlzLmJyb3dzZXJFdmVudFR5cGVUb0V4dHJhRXZlbnRUeXBlc1ticm93c2VyRXZlbnRUeXBlXSk7XG4gICAgfVxuICAgIHJldHVybiBldmVudFR5cGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gZm9yIGEgZ2l2ZW4gZXZlbnQgdHlwZS5cbiAgICovXG4gIGhhbmRsZXIoZXZlbnRUeXBlOiBzdHJpbmcpOiBFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgdXAgdGhlIGV2ZW50IGNvbnRyYWN0LiBUaGlzIHJlc2V0cyBhbGwgb2YgdGhlIGBFdmVudENvbnRyYWN0YCdzXG4gICAqIGludGVybmFsIHN0YXRlLiBVc2VycyBhcmUgcmVzcG9uc2libGUgZm9yIG5vdCB1c2luZyB0aGlzIGBFdmVudENvbnRyYWN0YFxuICAgKiBhZnRlciBpdCBoYXMgYmVlbiBjbGVhbmVkIHVwLlxuICAgKi9cbiAgY2xlYW5VcCgpIHtcbiAgICB0aGlzLmNvbnRhaW5lck1hbmFnZXIhLmNsZWFuVXAoKTtcbiAgICB0aGlzLmNvbnRhaW5lck1hbmFnZXIgPSBudWxsO1xuICAgIHRoaXMuZXZlbnRIYW5kbGVycyA9IHt9O1xuICAgIHRoaXMuYnJvd3NlckV2ZW50VHlwZVRvRXh0cmFFdmVudFR5cGVzID0ge307XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gbnVsbDtcbiAgICB0aGlzLnF1ZXVlZEV2ZW50SW5mb3MgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGRpc3BhdGNoZXIgZnVuY3Rpb24uIEV2ZW50IGluZm8gb2YgZWFjaCBldmVudCBtYXBwZWQgdG9cbiAgICogYSBqc2FjdGlvbiBpcyBwYXNzZWQgZm9yIGhhbmRsaW5nIHRvIHRoaXMgY2FsbGJhY2suIFRoZSBxdWV1ZWRcbiAgICogZXZlbnRzIGFyZSBwYXNzZWQgYXMgd2VsbCB0byB0aGUgZGlzcGF0Y2hlciBmb3IgbGF0ZXIgcmVwbGF5aW5nXG4gICAqIG9uY2UgdGhlIGRpc3BhdGNoZXIgaXMgcmVnaXN0ZXJlZC4gQ2xlYXJzIHRoZSBldmVudCBxdWV1ZSB0byBudWxsLlxuICAgKlxuICAgKiBAcGFyYW0gZGlzcGF0Y2hlciBUaGUgZGlzcGF0Y2hlciBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHJlc3RyaWN0aW9uXG4gICAqL1xuICByZWdpc3RlckRpc3BhdGNoZXIoZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciwgcmVzdHJpY3Rpb246IFJlc3RyaWN0aW9uKSB7XG4gICAgdGhpcy5lY3JkKGRpc3BhdGNoZXIsIHJlc3RyaWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlbmFtZWQgYWxpYXMgZm9yIHJlZ2lzdGVyRGlzcGF0Y2hlci4gTmVjZXNzYXJ5IGZvciBhbnkgY29kZWJhc2VzIHRoYXRcbiAgICogc3BsaXQgdGhlIGBFdmVudENvbnRyYWN0YCBhbmQgYERpc3BhdGNoZXJgIGNvZGUgaW50byBkaWZmZXJlbnQgY29tcGlsYXRpb25cbiAgICogdW5pdHMuXG4gICAqL1xuICBlY3JkKGRpc3BhdGNoZXI6IERpc3BhdGNoZXIsIHJlc3RyaWN0aW9uOiBSZXN0cmljdGlvbikge1xuICAgIHRoaXMuZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG5cbiAgICBpZiAodGhpcy5xdWV1ZWRFdmVudEluZm9zPy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWV1ZWRFdmVudEluZm9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRJbmZvKHRoaXMucXVldWVkRXZlbnRJbmZvc1tpXSk7XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlZEV2ZW50SW5mb3MgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGExMXkgY2xpY2sgc3VwcG9ydCB0byB0aGUgZ2l2ZW4gYEV2ZW50Q29udHJhY3RgLiBNZWFudCB0byBiZSBjYWxsZWQgaW5cbiAgICogdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdCBhcyB0aGUgYEV2ZW50Q29udHJhY3RgLlxuICAgKi9cbiAgYWRkQTExeUNsaWNrU3VwcG9ydCgpIHtcbiAgICB0aGlzLmFkZEExMXlDbGlja1N1cHBvcnRJbXBsKFxuICAgICAgYTExeUNsaWNrTGliLnVwZGF0ZUV2ZW50SW5mb0ZvckExMXlDbGljayxcbiAgICAgIGExMXlDbGlja0xpYi5wcmV2ZW50RGVmYXVsdEZvckExMXlDbGljayxcbiAgICAgIGExMXlDbGlja0xpYi5wb3B1bGF0ZUNsaWNrT25seUFjdGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYTExeSBjbGljayBzdXBwb3J0IHRvIGJlIGRlZmVycmVkLiBNZWFudCB0byBiZSBjYWxsZWQgaW4gdGhlIHNhbWVcbiAgICogY29tcGlsYXRpb24gdW5pdCBhcyB0aGUgYEV2ZW50Q29udHJhY3RgLlxuICAgKi9cbiAgZXhwb3J0QWRkQTExeUNsaWNrU3VwcG9ydCgpIHtcbiAgICB0aGlzLmFkZEExMXlDbGlja0xpc3RlbmVyID0gdHJ1ZTtcbiAgICB0aGlzLmVjYWFjcyA9IHRoaXMuYWRkQTExeUNsaWNrU3VwcG9ydEltcGwuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlbmFtZWQgZnVuY3Rpb24gdGhhdCBsb2FkcyBhMTF5Q2xpY2tTdXBwb3J0LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRBMTF5Q2xpY2tTdXBwb3J0SW1wbChcbiAgICB1cGRhdGVFdmVudEluZm9Gb3JBMTF5Q2xpY2s6IHR5cGVvZiBhMTF5Q2xpY2tMaWIudXBkYXRlRXZlbnRJbmZvRm9yQTExeUNsaWNrLFxuICAgIHByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrOiB0eXBlb2YgYTExeUNsaWNrTGliLnByZXZlbnREZWZhdWx0Rm9yQTExeUNsaWNrLFxuICAgIHBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uOiB0eXBlb2YgYTExeUNsaWNrTGliLnBvcHVsYXRlQ2xpY2tPbmx5QWN0aW9uLFxuICApIHtcbiAgICB0aGlzLmFkZEExMXlDbGlja0xpc3RlbmVyID0gdHJ1ZTtcbiAgICBpZiAodGhpcy51c2VBY3Rpb25SZXNvbHZlcikge1xuICAgICAgdGhpcy5hY3Rpb25SZXNvbHZlciEuYWRkQTExeUNsaWNrU3VwcG9ydChcbiAgICAgICAgdXBkYXRlRXZlbnRJbmZvRm9yQTExeUNsaWNrLFxuICAgICAgICBwcmV2ZW50RGVmYXVsdEZvckExMXlDbGljayxcbiAgICAgICAgcG9wdWxhdGVDbGlja09ubHlBY3Rpb24sXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyhcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgZXZlbnRUeXBlczogc3RyaW5nW10sXG4gIGVhcmx5RXZlbnRIYW5kbGVyOiAoZTogRXZlbnQpID0+IHZvaWQsXG4gIGNhcHR1cmU/OiBib29sZWFuLFxuKSB7XG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGV2ZW50VHlwZXMubGVuZ3RoOyBpZHgrKykge1xuICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZXNbaWR4XSwgZWFybHlFdmVudEhhbmRsZXIsIC8qIHVzZUNhcHR1cmUgKi8gY2FwdHVyZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBZGRzIGExMXkgY2xpY2sgc3VwcG9ydCB0byB0aGUgZ2l2ZW4gYEV2ZW50Q29udHJhY3RgLiBNZWFudCB0byBiZSBjYWxsZWRcbiAqIGluIGEgZGlmZmVyZW50IGNvbXBpbGF0aW9uIHVuaXQgZnJvbSB0aGUgYEV2ZW50Q29udHJhY3RgLiBUaGUgYEV2ZW50Q29udHJhY3RgXG4gKiBtdXN0IGhhdmUgY2FsbGVkIGBleHBvcnRBZGRBMTF5Q2xpY2tTdXBwb3J0YCBpbiBpdHMgY29tcGlsYXRpb24gdW5pdCBmb3IgdGhpc1xuICogdG8gaGF2ZSBhbnkgZWZmZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGVmZXJyZWRBMTF5Q2xpY2tTdXBwb3J0KGV2ZW50Q29udHJhY3Q6IEV2ZW50Q29udHJhY3QpIHtcbiAgZXZlbnRDb250cmFjdC5lY2FhY3M/LihcbiAgICBhMTF5Q2xpY2tMaWIudXBkYXRlRXZlbnRJbmZvRm9yQTExeUNsaWNrLFxuICAgIGExMXlDbGlja0xpYi5wcmV2ZW50RGVmYXVsdEZvckExMXlDbGljayxcbiAgICBhMTF5Q2xpY2tMaWIucG9wdWxhdGVDbGlja09ubHlBY3Rpb24sXG4gICk7XG59XG4iXX0=
|