system-testing 1.0.116 → 1.0.117
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/build/expo-router-dismiss-to.d.ts +24 -0
- package/build/expo-router-dismiss-to.js +48 -0
- package/build/system-test-browser-helper.d.ts +2 -2
- package/build/system-test-browser-helper.js +10 -7
- package/build/use-system-test-expo.js +3 -21
- package/build/use-system-test-react-native.d.ts +4 -4
- package/build/use-system-test-react-native.js +3 -3
- package/build/use-system-test-shape-hook.d.ts +10 -4
- package/build/use-system-test-shape-hook.js +11 -5
- package/build/use-system-test.d.ts +4 -4
- package/build/use-system-test.js +3 -3
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resets an Expo Router stack to a target path for a system-test run.
|
|
3
|
+
* @param {object} args
|
|
4
|
+
* @param {ExpoNavigationContainerRef} args.navigationContainerRef
|
|
5
|
+
* @param {string} args.path
|
|
6
|
+
* @param {ExpoRouter} args.router
|
|
7
|
+
* @returns {Promise<void>}
|
|
8
|
+
*/
|
|
9
|
+
export function dismissExpoRouterToPath({ navigationContainerRef, path, router }: {
|
|
10
|
+
navigationContainerRef: ExpoNavigationContainerRef;
|
|
11
|
+
path: string;
|
|
12
|
+
router: ExpoRouter;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
export type ExpoNavigationState = {
|
|
15
|
+
addListener: (eventName: "state", callback: () => void) => () => void;
|
|
16
|
+
canGoBack: () => boolean;
|
|
17
|
+
};
|
|
18
|
+
export type ExpoNavigationContainerRef = {
|
|
19
|
+
current: ExpoNavigationState | null | undefined;
|
|
20
|
+
};
|
|
21
|
+
export type ExpoRouter = {
|
|
22
|
+
dismissAll: () => void;
|
|
23
|
+
dismissTo: (path: string) => void;
|
|
24
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** @typedef {{addListener: (eventName: "state", callback: () => void) => () => void, canGoBack: () => boolean}} ExpoNavigationState */
|
|
2
|
+
/** @typedef {{current: ExpoNavigationState | null | undefined}} ExpoNavigationContainerRef */
|
|
3
|
+
/** @typedef {{dismissAll: () => void, dismissTo: (path: string) => void}} ExpoRouter */
|
|
4
|
+
/**
|
|
5
|
+
* Builds a one-shot listener for the next committed React Navigation state.
|
|
6
|
+
* @param {ExpoNavigationState} navigation
|
|
7
|
+
* @returns {{promise: Promise<void>, unsubscribe: () => void}}
|
|
8
|
+
*/
|
|
9
|
+
function waitForNavigationStateChange(navigation) {
|
|
10
|
+
let unsubscribe = () => { };
|
|
11
|
+
/** @type {Promise<void>} */
|
|
12
|
+
const promise = new Promise((resolve) => {
|
|
13
|
+
unsubscribe = navigation.addListener("state", () => {
|
|
14
|
+
unsubscribe();
|
|
15
|
+
resolve();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
return { promise, unsubscribe };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resets an Expo Router stack to a target path for a system-test run.
|
|
22
|
+
* @param {object} args
|
|
23
|
+
* @param {ExpoNavigationContainerRef} args.navigationContainerRef
|
|
24
|
+
* @param {string} args.path
|
|
25
|
+
* @param {ExpoRouter} args.router
|
|
26
|
+
* @returns {Promise<void>}
|
|
27
|
+
*/
|
|
28
|
+
export async function dismissExpoRouterToPath({ navigationContainerRef, path, router }) {
|
|
29
|
+
// Pop every other screen off the Stack so previously-visited routes
|
|
30
|
+
// unmount instead of accumulating in DOM with display:none. Without this,
|
|
31
|
+
// react-native-web's global PressResponder gets confused by stale
|
|
32
|
+
// Pressables that share the same testID as the visible one and Selenium
|
|
33
|
+
// clicks fail to fire onPress.
|
|
34
|
+
const navigation = navigationContainerRef.current;
|
|
35
|
+
if (navigation && navigation.canGoBack()) {
|
|
36
|
+
const stateChange = waitForNavigationStateChange(navigation);
|
|
37
|
+
try {
|
|
38
|
+
router.dismissAll();
|
|
39
|
+
await stateChange.promise;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
stateChange.unsubscribe();
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
router.dismissTo(path);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwby1yb3V0ZXItZGlzbWlzcy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvLXJvdXRlci1kaXNtaXNzLXRvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVJQUF1STtBQUN2SSw4RkFBOEY7QUFDOUYsd0ZBQXdGO0FBRXhGOzs7O0dBSUc7QUFDSCxTQUFTLDRCQUE0QixDQUFDLFVBQVU7SUFDOUMsSUFBSSxXQUFXLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBQzFCLDRCQUE0QjtJQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3RDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDakQsV0FBVyxFQUFFLENBQUE7WUFDYixPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBQyxDQUFBO0FBQy9CLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxFQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUM7SUFDbEYsb0VBQW9FO0lBQ3BFLDBFQUEwRTtJQUMxRSxrRUFBa0U7SUFDbEUsd0VBQXdFO0lBQ3hFLCtCQUErQjtJQUMvQixNQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUE7SUFFakQsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFNUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ25CLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUN6QixNQUFNLEtBQUssQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEB0eXBlZGVmIHt7YWRkTGlzdGVuZXI6IChldmVudE5hbWU6IFwic3RhdGVcIiwgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWQsIGNhbkdvQmFjazogKCkgPT4gYm9vbGVhbn19IEV4cG9OYXZpZ2F0aW9uU3RhdGUgKi9cbi8qKiBAdHlwZWRlZiB7e2N1cnJlbnQ6IEV4cG9OYXZpZ2F0aW9uU3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkfX0gRXhwb05hdmlnYXRpb25Db250YWluZXJSZWYgKi9cbi8qKiBAdHlwZWRlZiB7e2Rpc21pc3NBbGw6ICgpID0+IHZvaWQsIGRpc21pc3NUbzogKHBhdGg6IHN0cmluZykgPT4gdm9pZH19IEV4cG9Sb3V0ZXIgKi9cblxuLyoqXG4gKiBCdWlsZHMgYSBvbmUtc2hvdCBsaXN0ZW5lciBmb3IgdGhlIG5leHQgY29tbWl0dGVkIFJlYWN0IE5hdmlnYXRpb24gc3RhdGUuXG4gKiBAcGFyYW0ge0V4cG9OYXZpZ2F0aW9uU3RhdGV9IG5hdmlnYXRpb25cbiAqIEByZXR1cm5zIHt7cHJvbWlzZTogUHJvbWlzZTx2b2lkPiwgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWR9fVxuICovXG5mdW5jdGlvbiB3YWl0Rm9yTmF2aWdhdGlvblN0YXRlQ2hhbmdlKG5hdmlnYXRpb24pIHtcbiAgbGV0IHVuc3Vic2NyaWJlID0gKCkgPT4ge31cbiAgLyoqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICB1bnN1YnNjcmliZSA9IG5hdmlnYXRpb24uYWRkTGlzdGVuZXIoXCJzdGF0ZVwiLCAoKSA9PiB7XG4gICAgICB1bnN1YnNjcmliZSgpXG4gICAgICByZXNvbHZlKClcbiAgICB9KVxuICB9KVxuXG4gIHJldHVybiB7cHJvbWlzZSwgdW5zdWJzY3JpYmV9XG59XG5cbi8qKlxuICogUmVzZXRzIGFuIEV4cG8gUm91dGVyIHN0YWNrIHRvIGEgdGFyZ2V0IHBhdGggZm9yIGEgc3lzdGVtLXRlc3QgcnVuLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAqIEBwYXJhbSB7RXhwb05hdmlnYXRpb25Db250YWluZXJSZWZ9IGFyZ3MubmF2aWdhdGlvbkNvbnRhaW5lclJlZlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aFxuICogQHBhcmFtIHtFeHBvUm91dGVyfSBhcmdzLnJvdXRlclxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkaXNtaXNzRXhwb1JvdXRlclRvUGF0aCh7bmF2aWdhdGlvbkNvbnRhaW5lclJlZiwgcGF0aCwgcm91dGVyfSkge1xuICAvLyBQb3AgZXZlcnkgb3RoZXIgc2NyZWVuIG9mZiB0aGUgU3RhY2sgc28gcHJldmlvdXNseS12aXNpdGVkIHJvdXRlc1xuICAvLyB1bm1vdW50IGluc3RlYWQgb2YgYWNjdW11bGF0aW5nIGluIERPTSB3aXRoIGRpc3BsYXk6bm9uZS4gV2l0aG91dCB0aGlzLFxuICAvLyByZWFjdC1uYXRpdmUtd2ViJ3MgZ2xvYmFsIFByZXNzUmVzcG9uZGVyIGdldHMgY29uZnVzZWQgYnkgc3RhbGVcbiAgLy8gUHJlc3NhYmxlcyB0aGF0IHNoYXJlIHRoZSBzYW1lIHRlc3RJRCBhcyB0aGUgdmlzaWJsZSBvbmUgYW5kIFNlbGVuaXVtXG4gIC8vIGNsaWNrcyBmYWlsIHRvIGZpcmUgb25QcmVzcy5cbiAgY29uc3QgbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25Db250YWluZXJSZWYuY3VycmVudFxuXG4gIGlmIChuYXZpZ2F0aW9uICYmIG5hdmlnYXRpb24uY2FuR29CYWNrKCkpIHtcbiAgICBjb25zdCBzdGF0ZUNoYW5nZSA9IHdhaXRGb3JOYXZpZ2F0aW9uU3RhdGVDaGFuZ2UobmF2aWdhdGlvbilcblxuICAgIHRyeSB7XG4gICAgICByb3V0ZXIuZGlzbWlzc0FsbCgpXG4gICAgICBhd2FpdCBzdGF0ZUNoYW5nZS5wcm9taXNlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHN0YXRlQ2hhbmdlLnVuc3Vic2NyaWJlKClcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgcm91dGVyLmRpc21pc3NUbyhwYXRoKVxufVxuIl19
|
|
@@ -70,11 +70,11 @@ export default class SystemTestBrowserHelper {
|
|
|
70
70
|
* Emits a command event and throws when no listener handled it.
|
|
71
71
|
* @param {string} eventName
|
|
72
72
|
* @param {{path: string}} payload
|
|
73
|
-
* @returns {void}
|
|
73
|
+
* @returns {Promise<void>}
|
|
74
74
|
*/
|
|
75
75
|
emitCommandEvent(eventName: string, payload: {
|
|
76
76
|
path: string;
|
|
77
|
-
}): void
|
|
77
|
+
}): Promise<void>;
|
|
78
78
|
/**
|
|
79
79
|
* @param {any[]} args
|
|
80
80
|
* @returns {void}
|
|
@@ -110,11 +110,11 @@ class SystemTestBrowserHelper {
|
|
|
110
110
|
return { result: "scoundrel-ready" };
|
|
111
111
|
}
|
|
112
112
|
else if (data.type == "visit") {
|
|
113
|
-
this.emitCommandEvent("navigate", { path: data.path });
|
|
113
|
+
await this.emitCommandEvent("navigate", { path: data.path });
|
|
114
114
|
return { result: "visited" };
|
|
115
115
|
}
|
|
116
116
|
else if (data.type == "dismissTo") {
|
|
117
|
-
this.emitCommandEvent("dismissTo", { path: data.path });
|
|
117
|
+
await this.emitCommandEvent("dismissTo", { path: data.path });
|
|
118
118
|
return { result: "dismissed" };
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
@@ -290,13 +290,16 @@ class SystemTestBrowserHelper {
|
|
|
290
290
|
* Emits a command event and throws when no listener handled it.
|
|
291
291
|
* @param {string} eventName
|
|
292
292
|
* @param {{path: string}} payload
|
|
293
|
-
* @returns {void}
|
|
293
|
+
* @returns {Promise<void>}
|
|
294
294
|
*/
|
|
295
|
-
emitCommandEvent(eventName, payload) {
|
|
296
|
-
const
|
|
297
|
-
if (
|
|
295
|
+
async emitCommandEvent(eventName, payload) {
|
|
296
|
+
const listeners = this.events.listeners(eventName);
|
|
297
|
+
if (listeners.length === 0) {
|
|
298
298
|
throw new Error(`No listener registered for command event: ${eventName} (${payload.path})`);
|
|
299
299
|
}
|
|
300
|
+
for (const listener of listeners) {
|
|
301
|
+
await listener(payload);
|
|
302
|
+
}
|
|
300
303
|
}
|
|
301
304
|
/**
|
|
302
305
|
* @param {any} arg
|
|
@@ -381,4 +384,4 @@ class SystemTestBrowserHelper {
|
|
|
381
384
|
/** @type {string | undefined} */
|
|
382
385
|
SystemTestBrowserHelper._defaultHost = undefined;
|
|
383
386
|
export default SystemTestBrowserHelper;
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXRlc3QtYnJvd3Nlci1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3lzdGVtLXRlc3QtYnJvd3Nlci1oZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLDZDQUE2QyxDQUFBO0FBQ2hFLE9BQU8sZUFBZSxNQUFNLG9FQUFvRSxDQUFBO0FBQ2hHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxzQkFBc0IsTUFBTSwrQkFBK0IsQ0FBQTtBQUVsRSxNQUFNLG1DQUFtQyxHQUFHLEdBQUcsQ0FBQTtBQUMvQyxNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQTtBQUNuRCxNQUFNLHVDQUF1QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3ZELG9DQUFvQyxHQUFHLG1DQUFtQyxDQUMzRSxDQUFBO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sTUFBTSxHQUFHO0lBQ2IsdUJBQXVCLEVBQUUsSUFBSTtDQUM5QixDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxjQUFjLENBQUMsS0FBSztJQUMzQixJQUFJLEtBQUssWUFBWSxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFeEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQztBQUVELE1BQXFCLHVCQUF1QjtJQUsxQzs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUk7UUFDeEIsdUJBQXVCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLGFBQWEsRUFBRSxRQUFRO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDcEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQTtRQUUvQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFNUIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQ25FLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO1FBQzNELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQTtJQUN2QyxDQUFDO0lBRUQ7UUFsREEscUNBQWdDLEdBQUcsQ0FBQyxDQUFBO1FBb1FwQzs7O1dBR0c7UUFDSCxxQkFBZ0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFBO1lBRTNGLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQTtRQUVEOzs7V0FHRztRQUNILG1CQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQTtZQUV6RixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1lBQ3pDLENBQUM7UUFDSCxDQUFDLENBQUE7UUE0Q0Q7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLEtBQUssRUFBRSxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUE7b0JBRTNCLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7d0JBQ3BDLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUE7b0JBQ3pDLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUMvQixNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO2dCQUNwQyxDQUFDO2dCQUVELE9BQU8sRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFDLENBQUE7WUFDaEMsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUU1QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUM3QixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO2dCQUNsQyxDQUFDO2dCQUVELE9BQU8sRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFDLENBQUE7WUFDOUIsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtnQkFDcEMsT0FBTyxFQUFDLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxDQUFBO1lBQ3BDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO2dCQUNwRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFBO1lBQzVCLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO2dCQUNyRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBQyxDQUFBO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNuRixDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBNVRDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFBO1FBQ3pGLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUVoQyxNQUFNLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFBO1FBRXJDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFBO1FBRTdFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQTtRQUVqRSxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUVyRSxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7UUFDN0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7b0JBQ3hDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDcEIsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUE7SUFDN0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQjtZQUFFLE9BQU07UUFFckMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJO2dCQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDbEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksZUFBZTtnQkFDekMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTthQUMxQixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0I7WUFBRSxPQUFNO1FBRXJDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNuQixVQUFVLEVBQUUsb0JBQW9CO2dCQUNoQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSwrQ0FBK0M7Z0JBQ2hHLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7YUFDMUIsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxXQUFXLENBQUMsSUFBSTtRQUNkLElBQUksU0FBUyxDQUFBO1FBRWIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN4QyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDakIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3pDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUUxQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGdCQUFnQjtRQUNkLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxDQUFDLENBQUE7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixzQkFBc0I7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzNFLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDL0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFBO1FBRTlCLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFBO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQTtRQUVoQyxtQ0FBbUM7UUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7Z0JBQ2hELE9BQU07WUFDUixDQUFDO1lBRUQsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVM7Z0JBQUUsT0FBTTtZQUV2RCxJQUFJLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxDQUFBO1lBQzFDLElBQUksSUFBSSxDQUFDLGdDQUFnQyxHQUFHLHVDQUF1QyxFQUFFLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxPQUFNO1lBQ1IsQ0FBQztZQUVELGtCQUFrQixHQUFHLElBQUksQ0FBQTtZQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUztvQkFBRSxPQUFNO2dCQUUzQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtZQUMvQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsQ0FBQTtRQUN6QyxDQUFDLENBQUE7UUFFRCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDdEQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3RELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sR0FBRyxJQUFJLENBQUE7WUFDYixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFBO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDNUIsQ0FBQyxDQUFDLENBQUE7UUFDRixTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLGlCQUFpQjtRQUNmLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDcEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxFQUFFLFFBQVEsSUFBSSxXQUFXLENBQUE7UUFDckQsTUFBTSxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQTtRQUMvQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFBO1FBRXhELElBQUksT0FBTztZQUFFLE9BQU8sT0FBTyxDQUFBO1FBRTNCLElBQUksdUJBQXVCLENBQUMsWUFBWTtZQUFFLE9BQU8sdUJBQXVCLENBQUMsWUFBWSxDQUFBO1FBRXJGLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxXQUFXLENBQUE7UUFFL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRXpDLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxXQUFXLENBQUE7UUFFeEMsSUFBSSxZQUFZLEtBQUssU0FBUztZQUFFLE9BQU8sV0FBVyxDQUFBO1FBRWxELE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3JCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUM7SUFFckMsOEJBQThCO0lBQzlCLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBRWxDOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE9BQU87UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRXBELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFNBQVMsS0FBSyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUM3RixDQUFDO0lBQ0gsQ0FBQztJQTBCRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGNBQWMsR0FBRyxFQUFFO1FBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLGFBQWEsQ0FBQTtZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBRWpCLEtBQUssTUFBTSxLQUFLLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFBO1lBQzVELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JFLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLGFBQWEsQ0FBQTtZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQixDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUVqQixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQTtZQUNoRSxDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPLFdBQVcsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQTtRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQztJQUNILENBQUM7SUE2Q0Q7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFFBQVE7UUFDbkIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQTtJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFFBQVE7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQTtJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsUUFBUTtRQUN4QixJQUFJLENBQUMsMEJBQTBCLEdBQUcsUUFBUSxDQUFBO0lBQzVDLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQTtRQUNqRSxDQUFDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUE7UUFFckMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUE7UUFDckMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUc7UUFDakIsbUJBQW1CO1FBQ25CLE9BQU8sTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDOztBQS9aRCxpQ0FBaUM7QUFDMUIsb0NBQVksR0FBRyxTQUFTLEFBQVosQ0FBWTtlQUZaLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQ2xpZW50IGZyb20gXCJzY291bmRyZWwtcmVtb3RlLWV2YWwvYnVpbGQvY2xpZW50L2luZGV4LmpzXCJcbmltcG9ydCBDbGllbnRXZWJTb2NrZXQgZnJvbSBcInNjb3VuZHJlbC1yZW1vdGUtZXZhbC9idWlsZC9jbGllbnQvY29ubmVjdGlvbnMvd2ViLXNvY2tldC9pbmRleC5qc1wiXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuXG5pbXBvcnQgU3lzdGVtVGVzdENvbW11bmljYXRvciBmcm9tIFwiLi9zeXN0ZW0tdGVzdC1jb21tdW5pY2F0b3IuanNcIlxuXG5jb25zdCBDTElFTlRfV0VCU09DS0VUX1JFQ09OTkVDVF9ERUxBWV9NUyA9IDI1MFxuY29uc3QgQ0xJRU5UX1dFQlNPQ0tFVF9SRUNPTk5FQ1RfV0lORE9XX01TID0gMTIwMDAwXG5jb25zdCBDTElFTlRfV0VCU09DS0VUX01BWF9SRUNPTk5FQ1RfQVRURU1QVFMgPSBNYXRoLmNlaWwoXG4gIENMSUVOVF9XRUJTT0NLRVRfUkVDT05ORUNUX1dJTkRPV19NUyAvIENMSUVOVF9XRUJTT0NLRVRfUkVDT05ORUNUX0RFTEFZX01TXG4pXG5cbi8qKiBAdHlwZSB7e3N5c3RlbVRlc3RCcm93c2VySGVscGVyOiBTeXN0ZW1UZXN0QnJvd3NlckhlbHBlciB8IG51bGx9fSAqL1xuY29uc3Qgc2hhcmVkID0ge1xuICBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcjogbnVsbFxufVxuXG4vKipcbiAqIEBwYXJhbSB7RXZlbnQgfCBFcnJvcn0gZXJyb3JcbiAqIEByZXR1cm5zIHtFcnJvcn1cbiAqL1xuZnVuY3Rpb24gd2ViU29ja2V0RXJyb3IoZXJyb3IpIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiBlcnJvclxuXG4gIHJldHVybiBuZXcgRXJyb3IoYFdlYlNvY2tldCBjb25uZWN0aW9uIGZhaWxlZDogJHtlcnJvci50eXBlfWApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN5c3RlbVRlc3RCcm93c2VySGVscGVyIHtcbiAgLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIHN0YXRpYyBfZGVmYXVsdEhvc3QgPSB1bmRlZmluZWRcbiAgY2xpZW50V2ViU29ja2V0UmVjb25uZWN0QXR0ZW1wdHMgPSAwXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgaG9zdCBmb3IgYWxsIGJyb3dzZXIgaGVscGVycy4gVXNlIHRoaXMgdG8gb3ZlcnJpZGUgdGhlXG4gICAqIGF1dG8tZGV0ZWN0ZWQgaG9zdCB3aGVuIEVYUE9fUFVCTElDXyogZW52IHZhcnMgY2Fubm90IGJlIGlubGluZWQgKGUuZy4sXG4gICAqIGNvZGUgaW4gbm9kZV9tb2R1bGVzIGlzIG5vdCBwcm9jZXNzZWQgYnkgYmFiZWwtcHJlc2V0LWV4cG8pLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaG9zdFxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBzZXREZWZhdWx0SG9zdChob3N0KSB7XG4gICAgU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIuX2RlZmF1bHRIb3N0ID0gaG9zdFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbWV0ZXJOYW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmYWxsYmFja1xuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0U3lzdGVtVGVzdFBvcnQocGFyYW1ldGVyTmFtZSwgZmFsbGJhY2spIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IGdsb2JhbFRoaXMubG9jYXRpb25cbiAgICBjb25zdCBzZWFyY2ggPSBsb2NhdGlvbj8uc2VhcmNoXG5cbiAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCkuZ2V0KHBhcmFtZXRlck5hbWUpXG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2tcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG5cbiAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihwYXJzZWQpICYmIHBhcnNlZCA+IDAgPyBwYXJzZWQgOiBmYWxsYmFja1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtTeXN0ZW1UZXN0QnJvd3NlckhlbHBlciB8IG51bGx9ICovXG4gIHN0YXRpYyBnZXRDdXJyZW50KCkge1xuICAgIHJldHVybiBzaGFyZWQuc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXJcbiAgfVxuXG4gIHN0YXRpYyBjdXJyZW50KCkge1xuICAgIGlmICghc2hhcmVkLnN5c3RlbVRlc3RCcm93c2VySGVscGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjdXJyZW50IFN5c3RlbVRlc3RCcm93c2VySGVscGVyIHNldFwiKVxuICAgIH1cblxuICAgIHJldHVybiBzaGFyZWQuc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29tbXVuaWNhdG9yID0gbmV3IFN5c3RlbVRlc3RDb21tdW5pY2F0b3Ioe3BhcmVudDogdGhpcywgb25Db21tYW5kOiB0aGlzLm9uQ29tbWFuZH0pXG4gICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlXG4gICAgdGhpcy5faGFzSW5pdGlhbGl6ZWQgPSBmYWxzZVxuICAgIHRoaXMuZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgICBzaGFyZWQuc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIgPSB0aGlzXG5cbiAgICB0aGlzLnN0YXJ0U2NvdW5kcmVsKClcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0U2NvdW5kcmVsKCkge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmdldFN5c3RlbVRlc3RIb3N0KClcbiAgICBjb25zdCBzY291bmRyZWxQb3J0ID0gdGhpcy5nZXRTeXN0ZW1UZXN0UG9ydChcInN5c3RlbVRlc3RTY291bmRyZWxQb3J0XCIsIDgwOTApXG5cbiAgICB0aGlzLnNjb3VuZHJlbFdzID0gbmV3IFdlYlNvY2tldChgd3M6Ly8ke2hvc3R9OiR7c2NvdW5kcmVsUG9ydH1gKVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHRoaXMuc2NvdW5kcmVsQ2xpZW50V2ViU29ja2V0ID0gbmV3IENsaWVudFdlYlNvY2tldCh0aGlzLnNjb3VuZHJlbFdzKVxuXG4gICAgYXdhaXQgdGhpcy5zY291bmRyZWxDbGllbnRXZWJTb2NrZXQud2FpdEZvck9wZW5lZCgpXG5cbiAgICB0aGlzLnNjb3VuZHJlbENsaWVudCA9IG5ldyBDbGllbnQodGhpcy5zY291bmRyZWxDbGllbnRXZWJTb2NrZXQsIHtlbmFibGVTZXJ2ZXJDb250cm9sOiB0cnVlfSlcbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwic2NvdW5kcmVsU3RhcnRlZFwiKVxuICB9XG5cbiAgd2FpdEZvclNjb3VuZHJlbFN0YXJ0ZWQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAodGhpcy5zY291bmRyZWxDbGllbnQpIHtcbiAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV2ZW50cy5vbmNlKFwic2NvdW5kcmVsU3RhcnRlZFwiLCAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFNjb3VuZHJlbCgpIHtcbiAgICBpZiAoIXRoaXMuc2NvdW5kcmVsQ2xpZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY291bmRyZWwgY2xpZW50IGlzIG5vdCBzdGFydGVkIHlldFwiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNjb3VuZHJlbENsaWVudFxuICB9XG5cbiAgY29ubmVjdE9uRXJyb3IoKSB7XG4gICAgaWYgKCF3aW5kb3c/LmFkZEV2ZW50TGlzdGVuZXIpIHJldHVyblxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3Ioe1xuICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgIGVycm9yOiBldmVudC5lcnJvcixcbiAgICAgICAgZXJyb3JDbGFzczogZXZlbnQuZXJyb3I/Lm5hbWUsXG4gICAgICAgIGZpbGU6IGV2ZW50LmZpbGVuYW1lLFxuICAgICAgICBsaW5lOiBldmVudC5saW5lbm8sXG4gICAgICAgIG1lc3NhZ2U6IGV2ZW50Lm1lc3NhZ2UgfHwgXCJVbmtub3duIGVycm9yXCIsXG4gICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGNvbm5lY3RVbmhhbmRsZWRSZWplY3Rpb24oKSB7XG4gICAgaWYgKCF3aW5kb3c/LmFkZEV2ZW50TGlzdGVuZXIpIHJldHVyblxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIiwgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKHtcbiAgICAgICAgdHlwZTogXCJ1bmhhbmRsZWRyZWplY3Rpb25cIixcbiAgICAgICAgZXJyb3I6IGV2ZW50LnJlYXNvbixcbiAgICAgICAgZXJyb3JDbGFzczogXCJVbmhhbmRsZWRSZWplY3Rpb25cIixcbiAgICAgICAgbWVzc2FnZTogZXZlbnQucmVhc29uLm1lc3NhZ2UgfHwgZXZlbnQucmVhc29uIHx8IFwiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIHdpdGhvdXQgYSBtZXNzYWdlXCIsXG4gICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGEuYmFja3RyYWNlXVxuICAgKiBAcGFyYW0ge0Vycm9yfSBbZGF0YS5lcnJvcl1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhLmVycm9yQ2xhc3NdXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5maWxlXVxuICAgKiBAcGFyYW0ge251bWJlcn0gW2RhdGEubGluZV1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhLm1lc3NhZ2VdXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS50eXBlXVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGEudXJsXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGhhbmRsZUVycm9yKGRhdGEpIHtcbiAgICBsZXQgYmFja3RyYWNlXG5cbiAgICBpZiAoZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yLnN0YWNrKSB7XG4gICAgICBiYWNrdHJhY2UgPSBkYXRhLmVycm9yLnN0YWNrLnNwbGl0KFwiXFxuXCIpXG4gICAgICBiYWNrdHJhY2Uuc2hpZnQoKVxuICAgICAgYmFja3RyYWNlID0gYmFja3RyYWNlLmpvaW4oXCJcXG5cIilcbiAgICB9IGVsc2UgaWYgKGRhdGEuZmlsZSkge1xuICAgICAgYmFja3RyYWNlID0gYCR7ZGF0YS5maWxlfToke2RhdGEubGluZX1gXG4gICAgfVxuXG4gICAgZGF0YS5iYWNrdHJhY2UgPSBiYWNrdHJhY2VcblxuICAgIHRoaXMuY29tbXVuaWNhdG9yLnNlbmRDb21tYW5kKGRhdGEpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgdGhpcy5jbGllbnRXZWJTb2NrZXRSZWNvbm5lY3RBdHRlbXB0cyA9IDBcbiAgICB0aGlzLmNvbm5lY3RDbGllbnRXZWJTb2NrZXQoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBjb25uZWN0Q2xpZW50V2ViU29ja2V0KCkge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmdldFN5c3RlbVRlc3RIb3N0KClcbiAgICBjb25zdCBjbGllbnRXc1BvcnQgPSB0aGlzLmdldFN5c3RlbVRlc3RQb3J0KFwic3lzdGVtVGVzdENsaWVudFdzUG9ydFwiLCAxOTg1KVxuICAgIGNvbnN0IHdlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtob3N0fToke2NsaWVudFdzUG9ydH1gKVxuICAgIGxldCBvcGVuZWQgPSBmYWxzZVxuICAgIGxldCByZWNvbm5lY3RTY2hlZHVsZWQgPSBmYWxzZVxuXG4gICAgdGhpcy53cyA9IHdlYnNvY2tldFxuICAgIHRoaXMuY29tbXVuaWNhdG9yLndzID0gd2Vic29ja2V0XG5cbiAgICAvKiogQHBhcmFtIHtFdmVudCB8IEVycm9yfSBlcnJvciAqL1xuICAgIGNvbnN0IHNjaGVkdWxlUmVjb25uZWN0ID0gKGVycm9yKSA9PiB7XG4gICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgIHRoaXMuY29tbXVuaWNhdG9yLm9uRXJyb3Iod2ViU29ja2V0RXJyb3IoZXJyb3IpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29ubmVjdFNjaGVkdWxlZCB8fCB0aGlzLndzICE9PSB3ZWJzb2NrZXQpIHJldHVyblxuXG4gICAgICB0aGlzLmNsaWVudFdlYlNvY2tldFJlY29ubmVjdEF0dGVtcHRzICs9IDFcbiAgICAgIGlmICh0aGlzLmNsaWVudFdlYlNvY2tldFJlY29ubmVjdEF0dGVtcHRzID4gQ0xJRU5UX1dFQlNPQ0tFVF9NQVhfUkVDT05ORUNUX0FUVEVNUFRTKSB7XG4gICAgICAgIHRoaXMuY29tbXVuaWNhdG9yLm9uRXJyb3Iod2ViU29ja2V0RXJyb3IoZXJyb3IpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVjb25uZWN0U2NoZWR1bGVkID0gdHJ1ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChvcGVuZWQgfHwgdGhpcy53cyAhPT0gd2Vic29ja2V0KSByZXR1cm5cblxuICAgICAgICB0aGlzLmNvbm5lY3RDbGllbnRXZWJTb2NrZXQoKVxuICAgICAgfSwgQ0xJRU5UX1dFQlNPQ0tFVF9SRUNPTk5FQ1RfREVMQVlfTVMpXG4gICAgfVxuXG4gICAgd2Vic29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBzY2hlZHVsZVJlY29ubmVjdClcbiAgICB3ZWJzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsb3NlXCIsIHNjaGVkdWxlUmVjb25uZWN0KVxuICAgIHdlYnNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCAoKSA9PiB7XG4gICAgICBvcGVuZWQgPSB0cnVlXG4gICAgICB0aGlzLmNsaWVudFdlYlNvY2tldFJlY29ubmVjdEF0dGVtcHRzID0gMFxuICAgICAgdGhpcy5jb21tdW5pY2F0b3Iub25PcGVuKClcbiAgICB9KVxuICAgIHdlYnNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZXZlbnQpID0+IHRoaXMuY29tbXVuaWNhdG9yLm9uTWVzc2FnZShldmVudC5kYXRhKSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBnZXRTeXN0ZW1UZXN0SG9zdCgpIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IGdsb2JhbFRoaXMubG9jYXRpb25cbiAgICBjb25zdCBkZWZhdWx0SG9zdCA9IGxvY2F0aW9uPy5ob3N0bmFtZSB8fCBcImxvY2FsaG9zdFwiXG4gICAgY29uc3Qgc2VhcmNoID0gbG9jYXRpb24/LnNlYXJjaFxuICAgIGNvbnN0IGVudkhvc3QgPSBwcm9jZXNzLmVudi5FWFBPX1BVQkxJQ19TWVNURU1fVEVTVF9IT1NUXG5cbiAgICBpZiAoZW52SG9zdCkgcmV0dXJuIGVudkhvc3RcblxuICAgIGlmIChTeXN0ZW1UZXN0QnJvd3NlckhlbHBlci5fZGVmYXVsdEhvc3QpIHJldHVybiBTeXN0ZW1UZXN0QnJvd3NlckhlbHBlci5fZGVmYXVsdEhvc3RcblxuICAgIGlmICghc2VhcmNoKSByZXR1cm4gZGVmYXVsdEhvc3RcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoc2VhcmNoKVxuICAgIGNvbnN0IGhvc3QgPSBwYXJhbXMuZ2V0KFwic3lzdGVtVGVzdEhvc3RcIilcblxuICAgIGNvbnN0IHJlc29sdmVkSG9zdCA9IGhvc3QgfHwgZGVmYXVsdEhvc3RcblxuICAgIGlmIChyZXNvbHZlZEhvc3QgPT09IFwiMC4wLjAuMFwiKSByZXR1cm4gXCIxMjcuMC4wLjFcIlxuXG4gICAgcmV0dXJuIHJlc29sdmVkSG9zdFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBlbmFibGVPbkJyb3dzZXIoKSB7XG4gICAgaWYgKHRoaXMuX2VuYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlXG4gICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KClcbiAgICB0aGlzLmNvbm5lY3RPbkVycm9yKClcbiAgICB0aGlzLmNvbm5lY3RVbmhhbmRsZWRSZWplY3Rpb24oKVxuICAgIHRoaXMub3ZlcnJpZGVDb25zb2xlTG9nKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgZ2V0RW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuX2VuYWJsZWQgfVxuXG4gIC8qKiBAcmV0dXJucyB7RXZlbnRFbWl0dGVyfSAqL1xuICBnZXRFdmVudHMoKSB7IHJldHVybiB0aGlzLmV2ZW50cyB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgY29tbWFuZCBldmVudCBhbmQgdGhyb3dzIHdoZW4gbm8gbGlzdGVuZXIgaGFuZGxlZCBpdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICAgKiBAcGFyYW0ge3twYXRoOiBzdHJpbmd9fSBwYXlsb2FkXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZW1pdENvbW1hbmRFdmVudChldmVudE5hbWUsIHBheWxvYWQpIHtcbiAgICBjb25zdCBkaWRFbWl0ID0gdGhpcy5ldmVudHMuZW1pdChldmVudE5hbWUsIHBheWxvYWQpXG5cbiAgICBpZiAoIWRpZEVtaXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbGlzdGVuZXIgcmVnaXN0ZXJlZCBmb3IgY29tbWFuZCBldmVudDogJHtldmVudE5hbWV9ICgke3BheWxvYWQucGF0aH0pYClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZha2VDb25zb2xlRXJyb3IgPSAoLi4uYXJncykgPT4ge1xuICAgIHRoaXMuY29tbXVuaWNhdG9yLnNlbmRDb21tYW5kKHt0eXBlOiBcImNvbnNvbGUuZXJyb3JcIiwgdmFsdWU6IHRoaXMuY29uc29sZUxvZ01lc3NhZ2UoYXJncyl9KVxuXG4gICAgaWYgKHRoaXMub3JpZ2luYWxDb25zb2xlRXJyb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm9yaWdpbmFsQ29uc29sZUVycm9yKC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmYWtlQ29uc29sZUxvZyA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jb21tdW5pY2F0b3Iuc2VuZENvbW1hbmQoe3R5cGU6IFwiY29uc29sZS5sb2dcIiwgdmFsdWU6IHRoaXMuY29uc29sZUxvZ01lc3NhZ2UoYXJncyl9KVxuXG4gICAgaWYgKHRoaXMub3JpZ2luYWxDb25zb2xlTG9nKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbENvbnNvbGVMb2coLi4uYXJncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IGFyZ1xuICAgKiBAcGFyYW0ge2FueVtdfSBbc2Nhbm5lZE9iamVjdHNdXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBjb25zb2xlTG9nTWVzc2FnZShhcmcsIHNjYW5uZWRPYmplY3RzID0gW10pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICBpZiAoc2Nhbm5lZE9iamVjdHMuaW5jbHVkZXMoYXJnKSkge1xuICAgICAgICByZXR1cm4gXCJbcmVjdXJzaXZlXVwiXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2FubmVkT2JqZWN0cy5wdXNoKGFyZylcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gW11cblxuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBhcmcpIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5jb25zb2xlTG9nTWVzc2FnZSh2YWx1ZSwgc2Nhbm5lZE9iamVjdHMpKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgIGlmIChzY2FubmVkT2JqZWN0cy5pbmNsdWRlcyhhcmcpKSB7XG4gICAgICAgIHJldHVybiBcIltyZWN1cnNpdmVdXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjYW5uZWRPYmplY3RzLnB1c2goYXJnKVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgICBjb25zdCByZXN1bHQgPSB7fVxuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmcpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLmNvbnNvbGVMb2dNZXNzYWdlKGFyZ1trZXldLCBzY2FubmVkT2JqZWN0cylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gYFtvYmplY3QgJHthcmc/LmNvbnN0cnVjdG9yPy5uYW1lfV1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcmdcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt7ZGF0YTogUmVjb3JkPHN0cmluZywgYW55Pn19IGFyZ3NcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIG9uQ29tbWFuZCA9IGFzeW5jICh7ZGF0YX0pID0+IHtcbiAgICBpZiAoZGF0YS50eXBlID09IFwiaW5pdGlhbGl6ZVwiKSB7XG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwiaW5pdGlhbGl6ZVwiKVxuXG4gICAgICBpZiAoIXRoaXMuX2hhc0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuX2hhc0luaXRpYWxpemVkID0gdHJ1ZVxuXG4gICAgICAgIGlmICh0aGlzLl9vbkZpcnN0SW5pdGlhbGl6ZUNhbGxiYWNrKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5fb25GaXJzdEluaXRpYWxpemVDYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX29uSW5pdGlhbGl6ZUNhbGxiYWNrKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuX29uSW5pdGlhbGl6ZUNhbGxiYWNrKClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtyZXN1bHQ6IFwiaW5pdGlhbGl6ZWRcIn1cbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcInRlYXJkb3duXCIpIHtcbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJ0ZWFyZG93blwiKVxuXG4gICAgICBpZiAodGhpcy5fb25UZWFyZG93bkNhbGxiYWNrKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuX29uVGVhcmRvd25DYWxsYmFjaygpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7cmVzdWx0OiBcInRvcm4tZG93blwifVxuICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09IFwid2FpdEZvclNjb3VuZHJlbFwiKSB7XG4gICAgICBhd2FpdCB0aGlzLndhaXRGb3JTY291bmRyZWxTdGFydGVkKClcbiAgICAgIHJldHVybiB7cmVzdWx0OiBcInNjb3VuZHJlbC1yZWFkeVwifVxuICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09IFwidmlzaXRcIikge1xuICAgICAgdGhpcy5lbWl0Q29tbWFuZEV2ZW50KFwibmF2aWdhdGVcIiwge3BhdGg6IGRhdGEucGF0aH0pXG4gICAgICByZXR1cm4ge3Jlc3VsdDogXCJ2aXNpdGVkXCJ9XG4gICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT0gXCJkaXNtaXNzVG9cIikge1xuICAgICAgdGhpcy5lbWl0Q29tbWFuZEV2ZW50KFwiZGlzbWlzc1RvXCIsIHtwYXRoOiBkYXRhLnBhdGh9KVxuICAgICAgcmV0dXJuIHtyZXN1bHQ6IFwiZGlzbWlzc2VkXCJ9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjb21tYW5kIHR5cGUgZm9yIFN5c3RlbVRlc3RCcm93c2VySGVscGVyOiAke2RhdGEudHlwZX1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIG9uSW5pdGlhbGl6ZShjYWxsYmFjaykge1xuICAgIHRoaXMuX29uSW5pdGlhbGl6ZUNhbGxiYWNrID0gY2FsbGJhY2tcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIG9uVGVhcmRvd24oY2FsbGJhY2spIHtcbiAgICB0aGlzLl9vblRlYXJkb3duQ2FsbGJhY2sgPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25GaXJzdEluaXRpYWxpemUoY2FsbGJhY2spIHtcbiAgICB0aGlzLl9vbkZpcnN0SW5pdGlhbGl6ZUNhbGxiYWNrID0gY2FsbGJhY2tcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgb3ZlcnJpZGVDb25zb2xlTG9nKCkge1xuICAgIGlmICh0aGlzLm9yaWdpbmFsQ29uc29sZUVycm9yIHx8IHRoaXMub3JpZ2luYWxDb25zb2xlTG9nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb25zb2xlIG1ldGhvZHMgaGFzIGFscmVhZHkgYmVlbiBvdmVycmlkZGVuIVwiKVxuICAgIH1cblxuICAgIHRoaXMub3JpZ2luYWxDb25zb2xlRXJyb3IgPSBjb25zb2xlLmVycm9yXG4gICAgdGhpcy5vcmlnaW5hbENvbnNvbGVMb2cgPSBjb25zb2xlLmxvZ1xuXG4gICAgY29uc29sZS5lcnJvciA9IHRoaXMuZmFrZUNvbnNvbGVFcnJvclxuICAgIGNvbnNvbGUubG9nID0gdGhpcy5mYWtlQ29uc29sZUxvZ1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWxcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4+fVxuICAgKi9cbiAgYXN5bmMgc2VuZFF1ZXJ5KHNxbCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb21tdW5pY2F0b3Iuc2VuZENvbW1hbmQoe3R5cGU6IFwicXVlcnlcIiwgc3FsfSlcbiAgfVxufVxuIl19
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXRlc3QtYnJvd3Nlci1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3lzdGVtLXRlc3QtYnJvd3Nlci1oZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLDZDQUE2QyxDQUFBO0FBQ2hFLE9BQU8sZUFBZSxNQUFNLG9FQUFvRSxDQUFBO0FBQ2hHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxzQkFBc0IsTUFBTSwrQkFBK0IsQ0FBQTtBQUVsRSxNQUFNLG1DQUFtQyxHQUFHLEdBQUcsQ0FBQTtBQUMvQyxNQUFNLG9DQUFvQyxHQUFHLE1BQU0sQ0FBQTtBQUNuRCxNQUFNLHVDQUF1QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3ZELG9DQUFvQyxHQUFHLG1DQUFtQyxDQUMzRSxDQUFBO0FBRUQsd0VBQXdFO0FBQ3hFLE1BQU0sTUFBTSxHQUFHO0lBQ2IsdUJBQXVCLEVBQUUsSUFBSTtDQUM5QixDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxjQUFjLENBQUMsS0FBSztJQUMzQixJQUFJLEtBQUssWUFBWSxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFeEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQztBQUVELE1BQXFCLHVCQUF1QjtJQUsxQzs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUk7UUFDeEIsdUJBQXVCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLGFBQWEsRUFBRSxRQUFRO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDcEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQTtRQUUv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UUFBUSxDQUFBO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsUUFBUTtRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxRQUFRO1FBQ3hCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUE7SUFDNUMsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQTtRQUVyQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtRQUNyQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRztRQUNqQixtQkFBbUI7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7O0FBbmFELGlDQUFpQztBQUMxQixvQ0FBWSxHQUFHLFNBQVMsQUFBWixDQUFZO2VBRlosdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBDbGllbnQgZnJvbSBcInNjb3VuZHJlbC1yZW1vdGUtZXZhbC9idWlsZC9jbGllbnQvaW5kZXguanNcIlxuaW1wb3J0IENsaWVudFdlYlNvY2tldCBmcm9tIFwic2NvdW5kcmVsLXJlbW90ZS1ldmFsL2J1aWxkL2NsaWVudC9jb25uZWN0aW9ucy93ZWItc29ja2V0L2luZGV4LmpzXCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5cbmltcG9ydCBTeXN0ZW1UZXN0Q29tbXVuaWNhdG9yIGZyb20gXCIuL3N5c3RlbS10ZXN0LWNvbW11bmljYXRvci5qc1wiXG5cbmNvbnN0IENMSUVOVF9XRUJTT0NLRVRfUkVDT05ORUNUX0RFTEFZX01TID0gMjUwXG5jb25zdCBDTElFTlRfV0VCU09DS0VUX1JFQ09OTkVDVF9XSU5ET1dfTVMgPSAxMjAwMDBcbmNvbnN0IENMSUVOVF9XRUJTT0NLRVRfTUFYX1JFQ09OTkVDVF9BVFRFTVBUUyA9IE1hdGguY2VpbChcbiAgQ0xJRU5UX1dFQlNPQ0tFVF9SRUNPTk5FQ1RfV0lORE9XX01TIC8gQ0xJRU5UX1dFQlNPQ0tFVF9SRUNPTk5FQ1RfREVMQVlfTVNcbilcblxuLyoqIEB0eXBlIHt7c3lzdGVtVGVzdEJyb3dzZXJIZWxwZXI6IFN5c3RlbVRlc3RCcm93c2VySGVscGVyIHwgbnVsbH19ICovXG5jb25zdCBzaGFyZWQgPSB7XG4gIHN5c3RlbVRlc3RCcm93c2VySGVscGVyOiBudWxsXG59XG5cbi8qKlxuICogQHBhcmFtIHtFdmVudCB8IEVycm9yfSBlcnJvclxuICogQHJldHVybnMge0Vycm9yfVxuICovXG5mdW5jdGlvbiB3ZWJTb2NrZXRFcnJvcihlcnJvcikge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIGVycm9yXG5cbiAgcmV0dXJuIG5ldyBFcnJvcihgV2ViU29ja2V0IGNvbm5lY3Rpb24gZmFpbGVkOiAke2Vycm9yLnR5cGV9YClcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIge1xuICAvKiogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgc3RhdGljIF9kZWZhdWx0SG9zdCA9IHVuZGVmaW5lZFxuICBjbGllbnRXZWJTb2NrZXRSZWNvbm5lY3RBdHRlbXB0cyA9IDBcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBob3N0IGZvciBhbGwgYnJvd3NlciBoZWxwZXJzLiBVc2UgdGhpcyB0byBvdmVycmlkZSB0aGVcbiAgICogYXV0by1kZXRlY3RlZCBob3N0IHdoZW4gRVhQT19QVUJMSUNfKiBlbnYgdmFycyBjYW5ub3QgYmUgaW5saW5lZCAoZS5nLixcbiAgICogY29kZSBpbiBub2RlX21vZHVsZXMgaXMgbm90IHByb2Nlc3NlZCBieSBiYWJlbC1wcmVzZXQtZXhwbykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBob3N0XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHNldERlZmF1bHRIb3N0KGhvc3QpIHtcbiAgICBTeXN0ZW1UZXN0QnJvd3NlckhlbHBlci5fZGVmYXVsdEhvc3QgPSBob3N0XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtZXRlck5hbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZhbGxiYWNrXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXRTeXN0ZW1UZXN0UG9ydChwYXJhbWV0ZXJOYW1lLCBmYWxsYmFjaykge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gZ2xvYmFsVGhpcy5sb2NhdGlvblxuICAgIGNvbnN0IHNlYXJjaCA9IGxvY2F0aW9uPy5zZWFyY2hcblxuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2tcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoc2VhcmNoKS5nZXQocGFyYW1ldGVyTmFtZSlcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxsYmFja1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcih2YWx1ZSlcblxuICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlZCkgJiYgcGFyc2VkID4gMCA/IHBhcnNlZCA6IGZhbGxiYWNrXG4gIH1cblxuICAvKiogQHJldHVybnMge1N5c3RlbVRlc3RCcm93c2VySGVscGVyIHwgbnVsbH0gKi9cbiAgc3RhdGljIGdldEN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHNoYXJlZC5zeXN0ZW1UZXN0QnJvd3NlckhlbHBlclxuICB9XG5cbiAgc3RhdGljIGN1cnJlbnQoKSB7XG4gICAgaWYgKCFzaGFyZWQuc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGN1cnJlbnQgU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIgc2V0XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXJlZC5zeXN0ZW1UZXN0QnJvd3NlckhlbHBlclxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb21tdW5pY2F0b3IgPSBuZXcgU3lzdGVtVGVzdENvbW11bmljYXRvcih7cGFyZW50OiB0aGlzLCBvbkNvbW1hbmQ6IHRoaXMub25Db21tYW5kfSlcbiAgICB0aGlzLl9lbmFibGVkID0gZmFsc2VcbiAgICB0aGlzLl9oYXNJbml0aWFsaXplZCA9IGZhbHNlXG4gICAgdGhpcy5ldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICAgIHNoYXJlZC5zeXN0ZW1UZXN0QnJvd3NlckhlbHBlciA9IHRoaXNcblxuICAgIHRoaXMuc3RhcnRTY291bmRyZWwoKVxuICB9XG5cbiAgYXN5bmMgc3RhcnRTY291bmRyZWwoKSB7XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuZ2V0U3lzdGVtVGVzdEhvc3QoKVxuICAgIGNvbnN0IHNjb3VuZHJlbFBvcnQgPSB0aGlzLmdldFN5c3RlbVRlc3RQb3J0KFwic3lzdGVtVGVzdFNjb3VuZHJlbFBvcnRcIiwgODA5MClcblxuICAgIHRoaXMuc2NvdW5kcmVsV3MgPSBuZXcgV2ViU29ja2V0KGB3czovLyR7aG9zdH06JHtzY291bmRyZWxQb3J0fWApXG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdGhpcy5zY291bmRyZWxDbGllbnRXZWJTb2NrZXQgPSBuZXcgQ2xpZW50V2ViU29ja2V0KHRoaXMuc2NvdW5kcmVsV3MpXG5cbiAgICBhd2FpdCB0aGlzLnNjb3VuZHJlbENsaWVudFdlYlNvY2tldC53YWl0Rm9yT3BlbmVkKClcblxuICAgIHRoaXMuc2NvdW5kcmVsQ2xpZW50ID0gbmV3IENsaWVudCh0aGlzLnNjb3VuZHJlbENsaWVudFdlYlNvY2tldCwge2VuYWJsZVNlcnZlckNvbnRyb2w6IHRydWV9KVxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJzY291bmRyZWxTdGFydGVkXCIpXG4gIH1cblxuICB3YWl0Rm9yU2NvdW5kcmVsU3RhcnRlZCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGlmICh0aGlzLnNjb3VuZHJlbENsaWVudCkge1xuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXZlbnRzLm9uY2UoXCJzY291bmRyZWxTdGFydGVkXCIsICgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0U2NvdW5kcmVsKCkge1xuICAgIGlmICghdGhpcy5zY291bmRyZWxDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjb3VuZHJlbCBjbGllbnQgaXMgbm90IHN0YXJ0ZWQgeWV0XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2NvdW5kcmVsQ2xpZW50XG4gIH1cblxuICBjb25uZWN0T25FcnJvcigpIHtcbiAgICBpZiAoIXdpbmRvdz8uYWRkRXZlbnRMaXN0ZW5lcikgcmV0dXJuXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIChldmVudCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcih7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAgZXJyb3I6IGV2ZW50LmVycm9yLFxuICAgICAgICBlcnJvckNsYXNzOiBldmVudC5lcnJvcj8ubmFtZSxcbiAgICAgICAgZmlsZTogZXZlbnQuZmlsZW5hbWUsXG4gICAgICAgIGxpbmU6IGV2ZW50LmxpbmVubyxcbiAgICAgICAgbWVzc2FnZTogZXZlbnQubWVzc2FnZSB8fCBcIlVua25vd24gZXJyb3JcIixcbiAgICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29ubmVjdFVuaGFuZGxlZFJlamVjdGlvbigpIHtcbiAgICBpZiAoIXdpbmRvdz8uYWRkRXZlbnRMaXN0ZW5lcikgcmV0dXJuXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3Ioe1xuICAgICAgICB0eXBlOiBcInVuaGFuZGxlZHJlamVjdGlvblwiLFxuICAgICAgICBlcnJvcjogZXZlbnQucmVhc29uLFxuICAgICAgICBlcnJvckNsYXNzOiBcIlVuaGFuZGxlZFJlamVjdGlvblwiLFxuICAgICAgICBtZXNzYWdlOiBldmVudC5yZWFzb24ubWVzc2FnZSB8fCBldmVudC5yZWFzb24gfHwgXCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24gd2l0aG91dCBhIG1lc3NhZ2VcIixcbiAgICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5iYWNrdHJhY2VdXG4gICAqIEBwYXJhbSB7RXJyb3J9IFtkYXRhLmVycm9yXVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGEuZXJyb3JDbGFzc11cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhLmZpbGVdXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF0YS5saW5lXVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGEubWVzc2FnZV1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhLnR5cGVdXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS51cmxdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgaGFuZGxlRXJyb3IoZGF0YSkge1xuICAgIGxldCBiYWNrdHJhY2VcblxuICAgIGlmIChkYXRhLmVycm9yICYmIGRhdGEuZXJyb3Iuc3RhY2spIHtcbiAgICAgIGJhY2t0cmFjZSA9IGRhdGEuZXJyb3Iuc3RhY2suc3BsaXQoXCJcXG5cIilcbiAgICAgIGJhY2t0cmFjZS5zaGlmdCgpXG4gICAgICBiYWNrdHJhY2UgPSBiYWNrdHJhY2Uuam9pbihcIlxcblwiKVxuICAgIH0gZWxzZSBpZiAoZGF0YS5maWxlKSB7XG4gICAgICBiYWNrdHJhY2UgPSBgJHtkYXRhLmZpbGV9OiR7ZGF0YS5saW5lfWBcbiAgICB9XG5cbiAgICBkYXRhLmJhY2t0cmFjZSA9IGJhY2t0cmFjZVxuXG4gICAgdGhpcy5jb21tdW5pY2F0b3Iuc2VuZENvbW1hbmQoZGF0YSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICB0aGlzLmNsaWVudFdlYlNvY2tldFJlY29ubmVjdEF0dGVtcHRzID0gMFxuICAgIHRoaXMuY29ubmVjdENsaWVudFdlYlNvY2tldCgpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNvbm5lY3RDbGllbnRXZWJTb2NrZXQoKSB7XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuZ2V0U3lzdGVtVGVzdEhvc3QoKVxuICAgIGNvbnN0IGNsaWVudFdzUG9ydCA9IHRoaXMuZ2V0U3lzdGVtVGVzdFBvcnQoXCJzeXN0ZW1UZXN0Q2xpZW50V3NQb3J0XCIsIDE5ODUpXG4gICAgY29uc3Qgd2Vic29ja2V0ID0gbmV3IFdlYlNvY2tldChgd3M6Ly8ke2hvc3R9OiR7Y2xpZW50V3NQb3J0fWApXG4gICAgbGV0IG9wZW5lZCA9IGZhbHNlXG4gICAgbGV0IHJlY29ubmVjdFNjaGVkdWxlZCA9IGZhbHNlXG5cbiAgICB0aGlzLndzID0gd2Vic29ja2V0XG4gICAgdGhpcy5jb21tdW5pY2F0b3Iud3MgPSB3ZWJzb2NrZXRcblxuICAgIC8qKiBAcGFyYW0ge0V2ZW50IHwgRXJyb3J9IGVycm9yICovXG4gICAgY29uc3Qgc2NoZWR1bGVSZWNvbm5lY3QgPSAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgdGhpcy5jb21tdW5pY2F0b3Iub25FcnJvcih3ZWJTb2NrZXRFcnJvcihlcnJvcikpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAocmVjb25uZWN0U2NoZWR1bGVkIHx8IHRoaXMud3MgIT09IHdlYnNvY2tldCkgcmV0dXJuXG5cbiAgICAgIHRoaXMuY2xpZW50V2ViU29ja2V0UmVjb25uZWN0QXR0ZW1wdHMgKz0gMVxuICAgICAgaWYgKHRoaXMuY2xpZW50V2ViU29ja2V0UmVjb25uZWN0QXR0ZW1wdHMgPiBDTElFTlRfV0VCU09DS0VUX01BWF9SRUNPTk5FQ1RfQVRURU1QVFMpIHtcbiAgICAgICAgdGhpcy5jb21tdW5pY2F0b3Iub25FcnJvcih3ZWJTb2NrZXRFcnJvcihlcnJvcikpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZWNvbm5lY3RTY2hlZHVsZWQgPSB0cnVlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG9wZW5lZCB8fCB0aGlzLndzICE9PSB3ZWJzb2NrZXQpIHJldHVyblxuXG4gICAgICAgIHRoaXMuY29ubmVjdENsaWVudFdlYlNvY2tldCgpXG4gICAgICB9LCBDTElFTlRfV0VCU09DS0VUX1JFQ09OTkVDVF9ERUxBWV9NUylcbiAgICB9XG5cbiAgICB3ZWJzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHNjaGVkdWxlUmVjb25uZWN0KVxuICAgIHdlYnNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIiwgc2NoZWR1bGVSZWNvbm5lY3QpXG4gICAgd2Vic29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJvcGVuXCIsICgpID0+IHtcbiAgICAgIG9wZW5lZCA9IHRydWVcbiAgICAgIHRoaXMuY2xpZW50V2ViU29ja2V0UmVjb25uZWN0QXR0ZW1wdHMgPSAwXG4gICAgICB0aGlzLmNvbW11bmljYXRvci5vbk9wZW4oKVxuICAgIH0pXG4gICAgd2Vic29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChldmVudCkgPT4gdGhpcy5jb21tdW5pY2F0b3Iub25NZXNzYWdlKGV2ZW50LmRhdGEpKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIGdldFN5c3RlbVRlc3RIb3N0KCkge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gZ2xvYmFsVGhpcy5sb2NhdGlvblxuICAgIGNvbnN0IGRlZmF1bHRIb3N0ID0gbG9jYXRpb24/Lmhvc3RuYW1lIHx8IFwibG9jYWxob3N0XCJcbiAgICBjb25zdCBzZWFyY2ggPSBsb2NhdGlvbj8uc2VhcmNoXG4gICAgY29uc3QgZW52SG9zdCA9IHByb2Nlc3MuZW52LkVYUE9fUFVCTElDX1NZU1RFTV9URVNUX0hPU1RcblxuICAgIGlmIChlbnZIb3N0KSByZXR1cm4gZW52SG9zdFxuXG4gICAgaWYgKFN5c3RlbVRlc3RCcm93c2VySGVscGVyLl9kZWZhdWx0SG9zdCkgcmV0dXJuIFN5c3RlbVRlc3RCcm93c2VySGVscGVyLl9kZWZhdWx0SG9zdFxuXG4gICAgaWYgKCFzZWFyY2gpIHJldHVybiBkZWZhdWx0SG9zdFxuXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhzZWFyY2gpXG4gICAgY29uc3QgaG9zdCA9IHBhcmFtcy5nZXQoXCJzeXN0ZW1UZXN0SG9zdFwiKVxuXG4gICAgY29uc3QgcmVzb2x2ZWRIb3N0ID0gaG9zdCB8fCBkZWZhdWx0SG9zdFxuXG4gICAgaWYgKHJlc29sdmVkSG9zdCA9PT0gXCIwLjAuMC4wXCIpIHJldHVybiBcIjEyNy4wLjAuMVwiXG5cbiAgICByZXR1cm4gcmVzb2x2ZWRIb3N0XG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGVuYWJsZU9uQnJvd3NlcigpIHtcbiAgICBpZiAodGhpcy5fZW5hYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZW5hYmxlZCA9IHRydWVcbiAgICB0aGlzLmNvbm5lY3RXZWJTb2NrZXQoKVxuICAgIHRoaXMuY29ubmVjdE9uRXJyb3IoKVxuICAgIHRoaXMuY29ubmVjdFVuaGFuZGxlZFJlamVjdGlvbigpXG4gICAgdGhpcy5vdmVycmlkZUNvbnNvbGVMb2coKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBnZXRFbmFibGVkKCkgeyByZXR1cm4gdGhpcy5fZW5hYmxlZCB9XG5cbiAgLyoqIEByZXR1cm5zIHtFdmVudEVtaXR0ZXJ9ICovXG4gIGdldEV2ZW50cygpIHsgcmV0dXJuIHRoaXMuZXZlbnRzIH1cblxuICAvKipcbiAgICogRW1pdHMgYSBjb21tYW5kIGV2ZW50IGFuZCB0aHJvd3Mgd2hlbiBubyBsaXN0ZW5lciBoYW5kbGVkIGl0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gICAqIEBwYXJhbSB7e3BhdGg6IHN0cmluZ319IHBheWxvYWRcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBlbWl0Q29tbWFuZEV2ZW50KGV2ZW50TmFtZSwgcGF5bG9hZCkge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuZXZlbnRzLmxpc3RlbmVycyhldmVudE5hbWUpXG5cbiAgICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBsaXN0ZW5lciByZWdpc3RlcmVkIGZvciBjb21tYW5kIGV2ZW50OiAke2V2ZW50TmFtZX0gKCR7cGF5bG9hZC5wYXRofSlgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XG4gICAgICBhd2FpdCBsaXN0ZW5lcihwYXlsb2FkKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZmFrZUNvbnNvbGVFcnJvciA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jb21tdW5pY2F0b3Iuc2VuZENvbW1hbmQoe3R5cGU6IFwiY29uc29sZS5lcnJvclwiLCB2YWx1ZTogdGhpcy5jb25zb2xlTG9nTWVzc2FnZShhcmdzKX0pXG5cbiAgICBpZiAodGhpcy5vcmlnaW5hbENvbnNvbGVFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxDb25zb2xlRXJyb3IoLi4uYXJncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZha2VDb25zb2xlTG9nID0gKC4uLmFyZ3MpID0+IHtcbiAgICB0aGlzLmNvbW11bmljYXRvci5zZW5kQ29tbWFuZCh7dHlwZTogXCJjb25zb2xlLmxvZ1wiLCB2YWx1ZTogdGhpcy5jb25zb2xlTG9nTWVzc2FnZShhcmdzKX0pXG5cbiAgICBpZiAodGhpcy5vcmlnaW5hbENvbnNvbGVMb2cpIHtcbiAgICAgIHJldHVybiB0aGlzLm9yaWdpbmFsQ29uc29sZUxvZyguLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gYXJnXG4gICAqIEBwYXJhbSB7YW55W119IFtzY2FubmVkT2JqZWN0c11cbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIGNvbnNvbGVMb2dNZXNzYWdlKGFyZywgc2Nhbm5lZE9iamVjdHMgPSBbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgIGlmIChzY2FubmVkT2JqZWN0cy5pbmNsdWRlcyhhcmcpKSB7XG4gICAgICAgIHJldHVybiBcIltyZWN1cnNpdmVdXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjYW5uZWRPYmplY3RzLnB1c2goYXJnKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGFyZykge1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLmNvbnNvbGVMb2dNZXNzYWdlKHZhbHVlLCBzY2FubmVkT2JqZWN0cykpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmcpID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgaWYgKHNjYW5uZWRPYmplY3RzLmluY2x1ZGVzKGFyZykpIHtcbiAgICAgICAgcmV0dXJuIFwiW3JlY3Vyc2l2ZV1cIlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Nhbm5lZE9iamVjdHMucHVzaChhcmcpXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFyZykge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuY29uc29sZUxvZ01lc3NhZ2UoYXJnW2tleV0sIHNjYW5uZWRPYmplY3RzKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnID09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBgW29iamVjdCAke2FyZz8uY29uc3RydWN0b3I/Lm5hbWV9XWBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFyZ1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3tkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fX0gYXJnc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgb25Db21tYW5kID0gYXN5bmMgKHtkYXRhfSkgPT4ge1xuICAgIGlmIChkYXRhLnR5cGUgPT0gXCJpbml0aWFsaXplXCIpIHtcbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJpbml0aWFsaXplXCIpXG5cbiAgICAgIGlmICghdGhpcy5faGFzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5faGFzSW5pdGlhbGl6ZWQgPSB0cnVlXG5cbiAgICAgICAgaWYgKHRoaXMuX29uRmlyc3RJbml0aWFsaXplQ2FsbGJhY2spIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLl9vbkZpcnN0SW5pdGlhbGl6ZUNhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fb25Jbml0aWFsaXplQ2FsbGJhY2spIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fb25Jbml0aWFsaXplQ2FsbGJhY2soKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge3Jlc3VsdDogXCJpbml0aWFsaXplZFwifVxuICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09IFwidGVhcmRvd25cIikge1xuICAgICAgdGhpcy5ldmVudHMuZW1pdChcInRlYXJkb3duXCIpXG5cbiAgICAgIGlmICh0aGlzLl9vblRlYXJkb3duQ2FsbGJhY2spIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fb25UZWFyZG93bkNhbGxiYWNrKClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtyZXN1bHQ6IFwidG9ybi1kb3duXCJ9XG4gICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT0gXCJ3YWl0Rm9yU2NvdW5kcmVsXCIpIHtcbiAgICAgIGF3YWl0IHRoaXMud2FpdEZvclNjb3VuZHJlbFN0YXJ0ZWQoKVxuICAgICAgcmV0dXJuIHtyZXN1bHQ6IFwic2NvdW5kcmVsLXJlYWR5XCJ9XG4gICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT0gXCJ2aXNpdFwiKSB7XG4gICAgICBhd2FpdCB0aGlzLmVtaXRDb21tYW5kRXZlbnQoXCJuYXZpZ2F0ZVwiLCB7cGF0aDogZGF0YS5wYXRofSlcbiAgICAgIHJldHVybiB7cmVzdWx0OiBcInZpc2l0ZWRcIn1cbiAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcImRpc21pc3NUb1wiKSB7XG4gICAgICBhd2FpdCB0aGlzLmVtaXRDb21tYW5kRXZlbnQoXCJkaXNtaXNzVG9cIiwge3BhdGg6IGRhdGEucGF0aH0pXG4gICAgICByZXR1cm4ge3Jlc3VsdDogXCJkaXNtaXNzZWRcIn1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQgdHlwZSBmb3IgU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXI6ICR7ZGF0YS50eXBlfWApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25Jbml0aWFsaXplKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fb25Jbml0aWFsaXplQ2FsbGJhY2sgPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25UZWFyZG93bihjYWxsYmFjaykge1xuICAgIHRoaXMuX29uVGVhcmRvd25DYWxsYmFjayA9IGNhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBvbkZpcnN0SW5pdGlhbGl6ZShjYWxsYmFjaykge1xuICAgIHRoaXMuX29uRmlyc3RJbml0aWFsaXplQ2FsbGJhY2sgPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvdmVycmlkZUNvbnNvbGVMb2coKSB7XG4gICAgaWYgKHRoaXMub3JpZ2luYWxDb25zb2xlRXJyb3IgfHwgdGhpcy5vcmlnaW5hbENvbnNvbGVMb2cpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnNvbGUgbWV0aG9kcyBoYXMgYWxyZWFkeSBiZWVuIG92ZXJyaWRkZW4hXCIpXG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW5hbENvbnNvbGVFcnJvciA9IGNvbnNvbGUuZXJyb3JcbiAgICB0aGlzLm9yaWdpbmFsQ29uc29sZUxvZyA9IGNvbnNvbGUubG9nXG5cbiAgICBjb25zb2xlLmVycm9yID0gdGhpcy5mYWtlQ29uc29sZUVycm9yXG4gICAgY29uc29sZS5sb2cgPSB0aGlzLmZha2VDb25zb2xlTG9nXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNxbFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj59XG4gICAqL1xuICBhc3luYyBzZW5kUXVlcnkoc3FsKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbW11bmljYXRvci5zZW5kQ29tbWFuZCh7dHlwZTogXCJxdWVyeVwiLCBzcWx9KVxuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useNavigationContainerRef, useRouter } from "expo-router";
|
|
2
|
+
import { dismissExpoRouterToPath } from "./expo-router-dismiss-to.js";
|
|
2
3
|
import useSystemTest from "./use-system-test.js";
|
|
3
4
|
/**
|
|
4
5
|
* Expo Router integration for system testing.
|
|
@@ -23,26 +24,7 @@ export default function useSystemTestExpo({ browserHelper, enabled, host, onFirs
|
|
|
23
24
|
enabled,
|
|
24
25
|
host,
|
|
25
26
|
onDismissTo: ({ path }) => {
|
|
26
|
-
|
|
27
|
-
router.dismissTo(path);
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
console.error(`Failed to dismiss to path "${path}": ${error instanceof Error ? error.message : error}`);
|
|
31
|
-
}
|
|
32
|
-
// Pop every other screen off the Stack so previously-visited routes
|
|
33
|
-
// unmount instead of accumulating in DOM with display:none. Without this,
|
|
34
|
-
// react-native-web's global PressResponder gets confused by stale
|
|
35
|
-
// Pressables that share the same testID as the visible one and Selenium
|
|
36
|
-
// clicks fail to fire onPress.
|
|
37
|
-
try {
|
|
38
|
-
const navigation = navigationContainerRef.current;
|
|
39
|
-
if (navigation && navigation.canGoBack()) {
|
|
40
|
-
router.dismissAll();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
console.error(`Failed to dismiss all stack screens: ${error instanceof Error ? error.message : error}`);
|
|
45
|
-
}
|
|
27
|
+
dismissExpoRouterToPath({ navigationContainerRef, path, router });
|
|
46
28
|
},
|
|
47
29
|
onFirstInitialize,
|
|
48
30
|
onInitialize,
|
|
@@ -52,4 +34,4 @@ export default function useSystemTestExpo({ browserHelper, enabled, host, onFirs
|
|
|
52
34
|
}
|
|
53
35
|
});
|
|
54
36
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN5c3RlbS10ZXN0LWV4cG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXNlLXN5c3RlbS10ZXN0LWV4cG8uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHlCQUF5QixFQUFFLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUNoRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQTtBQUNuRSxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQTtBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxpQkFBaUIsQ0FBQyxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLEVBQUMsR0FBRyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUM7SUFDaFIsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFBO0lBQzFELE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFBO0lBQzFCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQztRQUNuQixhQUFhO1FBQ2IsT0FBTztRQUNQLElBQUk7UUFDSixXQUFXLEVBQUUsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7WUFDdEIsdUJBQXVCLENBQUMsRUFBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtRQUNqRSxDQUFDO1FBQ0QsaUJBQWlCO1FBQ2pCLFlBQVk7UUFDWixVQUFVO1FBQ1YsVUFBVSxFQUFFLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkIsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZU5hdmlnYXRpb25Db250YWluZXJSZWYsIHVzZVJvdXRlcn0gZnJvbSBcImV4cG8tcm91dGVyXCJcbmltcG9ydCB7ZGlzbWlzc0V4cG9Sb3V0ZXJUb1BhdGh9IGZyb20gXCIuL2V4cG8tcm91dGVyLWRpc21pc3MtdG8uanNcIlxuaW1wb3J0IHVzZVN5c3RlbVRlc3QgZnJvbSBcIi4vdXNlLXN5c3RlbS10ZXN0LmpzXCJcblxuLyoqXG4gKiBFeHBvIFJvdXRlciBpbnRlZ3JhdGlvbiBmb3Igc3lzdGVtIHRlc3RpbmcuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtpbXBvcnQoXCIuL3N5c3RlbS10ZXN0LWJyb3dzZXItaGVscGVyLmpzXCIpLmRlZmF1bHR9IFtvcHRpb25zLmJyb3dzZXJIZWxwZXJdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmVuYWJsZWRdIE92ZXJyaWRlIHRoZSBhdXRvLWRldGVjdGVkIGVuYWJsZWQgc3RhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuaG9zdF0gT3ZlcnJpZGUgdGhlIHN5c3RlbSB0ZXN0IGhvc3QgZm9yIFdlYlNvY2tldCBjb25uZWN0aW9ucy5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IHZvaWR9IFtvcHRpb25zLm9uRmlyc3RJbml0aWFsaXplXVxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gW29wdGlvbnMub25Jbml0aWFsaXplXVxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gW29wdGlvbnMub25UZWFyZG93bl1cbiAqIEByZXR1cm5zIHt7ZW5hYmxlZDogYm9vbGVhbiwgc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXI6IGltcG9ydChcIi4vc3lzdGVtLXRlc3QtYnJvd3Nlci1oZWxwZXIuanNcIikuZGVmYXVsdCB8IG51bGx9fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTeXN0ZW1UZXN0RXhwbyh7YnJvd3NlckhlbHBlciwgZW5hYmxlZCwgaG9zdCwgb25GaXJzdEluaXRpYWxpemUsIG9uSW5pdGlhbGl6ZSwgb25UZWFyZG93biwgLi4ucmVzdEFyZ3N9ID0ge2Jyb3dzZXJIZWxwZXI6IHVuZGVmaW5lZCwgZW5hYmxlZDogdW5kZWZpbmVkLCBob3N0OiB1bmRlZmluZWQsIG9uRmlyc3RJbml0aWFsaXplOiB1bmRlZmluZWQsIG9uSW5pdGlhbGl6ZTogdW5kZWZpbmVkLCBvblRlYXJkb3duOiB1bmRlZmluZWR9KSB7XG4gIGNvbnN0IG5hdmlnYXRpb25Db250YWluZXJSZWYgPSB1c2VOYXZpZ2F0aW9uQ29udGFpbmVyUmVmKClcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcbiAgY29uc3QgcmVzdEFyZ3NLZXlzID0gT2JqZWN0LmtleXMocmVzdEFyZ3MpXG5cbiAgaWYgKHJlc3RBcmdzS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFyZ3VtZW50cyBnaXZlbiB0byB1c2VTeXN0ZW1UZXN0RXhwbzogJHtyZXN0QXJnc0tleXMuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICByZXR1cm4gdXNlU3lzdGVtVGVzdCh7XG4gICAgYnJvd3NlckhlbHBlcixcbiAgICBlbmFibGVkLFxuICAgIGhvc3QsXG4gICAgb25EaXNtaXNzVG86ICh7cGF0aH0pID0+IHtcbiAgICAgIGRpc21pc3NFeHBvUm91dGVyVG9QYXRoKHtuYXZpZ2F0aW9uQ29udGFpbmVyUmVmLCBwYXRoLCByb3V0ZXJ9KVxuICAgIH0sXG4gICAgb25GaXJzdEluaXRpYWxpemUsXG4gICAgb25Jbml0aWFsaXplLFxuICAgIG9uVGVhcmRvd24sXG4gICAgb25OYXZpZ2F0ZTogKHtwYXRofSkgPT4ge1xuICAgICAgcm91dGVyLm5hdmlnYXRlKHBhdGgpXG4gICAgfVxuICB9KVxufVxuIl19
|
|
@@ -3,24 +3,24 @@
|
|
|
3
3
|
* Supply runtime-specific navigation callbacks.
|
|
4
4
|
* @param {object} options
|
|
5
5
|
* @param {import("./system-test-browser-helper.js").default} [options.browserHelper]
|
|
6
|
-
* @param {(args: {path: string}) => void} [options.onDismissTo]
|
|
6
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onDismissTo]
|
|
7
7
|
* @param {function() : void} [options.onFirstInitialize]
|
|
8
8
|
* @param {function() : void} [options.onInitialize]
|
|
9
9
|
* @param {function() : void} [options.onTeardown]
|
|
10
|
-
* @param {(args: {path: string}) => void} [options.onNavigate]
|
|
10
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onNavigate]
|
|
11
11
|
* @returns {{enabled: boolean, systemTestBrowserHelper: import("./system-test-browser-helper.js").default | null}}
|
|
12
12
|
*/
|
|
13
13
|
export default function useSystemTestReactNative({ browserHelper, onDismissTo, onFirstInitialize, onInitialize, onTeardown, onNavigate, ...restArgs }?: {
|
|
14
14
|
browserHelper?: import("./system-test-browser-helper.js").default | undefined;
|
|
15
15
|
onDismissTo?: ((args: {
|
|
16
16
|
path: string;
|
|
17
|
-
}) => void) | undefined;
|
|
17
|
+
}) => void | Promise<void>) | undefined;
|
|
18
18
|
onFirstInitialize?: (() => void) | undefined;
|
|
19
19
|
onInitialize?: (() => void) | undefined;
|
|
20
20
|
onTeardown?: (() => void) | undefined;
|
|
21
21
|
onNavigate?: ((args: {
|
|
22
22
|
path: string;
|
|
23
|
-
}) => void) | undefined;
|
|
23
|
+
}) => void | Promise<void>) | undefined;
|
|
24
24
|
}): {
|
|
25
25
|
enabled: boolean;
|
|
26
26
|
systemTestBrowserHelper: import("./system-test-browser-helper.js").default | null;
|
|
@@ -4,11 +4,11 @@ import useSystemTest from "./use-system-test.js";
|
|
|
4
4
|
* Supply runtime-specific navigation callbacks.
|
|
5
5
|
* @param {object} options
|
|
6
6
|
* @param {import("./system-test-browser-helper.js").default} [options.browserHelper]
|
|
7
|
-
* @param {(args: {path: string}) => void} [options.onDismissTo]
|
|
7
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onDismissTo]
|
|
8
8
|
* @param {function() : void} [options.onFirstInitialize]
|
|
9
9
|
* @param {function() : void} [options.onInitialize]
|
|
10
10
|
* @param {function() : void} [options.onTeardown]
|
|
11
|
-
* @param {(args: {path: string}) => void} [options.onNavigate]
|
|
11
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onNavigate]
|
|
12
12
|
* @returns {{enabled: boolean, systemTestBrowserHelper: import("./system-test-browser-helper.js").default | null}}
|
|
13
13
|
*/
|
|
14
14
|
export default function useSystemTestReactNative({ browserHelper, onDismissTo, onFirstInitialize, onInitialize, onTeardown, onNavigate, ...restArgs } = { browserHelper: undefined, onDismissTo: undefined, onFirstInitialize: undefined, onInitialize: undefined, onTeardown: undefined, onNavigate: undefined }) {
|
|
@@ -18,4 +18,4 @@ export default function useSystemTestReactNative({ browserHelper, onDismissTo, o
|
|
|
18
18
|
}
|
|
19
19
|
return useSystemTest({ browserHelper, onDismissTo, onFirstInitialize, onInitialize, onTeardown, onNavigate });
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN5c3RlbS10ZXN0LXJlYWN0LW5hdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91c2Utc3lzdGVtLXRlc3QtcmVhY3QtbmF0aXZlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFBO0FBRWhEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSx3QkFBd0IsQ0FBQyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLEVBQUMsR0FBRyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUM7SUFDM1MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUUxQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDcEcsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDLEVBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUE7QUFDN0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1c2VTeXN0ZW1UZXN0IGZyb20gXCIuL3VzZS1zeXN0ZW0tdGVzdC5qc1wiXG5cbi8qKlxuICogUmVhY3QgTmF0aXZlIGludGVncmF0aW9uIHBvaW50IGZvciBzeXN0ZW0gdGVzdGluZyB3aXRob3V0IEV4cG8gUm91dGVyLlxuICogU3VwcGx5IHJ1bnRpbWUtc3BlY2lmaWMgbmF2aWdhdGlvbiBjYWxsYmFja3MuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtpbXBvcnQoXCIuL3N5c3RlbS10ZXN0LWJyb3dzZXItaGVscGVyLmpzXCIpLmRlZmF1bHR9IFtvcHRpb25zLmJyb3dzZXJIZWxwZXJdXG4gKiBAcGFyYW0geyhhcmdzOiB7cGF0aDogc3RyaW5nfSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD59IFtvcHRpb25zLm9uRGlzbWlzc1RvXVxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gW29wdGlvbnMub25GaXJzdEluaXRpYWxpemVdXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBbb3B0aW9ucy5vbkluaXRpYWxpemVdXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBbb3B0aW9ucy5vblRlYXJkb3duXVxuICogQHBhcmFtIHsoYXJnczoge3BhdGg6IHN0cmluZ30pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+fSBbb3B0aW9ucy5vbk5hdmlnYXRlXVxuICogQHJldHVybnMge3tlbmFibGVkOiBib29sZWFuLCBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcjogaW1wb3J0KFwiLi9zeXN0ZW0tdGVzdC1icm93c2VyLWhlbHBlci5qc1wiKS5kZWZhdWx0IHwgbnVsbH19XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVN5c3RlbVRlc3RSZWFjdE5hdGl2ZSh7YnJvd3NlckhlbHBlciwgb25EaXNtaXNzVG8sIG9uRmlyc3RJbml0aWFsaXplLCBvbkluaXRpYWxpemUsIG9uVGVhcmRvd24sIG9uTmF2aWdhdGUsIC4uLnJlc3RBcmdzfSA9IHticm93c2VySGVscGVyOiB1bmRlZmluZWQsIG9uRGlzbWlzc1RvOiB1bmRlZmluZWQsIG9uRmlyc3RJbml0aWFsaXplOiB1bmRlZmluZWQsIG9uSW5pdGlhbGl6ZTogdW5kZWZpbmVkLCBvblRlYXJkb3duOiB1bmRlZmluZWQsIG9uTmF2aWdhdGU6IHVuZGVmaW5lZH0pIHtcbiAgY29uc3QgcmVzdEFyZ3NLZXlzID0gT2JqZWN0LmtleXMocmVzdEFyZ3MpXG5cbiAgaWYgKHJlc3RBcmdzS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFyZ3VtZW50cyBnaXZlbiB0byB1c2VTeXN0ZW1UZXN0UmVhY3ROYXRpdmU6ICR7cmVzdEFyZ3NLZXlzLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgcmV0dXJuIHVzZVN5c3RlbVRlc3Qoe2Jyb3dzZXJIZWxwZXIsIG9uRGlzbWlzc1RvLCBvbkZpcnN0SW5pdGlhbGl6ZSwgb25Jbml0aWFsaXplLCBvblRlYXJkb3duLCBvbk5hdmlnYXRlfSlcbn1cbiJdfQ==
|
|
@@ -24,10 +24,16 @@ export default class UseSystemTestShapeHook extends ShapeHook<Record<string, any
|
|
|
24
24
|
};
|
|
25
25
|
/** @returns {void} */
|
|
26
26
|
setup(): void;
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
/**
|
|
28
|
+
* @param {...unknown} args
|
|
29
|
+
* @returns {Promise<void> | void}
|
|
30
|
+
*/
|
|
31
|
+
onSystemTestBrowserHelperDismissTo: (...args: unknown[]) => Promise<void> | void;
|
|
32
|
+
/**
|
|
33
|
+
* @param {...unknown} args
|
|
34
|
+
* @returns {Promise<void> | void}
|
|
35
|
+
*/
|
|
36
|
+
onSystemTestBrowserHelperNavigate: (...args: unknown[]) => Promise<void> | void;
|
|
31
37
|
}
|
|
32
38
|
export type SystemTestBrowserHelperPathEvent = {
|
|
33
39
|
path: string;
|
|
@@ -10,19 +10,25 @@ const shared = {
|
|
|
10
10
|
class UseSystemTestShapeHook extends ShapeHook {
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* @param {...unknown} args
|
|
15
|
+
* @returns {Promise<void> | void}
|
|
16
|
+
*/
|
|
14
17
|
this.onSystemTestBrowserHelperDismissTo = (...args) => {
|
|
15
18
|
if (!this.p.enabled || !this.p.onDismissTo) {
|
|
16
19
|
return;
|
|
17
20
|
}
|
|
18
|
-
this.p.onDismissTo({ path: ( /** @type {SystemTestBrowserHelperPathEvent} */(args[0])).path });
|
|
21
|
+
return this.p.onDismissTo({ path: ( /** @type {SystemTestBrowserHelperPathEvent} */(args[0])).path });
|
|
19
22
|
};
|
|
20
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* @param {...unknown} args
|
|
25
|
+
* @returns {Promise<void> | void}
|
|
26
|
+
*/
|
|
21
27
|
this.onSystemTestBrowserHelperNavigate = (...args) => {
|
|
22
28
|
if (!this.p.enabled || !this.p.onNavigate) {
|
|
23
29
|
return;
|
|
24
30
|
}
|
|
25
|
-
this.p.onNavigate({ path: ( /** @type {SystemTestBrowserHelperPathEvent} */(args[0])).path });
|
|
31
|
+
return this.p.onNavigate({ path: ( /** @type {SystemTestBrowserHelperPathEvent} */(args[0])).path });
|
|
26
32
|
};
|
|
27
33
|
}
|
|
28
34
|
/** @returns {SystemTestBrowserHelper | null} */
|
|
@@ -75,4 +81,4 @@ export default UseSystemTestShapeHook;
|
|
|
75
81
|
export function useSystemTestShapeHook(props) {
|
|
76
82
|
return useShapeHook(UseSystemTestShapeHook, props);
|
|
77
83
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN5c3RlbS10ZXN0LXNoYXBlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXNlLXN5c3RlbS10ZXN0LXNoYXBlLWhvb2suanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQy9CLE9BQU8sdUJBQXVCLE1BQU0saUNBQWlDLENBQUE7QUFFckUsaUVBQWlFO0FBRWpFLE1BQU0sTUFBTSxHQUFHO0lBQ2IsNkNBQTZDO0lBQzdDLDhCQUE4QixFQUFFLElBQUk7Q0FDckMsQ0FBQTtBQUVELG9FQUFvRTtBQUNwRSxNQUFxQixzQkFBdUIsU0FBUSxTQUFTO0lBQTdEOztRQXlERTs7O1dBR0c7UUFDSCx1Q0FBa0MsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0MsT0FBTTtZQUNSLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUMsK0NBQWdELENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBQ3JHLENBQUMsQ0FBQTtRQUVEOzs7V0FHRztRQUNILHNDQUFpQyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMxQyxPQUFNO1lBQ1IsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBQywrQ0FBZ0QsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUE7UUFDcEcsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQXJFQyxnREFBZ0Q7SUFDaEQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUN0QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QixFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLDhCQUE4QixHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQTtRQUN2RSxDQUFDO1FBRUQsTUFBTSxDQUFDLDhCQUE4QixDQUFDLGVBQWUsRUFBRSxDQUFBO1FBRXZELE9BQU8sTUFBTSxDQUFDLDhCQUE4QixDQUFBO0lBQzlDLENBQUM7SUFFRCw2RkFBNkY7SUFDN0YsTUFBTTtRQUNKLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7UUFFOUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFFBQVEsRUFDUixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFDLENBQUMsRUFDMUQsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxDQUMxQyxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixLQUFLO1FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUU5RCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQzdCLE9BQU07WUFDUixDQUFDO1lBRUQsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQ25FLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3pELHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3ZELENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ2pHLENBQUM7O0FBdERNLG1DQUFZLEdBQUc7SUFDcEIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsU0FBUztJQUN0QixpQkFBaUIsRUFBRSxTQUFTO0lBQzVCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLFVBQVUsRUFBRSxTQUFTO0NBQ3RCLEFBUmtCLENBUWxCO2VBVGtCLHNCQUFzQjtBQWtGM0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQUs7SUFDMUMsT0FBTyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2hhcGVIb29rLCB1c2VTaGFwZUhvb2t9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZVwiXG5pbXBvcnQge3VzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBTeXN0ZW1UZXN0QnJvd3NlckhlbHBlciBmcm9tIFwiLi9zeXN0ZW0tdGVzdC1icm93c2VyLWhlbHBlci5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7e3BhdGg6IHN0cmluZ319IFN5c3RlbVRlc3RCcm93c2VySGVscGVyUGF0aEV2ZW50ICovXG5cbmNvbnN0IHNoYXJlZCA9IHtcbiAgLyoqIEB0eXBlIHtTeXN0ZW1UZXN0QnJvd3NlckhlbHBlciB8IG51bGx9ICovXG4gIGRlZmF1bHRTeXN0ZW1UZXN0QnJvd3NlckhlbHBlcjogbnVsbFxufVxuXG4vKiogU2hhcmVkIHNoYXBlLWhvb2sgc3RhdGUgY29udGFpbmVyIGZvciBgdXNlU3lzdGVtVGVzdCpgIGhvb2tzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlU3lzdGVtVGVzdFNoYXBlSG9vayBleHRlbmRzIFNoYXBlSG9vayB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgYnJvd3NlckhlbHBlcjogdW5kZWZpbmVkLFxuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIG9uRGlzbWlzc1RvOiB1bmRlZmluZWQsXG4gICAgb25GaXJzdEluaXRpYWxpemU6IHVuZGVmaW5lZCxcbiAgICBvbkluaXRpYWxpemU6IHVuZGVmaW5lZCxcbiAgICBvblRlYXJkb3duOiB1bmRlZmluZWQsXG4gICAgb25OYXZpZ2F0ZTogdW5kZWZpbmVkXG4gIH1cblxuICAvKiogQHJldHVybnMge1N5c3RlbVRlc3RCcm93c2VySGVscGVyIHwgbnVsbH0gKi9cbiAgc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIoKSB7XG4gICAgaWYgKCF0aGlzLnAuZW5hYmxlZCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wLmJyb3dzZXJIZWxwZXIpIHtcbiAgICAgIHRoaXMucC5icm93c2VySGVscGVyLmVuYWJsZU9uQnJvd3NlcigpXG4gICAgICByZXR1cm4gdGhpcy5wLmJyb3dzZXJIZWxwZXJcbiAgICB9XG5cbiAgICBpZiAoIXNoYXJlZC5kZWZhdWx0U3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIpIHtcbiAgICAgIHNoYXJlZC5kZWZhdWx0U3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIgPSBuZXcgU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIoKVxuICAgIH1cblxuICAgIHNoYXJlZC5kZWZhdWx0U3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIuZW5hYmxlT25Ccm93c2VyKClcblxuICAgIHJldHVybiBzaGFyZWQuZGVmYXVsdFN5c3RlbVRlc3RCcm93c2VySGVscGVyXG4gIH1cblxuICAvKiogQHJldHVybnMge3tlbmFibGVkOiBib29sZWFuLCBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcjogU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIgfCBudWxsfX0gKi9cbiAgcmVzdWx0KCkge1xuICAgIGNvbnN0IHN5c3RlbVRlc3RCcm93c2VySGVscGVyID0gdGhpcy5zeXN0ZW1UZXN0QnJvd3NlckhlbHBlcigpXG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIFwicmVzdWx0XCIsXG4gICAgICAoKSA9PiAoe2VuYWJsZWQ6IHRoaXMucC5lbmFibGVkLCBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcn0pLFxuICAgICAgW3RoaXMucC5lbmFibGVkLCBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcl1cbiAgICApXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHN5c3RlbVRlc3RCcm93c2VySGVscGVyID0gdGhpcy5zeXN0ZW1UZXN0QnJvd3NlckhlbHBlcigpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIub25GaXJzdEluaXRpYWxpemUodGhpcy5wLm9uRmlyc3RJbml0aWFsaXplKVxuICAgICAgc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXIub25Jbml0aWFsaXplKHRoaXMucC5vbkluaXRpYWxpemUpXG4gICAgICBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlci5vblRlYXJkb3duKHRoaXMucC5vblRlYXJkb3duKVxuICAgIH0sIFtzeXN0ZW1UZXN0QnJvd3NlckhlbHBlciwgdGhpcy5wLm9uRmlyc3RJbml0aWFsaXplLCB0aGlzLnAub25Jbml0aWFsaXplLCB0aGlzLnAub25UZWFyZG93bl0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsuLi51bmtub3dufSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+IHwgdm9pZH1cbiAgICovXG4gIG9uU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXJEaXNtaXNzVG8gPSAoLi4uYXJncykgPT4ge1xuICAgIGlmICghdGhpcy5wLmVuYWJsZWQgfHwgIXRoaXMucC5vbkRpc21pc3NUbykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucC5vbkRpc21pc3NUbyh7cGF0aDogKC8qKiBAdHlwZSB7U3lzdGVtVGVzdEJyb3dzZXJIZWxwZXJQYXRoRXZlbnR9ICovIChhcmdzWzBdKSkucGF0aH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsuLi51bmtub3dufSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+IHwgdm9pZH1cbiAgICovXG4gIG9uU3lzdGVtVGVzdEJyb3dzZXJIZWxwZXJOYXZpZ2F0ZSA9ICguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCF0aGlzLnAuZW5hYmxlZCB8fCAhdGhpcy5wLm9uTmF2aWdhdGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnAub25OYXZpZ2F0ZSh7cGF0aDogKC8qKiBAdHlwZSB7U3lzdGVtVGVzdEJyb3dzZXJIZWxwZXJQYXRoRXZlbnR9ICovIChhcmdzWzBdKSkucGF0aH0pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHByb3BzXG4gKiBAcmV0dXJucyB7VXNlU3lzdGVtVGVzdFNoYXBlSG9va31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN5c3RlbVRlc3RTaGFwZUhvb2socHJvcHMpIHtcbiAgcmV0dXJuIHVzZVNoYXBlSG9vayhVc2VTeXN0ZW1UZXN0U2hhcGVIb29rLCBwcm9wcylcbn1cbiJdfQ==
|
|
@@ -8,11 +8,11 @@ export function resetSystemTestEnabledForTests(): void;
|
|
|
8
8
|
* @param {import("./system-test-browser-helper.js").default} [options.browserHelper]
|
|
9
9
|
* @param {boolean} [options.enabled] Override the auto-detected enabled state.
|
|
10
10
|
* @param {string} [options.host] Override the system test host for WebSocket connections.
|
|
11
|
-
* @param {(args: {path: string}) => void} [options.onDismissTo]
|
|
11
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onDismissTo]
|
|
12
12
|
* @param {function() : void} [options.onFirstInitialize]
|
|
13
13
|
* @param {function() : void} [options.onInitialize]
|
|
14
14
|
* @param {function() : void} [options.onTeardown]
|
|
15
|
-
* @param {(args: {path: string}) => void} [options.onNavigate]
|
|
15
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onNavigate]
|
|
16
16
|
* @returns {{enabled: boolean, systemTestBrowserHelper: import("./system-test-browser-helper.js").default | null}}
|
|
17
17
|
*/
|
|
18
18
|
export default function useSystemTest({ browserHelper, enabled, host, onDismissTo, onFirstInitialize, onInitialize, onTeardown, onNavigate, ...restArgs }?: {
|
|
@@ -21,13 +21,13 @@ export default function useSystemTest({ browserHelper, enabled, host, onDismissT
|
|
|
21
21
|
host?: string | undefined;
|
|
22
22
|
onDismissTo?: ((args: {
|
|
23
23
|
path: string;
|
|
24
|
-
}) => void) | undefined;
|
|
24
|
+
}) => void | Promise<void>) | undefined;
|
|
25
25
|
onFirstInitialize?: (() => void) | undefined;
|
|
26
26
|
onInitialize?: (() => void) | undefined;
|
|
27
27
|
onTeardown?: (() => void) | undefined;
|
|
28
28
|
onNavigate?: ((args: {
|
|
29
29
|
path: string;
|
|
30
|
-
}) => void) | undefined;
|
|
30
|
+
}) => void | Promise<void>) | undefined;
|
|
31
31
|
}): {
|
|
32
32
|
enabled: boolean;
|
|
33
33
|
systemTestBrowserHelper: import("./system-test-browser-helper.js").default | null;
|
package/build/use-system-test.js
CHANGED
|
@@ -35,11 +35,11 @@ export function resetSystemTestEnabledForTests() {
|
|
|
35
35
|
* @param {import("./system-test-browser-helper.js").default} [options.browserHelper]
|
|
36
36
|
* @param {boolean} [options.enabled] Override the auto-detected enabled state.
|
|
37
37
|
* @param {string} [options.host] Override the system test host for WebSocket connections.
|
|
38
|
-
* @param {(args: {path: string}) => void} [options.onDismissTo]
|
|
38
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onDismissTo]
|
|
39
39
|
* @param {function() : void} [options.onFirstInitialize]
|
|
40
40
|
* @param {function() : void} [options.onInitialize]
|
|
41
41
|
* @param {function() : void} [options.onTeardown]
|
|
42
|
-
* @param {(args: {path: string}) => void} [options.onNavigate]
|
|
42
|
+
* @param {(args: {path: string}) => void | Promise<void>} [options.onNavigate]
|
|
43
43
|
* @returns {{enabled: boolean, systemTestBrowserHelper: import("./system-test-browser-helper.js").default | null}}
|
|
44
44
|
*/
|
|
45
45
|
export default function useSystemTest({ browserHelper, enabled, host, onDismissTo, onFirstInitialize, onInitialize, onTeardown, onNavigate, ...restArgs } = { browserHelper: undefined, enabled: undefined, host: undefined, onDismissTo: undefined, onFirstInitialize: undefined, onInitialize: undefined, onTeardown: undefined, onNavigate: undefined }) {
|
|
@@ -65,4 +65,4 @@ export default function useSystemTest({ browserHelper, enabled, host, onDismissT
|
|
|
65
65
|
useEventEmitter(systemTestBrowserHelper?.getEvents(), "navigate", shapeHook.tt.onSystemTestBrowserHelperNavigate);
|
|
66
66
|
return shapeHook.result();
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN5c3RlbS10ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1zeXN0ZW0tdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxlQUFlLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyx1QkFBdUIsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQTtBQUV0RSxJQUFJLDZCQUE2QixHQUFHLEtBQUssQ0FBQTtBQUV6Qyx5QkFBeUI7QUFDekIsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxJQUFJLDZCQUE2QjtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRTlDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUNuQixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixLQUFLLE1BQU0sQ0FBQTtJQUNqRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFBO0lBQ3hELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0lBRTVDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4RixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXpDLElBQUksV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQTtJQUNoQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQUUsNkJBQTZCLEdBQUcsSUFBSSxDQUFBO0lBRWpELE9BQU8sNkJBQTZCLENBQUE7QUFDdEMsQ0FBQztBQUVELHNCQUFzQjtBQUN0QixNQUFNLFVBQVUsOEJBQThCO0lBQzVDLDZCQUE2QixHQUFHLEtBQUssQ0FBQTtBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxhQUFhLENBQUMsRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLEVBQUMsR0FBRyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFDO0lBQ3BWLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxPQUFPLElBQUksbUJBQW1CLEVBQUUsQ0FBQTtJQUV4RCxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsdUJBQXVCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUN2QyxhQUFhO1FBQ2IsT0FBTyxFQUFFLGVBQWU7UUFDeEIsV0FBVztRQUNYLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osVUFBVTtRQUNWLFVBQVU7S0FDWCxDQUFDLENBQUE7SUFDRixNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO0lBRW5FLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQ25ILGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO0lBRWpILE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFBO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcXMgZnJvbSBcInFzXCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcInlhLXVzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCBTeXN0ZW1UZXN0QnJvd3NlckhlbHBlciBmcm9tIFwiLi9zeXN0ZW0tdGVzdC1icm93c2VyLWhlbHBlci5qc1wiXG5pbXBvcnQge3VzZVN5c3RlbVRlc3RTaGFwZUhvb2t9IGZyb20gXCIuL3VzZS1zeXN0ZW0tdGVzdC1zaGFwZS1ob29rLmpzXCJcblxubGV0IGF1dG9EZXRlY3RlZFN5c3RlbVRlc3RFbmFibGVkID0gZmFsc2VcblxuLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3lzdGVtVGVzdEVuYWJsZWQoKSB7XG4gIGlmIChhdXRvRGV0ZWN0ZWRTeXN0ZW1UZXN0RW5hYmxlZCkgcmV0dXJuIHRydWVcblxuICBsZXQgZW5hYmxlZCA9IGZhbHNlXG4gIGNvbnN0IGVudkVuYWJsZWQgPSBwcm9jZXNzLmVudi5FWFBPX1BVQkxJQ19TWVNURU1fVEVTVCA9PT0gXCJ0cnVlXCJcbiAgY29uc3QgZW52SG9zdCA9IHByb2Nlc3MuZW52LkVYUE9fUFVCTElDX1NZU1RFTV9URVNUX0hPU1RcbiAgY29uc3QgaW5pdGlhbFVybCA9IGdsb2JhbFRoaXMubG9jYXRpb24/
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXN5c3RlbS10ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1zeXN0ZW0tdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxlQUFlLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyx1QkFBdUIsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQTtBQUV0RSxJQUFJLDZCQUE2QixHQUFHLEtBQUssQ0FBQTtBQUV6Qyx5QkFBeUI7QUFDekIsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxJQUFJLDZCQUE2QjtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRTlDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUNuQixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixLQUFLLE1BQU0sQ0FBQTtJQUNqRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFBO0lBQ3hELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0lBRTVDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4RixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXpDLElBQUksV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQTtJQUNoQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQUUsNkJBQTZCLEdBQUcsSUFBSSxDQUFBO0lBRWpELE9BQU8sNkJBQTZCLENBQUE7QUFDdEMsQ0FBQztBQUVELHNCQUFzQjtBQUN0QixNQUFNLFVBQVUsOEJBQThCO0lBQzVDLDZCQUE2QixHQUFHLEtBQUssQ0FBQTtBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxhQUFhLENBQUMsRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLEVBQUMsR0FBRyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFDO0lBQ3BWLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxPQUFPLElBQUksbUJBQW1CLEVBQUUsQ0FBQTtJQUV4RCxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsdUJBQXVCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUN2QyxhQUFhO1FBQ2IsT0FBTyxFQUFFLGVBQWU7UUFDeEIsV0FBVztRQUNYLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osVUFBVTtRQUNWLFVBQVU7S0FDWCxDQUFDLENBQUE7SUFDRixNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO0lBRW5FLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQ25ILGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO0lBRWpILE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFBO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcXMgZnJvbSBcInFzXCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcInlhLXVzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCBTeXN0ZW1UZXN0QnJvd3NlckhlbHBlciBmcm9tIFwiLi9zeXN0ZW0tdGVzdC1icm93c2VyLWhlbHBlci5qc1wiXG5pbXBvcnQge3VzZVN5c3RlbVRlc3RTaGFwZUhvb2t9IGZyb20gXCIuL3VzZS1zeXN0ZW0tdGVzdC1zaGFwZS1ob29rLmpzXCJcblxubGV0IGF1dG9EZXRlY3RlZFN5c3RlbVRlc3RFbmFibGVkID0gZmFsc2VcblxuLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3lzdGVtVGVzdEVuYWJsZWQoKSB7XG4gIGlmIChhdXRvRGV0ZWN0ZWRTeXN0ZW1UZXN0RW5hYmxlZCkgcmV0dXJuIHRydWVcblxuICBsZXQgZW5hYmxlZCA9IGZhbHNlXG4gIGNvbnN0IGVudkVuYWJsZWQgPSBwcm9jZXNzLmVudi5FWFBPX1BVQkxJQ19TWVNURU1fVEVTVCA9PT0gXCJ0cnVlXCJcbiAgY29uc3QgZW52SG9zdCA9IHByb2Nlc3MuZW52LkVYUE9fUFVCTElDX1NZU1RFTV9URVNUX0hPU1RcbiAgY29uc3QgaW5pdGlhbFVybCA9IGdsb2JhbFRoaXMubG9jYXRpb24/LmhyZWZcblxuICBpZiAoaW5pdGlhbFVybCkge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gaW5pdGlhbFVybC5zdWJzdHJpbmcoaW5pdGlhbFVybC5pbmRleE9mKFwiP1wiKSArIDEsIGluaXRpYWxVcmwubGVuZ3RoKVxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcXMucGFyc2UocXVlcnlTdHJpbmcpXG5cbiAgICBpZiAocXVlcnlQYXJhbXMuc3lzdGVtVGVzdCA9PSBcInRydWVcIikge1xuICAgICAgZW5hYmxlZCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAoZW52RW5hYmxlZCB8fCBlbnZIb3N0KSB7XG4gICAgZW5hYmxlZCA9IHRydWVcbiAgfVxuXG4gIGlmIChlbmFibGVkKSBhdXRvRGV0ZWN0ZWRTeXN0ZW1UZXN0RW5hYmxlZCA9IHRydWVcblxuICByZXR1cm4gYXV0b0RldGVjdGVkU3lzdGVtVGVzdEVuYWJsZWRcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0U3lzdGVtVGVzdEVuYWJsZWRGb3JUZXN0cygpIHtcbiAgYXV0b0RldGVjdGVkU3lzdGVtVGVzdEVuYWJsZWQgPSBmYWxzZVxufVxuXG4vKipcbiAqIEdlbmVyaWMgc3lzdGVtLXRlc3QgaG9vay4gU3VwcGx5IG5hdmlnYXRpb24gY2FsbGJhY2tzIGZvciB0aGUgdGFyZ2V0IHJ1bnRpbWUvcm91dGVyLlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zeXN0ZW0tdGVzdC1icm93c2VyLWhlbHBlci5qc1wiKS5kZWZhdWx0fSBbb3B0aW9ucy5icm93c2VySGVscGVyXVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5lbmFibGVkXSBPdmVycmlkZSB0aGUgYXV0by1kZXRlY3RlZCBlbmFibGVkIHN0YXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmhvc3RdIE92ZXJyaWRlIHRoZSBzeXN0ZW0gdGVzdCBob3N0IGZvciBXZWJTb2NrZXQgY29ubmVjdGlvbnMuXG4gKiBAcGFyYW0geyhhcmdzOiB7cGF0aDogc3RyaW5nfSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD59IFtvcHRpb25zLm9uRGlzbWlzc1RvXVxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gW29wdGlvbnMub25GaXJzdEluaXRpYWxpemVdXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBbb3B0aW9ucy5vbkluaXRpYWxpemVdXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBbb3B0aW9ucy5vblRlYXJkb3duXVxuICogQHBhcmFtIHsoYXJnczoge3BhdGg6IHN0cmluZ30pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+fSBbb3B0aW9ucy5vbk5hdmlnYXRlXVxuICogQHJldHVybnMge3tlbmFibGVkOiBib29sZWFuLCBzeXN0ZW1UZXN0QnJvd3NlckhlbHBlcjogaW1wb3J0KFwiLi9zeXN0ZW0tdGVzdC1icm93c2VyLWhlbHBlci5qc1wiKS5kZWZhdWx0IHwgbnVsbH19XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVN5c3RlbVRlc3Qoe2Jyb3dzZXJIZWxwZXIsIGVuYWJsZWQsIGhvc3QsIG9uRGlzbWlzc1RvLCBvbkZpcnN0SW5pdGlhbGl6ZSwgb25Jbml0aWFsaXplLCBvblRlYXJkb3duLCBvbk5hdmlnYXRlLCAuLi5yZXN0QXJnc30gPSB7YnJvd3NlckhlbHBlcjogdW5kZWZpbmVkLCBlbmFibGVkOiB1bmRlZmluZWQsIGhvc3Q6IHVuZGVmaW5lZCwgb25EaXNtaXNzVG86IHVuZGVmaW5lZCwgb25GaXJzdEluaXRpYWxpemU6IHVuZGVmaW5lZCwgb25Jbml0aWFsaXplOiB1bmRlZmluZWQsIG9uVGVhcmRvd246IHVuZGVmaW5lZCwgb25OYXZpZ2F0ZTogdW5kZWZpbmVkfSkge1xuICBjb25zdCByZXN0QXJnc0tleXMgPSBPYmplY3Qua2V5cyhyZXN0QXJncylcblxuICBpZiAocmVzdEFyZ3NLZXlzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYXJndW1lbnRzIGdpdmVuIHRvIHVzZVN5c3RlbVRlc3Q6ICR7cmVzdEFyZ3NLZXlzLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRFbmFibGVkID0gZW5hYmxlZCA/PyBpc1N5c3RlbVRlc3RFbmFibGVkKClcblxuICBpZiAoaG9zdCkge1xuICAgIFN5c3RlbVRlc3RCcm93c2VySGVscGVyLnNldERlZmF1bHRIb3N0KGhvc3QpXG4gIH1cblxuICBjb25zdCBzaGFwZUhvb2sgPSB1c2VTeXN0ZW1UZXN0U2hhcGVIb29rKHtcbiAgICBicm93c2VySGVscGVyLFxuICAgIGVuYWJsZWQ6IHJlc29sdmVkRW5hYmxlZCxcbiAgICBvbkRpc21pc3NUbyxcbiAgICBvbkZpcnN0SW5pdGlhbGl6ZSxcbiAgICBvbkluaXRpYWxpemUsXG4gICAgb25UZWFyZG93bixcbiAgICBvbk5hdmlnYXRlXG4gIH0pXG4gIGNvbnN0IHN5c3RlbVRlc3RCcm93c2VySGVscGVyID0gc2hhcGVIb29rLnN5c3RlbVRlc3RCcm93c2VySGVscGVyKClcblxuICB1c2VFdmVudEVtaXR0ZXIoc3lzdGVtVGVzdEJyb3dzZXJIZWxwZXI/LmdldEV2ZW50cygpLCBcImRpc21pc3NUb1wiLCBzaGFwZUhvb2sudHQub25TeXN0ZW1UZXN0QnJvd3NlckhlbHBlckRpc21pc3NUbylcbiAgdXNlRXZlbnRFbWl0dGVyKHN5c3RlbVRlc3RCcm93c2VySGVscGVyPy5nZXRFdmVudHMoKSwgXCJuYXZpZ2F0ZVwiLCBzaGFwZUhvb2sudHQub25TeXN0ZW1UZXN0QnJvd3NlckhlbHBlck5hdmlnYXRlKVxuXG4gIHJldHVybiBzaGFwZUhvb2sucmVzdWx0KClcbn1cbiJdfQ==
|