@magic-xpa/engine 4.801.0-dev481.306 → 4.801.0-dev481.309
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/esm2020/src/ClientManager.mjs +2 -11
- package/esm2020/src/CommandsTable.mjs +12 -13
- package/esm2020/src/CurrentClientVersion.mjs +2 -2
- package/esm2020/src/GUIManager.mjs +1 -2
- package/esm2020/src/GuiEventsProcessor.mjs +2 -19
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +35 -35
- package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +1 -1
- package/esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +7 -7
- package/esm2020/src/commands/ClientToServer/QueryCommand.mjs +1 -1
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +2 -2
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +1 -1
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +1 -1
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +1 -2
- package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +5 -5
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +1 -3
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +1 -1
- package/esm2020/src/data/DataSourceIdKey.mjs +1 -9
- package/esm2020/src/data/DataView.mjs +52 -54
- package/esm2020/src/data/DvCache.mjs +4 -29
- package/esm2020/src/env/Environment.mjs +2 -5
- package/esm2020/src/env/LanguageData.mjs +1 -2
- package/esm2020/src/event/ActionManager.mjs +2 -5
- package/esm2020/src/event/Event.mjs +249 -355
- package/esm2020/src/event/EventHandler.mjs +1 -2
- package/esm2020/src/event/EventHandlerPosition.mjs +1 -2
- package/esm2020/src/event/EventsManager.mjs +21 -43
- package/esm2020/src/exp/ExpressionEvaluator.mjs +1 -6
- package/esm2020/src/gui/MgControl.mjs +1 -3
- package/esm2020/src/gui/MgForm.mjs +1 -2
- package/esm2020/src/http/client/HttpClientBase.mjs +1 -17
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +1 -10
- package/esm2020/src/rt/DataviewHeaders.mjs +2 -6
- package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +1 -2
- package/esm2020/src/rt/LastFocusedManager.mjs +1 -5
- package/esm2020/src/rt/Operation.mjs +2 -12
- package/esm2020/src/tasks/Task.mjs +3 -17
- package/esm2020/src/util/FlowMonitorQueue.mjs +1 -14
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +1 -3
- package/fesm2015/magic-xpa-engine.mjs +516 -799
- package/fesm2015/magic-xpa-engine.mjs.map +1 -1
- package/fesm2020/magic-xpa-engine.mjs +509 -789
- package/fesm2020/magic-xpa-engine.mjs.map +1 -1
- package/package.json +4 -4
- package/src/ClientManager.d.ts +0 -3
- package/src/CommandsTable.d.ts +5 -5
- package/src/GuiEventsProcessor.d.ts +0 -2
- package/src/commands/ClientToServer/CommandFactory.d.ts +35 -35
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +2 -2
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +2 -2
- package/src/commands/ServerToClient/VerifyCommand.d.ts +0 -1
- package/src/data/DataSourceIdKey.d.ts +0 -5
- package/src/data/DataView.d.ts +0 -1
- package/src/data/DvCache.d.ts +2 -6
- package/src/env/Environment.d.ts +0 -2
- package/src/event/ActionManager.d.ts +1 -3
- package/src/event/Event.d.ts +5 -22
- package/src/event/EventsManager.d.ts +1 -5
- package/src/http/client/HttpClientBase.d.ts +0 -2
- package/src/remote/RemoteCommandsProcessor.d.ts +0 -4
- package/src/rt/DataviewHeaders.d.ts +1 -3
- package/src/rt/Operation.d.ts +0 -4
- package/src/util/FlowMonitorQueue.d.ts +0 -11
|
@@ -12,7 +12,6 @@ import { UniqueIDUtils } from './util/UniqueIDUtils';
|
|
|
12
12
|
import { HttpManager } from './http/HttpManager';
|
|
13
13
|
import { CommandsTable } from './CommandsTable';
|
|
14
14
|
import { RemoteCommandsProcessor } from './remote/RemoteCommandsProcessor';
|
|
15
|
-
import { ConstInterface } from './ConstInterface';
|
|
16
15
|
import { CommandsProcessorBase_SendingInstruction } from './CommandsProcessorBase';
|
|
17
16
|
import { CommandsProcessorManager } from './CommandsProcessorManager';
|
|
18
17
|
import { MGData } from './tasks/MGData';
|
|
@@ -29,8 +28,6 @@ import { AccessHelper } from './AccessHelper';
|
|
|
29
28
|
import { GUIManager } from "./GUIManager";
|
|
30
29
|
export class ClientManager {
|
|
31
30
|
constructor() {
|
|
32
|
-
this._guiEventsProcessor = null;
|
|
33
|
-
this._tableCacheManager = null;
|
|
34
31
|
this._delayInProgress = false;
|
|
35
32
|
this._debugClient = null;
|
|
36
33
|
this._globalUniqueSessionId = null;
|
|
@@ -50,7 +47,6 @@ export class ClientManager {
|
|
|
50
47
|
AddEvent(guiEvent) {
|
|
51
48
|
let task = MGDataCollection.Instance.GetTaskByID(guiEvent.TaskID);
|
|
52
49
|
let lineIdx = +guiEvent.Line;
|
|
53
|
-
let clickDblClickSucceeded = false;
|
|
54
50
|
let dvRowIdx = 0;
|
|
55
51
|
if (task != null) {
|
|
56
52
|
let control = null;
|
|
@@ -246,7 +242,7 @@ export class ClientManager {
|
|
|
246
242
|
HttpManager.setNativeHttpClient(httpClient);
|
|
247
243
|
let loaded = await ClientManager.Instance.LoadExecutionProps();
|
|
248
244
|
if (loaded) {
|
|
249
|
-
|
|
245
|
+
new GuiEventsProcessor();
|
|
250
246
|
ClientManager.Instance.InitGuiManager();
|
|
251
247
|
ClientManager.Instance.InitCircularReferencesBypasses();
|
|
252
248
|
let versionString = CurrentClientVersion === '0.0.0.0' ? "Development mode" : "Version : " + CurrentClientVersion;
|
|
@@ -315,11 +311,6 @@ export class ClientManager {
|
|
|
315
311
|
GetGlobalUniqueSessionID() {
|
|
316
312
|
return this._globalUniqueSessionId;
|
|
317
313
|
}
|
|
318
|
-
static getExecutionPropertiesFileName() {
|
|
319
|
-
let fullyQualifiedName = null;
|
|
320
|
-
let lastPathSeparator = fullyQualifiedName.lastIndexOf('\\');
|
|
321
|
-
return NString.Remove(fullyQualifiedName, lastPathSeparator + 1, fullyQualifiedName.length - lastPathSeparator - 1) + ConstInterface.EXECUTION_PROPERTIES_FILE_NAME;
|
|
322
|
-
}
|
|
323
314
|
static GetControlPictureMask(taskId, controlName) {
|
|
324
315
|
let pic = null;
|
|
325
316
|
let task = MGDataCollection.Instance.GetTaskByID(taskId);
|
|
@@ -400,4 +391,4 @@ export class ClientManager {
|
|
|
400
391
|
}
|
|
401
392
|
ClientManager._instance = null;
|
|
402
393
|
ClientManager._executionPropertiesFileName = "./assets/server-config.json";
|
|
403
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXpHLE9BQU8sRUFDTCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixJQUFJLEVBQ0osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFHUCxrQkFBa0IsRUFDbEIsTUFBTSxFQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBSTlDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxF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cUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBR3ZELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFL0QsSUFBSSw4QkFBOEIsR0FBbUMsY0FBYztZQUNuRixvQ0FBb0MsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFMUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQWlCLDhCQUE4QixDQUFDLENBQUM7UUFHM0csdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7O0FBdGxCYyx1QkFBUyxHQUFrQixJQUFJLENBQUM7QUFRdkIsMENBQTRCLEdBQVcsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcGxpY2F0aW9uRXhjZXB0aW9uLCBEYXRlVGltZSwgRGVidWcsIEV4Y2VwdGlvbiwgTlN0cmluZywgUmVmUGFyYW19IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRGF0ZVRpbWVVdGlscyxcclxuICBJbnRlcm5hbEludGVyZmFjZSxcclxuICBMb2dnZXIsXHJcbiAgTWlzYyxcclxuICBPU0Vudmlyb25tZW50LFxyXG4gIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgWE1MQ29uc3RhbnRzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZHMsXHJcbiAgQ29tbWFuZFR5cGUsXHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBFdmVudHMsXHJcbiAgR3VpQ29uc3RhbnRzLFxyXG4gIEd1aURhdGFDb2xsZWN0aW9uLFxyXG4gIEd1aUVudmlyb25tZW50LFxyXG4gIExhc3RGb2N1c2VkVmFsLFxyXG4gIE1hbmFnZXIsXHJcbiAgTWdDb250cm9sQmFzZSxcclxuICBQSUMsXHJcbiAgUnVudGltZUNvbnRleHRCYXNlLFxyXG4gIFN0eWxlc1xyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtFdmVudHNNYW5hZ2VyfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQge0d1aUV2ZW50c1Byb2Nlc3Nvcn0gZnJvbSAnLi9HdWlFdmVudHNQcm9jZXNzb3InO1xyXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICcuL2Vudi9FbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7TGFuZ3VhZ2VEYXRhfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQge1Rhc2tzVGFibGV9IGZyb20gJy4vdGFza3MvVGFza3NUYWJsZSc7XHJcbmltcG9ydCB7VGFibGVDYWNoZU1hbmFnZXJ9IGZyb20gJy4vcnQvVGFibGVDYWNoZU1hbmFnZXInO1xyXG5pbXBvcnQge01nQ29udHJvbH0gZnJvbSAnLi9ndWkvTWdDb250cm9sJztcclxuaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7VGFza30gZnJvbSAnLi90YXNrcy9UYXNrJztcclxuaW1wb3J0IHtNR0RhdGFDb2xsZWN0aW9ufSBmcm9tICcuL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb24nO1xyXG5pbXBvcnQge1VuaXF1ZUlEVXRpbHN9IGZyb20gJy4vdXRpbC9VbmlxdWVJRFV0aWxzJztcclxuaW1wb3J0IHtIdHRwTWFuYWdlcn0gZnJvbSAnLi9odHRwL0h0dHBNYW5hZ2VyJztcclxuaW1wb3J0IHtDb21tYW5kc1RhYmxlfSBmcm9tICcuL0NvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQge1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yfSBmcm9tICcuL3JlbW90ZS9SZW1vdGVDb21tYW5kc1Byb2Nlc3Nvcic7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gJy4vQ29uc3RJbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb259IGZyb20gJy4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlJztcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3Nvck1hbmFnZXJ9IGZyb20gJy4vQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyJztcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gJy4vdGFza3MvTUdEYXRhJztcclxuaW1wb3J0IHtTZXJ2ZXJFcnJvcn0gZnJvbSAnLi9yZW1vdGUvU2VydmVyRXJyb3InO1xyXG5pbXBvcnQge0h0dHBDbGllbnRFdmVudHN9IGZyb20gJy4vaHR0cC9jbGllbnQvSHR0cENsaWVudEV2ZW50cyc7XHJcbmltcG9ydCB7SUd1aUV2ZW50fSBmcm9tICcuL2JyaWRnZS9JR3VpRXZlbnQnO1xyXG5pbXBvcnQge0NvbW1hbmRGYWN0b3J5fSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5JztcclxuaW1wb3J0IHtDdXJyZW50Q2xpZW50VmVyc2lvbn0gZnJvbSAnLi9DdXJyZW50Q2xpZW50VmVyc2lvbic7XHJcbmltcG9ydCB7SVNlcnZlckNvbmZpZ30gZnJvbSAnLi91dGlsL0lTZXJ2ZXJDb25maWcnO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tICcuL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlcn0gZnJvbSAnLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQge0VudlBhcmFtc1RhYmxlfSBmcm9tICcuL2Vudi9FbnZWYXJpYWJsZXNUYWJsZSc7XHJcbmltcG9ydCB7R2xvYmFsUGFyYW1zfSBmcm9tICcuL2V4cC9HbG9iYWxQYXJhbXNUYWJsZSc7XHJcbmltcG9ydCB7T3BlblVSTENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvT3BlblVSTENvbW1hbmQnO1xyXG5pbXBvcnQge1NlcnZlckNvbmZpZ30gZnJvbSAnLi9TZXJ2ZXJDb25maWcnO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSAnLi9BY2Nlc3NIZWxwZXInO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kJztcclxuaW1wb3J0IHtHVUlNYW5hZ2VyfSBmcm9tIFwiLi9HVUlNYW5hZ2VyXCI7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQ2xpZW50TWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBfZ3VpRXZlbnRzUHJvY2Vzc29yOiBHdWlFdmVudHNQcm9jZXNzb3IgPSBudWxsO1xyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgX3RhYmxlQ2FjaGVNYW5hZ2VyOiBUYWJsZUNhY2hlTWFuYWdlciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfZGVsYXlJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7ICAvLyB0cnVlIGlmIGRlbGF5IGlzIGluIHByb2dyZXNzXHJcblxyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogQ2xpZW50TWFuYWdlciA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2RlYnVnQ2xpZW50OiBzdHJpbmcgPSBudWxsO1xyXG4gIHByaXZhdGUgX2dsb2JhbFVuaXF1ZVNlc3Npb25JZDogc3RyaW5nID0gbnVsbDtcclxuLy8gIHByaXZhdGUgX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7IC8vIGNvbnRyb2wgd2hlcmUgbGFzdCBwYXJraW5nIHdhcyBhdHRlbXB0ZWQgYnV0IHdlIGRpZCBub3QgcGFyayBvbiBpdFxyXG4gIHByaXZhdGUgX2J1dHRvbklzQ2xpY2tlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZTogc3RyaW5nID0gXCIuL2Fzc2V0cy9zZXJ2ZXItY29uZmlnLmpzb25cIjsgLy8gcGF0aCBvZiB0aGUgZXhlY3V0aW9uIHByb3BlcnRpZXMgZmlsZSBmcm9tIGFzc2V0cyBmb2xkZXJcclxuXHJcbiAgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBDbGllbnRNYW5hZ2VyIHtcclxuICAgIGlmIChDbGllbnRNYW5hZ2VyLl9pbnN0YW5jZSA9PT0gbnVsbClcclxuICAgICAgQ2xpZW50TWFuYWdlci5faW5zdGFuY2UgPSBuZXcgQ2xpZW50TWFuYWdlcigpO1xyXG5cclxuICAgIHJldHVybiBDbGllbnRNYW5hZ2VyLl9pbnN0YW5jZTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIHB1YmxpYyBBZGRFdmVudChndWlFdmVudDogSUd1aUV2ZW50KTogdm9pZCB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQoZ3VpRXZlbnQuVGFza0lEKTtcclxuICAgIGxldCBsaW5lSWR4OiBudW1iZXIgPSArZ3VpRXZlbnQuTGluZTtcclxuICAgIGxldCBjbGlja0RibENsaWNrU3VjY2VlZGVkOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBkdlJvd0lkeDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAodGFzayAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuXHJcbiAgICAgIGlmIChndWlFdmVudC5Db250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgICAgICBjb250cm9sID0gdGFzay5nZXRGb3JtKCkuR2V0Q3RybChndWlFdmVudC5Db250cm9sTmFtZSk7XHJcblxyXG4gICAgICBpZiAoY29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGR2OiBEYXRhVmlldyA9IDxEYXRhVmlldz50YXNrLkRhdGFWaWV3O1xyXG4gICAgICAgIGlmIChjb250cm9sLklzVGFibGVDaGlsZCkge1xyXG4gICAgICAgICAgbGluZUlkeCAtPSBkdi5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAoZ3VpRXZlbnQuRXZlbnRUeXBlKSB7XHJcblxyXG4gICAgICAgICAgY2FzZSBcImNvbHVtblNvcnRcIjpcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuaXNDb2x1bW5Tb3J0YWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uQ29sdW1uQ2xpY2soY29udHJvbCwgZ3VpRXZlbnQuTGluZSwgZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIm1vdXNlZG93blwiOlxyXG4gICAgICAgICAgICAvLyBEZWZlY3QgMTUyMjg4ICYgRGVmZWN0IDE1MjI2ODogUHJvYmxlbTogV2hlbiBidXR0b24gaXMgY2xpY2tlZCwgd2UgZ2V0IGZvY3VzIGV2ZW50IGZpcnN0IGFuZCBpZiBtZXNzYWdlQm94IGlzIG9wZW5lZCBoZXJlIGxpa2UgdmVyaWZ5LCBldGMuXHJcbiAgICAgICAgICAgIC8vIHdlIGRvIG5vdCByZWNlaXZlIGNsaWNrIGV2ZW50LiBIZW5jZSBldmVudHMgYXJlIG5vdCBwcm9jZXNzZWQuIFNvbHV0aW9uOiBXZSBkbyBuZWVkIGNsaWNrIGhhbmRsaW5nIGZvciBidXR0b24gYXMgaXQgaXMgY2FsbGVkIHdoZW4gd2UgcGFya1xyXG4gICAgICAgICAgICAvLyBvbiBidXR0b24gYW5kIHByZXNzIHNwYWNlIGtleS4gV2UgbmVlZCBmb2N1cyBldmVudCBoYW5kbGluZyBmb3IgZXhlY3V0aW5nIENQICYgQ1Mgd2hlbiBwYXJrZWQgb24gYnV0dG9uIGJ5IHRhYiBrZXkuIFNvIHdlIG5lZWQgdG8gbWFuYWdlXHJcbiAgICAgICAgICAgIC8vIGhvdyBjbGljayBpcyBoYW5kbGVkLiBXZSBkbyBub3QgbmVlZCBmb2N1cyBldmVudCBoYW5kbGluZyB3aGVuIHdlIGNsaWNrIG9uIGJ1dHRvbiwgc28gb24gbW91c2Vkb3duLCBzZXQgYSBmbGFnIHdoaWNoIHdpbGwgYmUgdXNlZCBpbiBmb2N1c1xyXG4gICAgICAgICAgICAvLyBldmVudCBoYW5kbGluZyB0byBza2lwIGl0cyBoYW5kbGluZy4gVGhlbiB3ZSB3aWxsIHJlY2VpdmUgY2xpY2sgZXZlbnQgd2hlcmUgdGhpcyB3aWxsIGJlIGFjdHVhbGx5IGhhbmRsZWQgYW5kIGhlbmNlIHdvcmsuXHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQnV0dG9uKCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9idXR0b25Jc0NsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFjb250cm9sLmlzU3ViZm9ybSgpKVxyXG4gICAgICAgICAgICAgIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSkuTGFzdENsaWNrZWRDdHJsTmFtZSA9IGNvbnRyb2wuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiY2xpY2tcIjpcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuaXNCdXR0b24oKSB8fCAoY29udHJvbC5Db25uZWN0ZWRDb250cm9sICYmIGd1aUV2ZW50LmZyb21CdXR0b24pKXtcclxuICAgICAgICAgICAgICBFdmVudHMuT25TZWxlY3Rpb24oXCJcIiwgY29udHJvbCwgbGluZUlkeCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKS5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY29udHJvbC5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uSXNDbGlja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc29ydGluZyBzaG91bGQgYmUgaGFuZGxlZCBvbmx5IG9uIGNvbHVtbiBjbGljayBhbmQgbm90IG9uIHJvd0RhdGFcclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoY29udHJvbC5UeXBlID09PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DT0xVTU4pIHtcclxuICAgICAgICAgICAgLy8gICBFdmVudHMuT25Db2x1bW5DbGljayhjb250cm9sLCBndWlFdmVudC5MaW5lLCBndWlFdmVudC5Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXMoY29udHJvbCwgbGluZUlkeCwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGxldCBwcm9kdWNlQ2xpY2s6IGJvb2xlYW4gPSBjb250cm9sLmlzQnV0dG9uKCkgfHwgY29udHJvbC5pc1RleHRDb250cm9sKCkgfHwgY29udHJvbC5pc0xhYmVsKCkgfHwgY29udHJvbC5pc1RhYkNvbnRyb2woKSB8fCBjb250cm9sLmlzVGFibGVDb250cm9sKCkgfHwgY29udHJvbC5pc0NvbWJvQm94KCkgfHwgY29udHJvbC5pc0ltYWdlQ29udHJvbCgpO1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5Pbk1vdXNlRG93bihjb250cm9sLmdldEZvcm0oKSwgY29udHJvbCwgbnVsbCwgdHJ1ZSwgbGluZUlkeCwgZmFsc2UsIHByb2R1Y2VDbGljayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZm9jdXNcIjpcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9idXR0b25Jc0NsaWNrZWQpXHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgLy8gLy8gSWYgd2UgYXR0ZW1wdCB0byBwYXJrIG9uIGNvbnRyb2wgd2hlcmUgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgdG8gcGFyayBsaWtlIGlmIGNvbnRyb2wgaGFzIGV4cHJlc3Npb24gb3IgcGFyZW50IHRhc2sgZmllbGQsIGRvIG5vdCBhbGxvdyB0byBmb2N1cyBvbiBpdC5cclxuICAgICAgICAgICAgLy8gLy8gU2V0IEZvY3VzIGJhY2sgdG8gbGFzdEZvY3VzZWRDb250cm9sLiBXZSBuZWVkIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgYXMgd2UgZ2V0IGZvY3VzIGV2ZW50IG9uIGEgY29udHJvbCB0d2ljZS4gU28gdG8gYXZvaWQgdG8gc2hvdyBlcnJvciBtdWx0aXBsZSB0aW1lcyxcclxuICAgICAgICAgICAgLy8gLy8gbWFpbnRhaW4gX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbC5cclxuICAgICAgICAgICAgLy8gaWYgKGNvbnRyb2wgIT09IHRoaXMuX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbCAmJiBjb250cm9sLkhhc0V4cE9yUGFyZW50VGFza0ZpZWxkKCkpIHtcclxuICAgICAgICAgICAgLy8gICAvLyBTaG93IGVycm9yIG9ubHkgZm9yIGNvbnRyb2xzIGhhdmluZyBEYXRhIHByb3BlcnR5IGFuZCBwYXJrYWJsZVxyXG4gICAgICAgICAgICAvLyAgIGlmKGNvbnRyb2wuaXNMaXN0Qm94KCkgfHwgY29udHJvbC5pc0NoZWNrQm94KCkgfHwgY29udHJvbC5pc0NvbWJvQm94KCkgfHwgY29udHJvbC5pc1RleHRDb250cm9sKCkgfHwgY29udHJvbC5pc1JhZGlvKCkgfHwgY29udHJvbC5pc1RhYkNvbnRyb2woKSkge1xyXG4gICAgICAgICAgICAvLyAgICAgQ29tbWFuZHMubWVzc2FnZUJveChudWxsLCBcIkVycm9yXCIsIFwiQ29udHJvbCBlaXRoZXIgaGFzIGV4cHJlc3Npb24gb3IgaGFzIHBhcmVudCB0YXNrIHZhcmlhYmxlIGF0dGFjaGVkIHRvIGl0LiBGYWlsZWQgdG8gcGFyayBvbiBjb250cm9sIHdpdGggbmFtZTogXCIgKyBjb250cm9sLk5hbWUsIFN0eWxlcy5NU0dCT1hfSUNPTl9FUlJPUiB8IFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LKTtcclxuICAgICAgICAgICAgLy8gICAgIC8vIERlZmVjdCAxNTI3Mjg6IFVzZSBsYXN0IGZvY3VzZWQgdGFzayBpbnN0ZWFkIGNvbnRyb2wgdGFzayBhcyBjb250cm9sIGNhbiBiZSBmcm9tIHN1YmZvcm0uXHJcbiAgICAgICAgICAgIC8vICAgICBGb2N1c01hbmFnZXIuU2V0Rm9jdXMoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldExhc3RGb2N1c2VkVGFzaygpLCBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCksIDAsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpID09PSBudWxsID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbCA9IGNvbnRyb2w7XHJcbiAgICAgICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBFdmVudHMuT25Gb2N1cyhjb250cm9sLCBsaW5lSWR4LCB0cnVlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJkYmxjbGlja1wiOlxyXG4gICAgICAgICAgICBFdmVudHMuT25EYmxDbGljayhjb250cm9sLCBsaW5lSWR4KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcInNlbGVjdGlvbmNoYW5nZWRcIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uU2VsZWN0aW9uKGd1aUV2ZW50LlZhbHVlLCBjb250cm9sLCBsaW5lSWR4LCB0cnVlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwia2V5ZG93blwiOlxyXG4gICAgICAgICAgICBFdmVudHMuT25LZXlEb3duKCB0YXNrLmdldEZvcm0oKSwgY29udHJvbCwgZ3VpRXZlbnQubW9kaWZpZXJzLCBndWlFdmVudC5rZXlDb2RlLCAwLDAsICcnLGZhbHNlLCcnLHRydWUgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwic2V0ZXh0ZXJuYWx2YWx1ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkFkZEV4dGVybmFsVmFsdWVFdmVudCgoPE1nQ29udHJvbD5jb250cm9sKSwgZ3VpRXZlbnQuZXh0ZXJuYWxWYWx1ZSwgZ3VpRXZlbnQucGFyYW0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidW5oYW5kbGVkIGV2ZW50OiBcXFwiXCIgKyBndWlFdmVudC5FdmVudFR5cGUgKyBcIlxcXCJcIik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcImZvY3VzT25Ob25NYWdpY0NvbnRyb2xcIjpcclxuICAgICAgICAgICAgY29udHJvbCA9IExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Gb2N1c09uTm9uTWFnaWNDb250cm9sKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImNsaWNrXCI6XHJcbiAgICAgICAgICAgIGlmKGd1aUV2ZW50LkNvbnRyb2xOYW1lID09PSBcIm1hZ2ljUm93XCIpIHtcclxuICAgICAgICAgICAgICBkdlJvd0lkeCA9IGd1aUV2ZW50LkxpbmUgLSAoPERhdGFWaWV3PnRhc2suRGF0YVZpZXcpLlJlY29yZHNCZWZvcmVDdXJyZW50VmlldztcclxuICAgICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aFRhc2tBbmRDb2RlQW5kTGluZSh0YXNrLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWCwgZHZSb3dJZHgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImNsb3NlXCI6XHJcbiAgICAgICAgICAgIGlmICh0YXNrLklzUm91dGUoKSlcclxuICAgICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkFkZFJvdXRlckNsb3NlZEV2ZW50KHRhc2spO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgRXZlbnRzLkNsb3NlRm9ybUV2ZW50KHRhc2suZ2V0Rm9ybSgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZGlzcG9zZVwiOlxyXG4gICAgICAgICAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmRlbGV0ZU1HRGF0YVRyZWUodGFzay5nZXRNZ2RJRCgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwicmVzaXplXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5UYWJsZVJlc2l6ZUV2ZW50KHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBndWlFdmVudC5QYWdlU2l6ZSk7XHJcbiAgICAgICAgICAvL2Nhc2UgJ2JyZWFrJyBpcyBtaXNzaW5nIGZvciAncmVzaXplJyB3aXRoIGludGVudGlvbiB0byBleGVjdXRlIGdldFJvd3Mgd2l0aCB0aGUgZGVzaXJlZCBkYXRhdmlldyByb3cgaW5kZXguXHJcbiAgICAgICAgICBjYXNlIFwiZ2V0Um93c1wiOlxyXG4gICAgICAgICAgICBkdlJvd0lkeCA9IGxpbmVJZHggLSAoPERhdGFWaWV3PnRhc2suRGF0YVZpZXcpLlJlY29yZHNCZWZvcmVDdXJyZW50VmlldztcclxuICAgICAgICAgICAgbGV0IGxhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCA9IHtndWlNZ0NvbnRyb2w6IHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBMaW5lOiBkdlJvd0lkeCwgVmFsOiBcIlwifTtcclxuICAgICAgICAgICAgRXZlbnRzLk9uR2V0Um93c0RhdGEodGFzay5nZXRGb3JtKCkuZ2V0VGFibGVDdHJsKCksIGR2Um93SWR4LCB0cnVlLCBsYXN0Rm9jdXNlZFZhbCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlJvdXRlck5hdmlnYXRlXCI6XHJcbiAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuQWRkUm91dGVFdmVudCh0YXNrLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCQ0xJRU5UX1JPVVRFLCBndWlFdmVudC5Sb3V0ZXJQYXRoLCBndWlFdmVudC5Sb3V0ZXJPdXRsZXROYW1lLFxyXG4gICAgICAgICAgICAgIGd1aUV2ZW50LlJvdXRlclBhcmFtcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInNldGV4dGVybmFsdmFsdWVcIjpcclxuICAgICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXJyb3JUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlVuYWJsZSB0byBmaW5kIHswfTogVHJ5aW5nIHRvIHNldCB2YWx1ZSBmb3IgYSBub24tZXhpc3RpbmcgY29udHJvbC5cIiwgZ3VpRXZlbnQuQ29udHJvbE5hbWUpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyggXCJ1bmhhbmRsZWQgZXZlbnQ6IFxcXCJcIiArIGd1aUV2ZW50LkV2ZW50VHlwZSArIFwiXFxcIlwiKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIC8vdGFzayA9PSBudWxsXHJcbiAgICAgIHN3aXRjaCAoZ3VpRXZlbnQuRXZlbnRUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBcImNvbmZpcm1hdGlvbkNsb3NlZFwiOlxyXG4gICAgICAgICAgdGhpcy5Db25maXJtYXRpb25DbG9zZWQoZ3VpRXZlbnQua2V5Q29kZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmFpc2UgY2FsbGJhY2sgb24gY2xvc2luZyBjb25maXJtYXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENvbmZpcm1hdGlvbkNsb3NlZChyZXM6IG51bWJlcik6IHZvaWRcclxuICB7XHJcbiAgICBDb21tYW5kcy5SZXNvbHZlUHJvbWlzZShyZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyB0aGUgd29yayB0aHJlYWQncyBlbnRyeSBtZXRob2RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIFdvcmtUaHJlYWRFeGVjdXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZygpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiXCIsIHRydWUpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIlN0YXJ0ZWQgb24gXCIgKyBEYXRlVGltZVV0aWxzLlRvU3RyaW5nKERhdGVUaW1lLk5vdywgWE1MQ29uc3RhbnRzLkVSUk9SX0xPR19EQVRFX0ZPUk1BVCwgTG9nZ2VyLkluc3RhbmNlKSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuV3JpdGVFeGVjdXRpb25Qcm9wZXJ0aWVzVG9Mb2coKTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoYXdhaXQgQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyLlN0YXJ0U2Vzc2lvbigpKSB7XHJcbiAgICAgICAgbGV0IG1nRGF0YVRhYjogTUdEYXRhQ29sbGVjdGlvbiA9IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2U7XHJcbiAgICAgICAgbGV0IHN0YXJ0dXBNZ0RhdGE6IE1HRGF0YSA9IG1nRGF0YVRhYi5TdGFydHVwTWdEYXRhO1xyXG4gICAgICAgIG1nRGF0YVRhYi5jdXJyTWdkSUQgPSBzdGFydHVwTWdEYXRhLkdldElkKCk7XHJcblxyXG4gICAgICAgIGxldCBub25JbnRlcmFjdGl2ZVRhc2s6IFRhc2sgPSBudWxsO1xyXG4gICAgICAgIGlmICghc3RhcnR1cE1nRGF0YS5Jc0Fib3J0aW5nKVxyXG4gICAgICAgICAgbm9uSW50ZXJhY3RpdmVUYXNrID0gYXdhaXQgVGFzay5TdGFydFByb2dyYW0oZmFsc2UsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgaWYgKG5vbkludGVyYWN0aXZlVGFzayA9PT0gbnVsbClcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuRXZlbnRzTG9vcChzdGFydHVwTWdEYXRhKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLk5vbkludGVyYWN0aXZlRXZlbnRzTG9vcChzdGFydHVwTWdEYXRhLCBub25JbnRlcmFjdGl2ZVRhc2spO1xyXG5cclxuICAgICAgICAvLyBzZXQgdGhlIFwiZW5kIG9mIHdvcmtcIiBmbGFnIG9ubHkgZm9yIHRoZSBtYWluIHdpbmRvd1xyXG4gICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2Uuc2V0RW5kT2ZXb3JrKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgaWYgKGV4IGluc3RhbmNlb2YgQXBwbGljYXRpb25FeGNlcHRpb24pIHtcclxuICAgICAgICBsZXQgaXNOb1Jlc3VsdEVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGV4IGluc3RhbmNlb2YgU2VydmVyRXJyb3IgJiYgKDxTZXJ2ZXJFcnJvcj5leCkuR2V0Q29kZSgpID09PSBTZXJ2ZXJFcnJvci5JTkZfTk9fUkVTVUxUKVxyXG4gICAgICAgICAgaXNOb1Jlc3VsdEVycm9yID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCFpc05vUmVzdWx0RXJyb3IpXHJcbiAgICAgICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLlByb2Nlc3NBYm9ydGluZ0Vycm9yKGV4KTtcclxuXHJcbiAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5zZXRFbmRPZldvcmsodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRocm93IGV4O1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuQ2hlY2tBbmRTaG93U3Bpbm5lcihmYWxzZSk7XHJcblxyXG4gICAgICBDb21tYW5kcy5hZGRHbG9iYWxDb21tYW5kKENvbW1hbmRUeXBlLkVYSVRfTUFHSUMpO1xyXG4gICAgICBDb21tYW5kcy5iZWdpbkludm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBXcml0ZSBFeGVjdXRpb24gcHJvcGVydGllcyB0byBsb2cuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBXcml0ZUV4ZWN1dGlvblByb3BlcnRpZXNUb0xvZygpOiB2b2lkIHtcclxuICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nU2VydmVyUmVsYXRlZE1lc3NhZ2VzKCkpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiLCB0cnVlKTtcclxuICAgICAgLy8gV3JpdGUgaGVhZGluZ1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIkV4ZWN1dGlvbiBQcm9wZXJ0aWVzOlwiLCB0cnVlKTtcclxuXHJcbiAgICAgIGxldCBwcm9wc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KFNlcnZlckNvbmZpZy5JbnN0YW5jZSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKHByb3BzU3RyaW5nLCB0cnVlKTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuSW5pdChSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5SQ19OT19DT05URVhUX0lEKTtcclxuICAgIExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5Jbml0KE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UpO1xyXG4gICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkxhc3RBY3Rpb25UaW1lID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuXHJcblxyXG4gICAgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuU2hvdWxkU2NyYW1ibGVBbmRVbnNjcmFtYmxlTWVzc2FnZXMgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvLyBUT0RPOiBIb3cgdG8gZ2V0IFByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZD9cclxuICAgIHRoaXMuX2dsb2JhbFVuaXF1ZVNlc3Npb25JZCA9IFVuaXF1ZUlEVXRpbHMuR2V0VW5pcXVlTWFjaGluZUlEKCkgKyBcIl9cIjsgLy8gKyBQcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCkuSWQ7XHJcblxyXG4gICAgdGhpcy5SZWdpc3RlckRlbGVnYXRlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBJbml0aWFsaXplIHRoZSBkYXRhIG5lZWRlZCBieSB0aGUgZ3VpIGxpYnJhcnlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gQ2xpZW50TWFuYWdlciBpbnN0YW5jZTwvcmV0dXJucz5cclxuICBwcml2YXRlIEluaXRHdWlNYW5hZ2VyKCk6IHZvaWQge1xyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyID0gRXZlbnRzTWFuYWdlci5JbnN0YW5jZTtcclxuICAgIE1hbmFnZXIuRGVmYXVsdFNlcnZlck5hbWUgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0U2VydmVyKCk7XHJcbiAgICBNYW5hZ2VyLkRlZmF1bHRQcm90b2NvbCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRQcm90b2NvbCgpO1xyXG4gICAgR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5JbnN0YW5jZTtcclxuICAgIEd1aURhdGFDb2xsZWN0aW9uLk1HRGF0YVRhYmxlID0gTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZTtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5ub0NvbnRleHRJZCA9IFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlJDX05PX0NPTlRFWFRfSUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gSW5pdGlhbGl6ZSBnbG9iYWwgZGF0YSBpbiBvYmplY3RzIHVzZWQgdG8gb3ZlcmNvbWUgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaXNzdWVcclxuICBwcml2YXRlIEluaXRDaXJjdWxhclJlZmVyZW5jZXNCeXBhc3NlcygpIHtcclxuICAgIFRhc2tzVGFibGUuY3JlYXRlTmV3dGFzayA9IFRhc2suQ3JlYXRlVGFzaztcclxuICAgIE9wZW5VUkxDb21tYW5kLmNyZWF0ZU5ld0NvbW1hbmRzVGFibGUgPSBDb21tYW5kc1RhYmxlLmNyZWF0ZUNvbW1hbmRzVGFibGU7XHJcblxyXG4gICAgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIgPSBFdmVudHNNYW5hZ2VyLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlID0gTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5lbnZQYXJhbXNUYWJsZSA9IEVudlBhcmFtc1RhYmxlLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmdsb2JhbFBhcmFtcyA9IEdsb2JhbFBhcmFtcy5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5sYW5ndWFnZURhdGEgPSBMYW5ndWFnZURhdGEuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5JbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gRW50cnkgcG9pbnQgdG8gdGhlIFdlYiBDbGllbnQgPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFyZ3NcIj5hcnJheSBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzPC9wYXJhbT5cclxuICBzdGF0aWMgTWFpbihodHRwQ2xpZW50OiBIdHRwQ2xpZW50KTogdm9pZCB7XHJcbiAgICAvLyBUT0RPIDogQ2hlY2sgaG93IHRvIGxvYWQgZnJvbSBTdHVkaW8gaS5lLiBGN1xyXG4gICAgLy8gaWYgKGFyZ3MubGVuZ3RoICE9PSAwICYmIE5TdHJpbmcuU3RhcnRzV2l0aChhcmdzWzBdLCBcIi9zcGF3bmFoZWFkXCIpKSB7XHJcbiAgICAvLyAgIENsaWVudE1hbmFnZXIuX3N0YXJ0ZWRGcm9tU3R1ZGlvID0gdHJ1ZTtcclxuICAgIC8vICAgU3R1ZGlvTGF1bmNoZXIuSW5pdChhcmdzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2VcclxuICAgIENsaWVudE1hbmFnZXIuU3RhcnRFeGVjdXRpb24oaHR0cENsaWVudCk7XHJcblxyXG4gICAgTG9nZ2VyLkluc3RhbmNlLkZsdXNoKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFRlcm1pbmF0ZSB0aGUgY2xpZW50IGFuZCB0ZXJtaW5hdGUgdGhlIGNvbnRleHQgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBTdG9wRXhlY3V0aW9uKCk6IFByb21pc2UgPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSXNBYm9ydGluZ01hZ2ljRW5naW5lID0gdHJ1ZTtcclxuICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLkNsb3NpbmdGb3JtVUkgPSB0cnVlO1xyXG5cclxuICAgICAgYXdhaXQgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLmVuZFRhc2sodHJ1ZSwgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4Mykge1xyXG4gICAgICBpZiAoZXgzIGluc3RhbmNlb2YgQXBwbGljYXRpb25FeGNlcHRpb24pIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZyhleDMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgU3RhcnRFeGVjdXRpb24oaHR0cENsaWVudDpIdHRwQ2xpZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBIdHRwTWFuYWdlci5zZXROYXRpdmVIdHRwQ2xpZW50KGh0dHBDbGllbnQpO1xyXG4gICAgbGV0IGxvYWRlZDogYm9vbGVhbiA9IGF3YWl0IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuTG9hZEV4ZWN1dGlvblByb3BzKCk7XHJcblxyXG4gICAgaWYgKGxvYWRlZCkge1xyXG4gICAgICBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLl9ndWlFdmVudHNQcm9jZXNzb3IgPSBuZXcgR3VpRXZlbnRzUHJvY2Vzc29yKCk7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuSW5pdEd1aU1hbmFnZXIoKTtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Jbml0Q2lyY3VsYXJSZWZlcmVuY2VzQnlwYXNzZXMoKTtcclxuICAgICAgbGV0IHZlcnNpb25TdHJpbmcgPSBDdXJyZW50Q2xpZW50VmVyc2lvbiA9PT0gICcwLjAuMC4wJyA/IFwiRGV2ZWxvcG1lbnQgbW9kZVwiIDogXCJWZXJzaW9uIDogXCIgKyBDdXJyZW50Q2xpZW50VmVyc2lvbiA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk1hZ2ljIFdlYiBDbGllbnQuIFwiICsgdmVyc2lvblN0cmluZyk7XHJcblxyXG4gICAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLkh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEZpcnN0SHR0cFJlcXVlc3RUaW1lb3V0KCk7XHJcblxyXG4gICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkluaXQoKTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Jbml0aWFsaXplKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLkdldEluc3RhbmNlKCkucGFyc2VMb2dMZXZlbChTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0SW50ZXJuYWxMb2dMZXZlbCgpKSxmYWxzZSk7XHJcblxyXG4gICAgICBsZXQgbWdkOiBNR0RhdGEgPSBuZXcgTUdEYXRhKFxyXG4gICAgICAgIG5ldyBDb21tYW5kc1RhYmxlKCksXHJcbiAgICAgICAgbmV3IENvbW1hbmRzVGFibGUoKSxcclxuICAgICAgICAwLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgIGF3YWl0IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuYWRkTUdEYXRhKG1nZCwgMCwgdHJ1ZSk7XHJcblxyXG4gICAgICBhd2FpdCBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLldvcmtUaHJlYWRFeGVjdXRpb24oKTtcclxuXHJcbiAgICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nKCkpIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhPU0Vudmlyb25tZW50LkVvbFNlcSArIFwiRW5kZWQgb24gXCIgKyBEYXRlVGltZVV0aWxzLlRvU3RyaW5nKERhdGVUaW1lLk5vdywgXCJkZC9NTS95eXl5XCIsIExvZ2dlci5JbnN0YW5jZSkgKyBPU0Vudmlyb25tZW50LkVvbFNlcSArIE9TRW52aXJvbm1lbnQuRW9sU2VxLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIHtcclxuICAgICAgYXdhaXQgR1VJTWFuYWdlci5JbnN0YW5jZS5NZXNzYWdlQm94KFwiRXJyb3JcIiwgXCJGYWlsZWQgdG8gbG9hZCBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlIChcIiArIHRoaXMuX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSArIFwiKVwiLCBTdHlsZXMuTVNHQk9YX0lDT05fRVJST1IgfCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PSyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IExvYWRzIHRoZSBleGVjdXRpb24gcHJvcGVydGllcyBmaWxlIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZlcixcclxuICAvLy8gYXBwbGljYXRpb24gYW5kIHByb2dyYW0gdG8gZXhlY3V0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgTG9hZEV4ZWN1dGlvblByb3BzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gcmV0dXJuIHRydWUsIGlmIHN1Y2Nlc3NmdWxseSBsb2FkZWQuXHJcbiAgICBsZXQgcmVzcG9uc2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBsZXQgc3VjY2VlZGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBpc0Vycm9yIGNhbm5vdCBiZSB0cnVlIGhlcmUsIGJlY2F1c2UgaXQgaXMgcmV0dXJuZWQgYnkgcnVudGltZSBlbmdpbmUgYW5kIHRvIHJlYWQgZXhlY3V0aW9uIHByb3BlcnRpZXMsIHdlIGRvIG5vdCByZWFjaCB0aGUgZW5naW5lLlxyXG4gICAgICBsZXQgaXNFcnJvcjogUmVmUGFyYW08Ym9vbGVhbj4gPSBuZXcgUmVmUGFyYW0oZmFsc2UpO1xyXG4gICAgICByZXNwb25zZSA9IGF3YWl0IEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuR2V0Q29udGVudChDbGllbnRNYW5hZ2VyLl9leGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWUsIG51bGwsIGZhbHNlLCBpc0Vycm9yKTtcclxuICAgICAgU2VydmVyQ29uZmlnLkluc3RhbmNlLkluaXQoSlNPTi5wYXJzZShyZXNwb25zZSkpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIHN1Y2NlZWRlZCA9IGZhbHNlO1xyXG4gICAgICAvLyBUT0RPOiBzaG91bGQgd2Ugd3JpdGUgdGhlIGVycm9yIG1lc3NhZ2UgdG8gbG9nP1xyXG4gICAgICAvLyBUT0RPOiBzaG91bGQgd2UgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIG9uIHRoZSBicm93c2VyP1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdWNjZWVkZWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHByb3BlcnRpZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5hIGNvcHkgb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHByb3BlcnRpZXM8L3JldHVybnM+XHJcbiAgY29weUV4ZWN1dGlvblByb3BzKCk6IElTZXJ2ZXJDb25maWcge1xyXG4gICAgLy9yZXR1cm4gdGhpcy5fZXhlY3V0aW9uUHJvcHMuQ2xvbmUoKTtcclxuICAgIHRocm93IG5ldyBFeGNlcHRpb24oXCJjb3B5RXhlY3V0aW9uUHJvcHMgbm90IGltcGxlbWVudGVkXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVidWdDbGllbnQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0NsaWVudDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdFVCBVUkwgdmFsdWUgb2YgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRVUkxGcm9tRXhlY3V0aW9uUHJvcGVydGllcyhleGVjdXRpb25Qcm9wTmFtZTogc3RyaW5nKTogVVJMIHtcclxuICAgIGxldCB1cmw6IFVSTCA9IG51bGw7XHJcbiAgICBsZXQgdXJsU3RyOiBzdHJpbmcgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuR2V0RXhlY3V0aW9uUHJvcGVydHlbZXhlY3V0aW9uUHJvcE5hbWVdO1xyXG5cclxuICAgIGlmICh1cmxTdHIgIT09IG51bGwgJiYgdHlwZW9mIHVybFN0ciAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAvLyBpZiByZWxhdGl2ZSwgcHJlZml4IHdpdGggdGhlICdwcm90b2NvbDovL3NlcnZlci8nIGZyb20gd2hpY2ggdGhlIHJpY2gtY2xpZW50IHdhcyBhY3RpdmF0ZWRcclxuICAgICAgaWYgKHVybFN0ci5zdGFydHNXaXRoKFwiL1wiKSlcclxuICAgICAgICB1cmxTdHIgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0UHJvdG9jb2woKSArIFwiOi8vXCIgKyBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0U2VydmVyKCkgKyB1cmxTdHI7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHVybCA9IG5ldyBVUkwodXJsU3RyKTtcclxuICAgICAgICBEZWJ1Zy5Bc3NlcnQodXJsLnByb3RvY29sID09PSBcImh0dHA6XCIgfHwgdXJsLnByb3RvY29sID09PSBcImh0dHBzOlwiKTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZyhleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0TG9nb25XaW5kb3dJY29uVVJMKCk6IFVSTCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVUkxGcm9tRXhlY3V0aW9uUHJvcGVydGllcyhHdWlDb25zdGFudHMuU1RSX0xPR09fV0lOX0lDT05fVVJMKTtcclxuICB9XHJcblxyXG4gIGdldExvZ29uV2luZG93SW1hZ2VVUkwoKTogVVJMIHtcclxuICAgIHJldHVybiB0aGlzLmdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKEd1aUNvbnN0YW50cy5TVFJfTE9HT05fSU1BR0VfVVJMKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHRydWUgaWYgZGVsYXkgaXMgaW4gcHJvZ3Jlc3M8L3N1bW1hcnk+XHJcbiAgaXNEZWxheUluUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsYXlJblByb2dyZXNzO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVsYXlJblByb2dyZXNzKGRlbGF5SW5Qcm9ncmVzczogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVsYXlJblByb2dyZXNzID0gZGVsYXlJblByb2dyZXNzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5nbG9iYWwgdW5pcXVlIElEIG9mIHRoZSBzZXNzaW9uID0gJ21hY2hpbmUgdW5pcXVlIElEJyArICdwcm9jZXNzIElEJzwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEdldEdsb2JhbFVuaXF1ZVNlc3Npb25JRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dsb2JhbFVuaXF1ZVNlc3Npb25JZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZXR1cm4gdGhlIGFic29sdXRlIGZpbGUgbmFtZSBvZiB0aGUgZXhlY3V0aW9uIHByb3BlcnRpZXMgZmlsZSBiZWluZyB1c2VkIGJ5IHRoZSBjbGllbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRFeGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIGxldCBmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgICBsZXQgbGFzdFBhdGhTZXBhcmF0b3I6IG51bWJlciA9IGZ1bGx5UXVhbGlmaWVkTmFtZS5sYXN0SW5kZXhPZignXFxcXCcpO1xyXG4gICAgcmV0dXJuIE5TdHJpbmcuUmVtb3ZlKGZ1bGx5UXVhbGlmaWVkTmFtZSwgbGFzdFBhdGhTZXBhcmF0b3IgKyAxLCBmdWxseVF1YWxpZmllZE5hbWUubGVuZ3RoIC0gbGFzdFBhdGhTZXBhcmF0b3IgLSAxKSArIENvbnN0SW50ZXJmYWNlLkVYRUNVVElPTl9QUk9QRVJUSUVTX0ZJTEVfTkFNRTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGNvbnRyb2wncyBwaWN0dXJlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyAgR2V0Q29udHJvbFBpY3R1cmVNYXNrKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nKTogUElDXHJcbiAge1xyXG4gICAgbGV0IHBpYzogUElDID0gbnVsbDtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUgIT09IG51bGwgJiYgdGFzayAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgICAgcGljID0gY29udHJvbC5nZXRQSUMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGljO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBmb3JtYXR0ZWQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRGb3JtYXR0ZWRWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZhbHVlO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wgIT0gbnVsbCAmJiBjb250cm9sLkRhdGFUeXBlID09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQykge1xyXG4gICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG5cclxuICAgICAgbGV0IGRpc3BWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgIGxldCAgbmV3UGljID0gcGljLmdldFVuZm9ybWF0dGVkTnVtZXJpY1BpYygpO1xyXG5cclxuICAgICAgbGV0IG51bSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0oZGlzcFZhbHVlLCBuZXdQaWMsIDApO1xyXG4gICAgICBuZXdWYWx1ZSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UuZnJvbU51bShudW0sIHBpYyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJhbmdlZCB2YWx1ZSBmb3IgaW5wdXQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyAgR2V0UmFuZ2VkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICByZXR1cm4gY29udHJvbC5nZXRSYW5nZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSB1c2VyIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZsZCByYW5nZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBHZXRGbGRSYW5nZXModGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm5zIHdoZXRoZXIgY2xpZW50L3NlcnZlciBjYWNoZSBleGlzdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUcmFuc0NhY2hlRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNsaWVudFRyYW5zQ2FjaGVFeGlzdHM6IGJvb2xlYW4gPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpLmNsaWVudFRyYW5zYWN0aW9uQ2FjaGVFeGlzdHMoKTtcclxuICAgIGxldCBzZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5zZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudFRyYW5zQ2FjaGVFeGlzdHMgfHwgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU3Vic2NyaWJlIGZvciBldmVudHMgZGVmaW5lZCBhdCBIdHRwQ2xpZW50RXZlbnRzIGFuZFxyXG4gIC8vLyBhdHRhY2ggYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUmVnaXN0ZXJEZWxlZ2F0ZXMoKTogdm9pZCB7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEV4ZWN1dGlvblByb3BlcnR5X0V2ZW50ID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5LmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEX0V2ZW50ID0gdGhpcy5HZXRSdW50aW1lQ3R4SUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50ID0gdGhpcy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcl9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yLmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0cmlldmVzIHJ1bnRpbWUgY29udGV4dCBJRFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRSdW50aW1lQ3R4SUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuQ29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZW5kIGEgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdGVybWluYXRlIHRoZSBjb250ZXh0IHVzaW5nIGZldGNoIEFQSSB3aXRoIGtlZXAtYWxpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJZiBTZXNzaW9uIGlzIHJlLWluaXRpYWxpemluZyBtZWFucyB0aGUgY29udGV4dCBpcyBub3QgZm91bmQgYXQgc2VydmVyLlxyXG4gICAgLy8gdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiB0ZXJtaW5hdGluZyBjb250ZXh0LlxyXG4gICAgaWYgKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLklzU2Vzc2lvblJlSW5pdGlhbGl6aW5nKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcblxyXG4gICAgLy8gRHVlIHRvIHBheWxvYWQgbGltaXQgb2YgZmV0Y2ggQVBJLCBzZW5kIG9ubHkgdGhlIGNvbnRleHQgdGVybWluYXRpb24gY29tbWFuZCB0byBzZXJ2ZXJcclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5DbGVhcigpO1xyXG5cclxuICAgIGxldCBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ6IENvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LlxyXG4gICAgQ3JlYXRlQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kKE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5BZGQoPElDbGllbnRDb21tYW5kPmNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCk7XHJcblxyXG4gICAgLy8gcmVzcG9uc2UgbmVlZCBub3QgdG8gYmUgaGFuZGxlZCBhcyB0aGUgYnJvd3NlciB1bmxvYWQgY2Fubm90IGJlIHN0b3BwZWQsIHNvIG5vIG5lZWQgdG8gd2FpdFxyXG4gICAgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uT05MWV9DT01NQU5EUyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
394
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXpHLE9BQU8sRUFDTCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixJQUFJLEVBQ0osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFHUCxrQkFBa0IsRUFDbEIsTUFBTSxFQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRzlDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxF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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgRGF0ZVRpbWUsIERlYnVnLCBFeGNlcHRpb24sIE5TdHJpbmcsIFJlZlBhcmFtfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcblxyXG5pbXBvcnQge1xyXG4gIERhdGVUaW1lVXRpbHMsXHJcbiAgSW50ZXJuYWxJbnRlcmZhY2UsXHJcbiAgTG9nZ2VyLFxyXG4gIE1pc2MsXHJcbiAgT1NFbnZpcm9ubWVudCxcclxuICBTdG9yYWdlQXR0cmlidXRlLFxyXG4gIFhNTENvbnN0YW50c1xyXG59IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIENvbW1hbmRzLFxyXG4gIENvbW1hbmRUeXBlLFxyXG4gIERpc3BsYXlDb252ZXJ0b3IsXHJcbiAgRXZlbnRzLFxyXG4gIEd1aUNvbnN0YW50cyxcclxuICBHdWlEYXRhQ29sbGVjdGlvbixcclxuICBHdWlFbnZpcm9ubWVudCxcclxuICBMYXN0Rm9jdXNlZFZhbCxcclxuICBNYW5hZ2VyLFxyXG4gIE1nQ29udHJvbEJhc2UsXHJcbiAgUElDLFxyXG4gIFJ1bnRpbWVDb250ZXh0QmFzZSxcclxuICBTdHlsZXNcclxufSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7RXZlbnRzTWFuYWdlcn0gZnJvbSAnLi9ldmVudC9FdmVudHNNYW5hZ2VyJztcclxuaW1wb3J0IHtHdWlFdmVudHNQcm9jZXNzb3J9IGZyb20gJy4vR3VpRXZlbnRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHtFbnZpcm9ubWVudH0gZnJvbSAnLi9lbnYvRW52aXJvbm1lbnQnO1xyXG5pbXBvcnQge0xhbmd1YWdlRGF0YX0gZnJvbSAnLi9lbnYvTGFuZ3VhZ2VEYXRhJztcclxuaW1wb3J0IHtUYXNrc1RhYmxlfSBmcm9tICcuL3Rhc2tzL1Rhc2tzVGFibGUnO1xyXG5pbXBvcnQge01nQ29udHJvbH0gZnJvbSAnLi9ndWkvTWdDb250cm9sJztcclxuaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7VGFza30gZnJvbSAnLi90YXNrcy9UYXNrJztcclxuaW1wb3J0IHtNR0RhdGFDb2xsZWN0aW9ufSBmcm9tICcuL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb24nO1xyXG5pbXBvcnQge1VuaXF1ZUlEVXRpbHN9IGZyb20gJy4vdXRpbC9VbmlxdWVJRFV0aWxzJztcclxuaW1wb3J0IHtIdHRwTWFuYWdlcn0gZnJvbSAnLi9odHRwL0h0dHBNYW5hZ2VyJztcclxuaW1wb3J0IHtDb21tYW5kc1RhYmxlfSBmcm9tICcuL0NvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQge1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yfSBmcm9tICcuL3JlbW90ZS9SZW1vdGVDb21tYW5kc1Byb2Nlc3Nvcic7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbn0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3NvckJhc2UnO1xyXG5pbXBvcnQge0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlcn0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXInO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSAnLi90YXNrcy9NR0RhdGEnO1xyXG5pbXBvcnQge1NlcnZlckVycm9yfSBmcm9tICcuL3JlbW90ZS9TZXJ2ZXJFcnJvcic7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSAnLi9odHRwL2NsaWVudC9IdHRwQ2xpZW50RXZlbnRzJztcclxuaW1wb3J0IHtJR3VpRXZlbnR9IGZyb20gJy4vYnJpZGdlL0lHdWlFdmVudCc7XHJcbmltcG9ydCB7Q29tbWFuZEZhY3Rvcnl9IGZyb20gJy4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZEZhY3RvcnknO1xyXG5pbXBvcnQge0N1cnJlbnRDbGllbnRWZXJzaW9ufSBmcm9tICcuL0N1cnJlbnRDbGllbnRWZXJzaW9uJztcclxuaW1wb3J0IHtJU2VydmVyQ29uZmlnfSBmcm9tICcuL3V0aWwvSVNlcnZlckNvbmZpZyc7XHJcbmltcG9ydCB7RGF0YVZpZXd9IGZyb20gJy4vZGF0YS9EYXRhVmlldyc7XHJcbmltcG9ydCB7TGFzdEZvY3VzZWRNYW5hZ2VyfSBmcm9tICcuL3J0L0xhc3RGb2N1c2VkTWFuYWdlcic7XHJcbmltcG9ydCB7RW52UGFyYW1zVGFibGV9IGZyb20gJy4vZW52L0VudlZhcmlhYmxlc1RhYmxlJztcclxuaW1wb3J0IHtHbG9iYWxQYXJhbXN9IGZyb20gJy4vZXhwL0dsb2JhbFBhcmFtc1RhYmxlJztcclxuaW1wb3J0IHtPcGVuVVJMQ29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7U2VydmVyQ29uZmlnfSBmcm9tICcuL1NlcnZlckNvbmZpZyc7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQnO1xyXG5pbXBvcnQge0dVSU1hbmFnZXJ9IGZyb20gXCIuL0dVSU1hbmFnZXJcIjtcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBDbGllbnRNYW5hZ2VyIHtcclxuICBwcml2YXRlIF9kZWxheUluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIHRydWUgaWYgZGVsYXkgaXMgaW4gcHJvZ3Jlc3NcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBDbGllbnRNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfZGVidWdDbGllbnQ6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfZ2xvYmFsVW5pcXVlU2Vzc2lvbklkOiBzdHJpbmcgPSBudWxsO1xyXG4vLyAgcHJpdmF0ZSBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDsgLy8gY29udHJvbCB3aGVyZSBsYXN0IHBhcmtpbmcgd2FzIGF0dGVtcHRlZCBidXQgd2UgZGlkIG5vdCBwYXJrIG9uIGl0XHJcbiAgcHJpdmF0ZSBfYnV0dG9uSXNDbGlja2VkID0gZmFsc2U7XHJcblxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lOiBzdHJpbmcgPSBcIi4vYXNzZXRzL3NlcnZlci1jb25maWcuanNvblwiOyAvLyBwYXRoIG9mIHRoZSBleGVjdXRpb24gcHJvcGVydGllcyBmaWxlIGZyb20gYXNzZXRzIGZvbGRlclxyXG5cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IENsaWVudE1hbmFnZXIge1xyXG4gICAgaWYgKENsaWVudE1hbmFnZXIuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBDbGllbnRNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBDbGllbnRNYW5hZ2VyKCk7XHJcblxyXG4gICAgcmV0dXJuIENsaWVudE1hbmFnZXIuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcHVibGljIEFkZEV2ZW50KGd1aUV2ZW50OiBJR3VpRXZlbnQpOiB2b2lkIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRChndWlFdmVudC5UYXNrSUQpO1xyXG4gICAgbGV0IGxpbmVJZHg6IG51bWJlciA9ICtndWlFdmVudC5MaW5lO1xyXG4gICAgbGV0IGR2Um93SWR4OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGlmICh0YXNrICE9IG51bGwpIHtcclxuICAgICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKGd1aUV2ZW50LkNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuXHJcbiAgICAgIGlmIChjb250cm9sICE9IG51bGwpIHtcclxuICAgICAgICBsZXQgZHY6IERhdGFWaWV3ID0gPERhdGFWaWV3PnRhc2suRGF0YVZpZXc7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuSXNUYWJsZUNoaWxkKSB7XHJcbiAgICAgICAgICBsaW5lSWR4IC09IGR2LlJlY29yZHNCZWZvcmVDdXJyZW50VmlldztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuXHJcbiAgICAgICAgICBjYXNlIFwiY29sdW1uU29ydFwiOlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0NvbHVtblNvcnRhYmxlKCkpIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Db2x1bW5DbGljayhjb250cm9sLCBndWlFdmVudC5MaW5lLCBndWlFdmVudC5Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwibW91c2Vkb3duXCI6XHJcbiAgICAgICAgICAgIC8vIERlZmVjdCAxNTIyODggJiBEZWZlY3QgMTUyMjY4OiBQcm9ibGVtOiBXaGVuIGJ1dHRvbiBpcyBjbGlja2VkLCB3ZSBnZXQgZm9jdXMgZXZlbnQgZmlyc3QgYW5kIGlmIG1lc3NhZ2VCb3ggaXMgb3BlbmVkIGhlcmUgbGlrZSB2ZXJpZnksIGV0Yy5cclxuICAgICAgICAgICAgLy8gd2UgZG8gbm90IHJlY2VpdmUgY2xpY2sgZXZlbnQuIEhlbmNlIGV2ZW50cyBhcmUgbm90IHByb2Nlc3NlZC4gU29sdXRpb246IFdlIGRvIG5lZWQgY2xpY2sgaGFuZGxpbmcgZm9yIGJ1dHRvbiBhcyBpdCBpcyBjYWxsZWQgd2hlbiB3ZSBwYXJrXHJcbiAgICAgICAgICAgIC8vIG9uIGJ1dHRvbiBhbmQgcHJlc3Mgc3BhY2Uga2V5LiBXZSBuZWVkIGZvY3VzIGV2ZW50IGhhbmRsaW5nIGZvciBleGVjdXRpbmcgQ1AgJiBDUyB3aGVuIHBhcmtlZCBvbiBidXR0b24gYnkgdGFiIGtleS4gU28gd2UgbmVlZCB0byBtYW5hZ2VcclxuICAgICAgICAgICAgLy8gaG93IGNsaWNrIGlzIGhhbmRsZWQuIFdlIGRvIG5vdCBuZWVkIGZvY3VzIGV2ZW50IGhhbmRsaW5nIHdoZW4gd2UgY2xpY2sgb24gYnV0dG9uLCBzbyBvbiBtb3VzZWRvd24sIHNldCBhIGZsYWcgd2hpY2ggd2lsbCBiZSB1c2VkIGluIGZvY3VzXHJcbiAgICAgICAgICAgIC8vIGV2ZW50IGhhbmRsaW5nIHRvIHNraXAgaXRzIGhhbmRsaW5nLiBUaGVuIHdlIHdpbGwgcmVjZWl2ZSBjbGljayBldmVudCB3aGVyZSB0aGlzIHdpbGwgYmUgYWN0dWFsbHkgaGFuZGxlZCBhbmQgaGVuY2Ugd29yay5cclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuaXNCdXR0b24oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWNvbnRyb2wuaXNTdWJmb3JtKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKS5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY29udHJvbC5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpIHx8IChjb250cm9sLkNvbm5lY3RlZENvbnRyb2wgJiYgZ3VpRXZlbnQuZnJvbUJ1dHRvbikpe1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihcIlwiLCBjb250cm9sLCBsaW5lSWR4LCB0cnVlKTtcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLl9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzb3J0aW5nIHNob3VsZCBiZSBoYW5kbGVkIG9ubHkgb24gY29sdW1uIGNsaWNrIGFuZCBub3Qgb24gcm93RGF0YVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChjb250cm9sLlR5cGUgPT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0NPTFVNTikge1xyXG4gICAgICAgICAgICAvLyAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Gb2N1cyhjb250cm9sLCBsaW5lSWR4LCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgbGV0IHByb2R1Y2VDbGljazogYm9vbGVhbiA9IGNvbnRyb2wuaXNCdXR0b24oKSB8fCBjb250cm9sLmlzVGV4dENvbnRyb2woKSB8fCBjb250cm9sLmlzTGFiZWwoKSB8fCBjb250cm9sLmlzVGFiQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNUYWJsZUNvbnRyb2woKSB8fCBjb250cm9sLmlzQ29tYm9Cb3goKSB8fCBjb250cm9sLmlzSW1hZ2VDb250cm9sKCk7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uTW91c2VEb3duKGNvbnRyb2wuZ2V0Rm9ybSgpLCBjb250cm9sLCBudWxsLCB0cnVlLCBsaW5lSWR4LCBmYWxzZSwgcHJvZHVjZUNsaWNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c1wiOlxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbklzQ2xpY2tlZClcclxuICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyAvLyBJZiB3ZSBhdHRlbXB0IHRvIHBhcmsgb24gY29udHJvbCB3aGVyZSB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyB0byBwYXJrIGxpa2UgaWYgY29udHJvbCBoYXMgZXhwcmVzc2lvbiBvciBwYXJlbnQgdGFzayBmaWVsZCwgZG8gbm90IGFsbG93IHRvIGZvY3VzIG9uIGl0LlxyXG4gICAgICAgICAgICAvLyAvLyBTZXQgRm9jdXMgYmFjayB0byBsYXN0Rm9jdXNlZENvbnRyb2wuIFdlIG5lZWQgX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbCBhcyB3ZSBnZXQgZm9jdXMgZXZlbnQgb24gYSBjb250cm9sIHR3aWNlLiBTbyB0byBhdm9pZCB0byBzaG93IGVycm9yIG11bHRpcGxlIHRpbWVzLFxyXG4gICAgICAgICAgICAvLyAvLyBtYWludGFpbiBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sLlxyXG4gICAgICAgICAgICAvLyBpZiAoY29udHJvbCAhPT0gdGhpcy5fbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sICYmIGNvbnRyb2wuSGFzRXhwT3JQYXJlbnRUYXNrRmllbGQoKSkge1xyXG4gICAgICAgICAgICAvLyAgIC8vIFNob3cgZXJyb3Igb25seSBmb3IgY29udHJvbHMgaGF2aW5nIERhdGEgcHJvcGVydHkgYW5kIHBhcmthYmxlXHJcbiAgICAgICAgICAgIC8vICAgaWYoY29udHJvbC5pc0xpc3RCb3goKSB8fCBjb250cm9sLmlzQ2hlY2tCb3goKSB8fCBjb250cm9sLmlzQ29tYm9Cb3goKSB8fCBjb250cm9sLmlzVGV4dENvbnRyb2woKSB8fCBjb250cm9sLmlzUmFkaW8oKSB8fCBjb250cm9sLmlzVGFiQ29udHJvbCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBDb21tYW5kcy5tZXNzYWdlQm94KG51bGwsIFwiRXJyb3JcIiwgXCJDb250cm9sIGVpdGhlciBoYXMgZXhwcmVzc2lvbiBvciBoYXMgcGFyZW50IHRhc2sgdmFyaWFibGUgYXR0YWNoZWQgdG8gaXQuIEZhaWxlZCB0byBwYXJrIG9uIGNvbnRyb2wgd2l0aCBuYW1lOiBcIiArIGNvbnRyb2wuTmFtZSwgU3R5bGVzLk1TR0JPWF9JQ09OX0VSUk9SIHwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0spO1xyXG4gICAgICAgICAgICAvLyAgICAgLy8gRGVmZWN0IDE1MjcyODogVXNlIGxhc3QgZm9jdXNlZCB0YXNrIGluc3RlYWQgY29udHJvbCB0YXNrIGFzIGNvbnRyb2wgY2FuIGJlIGZyb20gc3ViZm9ybS5cclxuICAgICAgICAgICAgLy8gICAgIEZvY3VzTWFuYWdlci5TZXRGb2N1cyhMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0TGFzdEZvY3VzZWRUYXNrKCksIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSwgMCxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCkgPT09IG51bGwgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5fbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sID0gY29udHJvbDtcclxuICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgLy8gdGhpcy5fbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzKGNvbnRyb2wsIGxpbmVJZHgsIHRydWUsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRibGNsaWNrXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkRibENsaWNrKGNvbnRyb2wsIGxpbmVJZHgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwic2VsZWN0aW9uY2hhbmdlZFwiOlxyXG4gICAgICAgICAgICBFdmVudHMuT25TZWxlY3Rpb24oZ3VpRXZlbnQuVmFsdWUsIGNvbnRyb2wsIGxpbmVJZHgsIHRydWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJrZXlkb3duXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbktleURvd24oIHRhc2suZ2V0Rm9ybSgpLCBjb250cm9sLCBndWlFdmVudC5tb2RpZmllcnMsIGd1aUV2ZW50LmtleUNvZGUsIDAsMCwgJycsZmFsc2UsJycsdHJ1ZSApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJzZXRleHRlcm5hbHZhbHVlXCI6XHJcbiAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuQWRkRXh0ZXJuYWxWYWx1ZUV2ZW50KCg8TWdDb250cm9sPmNvbnRyb2wpLCBndWlFdmVudC5leHRlcm5hbFZhbHVlLCBndWlFdmVudC5wYXJhbSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ1bmhhbmRsZWQgZXZlbnQ6IFxcXCJcIiArIGd1aUV2ZW50LkV2ZW50VHlwZSArIFwiXFxcIlwiKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN3aXRjaCAoZ3VpRXZlbnQuRXZlbnRUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiZm9jdXNPbk5vbk1hZ2ljQ29udHJvbFwiOlxyXG4gICAgICAgICAgICBjb250cm9sID0gTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzT25Ob25NYWdpY0NvbnRyb2woY29udHJvbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiY2xpY2tcIjpcclxuICAgICAgICAgICAgaWYoZ3VpRXZlbnQuQ29udHJvbE5hbWUgPT09IFwibWFnaWNSb3dcIikge1xyXG4gICAgICAgICAgICAgIGR2Um93SWR4ID0gZ3VpRXZlbnQuTGluZSAtICg8RGF0YVZpZXc+dGFzay5EYXRhVmlldykuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoVGFza0FuZENvZGVBbmRMaW5lKHRhc2ssIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYLCBkdlJvd0lkeCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiY2xvc2VcIjpcclxuICAgICAgICAgICAgaWYgKHRhc2suSXNSb3V0ZSgpKVxyXG4gICAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuQWRkUm91dGVyQ2xvc2VkRXZlbnQodGFzayk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBFdmVudHMuQ2xvc2VGb3JtRXZlbnQodGFzay5nZXRGb3JtKCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJkaXNwb3NlXCI6XHJcbiAgICAgICAgICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZGVsZXRlTUdEYXRhVHJlZSh0YXNrLmdldE1nZElEKCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJyZXNpemVcIjpcclxuICAgICAgICAgICAgRXZlbnRzLlRhYmxlUmVzaXplRXZlbnQodGFzay5nZXRGb3JtKCkuZ2V0VGFibGVDdHJsKCksIGd1aUV2ZW50LlBhZ2VTaXplKTtcclxuICAgICAgICAgIC8vY2FzZSAnYnJlYWsnIGlzIG1pc3NpbmcgZm9yICdyZXNpemUnIHdpdGggaW50ZW50aW9uIHRvIGV4ZWN1dGUgZ2V0Um93cyB3aXRoIHRoZSBkZXNpcmVkIGRhdGF2aWV3IHJvdyBpbmRleC5cclxuICAgICAgICAgIGNhc2UgXCJnZXRSb3dzXCI6XHJcbiAgICAgICAgICAgIGR2Um93SWR4ID0gbGluZUlkeCAtICg8RGF0YVZpZXc+dGFzay5EYXRhVmlldykuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgICAgICBsZXQgbGFzdEZvY3VzZWRWYWw6IExhc3RGb2N1c2VkVmFsID0ge2d1aU1nQ29udHJvbDogdGFzay5nZXRGb3JtKCkuZ2V0VGFibGVDdHJsKCksIExpbmU6IGR2Um93SWR4LCBWYWw6IFwiXCJ9O1xyXG4gICAgICAgICAgICBFdmVudHMuT25HZXRSb3dzRGF0YSh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZHZSb3dJZHgsIHRydWUsIGxhc3RGb2N1c2VkVmFsKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiUm91dGVyTmF2aWdhdGVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZUV2ZW50KHRhc2ssIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJDTElFTlRfUk9VVEUsIGd1aUV2ZW50LlJvdXRlclBhdGgsIGd1aUV2ZW50LlJvdXRlck91dGxldE5hbWUsXHJcbiAgICAgICAgICAgICAgZ3VpRXZlbnQuUm91dGVyUGFyYW1zKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwic2V0ZXh0ZXJuYWx2YWx1ZVwiOlxyXG4gICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFcnJvclRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVW5hYmxlIHRvIGZpbmQgezB9OiBUcnlpbmcgdG8gc2V0IHZhbHVlIGZvciBhIG5vbi1leGlzdGluZyBjb250cm9sLlwiLCBndWlFdmVudC5Db250cm9sTmFtZSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCBcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgLy90YXNrID09IG51bGxcclxuICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICBjYXNlIFwiY29uZmlybWF0aW9uQ2xvc2VkXCI6XHJcbiAgICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbkNsb3NlZChndWlFdmVudC5rZXlDb2RlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByYWlzZSBjYWxsYmFjayBvbiBjbG9zaW5nIGNvbmZpcm1hdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ29uZmlybWF0aW9uQ2xvc2VkKHJlczogbnVtYmVyKTogdm9pZFxyXG4gIHtcclxuICAgIENvbW1hbmRzLlJlc29sdmVQcm9taXNlKHJlcyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHRoZSB3b3JrIHRocmVhZCdzIGVudHJ5IG1ldGhvZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgV29ya1RocmVhZEV4ZWN1dGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nKCkpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJcIiwgdHJ1ZSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiU3RhcnRlZCBvbiBcIiArIERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBYTUxDb25zdGFudHMuRVJST1JfTE9HX0RBVEVfRk9STUFULCBMb2dnZXIuSW5zdGFuY2UpLCB0cnVlKTtcclxuICAgICAgdGhpcy5Xcml0ZUV4ZWN1dGlvblByb3BlcnRpZXNUb0xvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChhd2FpdCBDb21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIuU3RhcnRTZXNzaW9uKCkpIHtcclxuICAgICAgICBsZXQgbWdEYXRhVGFiOiBNR0RhdGFDb2xsZWN0aW9uID0gTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZTtcclxuICAgICAgICBsZXQgc3RhcnR1cE1nRGF0YTogTUdEYXRhID0gbWdEYXRhVGFiLlN0YXJ0dXBNZ0RhdGE7XHJcbiAgICAgICAgbWdEYXRhVGFiLmN1cnJNZ2RJRCA9IHN0YXJ0dXBNZ0RhdGEuR2V0SWQoKTtcclxuXHJcbiAgICAgICAgbGV0IG5vbkludGVyYWN0aXZlVGFzazogVGFzayA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFzdGFydHVwTWdEYXRhLklzQWJvcnRpbmcpXHJcbiAgICAgICAgICBub25JbnRlcmFjdGl2ZVRhc2sgPSBhd2FpdCBUYXNrLlN0YXJ0UHJvZ3JhbShmYWxzZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICBpZiAobm9uSW50ZXJhY3RpdmVUYXNrID09PSBudWxsKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5FdmVudHNMb29wKHN0YXJ0dXBNZ0RhdGEpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuTm9uSW50ZXJhY3RpdmVFdmVudHNMb29wKHN0YXJ0dXBNZ0RhdGEsIG5vbkludGVyYWN0aXZlVGFzayk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aGUgXCJlbmQgb2Ygd29ya1wiIGZsYWcgb25seSBmb3IgdGhlIG1haW4gd2luZG93XHJcbiAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5zZXRFbmRPZldvcmsodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBpZiAoZXggaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkV4Y2VwdGlvbikge1xyXG4gICAgICAgIGxldCBpc05vUmVzdWx0RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBpZiAoZXggaW5zdGFuY2VvZiBTZXJ2ZXJFcnJvciAmJiAoPFNlcnZlckVycm9yPmV4KS5HZXRDb2RlKCkgPT09IFNlcnZlckVycm9yLklORl9OT19SRVNVTFQpXHJcbiAgICAgICAgICBpc05vUmVzdWx0RXJyb3IgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoIWlzTm9SZXN1bHRFcnJvcilcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuUHJvY2Vzc0Fib3J0aW5nRXJyb3IoZXgpO1xyXG5cclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhyb3cgZXg7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5DaGVja0FuZFNob3dTcGlubmVyKGZhbHNlKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmFkZEdsb2JhbENvbW1hbmQoQ29tbWFuZFR5cGUuRVhJVF9NQUdJQyk7XHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFdyaXRlIEV4ZWN1dGlvbiBwcm9wZXJ0aWVzIHRvIGxvZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFdyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk6IHZvaWQge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2dTZXJ2ZXJSZWxhdGVkTWVzc2FnZXMoKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgICAvLyBXcml0ZSBoZWFkaW5nXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiRXhlY3V0aW9uIFByb3BlcnRpZXM6XCIsIHRydWUpO1xyXG5cclxuICAgICAgbGV0IHByb3BzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2cocHJvcHNTdHJpbmcsIHRydWUpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5Jbml0KFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlJDX05PX0NPTlRFWFRfSUQpO1xyXG4gICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkluaXQoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZSk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuTGFzdEFjdGlvblRpbWUgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuXHJcbiAgICBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5TaG91bGRTY3JhbWJsZUFuZFVuc2NyYW1ibGVNZXNzYWdlcyA9IHRydWU7XHJcblxyXG5cclxuICAgIC8vIFRPRE86IEhvdyB0byBnZXQgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkP1xyXG4gICAgdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkID0gVW5pcXVlSURVdGlscy5HZXRVbmlxdWVNYWNoaW5lSUQoKSArIFwiX1wiOyAvLyArIFByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZDtcclxuXHJcbiAgICB0aGlzLlJlZ2lzdGVyRGVsZWdhdGVzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEluaXRpYWxpemUgdGhlIGRhdGEgbmVlZGVkIGJ5IHRoZSBndWkgbGlicmFyeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBDbGllbnRNYW5hZ2VyIGluc3RhbmNlPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgSW5pdEd1aU1hbmFnZXIoKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIgPSBFdmVudHNNYW5hZ2VyLkluc3RhbmNlO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0U2VydmVyTmFtZSA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKTtcclxuICAgIE1hbmFnZXIuRGVmYXVsdFByb3RvY29sID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCk7XHJcbiAgICBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gICAgR3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLm5vQ29udGV4dElkID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRDtcclxuICB9XHJcblxyXG4gIC8vLyBJbml0aWFsaXplIGdsb2JhbCBkYXRhIGluIG9iamVjdHMgdXNlZCB0byBvdmVyY29tZSB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpc3N1ZVxyXG4gIHByaXZhdGUgSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCkge1xyXG4gICAgVGFza3NUYWJsZS5jcmVhdGVOZXd0YXNrID0gVGFzay5DcmVhdGVUYXNrO1xyXG4gICAgT3BlblVSTENvbW1hbmQuY3JlYXRlTmV3Q29tbWFuZHNUYWJsZSA9IENvbW1hbmRzVGFibGUuY3JlYXRlQ29tbWFuZHNUYWJsZTtcclxuXHJcbiAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudlBhcmFtc1RhYmxlID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZ2xvYmFsUGFyYW1zID0gR2xvYmFsUGFyYW1zLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmxhbmd1YWdlRGF0YSA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBFbnRyeSBwb2ludCB0byB0aGUgV2ViIENsaWVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJnc1wiPmFycmF5IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHM8L3BhcmFtPlxyXG4gIHN0YXRpYyBNYWluKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpOiB2b2lkIHtcclxuICAgIC8vIFRPRE8gOiBDaGVjayBob3cgdG8gbG9hZCBmcm9tIFN0dWRpbyBpLmUuIEY3XHJcbiAgICAvLyBpZiAoYXJncy5sZW5ndGggIT09IDAgJiYgTlN0cmluZy5TdGFydHNXaXRoKGFyZ3NbMF0sIFwiL3NwYXduYWhlYWRcIikpIHtcclxuICAgIC8vICAgQ2xpZW50TWFuYWdlci5fc3RhcnRlZEZyb21TdHVkaW8gPSB0cnVlO1xyXG4gICAgLy8gICBTdHVkaW9MYXVuY2hlci5Jbml0KGFyZ3MpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZVxyXG4gICAgQ2xpZW50TWFuYWdlci5TdGFydEV4ZWN1dGlvbihodHRwQ2xpZW50KTtcclxuXHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuRmx1c2goKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGVybWluYXRlIHRoZSBjbGllbnQgYW5kIHRlcm1pbmF0ZSB0aGUgY29udGV4dCA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGFzeW5jIFN0b3BFeGVjdXRpb24oKTogUHJvbWlzZSA8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5Jc0Fib3J0aW5nTWFnaWNFbmdpbmUgPSB0cnVlO1xyXG4gICAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuQ2xvc2luZ0Zvcm1VSSA9IHRydWU7XHJcblxyXG4gICAgICBhd2FpdCBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuZW5kVGFzayh0cnVlLCBmYWxzZSxcclxuICAgICAgICBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgzKSB7XHJcbiAgICAgIGlmIChleDMgaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkV4Y2VwdGlvbikge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4Myk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRocm93IGV4MztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBTdGFydEV4ZWN1dGlvbihodHRwQ2xpZW50Okh0dHBDbGllbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIEh0dHBNYW5hZ2VyLnNldE5hdGl2ZUh0dHBDbGllbnQoaHR0cENsaWVudCk7XHJcbiAgICBsZXQgbG9hZGVkOiBib29sZWFuID0gYXdhaXQgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Mb2FkRXhlY3V0aW9uUHJvcHMoKTtcclxuXHJcbiAgICBpZiAobG9hZGVkKSB7XHJcbiAgICAgIG5ldyBHdWlFdmVudHNQcm9jZXNzb3IoKTtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Jbml0R3VpTWFuYWdlcigpO1xyXG4gICAgICBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkluaXRDaXJjdWxhclJlZmVyZW5jZXNCeXBhc3NlcygpO1xyXG4gICAgICBsZXQgdmVyc2lvblN0cmluZyA9IEN1cnJlbnRDbGllbnRWZXJzaW9uID09PSAgJzAuMC4wLjAnID8gXCJEZXZlbG9wbWVudCBtb2RlXCIgOiBcIlZlcnNpb24gOiBcIiArIEN1cnJlbnRDbGllbnRWZXJzaW9uIDtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTWFnaWMgV2ViIENsaWVudC4gXCIgKyB2ZXJzaW9uU3RyaW5nKTtcclxuXHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuR2V0Rmlyc3RIdHRwUmVxdWVzdFRpbWVvdXQoKTtcclxuXHJcbiAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuSW5pdCgpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLkluaXRpYWxpemUoUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5wYXJzZUxvZ0xldmVsKFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRJbnRlcm5hbExvZ0xldmVsKCkpLGZhbHNlKTtcclxuXHJcbiAgICAgIGxldCBtZ2Q6IE1HRGF0YSA9IG5ldyBNR0RhdGEoXHJcbiAgICAgICAgbmV3IENvbW1hbmRzVGFibGUoKSxcclxuICAgICAgICBuZXcgQ29tbWFuZHNUYWJsZSgpLFxyXG4gICAgICAgIDAsIG51bGwsIGZhbHNlKTtcclxuICAgICAgYXdhaXQgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5hZGRNR0RhdGEobWdkLCAwLCB0cnVlKTtcclxuXHJcbiAgICAgIGF3YWl0IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuV29ya1RocmVhZEV4ZWN1dGlvbigpO1xyXG5cclxuICAgICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKE9TRW52aXJvbm1lbnQuRW9sU2VxICsgXCJFbmRlZCBvbiBcIiArIERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBcImRkL01NL3l5eXlcIiwgTG9nZ2VyLkluc3RhbmNlKSArIE9TRW52aXJvbm1lbnQuRW9sU2VxICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICBhd2FpdCBHVUlNYW5hZ2VyLkluc3RhbmNlLk1lc3NhZ2VCb3goXCJFcnJvclwiLCBcIkZhaWxlZCB0byBsb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUgKFwiICsgdGhpcy5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lICsgXCIpXCIsIFN0eWxlcy5NU0dCT1hfSUNPTl9FUlJPUiB8IFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gTG9hZHMgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyLFxyXG4gIC8vLyBhcHBsaWNhdGlvbiBhbmQgcHJvZ3JhbSB0byBleGVjdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkRXhlY3V0aW9uUHJvcHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cclxuICAgIGxldCByZXNwb25zZTogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIGlzRXJyb3IgY2Fubm90IGJlIHRydWUgaGVyZSwgYmVjYXVzZSBpdCBpcyByZXR1cm5lZCBieSBydW50aW1lIGVuZ2luZSBhbmQgdG8gcmVhZCBleGVjdXRpb24gcHJvcGVydGllcywgd2UgZG8gbm90IHJlYWNoIHRoZSBlbmdpbmUuXHJcbiAgICAgIGxldCBpc0Vycm9yOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShmYWxzZSk7XHJcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5HZXRDb250ZW50KENsaWVudE1hbmFnZXIuX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSwgbnVsbCwgZmFsc2UsIGlzRXJyb3IpO1xyXG4gICAgICBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuSW5pdChKU09OLnBhcnNlKHJlc3BvbnNlKSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgc3VjY2VlZGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSB3cml0ZSB0aGUgZXJyb3IgbWVzc2FnZSB0byBsb2c/XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGJyb3dzZXI/XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1Y2NlZWRlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIGEgY29weSBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gcHJvcGVydGllc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmEgY29weSBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gcHJvcGVydGllczwvcmV0dXJucz5cclxuICBjb3B5RXhlY3V0aW9uUHJvcHMoKTogSVNlcnZlckNvbmZpZyB7XHJcbiAgICAvL3JldHVybiB0aGlzLl9leGVjdXRpb25Qcm9wcy5DbG9uZSgpO1xyXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcImNvcHlFeGVjdXRpb25Qcm9wcyBub3QgaW1wbGVtZW50ZWRcIik7XHJcbiAgfVxyXG5cclxuICBnZXREZWJ1Z0NsaWVudCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlYnVnQ2xpZW50O1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR0VUIFVSTCB2YWx1ZSBvZiB0aGUgZXhlY3V0aW9uIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKGV4ZWN1dGlvblByb3BOYW1lOiBzdHJpbmcpOiBVUkwge1xyXG4gICAgbGV0IHVybDogVVJMID0gbnVsbDtcclxuICAgIGxldCB1cmxTdHI6IHN0cmluZyA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRFeGVjdXRpb25Qcm9wZXJ0eVtleGVjdXRpb25Qcm9wTmFtZV07XHJcblxyXG4gICAgaWYgKHVybFN0ciAhPT0gbnVsbCAmJiB0eXBlb2YgdXJsU3RyICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIC8vIGlmIHJlbGF0aXZlLCBwcmVmaXggd2l0aCB0aGUgJ3Byb3RvY29sOi8vc2VydmVyLycgZnJvbSB3aGljaCB0aGUgcmljaC1jbGllbnQgd2FzIGFjdGl2YXRlZFxyXG4gICAgICBpZiAodXJsU3RyLnN0YXJ0c1dpdGgoXCIvXCIpKVxyXG4gICAgICAgIHVybFN0ciA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRQcm90b2NvbCgpICsgXCI6Ly9cIiArIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKSArIHVybFN0cjtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdXJsID0gbmV3IFVSTCh1cmxTdHIpO1xyXG4gICAgICAgIERlYnVnLkFzc2VydCh1cmwucHJvdG9jb2wgPT09IFwiaHR0cDpcIiB8fCB1cmwucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG5cclxuICBnZXRMb2dvbldpbmRvd0ljb25VUkwoKTogVVJMIHtcclxuICAgIHJldHVybiB0aGlzLmdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKEd1aUNvbnN0YW50cy5TVFJfTE9HT19XSU5fSUNPTl9VUkwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9nb25XaW5kb3dJbWFnZVVSTCgpOiBVUkwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoR3VpQ29uc3RhbnRzLlNUUl9MT0dPTl9JTUFHRV9VUkwpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdHJ1ZSBpZiBkZWxheSBpcyBpbiBwcm9ncmVzczwvc3VtbWFyeT5cclxuICBpc0RlbGF5SW5Qcm9ncmVzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxheUluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuICBzZXREZWxheUluUHJvZ3Jlc3MoZGVsYXlJblByb2dyZXNzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZWxheUluUHJvZ3Jlc3MgPSBkZWxheUluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmdsb2JhbCB1bmlxdWUgSUQgb2YgdGhlIHNlc3Npb24gPSAnbWFjaGluZSB1bmlxdWUgSUQnICsgJ3Byb2Nlc3MgSUQnPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgY29udHJvbCdzIHBpY3R1cmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBQSUNcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCAmJiB0YXNrICE9IG51bGwpIHtcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwaWM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZvcm1hdHRlZCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgIEdldEZvcm1hdHRlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHBpYzogUElDID0gbnVsbDtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICAgIGxldCBuZXdWYWx1ZTogYW55ID0gdmFsdWU7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAgICBjb250cm9sID0gdGFzay5nZXRGb3JtKCkuR2V0Q3RybChjb250cm9sTmFtZSk7XHJcbiAgICBpZiAoY29udHJvbCAhPSBudWxsICYmIGNvbnRyb2wuRGF0YVR5cGUgPT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDKSB7XHJcbiAgICAgIHBpYyA9IGNvbnRyb2wuZ2V0UElDKCk7XHJcblxyXG4gICAgICBsZXQgZGlzcFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcclxuICAgICAgbGV0ICBuZXdQaWMgPSBwaWMuZ2V0VW5mb3JtYXR0ZWROdW1lcmljUGljKCk7XHJcblxyXG4gICAgICBsZXQgbnVtID0gRGlzcGxheUNvbnZlcnRvci5JbnN0YW5jZS50b051bShkaXNwVmFsdWUsIG5ld1BpYywgMCk7XHJcbiAgICAgIG5ld1ZhbHVlID0gRGlzcGxheUNvbnZlcnRvci5JbnN0YW5jZS5mcm9tTnVtKG51bSwgcGljKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgcmFuZ2VkIHZhbHVlIGZvciBpbnB1dCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljICBHZXRSYW5nZWRWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICB7XHJcbiAgICAgIGNvbnRyb2wgPSAgdGFzay5nZXRGb3JtKCkuR2V0Q3RybChjb250cm9sTmFtZSk7XHJcbiAgICAgIHJldHVybiBjb250cm9sLmdldFJhbmdlZFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHZhbGlkYXRlIHVzZXIgaW5wdXQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyAgVmFsaWRhdGVDb250cm9sVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sID0gbnVsbDtcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICB7XHJcbiAgICAgIGNvbnRyb2wgPSAgdGFzay5nZXRGb3JtKCkuR2V0Q3RybChjb250cm9sTmFtZSkgYXMgTWdDb250cm9sO1xyXG4gICAgICByZXR1cm4gY29udHJvbC52YWxpZGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgZmxkIHJhbmdlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIEdldEZsZFJhbmdlcyh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sID0gbnVsbDtcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICB7XHJcbiAgICAgIGNvbnRyb2wgPSAgdGFzay5nZXRGb3JtKCkuR2V0Q3RybChjb250cm9sTmFtZSkgYXMgTWdDb250cm9sO1xyXG4gICAgICByZXR1cm4gY29udHJvbC5nZXRSYW5nZXMoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybnMgd2hldGhlciBjbGllbnQvc2VydmVyIGNhY2hlIGV4aXN0c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFRyYW5zQ2FjaGVFeGlzdHMoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2xpZW50VHJhbnNDYWNoZUV4aXN0czogYm9vbGVhbiA9IEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkuY2xpZW50VHJhbnNhY3Rpb25DYWNoZUV4aXN0cygpO1xyXG4gICAgbGV0IHNlcnZlclRyYW5zYWN0aW9uQ2FjaGVFeGlzdHM6IGJvb2xlYW4gPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpLnNlcnZlclRyYW5zYWN0aW9uQ2FjaGVFeGlzdHMoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50VHJhbnNDYWNoZUV4aXN0cyB8fCBzZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTdWJzY3JpYmUgZm9yIGV2ZW50cyBkZWZpbmVkIGF0IEh0dHBDbGllbnRFdmVudHMgYW5kXHJcbiAgLy8vIGF0dGFjaCBhcHByb3ByaWF0ZSBldmVudCBoYW5kbGVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBSZWdpc3RlckRlbGVnYXRlcygpOiB2b2lkIHtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0RXhlY3V0aW9uUHJvcGVydHlfRXZlbnQgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuR2V0RXhlY3V0aW9uUHJvcGVydHkuYmluZChTZXJ2ZXJDb25maWcuSW5zdGFuY2UpO1xyXG4gICAgSHR0cENsaWVudEV2ZW50cy5HZXRSdW50aW1lQ3R4SURfRXZlbnQgPSB0aGlzLkdldFJ1bnRpbWVDdHhJRC5iaW5kKHRoaXMpO1xyXG4gICAgSHR0cENsaWVudEV2ZW50cy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSURfRXZlbnQgPSB0aGlzLkdldEdsb2JhbFVuaXF1ZVNlc3Npb25JRC5iaW5kKHRoaXMpO1xyXG4gICAgSHR0cENsaWVudEV2ZW50cy5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yX0V2ZW50ID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLlNob3VsZERpc3BsYXlHZW5lcmljRXJyb3IuYmluZChTZXJ2ZXJDb25maWcuSW5zdGFuY2UpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXRyaWV2ZXMgcnVudGltZSBjb250ZXh0IElEXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEdldFJ1bnRpbWVDdHhJRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5Db250ZXh0SUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNlbmQgYSByZXF1ZXN0IHRvIHNlcnZlciB0byB0ZXJtaW5hdGUgdGhlIGNvbnRleHQgdXNpbmcgZmV0Y2ggQVBJIHdpdGgga2VlcC1hbGl2ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFRlcm1pbmF0ZUNvbnRleHRVc2luZ0ZldGNoQVBJKCk6IHZvaWQge1xyXG5cclxuICAgIC8vIElmIFNlc3Npb24gaXMgcmUtaW5pdGlhbGl6aW5nIG1lYW5zIHRoZSBjb250ZXh0IGlzIG5vdCBmb3VuZCBhdCBzZXJ2ZXIuXHJcbiAgICAvLyB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIHRlcm1pbmF0aW5nIGNvbnRleHQuXHJcbiAgICBpZiAoUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuSXNTZXNzaW9uUmVJbml0aWFsaXppbmcpXHJcbiAgICAgIHJldHVybjtcclxuICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSXNBYm9ydGluZ01hZ2ljRW5naW5lID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBEdWUgdG8gcGF5bG9hZCBsaW1pdCBvZiBmZXRjaCBBUEksIHNlbmQgb25seSB0aGUgY29udGV4dCB0ZXJtaW5hdGlvbiBjb21tYW5kIHRvIHNlcnZlclxyXG4gICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5nZXRDdXJyTUdEYXRhKCkuQ21kc1RvU2VydmVyLkNsZWFyKCk7XHJcblxyXG4gICAgbGV0IGNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZDogQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kID0gQ29tbWFuZEZhY3RvcnkuXHJcbiAgICBDcmVhdGVDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLmdldFRhc2tUYWcoKSk7XHJcblxyXG4gICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5nZXRDdXJyTUdEYXRhKCkuQ21kc1RvU2VydmVyLkFkZCg8SUNsaWVudENvbW1hbmQ+Y29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kKTtcclxuXHJcbiAgICAvLyByZXNwb25zZSBuZWVkIG5vdCB0byBiZSBoYW5kbGVkIGFzIHRoZSBicm93c2VyIHVubG9hZCBjYW5ub3QgYmUgc3RvcHBlZCwgc28gbm8gbmVlZCB0byB3YWl0XHJcbiAgICBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLkV4ZWN1dGUoQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbi5PTkxZX0NPTU1BTkRTKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { IClientTargetedCommand } from
|
|
2
|
-
import { XMLBasedCommandBuilder } from
|
|
3
|
-
import { ResultCommand } from
|
|
4
|
-
import { AbortCommand } from
|
|
5
|
-
import {
|
|
6
|
-
import { VerifyCommand } from
|
|
7
|
-
import { ConstInterface } from
|
|
8
|
-
import { ClientOriginatedCommandSerializer } from
|
|
9
|
-
import { GlobalCommandsManager } from
|
|
10
|
-
import { AccessHelper } from
|
|
1
|
+
import { IClientTargetedCommand } from './commands/IClientTargetedCommand';
|
|
2
|
+
import { XMLBasedCommandBuilder } from './commands/ServerToClient/XMLBasedCommandBuilder';
|
|
3
|
+
import { ResultCommand } from './commands/ServerToClient/ResultCommand';
|
|
4
|
+
import { AbortCommand } from './commands/ServerToClient/AbortCommand';
|
|
5
|
+
import { List } from '@magic-xpa/mscorelib';
|
|
6
|
+
import { VerifyCommand } from './commands/ServerToClient/VerifyCommand';
|
|
7
|
+
import { ConstInterface } from './ConstInterface';
|
|
8
|
+
import { ClientOriginatedCommandSerializer } from './commands/ClientToServer/ClientOriginatedCommandSerializer';
|
|
9
|
+
import { GlobalCommandsManager } from './GlobalCommandsManager';
|
|
10
|
+
import { AccessHelper } from './AccessHelper';
|
|
11
11
|
export class CommandsTable {
|
|
12
12
|
constructor() {
|
|
13
13
|
this._cmds = null;
|
|
@@ -89,7 +89,7 @@ export class CommandsTable {
|
|
|
89
89
|
startIterationIdx = this._iterationIdx;
|
|
90
90
|
for (; this._iterationIdx < size; this._iterationIdx++) {
|
|
91
91
|
cmd = ((this.getCmd(this._iterationIdx) instanceof AbortCommand) ? this.getCmd(this._iterationIdx) : null);
|
|
92
|
-
if (cmd != null && !cmd.TaskTag.startsWith(
|
|
92
|
+
if (cmd != null && !cmd.TaskTag.startsWith('-') && cmd.Frame === frame) {
|
|
93
93
|
for (verifyIndex = 0; verifyIndex < this._iterationIdx; verifyIndex++) {
|
|
94
94
|
verifyCmd = ((this.getCmd(verifyIndex) instanceof VerifyCommand) ? this.getCmd(verifyIndex) : null);
|
|
95
95
|
if (verifyCmd != null && verifyCmd.Frame === frame) {
|
|
@@ -137,7 +137,6 @@ export class CommandsTable {
|
|
|
137
137
|
buildXML(message) {
|
|
138
138
|
for (let i = 0; i < this._cmds.length; i = i + 1) {
|
|
139
139
|
let cmd = this._cmds.get_Item(i);
|
|
140
|
-
let temp = new RefParam(false);
|
|
141
140
|
message.Append(ClientOriginatedCommandSerializer.Serialize(cmd, AccessHelper.mgDataTable.getCurrMGData()));
|
|
142
141
|
}
|
|
143
142
|
this.clear();
|
|
@@ -160,4 +159,4 @@ export class CommandsTable {
|
|
|
160
159
|
return this._cmds.length;
|
|
161
160
|
}
|
|
162
161
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ29tbWFuZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxRQUFRLEVBQWlCLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUV0RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sNkRBQTZELENBQUM7QUFFOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE1BQU0sT0FBTyxhQUFhO0lBSXhCO1FBSFEsVUFBSyxHQUF5QixJQUFJLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFHaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBTUQsUUFBUSxDQUFDLE1BQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtTQUMxRDtJQUNILENB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QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hELElBQUksR0FBRyxHQUFxRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixJQUFJLElBQUksR0FBc0IsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzVHO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQU1ELEdBQUcsQ0FBQyxHQUFtQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQU9ELGNBQWMsQ0FBQyxZQUFvQjtRQUNqQyxJQUFJLE9BQU8sR0FBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUtELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhtbFBhcnNlciB9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SUNsaWVudFRhcmdldGVkQ29tbWFuZH0gZnJvbSBcIi4vY29tbWFuZHMvSUNsaWVudFRhcmdldGVkQ29tbWFuZFwiO1xyXG5pbXBvcnQge1hNTEJhc2VkQ29tbWFuZEJ1aWxkZXJ9IGZyb20gXCIuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1hNTEJhc2VkQ29tbWFuZEJ1aWxkZXJcIjtcclxuaW1wb3J0IHtJUmVzdWx0VmFsdWV9IGZyb20gXCIuL3J0L0lSZXN1bHRWYWx1ZVwiXHJcbmltcG9ydCB7UmVzdWx0Q29tbWFuZH0gZnJvbSBcIi4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvUmVzdWx0Q29tbWFuZFwiO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tIFwiLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0Fib3J0Q29tbWFuZH0gZnJvbSBcIi4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvQWJvcnRDb21tYW5kXCI7XHJcbmltcG9ydCB7UmVmUGFyYW0sIFN0cmluZ0J1aWxkZXIsIExpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1ZlcmlmeUNvbW1hbmR9IGZyb20gXCIuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1ZlcmlmeUNvbW1hbmRcIjtcclxuaW1wb3J0IHtDbGllbnRPcmlnaW5hdGVkQ29tbWFuZH0gZnJvbSBcIi4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmRcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7Q2xpZW50T3JpZ2luYXRlZENvbW1hbmRTZXJpYWxpemVyfSBmcm9tIFwiLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9DbGllbnRPcmlnaW5hdGVkQ29tbWFuZFNlcmlhbGl6ZXJcIjtcclxuaW1wb3J0IHsgSUNvbW1hbmRzVGFibGUgfSBmcm9tIFwiLi9JQ29tbWFuZHNUYWJsZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxDb21tYW5kc01hbmFnZXIgfSBmcm9tIFwiLi9HbG9iYWxDb21tYW5kc01hbmFnZXJcIjtcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSBcIi4vQWNjZXNzSGVscGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29tbWFuZHNUYWJsZSBpbXBsZW1lbnRzIElDb21tYW5kc1RhYmxle1xyXG4gIHByaXZhdGUgX2NtZHM6IExpc3Q8SUNsaWVudENvbW1hbmQ+ID0gbnVsbDtcclxuICBwcml2YXRlIF9pdGVyYXRpb25JZHg6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fY21kcyA9IG5ldyBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlQ29tbWFuZHNUYWJsZSgpOklDb21tYW5kc1RhYmxlIHtcclxuICAgIHJldHVybiBuZXcgQ29tbWFuZHNUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFRvIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCAgX2NtZHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gaW5kZXggb2YgZW5kIGxhc3QgIDxjb21tYW5kIC4uLj4gdGFnPC9yZXR1cm5zPlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBUbyBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj4gIG5hbWUgb2YgaW5uZXIgdGFnIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0NPTU1BTkQpIHtcclxuICAgICAgbGV0IGNtZDogSUNsaWVudFRhcmdldGVkQ29tbWFuZCA9IG5ldyBYTUxCYXNlZENvbW1hbmRCdWlsZGVyKCkuZmlsbERhdGEocGFyc2VyKSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICB0aGlzLl9jbWRzLnB1c2goY21kKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgRXhlY3V0ZSBhbGwgY29tbWFuZHMgaW4gY29tbWFuZCB0YWJsZSBhbmQgZGVsZXRlIHRoZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1wiPnJlc3VsdC48L3BhcmFtPlxyXG4gIGFzeW5jIEV4ZWN1dGUocmVzOiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBjdXJyRnJhbWU6IG51bWJlciA9IEdsb2JhbENvbW1hbmRzTWFuYWdlci5JbnN0YW5jZS5nZXRDbWRGcmFtZSgpOyAvLyBjbWRGcmFtZSsrOyAgc2F2ZSBhIGxvY2FsIHZhbHVlIG9mIHRoZSBmcmFtZVxyXG4gICAgR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmFkZDF0b0NtZEZyYW1lKCk7XHJcbiAgICBsZXQgZmlyc3RCbG9ja2luZzogbnVtYmVyID0gLTE7XHJcbiAgICBsZXQgaTogbnVtYmVyLCBqOiBudW1iZXI7XHJcbiAgICBsZXQgY21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG5cclxuICAgIC8vIGZyYW1lcyBhcmUgdXNlZCBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5XHJcbiAgICAvLyB0aGUgaW5uZXIgY2FsbCB3aWxsIG5vdCBleGVjdXRlIGNvbW1hbmRzIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIGJ5IHNvbWUgb3V0ZXJcclxuICAgIC8vIGNhbGwgdG8gdGhlIG1ldGhvZFxyXG5cclxuICAgIC8vIEZpcnN0IHN0ZXAgLSBtb3ZlIGFsbCByZXN1bHQgY29tbWFuZHMgYmVmb3JlIGFueSBibG9ja2luZyBjb21tYW5kcyAoUUNSICM2OTM0MjgpXHJcbiAgICAvLyBpdCBjYW4ndCBiZSB0aGF0IHRoZXkgYmVsb25nIHRvIHRoZSBibG9ja2luZyB0YXNrLlxyXG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuXHJcbiAgICAgIGNtZCA9IHRoaXMuZ2V0Q21kKGkpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIGlmIChjbWQuSXNCbG9ja2luZyAmJiBmaXJzdEJsb2NraW5nID09PSAtMSlcclxuICAgICAgICBmaXJzdEJsb2NraW5nID0gaTtcclxuICAgICAgZWxzZSBpZiAoY21kIGluc3RhbmNlb2YgUmVzdWx0Q29tbWFuZCAmJiBmaXJzdEJsb2NraW5nICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuX2NtZHMuSW5zZXJ0KGZpcnN0QmxvY2tpbmcsIGNtZCk7XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdChpICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHNldCB0aGUgZnJhbWUgZm9yIGNvbW1hbmRzIHdoaWNoIGhhcyBubyBmcmFtZSB5ZXRcclxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcblxyXG4gICAgICBjbWQgPSB0aGlzLmdldENtZChpKSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICBjbWQuRnJhbWUgPSBjdXJyRnJhbWU7XHJcblxyXG4gICAgICAvLyBJZiBhIGNvbW1hbmQgYmxvY2tzIHRoZSBjYWxsZXIsIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgbW92ZWQgdG9cclxuICAgICAgLy8gdGhlIG5leHQgYWN0aXZlIE1HZGF0YSwgc28gdGhleSB3aWxsIGJlIGV4ZWN1dGVkIChRQ1IgIzQzODM4NylcclxuICAgICAgaWYgKGNtZC5Jc0Jsb2NraW5nKSB7XHJcbiAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCB0aGlzLmdldFNpemUoKTsgaiA9IGogKyAxKVxyXG4gICAgICAgICAgR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmFkZFVuZnJhbWVkQ21kKHRoaXMuZ2V0Q21kKGopKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY21kcy5TZXRTaXplKGkgKyAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlICh0aGlzLmdldFNpemUoKSA+IDApIHtcclxuICAgICAgLy8gVE9ETzogQ2hlY2sgJ2FzJyBmb3IgSW50ZXJmYWNlIGluIHR5cGVzY3JpcHRcclxuICAgICAgY29uc3QgdG1wQ21kID0gdGhpcy5leHRyYWN0Q21kKGN1cnJGcmFtZSk7XHJcbiAgICAgIGlmICh0bXBDbWQgaW5zdGFuY2VvZiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kKVxyXG4gICAgICAgIGNtZCA9IHRtcENtZDtcclxuXHJcbiAgICAgIGlmIChjbWQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChjbWQuU2hvdWxkRXhlY3V0ZSkge1xyXG4gICAgICAgICAgYXdhaXQgY21kLkV4ZWN1dGUocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuYWRkQ29tbWFuZHNFeGVjdXRlZEFmdGVyVGFza1N0YXJ0ZWQoY21kKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG5leHQgY29tbWFuZCB0byBleGVjdXRlIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gc3VjaCBjb21tYW5kXHJcbiAgLy8vICAgdGhlIGFib3J0IGNvbW1hbmRzIGFyZSByZXR1cm5lZCBmaXJzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmcmFtZVwiPnRoZSBmcmFtZSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgYSBjb21tYW5kIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBleHRyYWN0Q21kKGZyYW1lOiBudW1iZXIpOiBJQ2xpZW50Q29tbWFuZCB7XHJcbiAgICBsZXQgc2l6ZTogbnVtYmVyID0gdGhpcy5nZXRTaXplKCk7XHJcbiAgICBsZXQgY21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kID0gbnVsbDtcclxuICAgIGxldCB2ZXJpZnlDbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQgPSBudWxsO1xyXG4gICAgbGV0IHZlcmlmeUluZGV4OiBudW1iZXI7XHJcbiAgICBsZXQgdmVyaWZ5VGFzazogVGFzayA9IG51bGw7XHJcbiAgICBsZXQgYWJvcnRUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgIGxldCBzdGFydEl0ZXJhdGlvbklkeDogbnVtYmVyO1xyXG4gICAgbGV0IHRpZDogc3RyaW5nO1xyXG5cclxuICAgIGlmIChzaXplID09PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5faXRlcmF0aW9uSWR4ID49IHNpemUpXHJcbiAgICAgIHRoaXMuX2l0ZXJhdGlvbklkeCA9IDA7XHJcblxyXG4gICAgc3RhcnRJdGVyYXRpb25JZHggPSB0aGlzLl9pdGVyYXRpb25JZHg7XHJcblxyXG4gICAgLy8gdHJ5IHRvIGZpbmQgYW4gQUJPUlQgY29tbWFuZCBhbmQgcmV0dXJuIGl0XHJcbiAgICBmb3IgKDsgdGhpcy5faXRlcmF0aW9uSWR4IDwgc2l6ZTsgdGhpcy5faXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgY21kID0gKCh0aGlzLmdldENtZCh0aGlzLl9pdGVyYXRpb25JZHgpIGluc3RhbmNlb2YgQWJvcnRDb21tYW5kKSA/IDxBYm9ydENvbW1hbmQ+dGhpcy5nZXRDbWQodGhpcy5faXRlcmF0aW9uSWR4KSA6IG51bGwpO1xyXG4gICAgICBpZiAoY21kICE9IG51bGwgJiYgIWNtZC5UYXNrVGFnLnN0YXJ0c1dpdGgoXCItXCIpICYmIGNtZC5GcmFtZSA9PT0gZnJhbWUpIHtcclxuICAgICAgICAvLyBpZiBhbiBhYm9ydCBjb21tYW5kIHdhcyBmb3VuZCwgZXhlY3V0ZSBhbGwgcHJldmlvdXMgdmVyaWZ5IGNvbW1hbmRzIG9mIHRoZSB0YXNrIG9yIGl0cycgc3ViLXRhc2tzXHJcbiAgICAgICAgZm9yICh2ZXJpZnlJbmRleCA9IDA7IHZlcmlmeUluZGV4IDwgdGhpcy5faXRlcmF0aW9uSWR4OyB2ZXJpZnlJbmRleCsrKSB7XHJcbiAgICAgICAgICB2ZXJpZnlDbWQgPSAoKHRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSBpbnN0YW5jZW9mIFZlcmlmeUNvbW1hbmQpID8gPFZlcmlmeUNvbW1hbmQ+dGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIDogbnVsbCk7XHJcbiAgICAgICAgICBpZiAodmVyaWZ5Q21kICE9IG51bGwgJiYgdmVyaWZ5Q21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgICAgICB2ZXJpZnlUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZlcmlmeUNtZC5UYXNrVGFnKTtcclxuICAgICAgICAgICAgYWJvcnRUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKGNtZC5UYXNrVGFnKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNvbWV0aW1lcyB0aGUgdGFzayB3aGljaCBpc3N1ZWQgdGhlIHZlcmlmeSBpcyBub3Qga25vd24gdG8gdGhlIGNsaWVudCAoZS5nLiBhIGJhdGNoIHRhc2spLlxyXG4gICAgICAgICAgICBpZiAodmVyaWZ5VGFzayAhPSBudWxsICYmIHZlcmlmeVRhc2suaXNEZXNjZW5kZW50T2YoYWJvcnRUYXNrKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodmVyaWZ5SW5kZXgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGlvbklkeC0tO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZnlDbWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh0aGlzLl9pdGVyYXRpb25JZHgpO1xyXG5cclxuICAgICAgICAvLyBmb3IgYW4gYWJvcnQgQ01EIG9mIHRhc2sgXCJ0aWRcIiwgdGhlIHNlcnZlciBtaWdodCBzZW5kIGFub3RoZXIgYWJvcnQgQ01EIGZvciB0YXNrXHJcbiAgICAgICAgLy8gXCItdGlkXCIuIFdlIHNob3VsZCBjb21iaW5lIHRoZW0gYW5kIGdldCByaWQgb2YgdGhlIHNlY29uZCBDTUQuXHJcbiAgICAgICAgc2l6ZSA9IHRoaXMuZ2V0U2l6ZSgpO1xyXG4gICAgICAgIGZvciAoc3RhcnRJdGVyYXRpb25JZHggPSAwOyBzdGFydEl0ZXJhdGlvbklkeCA8IHNpemU7IHN0YXJ0SXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgICAgIHRpZCA9ICg8SUNsaWVudFRhcmdldGVkQ29tbWFuZD50aGlzLmdldENtZChzdGFydEl0ZXJhdGlvbklkeCkpLlRhc2tUYWc7XHJcbiAgICAgICAgICBpZiAodGlkICE9IG51bGwgJiYgdGlkLnN1YnN0cigxKSA9PT0gY21kLlRhc2tUYWcpIHtcclxuICAgICAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdChzdGFydEl0ZXJhdGlvbklkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0IHRoaXMgc3RhZ2Ugbm8gQUJPUlQgY29tbWFuZCB3YXMgZm91bmQgaW4gdGhlIHRhYmxlXHJcblxyXG4gICAgZm9yICh2ZXJpZnlJbmRleCA9IDA7IHZlcmlmeUluZGV4IDwgc2l6ZTsgdmVyaWZ5SW5kZXgrKykge1xyXG4gICAgICB2ZXJpZnlDbWQgPSAoKHRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSBpbnN0YW5jZW9mIFZlcmlmeUNvbW1hbmQpID8gPFZlcmlmeUNvbW1hbmQ+dGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIDogbnVsbCk7XHJcbiAgICAgIGlmICh2ZXJpZnlDbWQgIT0gbnVsbCAmJiB2ZXJpZnlDbWQuRnJhbWUgPT09IGZyYW1lICYmXHJcbiAgICAgICAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZlcmlmeUNtZC5UYXNrVGFnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh2ZXJpZnlJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIHZlcmlmeUNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0IHRoaXMgc3RhZ2Ugbm8gVkVSSUZZIGNvbW1hbmQgd2FzIGZvdW5kIGluIHRoZSB0YWJsZVxyXG5cclxuICAgIGZvciAodGhpcy5faXRlcmF0aW9uSWR4ID0gMDsgdGhpcy5faXRlcmF0aW9uSWR4IDwgc2l6ZTsgdGhpcy5faXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgY21kID0gdGhpcy5nZXRDbWQodGhpcy5faXRlcmF0aW9uSWR4KSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICBpZiAoY21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodGhpcy5faXRlcmF0aW9uSWR4KTtcclxuICAgICAgICByZXR1cm4gY21kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY29tbWFuZCBieSBpdHMgaW5kZXggaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgcmVxdWVzdGVkIGNvbW1hbmQ8L3BhcmFtPlxyXG4gIGdldENtZChpZHg6IG51bWJlcik6IElDbGllbnRDb21tYW5kIHtcclxuICAgIHJldHVybiB0aGlzLl9jbWRzLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgdGhlIFhNTCBzdHJ1Y3R1cmUgb2YgdGhlIGNvbW1hbmRzIGFuZCBDTEVBUiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9jbWRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjbWQ6IENsaWVudE9yaWdpbmF0ZWRDb21tYW5kID0gPENsaWVudE9yaWdpbmF0ZWRDb21tYW5kPnRoaXMuX2NtZHMuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIGxldCB0ZW1wOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShmYWxzZSk7XHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKENsaWVudE9yaWdpbmF0ZWRDb21tYW5kU2VyaWFsaXplci5TZXJpYWxpemUoY21kLCBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBhIGNvbW1hbmQgdG8gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNtZFwiPmEgY29tbWFuZCB0byB0byBhZGQgdG8gdGhlIHRhYmxlPC9wYXJhbT5cclxuICBBZGQoY21kOiBJQ2xpZW50Q29tbWFuZCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5wdXNoKGNtZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ2xlYXIgb3V0IHRoZSBjb21tYW5kIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NtZHMuQ2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZXh0cmFjdCBhbmQgcmVtb3ZlIGEgY29tbWFuZCBmcm9tIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29tbWFuZEluZGV4XCI+IGluZGV4IG9mIGNvbW1hbmQgaW4gdGhlIHRhYmxlPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEV4dHJhY3RDb21tYW5kKGNvbW1hbmRJbmRleDogbnVtYmVyKTogSUNsaWVudENvbW1hbmQge1xyXG4gICAgbGV0IGNvbW1hbmQ6IElDbGllbnRDb21tYW5kID0gdGhpcy5nZXRDbWQoY29tbWFuZEluZGV4KTtcclxuICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQoY29tbWFuZEluZGV4KTtcclxuICAgIHJldHVybiBjb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNsZWFyIGFsbCB0aGUgY29tbWFuZHMgZnJvbSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5DbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBjb21tYW5kcyBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jbWRzLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIl19
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ29tbWFuZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUU5RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxPQUFPLGFBQWE7SUFJeEI7UUFIUSxVQUFLLEdBQXlCLElBQUksQ0FBQztRQUNuQyxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUdoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFNRCxRQUFRLENBQUMsTUFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1NBQzFEO0lBQ0gsQ0FBQztJQU1PLGdCQUFnQixDQUFDLFlBQW9CLEVBQUUsTUFBaUI7UUFDOUQsSUFBSSxZQUFZLElBQUksSUFBSTtZQUN0QixPQUFPLEtBQUssQ0FBQztRQUVmLElBQUksWUFBWSxLQUFLLGNBQWMsQ0FBQyxjQUFjLEVBQUU7WUFDbEQsSUFBSSxHQUFHLEdBQTJCLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUEyQixDQUFDO1lBQzFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCOztZQUVDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFpQjtRQUM3QixJQUFJLFNBQVMsR0FBVyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckUscUJBQXFCLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hELElBQUksYUFBYSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBUyxFQUFFLENBQVMsQ0FBQztRQUN6QixJQUFJLEdBQTJCLENBQUM7UUFRaEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFFekMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUEyQixDQUFDO1lBQy9DLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxhQUFhLEdBQUcsQ0FBQyxDQUFDO2lCQUNmLElBQUksR0FBRyxZQUFZLGFBQWEsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1NBQ0Y7UUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUV6QyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDL0MsR0FBRyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFJdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFO2dCQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUMzQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNO2FBQ1A7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtZQUV6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLElBQUksTUFBTSxZQUFZLHNCQUFzQjtnQkFDMUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUVmLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDZixJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUU7b0JBQ3JCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDeEI7cUJBQ0k7b0JBQ0gscUJBQXFCLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6RTthQUNGOztnQkFFQyxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBT08sVUFBVSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxJQUFJLEdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLElBQUksR0FBRyxHQUEyQixJQUFJLENBQUM7UUFDdkMsSUFBSSxTQUFTLEdBQTJCLElBQUksQ0FBQztRQUM3QyxJQUFJLFdBQW1CLENBQUM7UUFDeEIsSUFBSSxVQUFVLEdBQVMsSUFBSSxDQUFDO1FBQzVCLElBQUksU0FBUyxHQUFTLElBQUksQ0FBQztRQUMzQixJQUFJLGlCQUF5QixDQUFDO1FBQzlCLElBQUksR0FBVyxDQUFDO1FBRWhCLElBQUksSUFBSSxLQUFLLENBQUM7WUFDWixPQUFPLElBQUksQ0FBQztRQUVkLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFHdkMsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDdEQsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pILElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO2dCQUV0RSxLQUFLLFdBQVcsR0FBRyxDQUFDLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLEVBQUU7b0JBQ3JFLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQWdCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuSCxJQUFJLFNBQVMsSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7d0JBQ2xELFVBQVUsR0FBUyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzNFLFNBQVMsR0FBUyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBR3BFLElBQUksVUFBVSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFOzRCQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDakMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDOzRCQUNyQixPQUFPLFNBQVMsQ0FBQzt5QkFDbEI7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUl4QyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixLQUFLLGlCQUFpQixHQUFHLENBQUMsRUFBRSxpQkFBaUIsR0FBRyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtvQkFDekUsR0FBRyxHQUE0QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFFLENBQUMsT0FBTyxDQUFDO29CQUN2RSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFO3dCQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUN2QyxNQUFNO3FCQUNQO2lCQUNGO2dCQUVELE9BQU8sR0FBRyxDQUFDO2FBQ1o7U0FDRjtRQUlELEtBQUssV0FBVyxHQUFHLENBQUMsRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQ3ZELFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQWdCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ILElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLEtBQUs7Z0JBQ2hELFlBQVksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtTQUNGO1FBSUQsS0FBSyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDNUUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBMkIsQ0FBQztZQUNoRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sR0FBRyxDQUFDO2FBQ1o7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBRWQsQ0FBQztJQU1ELE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUtELFFBQVEsQ0FBQyxPQUFzQjtRQUM3QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEQsSUFBSSxHQUFHLEdBQXFELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1RztRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFNRCxHQUFHLENBQUMsR0FBbUI7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUtELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFPRCxjQUFjLENBQUMsWUFBb0I7UUFDakMsSUFBSSxPQUFPLEdBQW1CLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUtELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFLRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRUYXJnZXRlZENvbW1hbmQnO1xyXG5pbXBvcnQge1hNTEJhc2VkQ29tbWFuZEJ1aWxkZXJ9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvWE1MQmFzZWRDb21tYW5kQnVpbGRlcic7XHJcbmltcG9ydCB7SVJlc3VsdFZhbHVlfSBmcm9tICcuL3J0L0lSZXN1bHRWYWx1ZSc7XHJcbmltcG9ydCB7UmVzdWx0Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9SZXN1bHRDb21tYW5kJztcclxuaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7QWJvcnRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0Fib3J0Q29tbWFuZCc7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge1ZlcmlmeUNvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvVmVyaWZ5Q29tbWFuZCc7XHJcbmltcG9ydCB7Q2xpZW50T3JpZ2luYXRlZENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmQnO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kU2VyaWFsaXplcn0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9DbGllbnRPcmlnaW5hdGVkQ29tbWFuZFNlcmlhbGl6ZXInO1xyXG5pbXBvcnQgeyBJQ29tbWFuZHNUYWJsZSB9IGZyb20gJy4vSUNvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQgeyBHbG9iYWxDb21tYW5kc01hbmFnZXIgfSBmcm9tICcuL0dsb2JhbENvbW1hbmRzTWFuYWdlcic7XHJcbmltcG9ydCB7IEFjY2Vzc0hlbHBlciB9IGZyb20gJy4vQWNjZXNzSGVscGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDb21tYW5kc1RhYmxlIGltcGxlbWVudHMgSUNvbW1hbmRzVGFibGV7XHJcbiAgcHJpdmF0ZSBfY21kczogTGlzdDxJQ2xpZW50Q29tbWFuZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX2l0ZXJhdGlvbklkeDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9jbWRzID0gbmV3IExpc3QoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVDb21tYW5kc1RhYmxlKCk6SUNvbW1hbmRzVGFibGUge1xyXG4gICAgcmV0dXJuIG5ldyBDb21tYW5kc1RhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVG8gcGFyc2UgaW5wdXQgc3RyaW5nIGFuZCBmaWxsICBfY21kc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBpbmRleCBvZiBlbmQgbGFzdCAgPGNvbW1hbmQgLi4uPiB0YWc8L3JldHVybnM+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFRvIGFsbG9jYXRlIGFuZCBmaWxsIGlubmVyIG9iamVjdHMgb2YgdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvdW5kVGFnTmFtZVwiPiAgbmFtZSBvZiBpbm5lciB0YWcgPC9wYXJhbT5cclxuICBwcml2YXRlIGluaXRJbm5lck9iamVjdHMoZm91bmRUYWdOYW1lOiBzdHJpbmcsIHBhcnNlcjogWG1sUGFyc2VyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBDb25zdEludGVyZmFjZS5NR19UQUdfQ09NTUFORCkge1xyXG4gICAgICBsZXQgY21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kID0gbmV3IFhNTEJhc2VkQ29tbWFuZEJ1aWxkZXIoKS5maWxsRGF0YShwYXJzZXIpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIHRoaXMuX2NtZHMucHVzaChjbWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBFeGVjdXRlIGFsbCBjb21tYW5kcyBpbiBjb21tYW5kIHRhYmxlIGFuZCBkZWxldGUgdGhlbVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzXCI+cmVzdWx0LjwvcGFyYW0+XHJcbiAgYXN5bmMgRXhlY3V0ZShyZXM6IElSZXN1bHRWYWx1ZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGN1cnJGcmFtZTogbnVtYmVyID0gR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmdldENtZEZyYW1lKCk7IC8vIGNtZEZyYW1lKys7ICBzYXZlIGEgbG9jYWwgdmFsdWUgb2YgdGhlIGZyYW1lXHJcbiAgICBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuYWRkMXRvQ21kRnJhbWUoKTtcclxuICAgIGxldCBmaXJzdEJsb2NraW5nOiBudW1iZXIgPSAtMTtcclxuICAgIGxldCBpOiBudW1iZXIsIGo6IG51bWJlcjtcclxuICAgIGxldCBjbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcblxyXG4gICAgLy8gZnJhbWVzIGFyZSB1c2VkIGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgcmVjdXJzaXZlbHlcclxuICAgIC8vIHRoZSBpbm5lciBjYWxsIHdpbGwgbm90IGV4ZWN1dGUgY29tbWFuZHMgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgYnkgc29tZSBvdXRlclxyXG4gICAgLy8gY2FsbCB0byB0aGUgbWV0aG9kXHJcblxyXG4gICAgLy8gRmlyc3Qgc3RlcCAtIG1vdmUgYWxsIHJlc3VsdCBjb21tYW5kcyBiZWZvcmUgYW55IGJsb2NraW5nIGNvbW1hbmRzIChRQ1IgIzY5MzQyOClcclxuICAgIC8vIGl0IGNhbid0IGJlIHRoYXQgdGhleSBiZWxvbmcgdG8gdGhlIGJsb2NraW5nIHRhc2suXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5nZXRTaXplKCk7IGkgPSBpICsgMSkge1xyXG5cclxuICAgICAgY21kID0gdGhpcy5nZXRDbWQoaSkgYXMgSUNsaWVudFRhcmdldGVkQ29tbWFuZDtcclxuICAgICAgaWYgKGNtZC5Jc0Jsb2NraW5nICYmIGZpcnN0QmxvY2tpbmcgPT09IC0xKVxyXG4gICAgICAgIGZpcnN0QmxvY2tpbmcgPSBpO1xyXG4gICAgICBlbHNlIGlmIChjbWQgaW5zdGFuY2VvZiBSZXN1bHRDb21tYW5kICYmIGZpcnN0QmxvY2tpbmcgIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fY21kcy5JbnNlcnQoZmlyc3RCbG9ja2luZywgY21kKTtcclxuICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KGkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc2V0IHRoZSBmcmFtZSBmb3IgY29tbWFuZHMgd2hpY2ggaGFzIG5vIGZyYW1lIHlldFxyXG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuXHJcbiAgICAgIGNtZCA9IHRoaXMuZ2V0Q21kKGkpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIGNtZC5GcmFtZSA9IGN1cnJGcmFtZTtcclxuXHJcbiAgICAgIC8vIElmIGEgY29tbWFuZCBibG9ja3MgdGhlIGNhbGxlciwgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBtb3ZlZCB0b1xyXG4gICAgICAvLyB0aGUgbmV4dCBhY3RpdmUgTUdkYXRhLCBzbyB0aGV5IHdpbGwgYmUgZXhlY3V0ZWQgKFFDUiAjNDM4Mzg3KVxyXG4gICAgICBpZiAoY21kLklzQmxvY2tpbmcpIHtcclxuICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IHRoaXMuZ2V0U2l6ZSgpOyBqID0gaiArIDEpXHJcbiAgICAgICAgICBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuYWRkVW5mcmFtZWRDbWQodGhpcy5nZXRDbWQoaikpO1xyXG5cclxuICAgICAgICB0aGlzLl9jbWRzLlNldFNpemUoaSArIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKHRoaXMuZ2V0U2l6ZSgpID4gMCkge1xyXG4gICAgICAvLyBUT0RPOiBDaGVjayAnYXMnIGZvciBJbnRlcmZhY2UgaW4gdHlwZXNjcmlwdFxyXG4gICAgICBjb25zdCB0bXBDbWQgPSB0aGlzLmV4dHJhY3RDbWQoY3VyckZyYW1lKTtcclxuICAgICAgaWYgKHRtcENtZCBpbnN0YW5jZW9mIElDbGllbnRUYXJnZXRlZENvbW1hbmQpXHJcbiAgICAgICAgY21kID0gdG1wQ21kO1xyXG5cclxuICAgICAgaWYgKGNtZCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGNtZC5TaG91bGRFeGVjdXRlKSB7XHJcbiAgICAgICAgICBhd2FpdCBjbWQuRXhlY3V0ZShyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIEdsb2JhbENvbW1hbmRzTWFuYWdlci5JbnN0YW5jZS5hZGRDb21tYW5kc0V4ZWN1dGVkQWZ0ZXJUYXNrU3RhcnRlZChjbWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbmV4dCBjb21tYW5kIHRvIGV4ZWN1dGUgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGNvbW1hbmRcclxuICAvLy8gICB0aGUgYWJvcnQgY29tbWFuZHMgYXJlIHJldHVybmVkIGZpcnN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZyYW1lXCI+dGhlIGZyYW1lIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBhIGNvbW1hbmQgPC9wYXJhbT5cclxuICBwcml2YXRlIGV4dHJhY3RDbWQoZnJhbWU6IG51bWJlcik6IElDbGllbnRDb21tYW5kIHtcclxuICAgIGxldCBzaXplOiBudW1iZXIgPSB0aGlzLmdldFNpemUoKTtcclxuICAgIGxldCBjbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQgPSBudWxsO1xyXG4gICAgbGV0IHZlcmlmeUNtZDogSUNsaWVudFRhcmdldGVkQ29tbWFuZCA9IG51bGw7XHJcbiAgICBsZXQgdmVyaWZ5SW5kZXg6IG51bWJlcjtcclxuICAgIGxldCB2ZXJpZnlUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgIGxldCBhYm9ydFRhc2s6IFRhc2sgPSBudWxsO1xyXG4gICAgbGV0IHN0YXJ0SXRlcmF0aW9uSWR4OiBudW1iZXI7XHJcbiAgICBsZXQgdGlkOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKHNpemUgPT09IDApXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLl9pdGVyYXRpb25JZHggPj0gc2l6ZSlcclxuICAgICAgdGhpcy5faXRlcmF0aW9uSWR4ID0gMDtcclxuXHJcbiAgICBzdGFydEl0ZXJhdGlvbklkeCA9IHRoaXMuX2l0ZXJhdGlvbklkeDtcclxuXHJcbiAgICAvLyB0cnkgdG8gZmluZCBhbiBBQk9SVCBjb21tYW5kIGFuZCByZXR1cm4gaXRcclxuICAgIGZvciAoOyB0aGlzLl9pdGVyYXRpb25JZHggPCBzaXplOyB0aGlzLl9pdGVyYXRpb25JZHgrKykge1xyXG4gICAgICBjbWQgPSAoKHRoaXMuZ2V0Q21kKHRoaXMuX2l0ZXJhdGlvbklkeCkgaW5zdGFuY2VvZiBBYm9ydENvbW1hbmQpID8gPEFib3J0Q29tbWFuZD50aGlzLmdldENtZCh0aGlzLl9pdGVyYXRpb25JZHgpIDogbnVsbCk7XHJcbiAgICAgIGlmIChjbWQgIT0gbnVsbCAmJiAhY21kLlRhc2tUYWcuc3RhcnRzV2l0aCgnLScpICYmIGNtZC5GcmFtZSA9PT0gZnJhbWUpIHtcclxuICAgICAgICAvLyBpZiBhbiBhYm9ydCBjb21tYW5kIHdhcyBmb3VuZCwgZXhlY3V0ZSBhbGwgcHJldmlvdXMgdmVyaWZ5IGNvbW1hbmRzIG9mIHRoZSB0YXNrIG9yIGl0cycgc3ViLXRhc2tzXHJcbiAgICAgICAgZm9yICh2ZXJpZnlJbmRleCA9IDA7IHZlcmlmeUluZGV4IDwgdGhpcy5faXRlcmF0aW9uSWR4OyB2ZXJpZnlJbmRleCsrKSB7XHJcbiAgICAgICAgICB2ZXJpZnlDbWQgPSAoKHRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSBpbnN0YW5jZW9mIFZlcmlmeUNvbW1hbmQpID8gPFZlcmlmeUNvbW1hbmQ+dGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIDogbnVsbCk7XHJcbiAgICAgICAgICBpZiAodmVyaWZ5Q21kICE9IG51bGwgJiYgdmVyaWZ5Q21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgICAgICB2ZXJpZnlUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZlcmlmeUNtZC5UYXNrVGFnKTtcclxuICAgICAgICAgICAgYWJvcnRUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKGNtZC5UYXNrVGFnKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNvbWV0aW1lcyB0aGUgdGFzayB3aGljaCBpc3N1ZWQgdGhlIHZlcmlmeSBpcyBub3Qga25vd24gdG8gdGhlIGNsaWVudCAoZS5nLiBhIGJhdGNoIHRhc2spLlxyXG4gICAgICAgICAgICBpZiAodmVyaWZ5VGFzayAhPSBudWxsICYmIHZlcmlmeVRhc2suaXNEZXNjZW5kZW50T2YoYWJvcnRUYXNrKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodmVyaWZ5SW5kZXgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGlvbklkeC0tO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZnlDbWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh0aGlzLl9pdGVyYXRpb25JZHgpO1xyXG5cclxuICAgICAgICAvLyBmb3IgYW4gYWJvcnQgQ01EIG9mIHRhc2sgXCJ0aWRcIiwgdGhlIHNlcnZlciBtaWdodCBzZW5kIGFub3RoZXIgYWJvcnQgQ01EIGZvciB0YXNrXHJcbiAgICAgICAgLy8gXCItdGlkXCIuIFdlIHNob3VsZCBjb21iaW5lIHRoZW0gYW5kIGdldCByaWQgb2YgdGhlIHNlY29uZCBDTUQuXHJcbiAgICAgICAgc2l6ZSA9IHRoaXMuZ2V0U2l6ZSgpO1xyXG4gICAgICAgIGZvciAoc3RhcnRJdGVyYXRpb25JZHggPSAwOyBzdGFydEl0ZXJhdGlvbklkeCA8IHNpemU7IHN0YXJ0SXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgICAgIHRpZCA9ICg8SUNsaWVudFRhcmdldGVkQ29tbWFuZD50aGlzLmdldENtZChzdGFydEl0ZXJhdGlvbklkeCkpLlRhc2tUYWc7XHJcbiAgICAgICAgICBpZiAodGlkICE9IG51bGwgJiYgdGlkLnN1YnN0cigxKSA9PT0gY21kLlRhc2tUYWcpIHtcclxuICAgICAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdChzdGFydEl0ZXJhdGlvbklkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0IHRoaXMgc3RhZ2Ugbm8gQUJPUlQgY29tbWFuZCB3YXMgZm91bmQgaW4gdGhlIHRhYmxlXHJcblxyXG4gICAgZm9yICh2ZXJpZnlJbmRleCA9IDA7IHZlcmlmeUluZGV4IDwgc2l6ZTsgdmVyaWZ5SW5kZXgrKykge1xyXG4gICAgICB2ZXJpZnlDbWQgPSAoKHRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSBpbnN0YW5jZW9mIFZlcmlmeUNvbW1hbmQpID8gPFZlcmlmeUNvbW1hbmQ+dGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIDogbnVsbCk7XHJcbiAgICAgIGlmICh2ZXJpZnlDbWQgIT0gbnVsbCAmJiB2ZXJpZnlDbWQuRnJhbWUgPT09IGZyYW1lICYmXHJcbiAgICAgICAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZlcmlmeUNtZC5UYXNrVGFnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh2ZXJpZnlJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIHZlcmlmeUNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0IHRoaXMgc3RhZ2Ugbm8gVkVSSUZZIGNvbW1hbmQgd2FzIGZvdW5kIGluIHRoZSB0YWJsZVxyXG5cclxuICAgIGZvciAodGhpcy5faXRlcmF0aW9uSWR4ID0gMDsgdGhpcy5faXRlcmF0aW9uSWR4IDwgc2l6ZTsgdGhpcy5faXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgY21kID0gdGhpcy5nZXRDbWQodGhpcy5faXRlcmF0aW9uSWR4KSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICBpZiAoY21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodGhpcy5faXRlcmF0aW9uSWR4KTtcclxuICAgICAgICByZXR1cm4gY21kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY29tbWFuZCBieSBpdHMgaW5kZXggaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgcmVxdWVzdGVkIGNvbW1hbmQ8L3BhcmFtPlxyXG4gIGdldENtZChpZHg6IG51bWJlcik6IElDbGllbnRDb21tYW5kIHtcclxuICAgIHJldHVybiB0aGlzLl9jbWRzLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgdGhlIFhNTCBzdHJ1Y3R1cmUgb2YgdGhlIGNvbW1hbmRzIGFuZCBDTEVBUiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9jbWRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjbWQ6IENsaWVudE9yaWdpbmF0ZWRDb21tYW5kID0gPENsaWVudE9yaWdpbmF0ZWRDb21tYW5kPnRoaXMuX2NtZHMuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKENsaWVudE9yaWdpbmF0ZWRDb21tYW5kU2VyaWFsaXplci5TZXJpYWxpemUoY21kLCBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBhIGNvbW1hbmQgdG8gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNtZFwiPmEgY29tbWFuZCB0byB0byBhZGQgdG8gdGhlIHRhYmxlPC9wYXJhbT5cclxuICBBZGQoY21kOiBJQ2xpZW50Q29tbWFuZCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5wdXNoKGNtZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ2xlYXIgb3V0IHRoZSBjb21tYW5kIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NtZHMuQ2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZXh0cmFjdCBhbmQgcmVtb3ZlIGEgY29tbWFuZCBmcm9tIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29tbWFuZEluZGV4XCI+IGluZGV4IG9mIGNvbW1hbmQgaW4gdGhlIHRhYmxlPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEV4dHJhY3RDb21tYW5kKGNvbW1hbmRJbmRleDogbnVtYmVyKTogSUNsaWVudENvbW1hbmQge1xyXG4gICAgbGV0IGNvbW1hbmQ6IElDbGllbnRDb21tYW5kID0gdGhpcy5nZXRDbWQoY29tbWFuZEluZGV4KTtcclxuICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQoY29tbWFuZEluZGV4KTtcclxuICAgIHJldHVybiBjb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNsZWFyIGFsbCB0aGUgY29tbWFuZHMgZnJvbSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5DbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBjb21tYW5kcyBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jbWRzLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export let CurrentClientVersion = '4.801.0-dev481.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export let CurrentClientVersion = '4.801.0-dev481.309';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VycmVudENsaWVudFZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL0N1cnJlbnRDbGllbnRWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGxldCBDdXJyZW50Q2xpZW50VmVyc2lvbiA9ICc0LjgwMS4wLWRldjQ4MS4zMDknOyJdfQ==
|
|
@@ -31,7 +31,6 @@ export class GUIManager {
|
|
|
31
31
|
}
|
|
32
32
|
abort_0(form) {
|
|
33
33
|
if (form !== null) {
|
|
34
|
-
let mainProgByCtlIdx = AccessHelper.mgDataTable.GetMainProgByCtlIdx(-1, form.getTask().getCtlIdx());
|
|
35
34
|
Manager.Abort(form);
|
|
36
35
|
}
|
|
37
36
|
}
|
|
@@ -60,4 +59,4 @@ export class GUIManager {
|
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
GUIManager._instance = null;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR1VJTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvR1VJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUMsTUFBTSxPQUFPLFVBQVU7SUFLckIsTUFBTSxLQUFLLFFBQVE7UUFDakIsSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLElBQUk7WUFDL0IsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBTUQsbUJBQW1CO1FBQ2pCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBUUQsVUFBVSxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsV0FBb0I7UUFDOUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO1lBRWYsSUFBSSxVQUFVLEdBQVksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDM0UsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVyQixRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBUUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsV0FBb0I7UUFDN0QsSUFBSSxPQUFPLEdBQUcsQ0FBQztZQUViLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUlELEtBQUssQ0FBQyxJQUFhO1FBQ2pCLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBRW5CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBTU8sT0FBTyxDQUFDLElBQVk7UUFDMUIsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLElBQUksZ0JBQWdCLEdBQWUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNoSCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUtPLE9BQU87UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxNQUFNLElBQUksR0FBSSxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkUsSUFBRyxJQUFJLEtBQUssSUFBSTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFTRCxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsS0FBYTtRQUV4RCxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUQsT0FBTyxNQUFNLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBU0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWUsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUNuRSxJQUFJLEtBQUssR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRSxJQUFJLEdBQUcsR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFTRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQWEsRUFBRSxLQUFjO1FBRXpDLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBUU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQ3JDLElBQUksU0FBUyxHQUFXLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDbEYsT0FBTyxTQUFTLElBQVksTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQ3RELENBQUM7O0FBOUhjLG9CQUFTLEdBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNc2dJbnRlcmZhY2V9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge0NvbW1hbmRzLCBNYW5hZ2VyLCBTdHlsZXN9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gJy4vdGFza3MvTUdEYXRhJztcclxuaW1wb3J0IHtSQ1RpbWVyfSBmcm9tICcuL3Rhc2tzL1JDVGltZXInO1xyXG5pbXBvcnQge01nRm9ybX0gZnJvbSAnLi9ndWkvTWdGb3JtJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge0xhbmd1YWdlRGF0YX0gZnJvbSAnLi9lbnYvTGFuZ3VhZ2VEYXRhJztcclxuaW1wb3J0IHtBY2Nlc3NIZWxwZXJ9IGZyb20gJy4vQWNjZXNzSGVscGVyJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIDwvc3VtbWFyeT5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEdVSU1hbmFnZXIge1xyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogR1VJTWFuYWdlciA9IG51bGw7IC8vIHRoZSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIEdVSU1hbmFnZXJcclxuXHJcbiAgLy8vICAgc2luZ2xldG9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IEdVSU1hbmFnZXIge1xyXG4gICAgaWYgKEdVSU1hbmFnZXIuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBHVUlNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBHVUlNYW5hZ2VyKCk7XHJcbiAgICByZXR1cm4gR1VJTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGUgdGhlIGNvbW1hbmRzIGluIHRoZSBxdWV1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXhlY0d1aUNvbW1hbmRRdWV1ZSgpOiB2b2lkIHtcclxuICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RhcnQgYSB0aW1lclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtZ2RcIj4gTWdEYXRhIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+aW50ZXJ2YWwgaW4gZnVsbCBzZWNvbmRzIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gKGZyb20gY3VycmVudCB0aW1lKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0lkbGVUaW1lclwiPnRydWUgaWYgdGhpcyB0aW1lciBpcyB0aGUgaWRsZSB0aW1lcjwvcGFyYW0+XHJcbiAgc3RhcnRUaW1lcihtZ0RhdGE6IE1HRGF0YSwgc2Vjb25kczogbnVtYmVyLCBpc0lkbGVUaW1lcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHNlY29uZHMgPiAwKSB7XHJcbiAgICAgIC8vIFJDVGltZXIvTWdUaW1lciB3b3JrcyBvbiBtaWxsaXNlY29uZHMgc28gY29udmVydCBzZWNvbmRzIHRvIG1pbGxpc2Vjb25kc1xyXG4gICAgICBsZXQgb2JqUkNUaW1lcjogUkNUaW1lciA9IG5ldyBSQ1RpbWVyKG1nRGF0YSwgc2Vjb25kcyAqIDEwMDAsIGlzSWRsZVRpbWVyKTtcclxuICAgICAgKG9ialJDVGltZXIpLlN0YXJ0KCk7XHJcbiAgICAgIC8vIGZpeGVkIGJ1ZyAyODQ1NjYsIHdoaWxlIHdlIGhhdmUgY29tbWFuZCBpbiBoZSBxdWV1ZSwgZXhlY3V0ZSB0aGVtXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RvcCB0aGUgdGltZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiTWdEYXRhXCI+IE1nRGF0YTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+aW50ZXJ2YWwgaW4gZnVsbCBzZWNvbmRzIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gKGZyb20gY3VycmVudCB0aW1lKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0lkbGVUaW1lclwiPnRydWUgaWYgdGhpcyB0aW1lciBpcyB0aGUgaWRsZSB0aW1lcjwvcGFyYW0+XHJcbiAgc3RvcFRpbWVyKG1nRGF0YTogTUdEYXRhLCBzZWNvbmRzOiBudW1iZXIsIGlzSWRsZVRpbWVyOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoc2Vjb25kcyA+IDApXHJcbiAgICAvLyBSQ1RpbWVyL01nVGltZXIgd29ya3Mgb24gbWlsbGlzZWNvbmRzIHNvIGNvbnZlcnQgc2Vjb25kcyB0byBtaWxsaXNlY29uZHNcclxuICAgICAgUkNUaW1lci5TdG9wVGltZXIobWdEYXRhLCBzZWNvbmRzICogMTAwMCwgaXNJZGxlVGltZXIpO1xyXG4gIH1cclxuXHJcbiAgYWJvcnQoZm9ybTogTWdGb3JtKTogdm9pZDtcclxuICBhYm9ydCgpOiB2b2lkO1xyXG4gIGFib3J0KGZvcm0/OiBNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICB0aGlzLmFib3J0XzAoZm9ybSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuYWJvcnRfMSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIHByaXZhdGUgYWJvcnRfMChmb3JtOiBNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChmb3JtICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBtYWluUHJvZ0J5Q3RsSWR4OiBUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgoLTEsIGZvcm0uZ2V0VGFzaygpLmdldEN0bElkeCgpKTtcclxuICAgICAgTWFuYWdlci5BYm9ydChmb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwcm9jZXNzIEFCT1JUIGNvbW1hbmQuQ2xvc2UgYWxsIHNoZWxscy4gTGFzdCBzaGVsbCBjbG9zZWQsIHdpbGwgY2xvc2UgdGhlIGRpc3BsYXkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFib3J0XzEoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldFNpemUoKTsgaSA+IDA7IGktLSkge1xyXG4gICAgICBjb25zdCB0YXNrID0gIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRNR0RhdGEoaSAtIDEpLmdldEZpcnN0VGFzaygpO1xyXG4gICAgICBpZih0YXNrICE9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuYWJvcnQoPE1nRm9ybT50YXNrLkZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE9wZW4gbWVzc2FnZSBib3ggd2l0aCB0aXRsZSBzdHJpbmcgYW5kIG1lc3NhZ2Ugc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRpdGxlXCI+dGl0bGUgb2YgdGhlIG1lc3NhZ2UgYm94PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ1wiPm1lc3NhZ2UgZm9yIHRoZSBtZXNzYWdlIGJveDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBzdHlsZSBvZiB0aGUgbWVzc2FnZSBib3ggLS0tIGJ1dHRvbnMsIGljb248L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJ1dHRvbiBjbGlja2VkIDwvcmV0dXJucz5cclxuICBhc3luYyBNZXNzYWdlQm94KHRpdGxlOiBzdHJpbmcsIG1zZzogc3RyaW5nLCBzdHlsZTogbnVtYmVyKSA6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAvLyBTdG9wIHRoZSBzcGlubmVyIGJlZm9yZSBzaG93aW5nIHRoZSBtZXNhZ2UgYm94XHJcbiAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5DaGVja0FuZFNob3dTcGlubmVyKGZhbHNlKTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgQ29tbWFuZHMubWVzc2FnZUJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgT3BlbiBtZXNzYWdlIGJveCB3aXRoIHRpdGxlIGlkIGFuZCBtZXNzYWdlIGlkIHRoYXQgd2lsbCB0YWtlIGZyb20gTUdCQ0wqRU5HLnhtbCAoY3JlYXRlZCBieSBtZ2NvbnN0KVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZUlkXCI+bWVzc2FnZSBmcm9tIGZyb20gTUdCQ0wqRU5HLnhtbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dJZFwiPm1lc3NhZ2UgZnJvbSBmcm9tIE1HQkNMKkVORy54bWw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgc3R5bGUgb2YgdGhlIG1lc3NhZ2UgYm94IGNhbiBiZSBmbGFncyBvZiBTdHlsZXMuTVNHQk9YX3h4eCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbWVzc2FnZSBib3ggc3R5bGUgZnJvbSBTdHlsZXMuTVNHQk9YX1hYWDwvcmV0dXJucz5cclxuICBhc3luYyB3cml0ZVRvTWVzc2FnZUJveCh0aXRsZUlkOiBzdHJpbmcsIG1zZ0lkOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOlByb21pc2U8bnVtYmVyPiB7XHJcbiAgICBsZXQgdGl0bGU6IHN0cmluZyA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZS5nZXRDb25zdE1lc3NhZ2UodGl0bGVJZCk7XHJcbiAgICBsZXQgbXNnOiBzdHJpbmcgPSBMYW5ndWFnZURhdGEuSW5zdGFuY2UuZ2V0Q29uc3RNZXNzYWdlKG1zZ0lkKTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5NZXNzYWdlQm94KHRpdGxlLCBtc2csIHN0eWxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBkaXNwbGF5IGEgTWVzc2FnZSBCb3ggKGNvbmZpcm0pIHdpdGggMiBidXR0b25zIC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIG51bWJlciAoZnJvbSBNc2dJbnRlcmZhY2UuamF2YSkgdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbnRlbnQgb2YgdGhlIE1lc3NhZ2UgQm94IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBpY29uIGFuZCB0aGUgYnV0dG9uIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb25maXJtYXRpb24gYm94IDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYnV0dG9uIHRoYXQgd2FzIHByZXNzZWQgKFN0eWxlcy5NU0dCT1hfQlVUVE9OX3h4eCkgPC9yZXR1cm5zPlxyXG4gIGFzeW5jIGNvbmZpcm0obXNnSWQ6IHN0cmluZywgc3R5bGU6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPjtcclxuICBhc3luYyBjb25maXJtKG1zZ0lkOiBzdHJpbmcsIHN0eWxlPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53cml0ZVRvTWVzc2FnZUJveChNc2dJbnRlcmZhY2UuQ09ORklSTV9TVFJfV0lORE9XX1RJVExFLCBtc2dJZCwgc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRpc3BsYXkgYSBNZXNzYWdlIEJveCAoY29uZmlybSkgd2l0aCAyIGJ1dHRvbnMgOiB5ZXMgJiBubyBhbmQgaWNvbiBxdWVzdGlvbi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIG51bWJlciAoZnJvbSBNc2dJbnRlcmZhY2UuamF2YSkgdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbnRlbnQgb2YgdGhlIE1lc3NhZ2UgQm94XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgdGhlIGJ1dHRvbiBZRVMgd2FzIHByZXNzZWRcclxuICAvLy8gPC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgY29uZmlybV9ib29sKG1zZ0lkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZXRSZXN1bHQ6IG51bWJlciA9IGF3YWl0IHRoaXMuY29uZmlybShtc2dJZCwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0tfQ0FOQ0VMKTtcclxuICAgIHJldHVybiByZXRSZXN1bHQgPT0gPG51bWJlcj5TdHlsZXMuTVNHQk9YX1JFU1VMVF9PSztcclxuICB9XHJcbn1cclxuIl19
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR1VJTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvR1VJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUMsTUFBTSxPQUFPLFVBQVU7SUFLckIsTUFBTSxLQUFLLFFBQVE7UUFDakIsSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLElBQUk7WUFDL0IsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBTUQsbUJBQW1CO1FBQ2pCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBUUQsVUFBVSxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsV0FBb0I7UUFDOUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO1lBRWYsSUFBSSxVQUFVLEdBQVksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDM0UsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVyQixRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBUUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsV0FBb0I7UUFDN0QsSUFBSSxPQUFPLEdBQUcsQ0FBQztZQUViLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUlELEtBQUssQ0FBQyxJQUFhO1FBQ2pCLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBRW5CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBTU8sT0FBTyxDQUFDLElBQVk7UUFDMUIsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBS08sT0FBTztRQUNiLEtBQUssSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNELE1BQU0sSUFBSSxHQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2RSxJQUFHLElBQUksS0FBSyxJQUFJO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQVNELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBRXhELE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1RCxPQUFPLE1BQU0sUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFTRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ25FLElBQUksS0FBSyxHQUFXLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQUksR0FBRyxHQUFXLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9ELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQVNELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBYSxFQUFFLEtBQWM7UUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFRTSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDckMsSUFBSSxTQUFTLEdBQVcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNsRixPQUFPLFNBQVMsSUFBWSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDdEQsQ0FBQzs7QUE3SGMsb0JBQVMsR0FBZSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01zZ0ludGVyZmFjZX0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7Q29tbWFuZHMsIE1hbmFnZXIsIFN0eWxlc30gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSAnLi90YXNrcy9NR0RhdGEnO1xyXG5pbXBvcnQge1JDVGltZXJ9IGZyb20gJy4vdGFza3MvUkNUaW1lcic7XHJcbmltcG9ydCB7TWdGb3JtfSBmcm9tICcuL2d1aS9NZ0Zvcm0nO1xyXG5cclxuaW1wb3J0IHtMYW5ndWFnZURhdGF9IGZyb20gJy4vZW52L0xhbmd1YWdlRGF0YSc7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBHVUlNYW5hZ2VyIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEdVSU1hbmFnZXIgPSBudWxsOyAvLyB0aGUgc2luZ2xlIGluc3RhbmNlIG9mIHRoZSBHVUlNYW5hZ2VyXHJcblxyXG4gIC8vLyAgIHNpbmdsZXRvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBHVUlNYW5hZ2VyIHtcclxuICAgIGlmIChHVUlNYW5hZ2VyLl9pbnN0YW5jZSA9PT0gbnVsbClcclxuICAgICAgR1VJTWFuYWdlci5faW5zdGFuY2UgPSBuZXcgR1VJTWFuYWdlcigpO1xyXG4gICAgcmV0dXJuIEdVSU1hbmFnZXIuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIHRoZSBjb21tYW5kcyBpbiB0aGUgcXVldWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV4ZWNHdWlDb21tYW5kUXVldWUoKTogdm9pZCB7XHJcbiAgICBDb21tYW5kcy5iZWdpbkludm9rZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHN0YXJ0IGEgdGltZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdkXCI+IE1nRGF0YSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2Vjb25kc1wiPmludGVydmFsIGluIGZ1bGwgc2Vjb25kcyB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIChmcm9tIGN1cnJlbnQgdGltZSk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNJZGxlVGltZXJcIj50cnVlIGlmIHRoaXMgdGltZXIgaXMgdGhlIGlkbGUgdGltZXI8L3BhcmFtPlxyXG4gIHN0YXJ0VGltZXIobWdEYXRhOiBNR0RhdGEsIHNlY29uZHM6IG51bWJlciwgaXNJZGxlVGltZXI6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChzZWNvbmRzID4gMCkge1xyXG4gICAgICAvLyBSQ1RpbWVyL01nVGltZXIgd29ya3Mgb24gbWlsbGlzZWNvbmRzIHNvIGNvbnZlcnQgc2Vjb25kcyB0byBtaWxsaXNlY29uZHNcclxuICAgICAgbGV0IG9ialJDVGltZXI6IFJDVGltZXIgPSBuZXcgUkNUaW1lcihtZ0RhdGEsIHNlY29uZHMgKiAxMDAwLCBpc0lkbGVUaW1lcik7XHJcbiAgICAgIChvYmpSQ1RpbWVyKS5TdGFydCgpO1xyXG4gICAgICAvLyBmaXhlZCBidWcgMjg0NTY2LCB3aGlsZSB3ZSBoYXZlIGNvbW1hbmQgaW4gaGUgcXVldWUsIGV4ZWN1dGUgdGhlbVxyXG4gICAgICBDb21tYW5kcy5iZWdpbkludm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHN0b3AgdGhlIHRpbWVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIk1nRGF0YVwiPiBNZ0RhdGE8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2Vjb25kc1wiPmludGVydmFsIGluIGZ1bGwgc2Vjb25kcyB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIChmcm9tIGN1cnJlbnQgdGltZSk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNJZGxlVGltZXJcIj50cnVlIGlmIHRoaXMgdGltZXIgaXMgdGhlIGlkbGUgdGltZXI8L3BhcmFtPlxyXG4gIHN0b3BUaW1lcihtZ0RhdGE6IE1HRGF0YSwgc2Vjb25kczogbnVtYmVyLCBpc0lkbGVUaW1lcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHNlY29uZHMgPiAwKVxyXG4gICAgLy8gUkNUaW1lci9NZ1RpbWVyIHdvcmtzIG9uIG1pbGxpc2Vjb25kcyBzbyBjb252ZXJ0IHNlY29uZHMgdG8gbWlsbGlzZWNvbmRzXHJcbiAgICAgIFJDVGltZXIuU3RvcFRpbWVyKG1nRGF0YSwgc2Vjb25kcyAqIDEwMDAsIGlzSWRsZVRpbWVyKTtcclxuICB9XHJcblxyXG4gIGFib3J0KGZvcm06IE1nRm9ybSk6IHZvaWQ7XHJcbiAgYWJvcnQoKTogdm9pZDtcclxuICBhYm9ydChmb3JtPzogTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgdGhpcy5hYm9ydF8wKGZvcm0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmFib3J0XzEoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIGNsb3NlIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvcm1cIj4gPC9wYXJhbT5cclxuICBwcml2YXRlIGFib3J0XzAoZm9ybTogTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoZm9ybSAhPT0gbnVsbCkge1xyXG4gICAgICBNYW5hZ2VyLkFib3J0KGZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHByb2Nlc3MgQUJPUlQgY29tbWFuZC5DbG9zZSBhbGwgc2hlbGxzLiBMYXN0IHNoZWxsIGNsb3NlZCwgd2lsbCBjbG9zZSB0aGUgZGlzcGxheS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgYWJvcnRfMSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0U2l6ZSgpOyBpID4gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IHRhc2sgPSAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldE1HRGF0YShpIC0gMSkuZ2V0Rmlyc3RUYXNrKCk7XHJcbiAgICAgIGlmKHRhc2sgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5hYm9ydCg8TWdGb3JtPnRhc2suRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgT3BlbiBtZXNzYWdlIGJveCB3aXRoIHRpdGxlIHN0cmluZyBhbmQgbWVzc2FnZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGl0bGVcIj50aXRsZSBvZiB0aGUgbWVzc2FnZSBib3g8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnXCI+bWVzc2FnZSBmb3IgdGhlIG1lc3NhZ2UgYm94PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0eWxlXCI+dGhlIHN0eWxlIG9mIHRoZSBtZXNzYWdlIGJveCAtLS0gYnV0dG9ucywgaWNvbjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYnV0dG9uIGNsaWNrZWQgPC9yZXR1cm5zPlxyXG4gIGFzeW5jIE1lc3NhZ2VCb3godGl0bGU6IHN0cmluZywgbXNnOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpIDogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIC8vIFN0b3AgdGhlIHNwaW5uZXIgYmVmb3JlIHNob3dpbmcgdGhlIG1lc2FnZSBib3hcclxuICAgIGF3YWl0IEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLkNoZWNrQW5kU2hvd1NwaW5uZXIoZmFsc2UpO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBDb21tYW5kcy5tZXNzYWdlQm94KHRpdGxlLCBtc2csIHN0eWxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBPcGVuIG1lc3NhZ2UgYm94IHdpdGggdGl0bGUgaWQgYW5kIG1lc3NhZ2UgaWQgdGhhdCB3aWxsIHRha2UgZnJvbSBNR0JDTCpFTkcueG1sIChjcmVhdGVkIGJ5IG1nY29uc3QpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRpdGxlSWRcIj5tZXNzYWdlIGZyb20gZnJvbSBNR0JDTCpFTkcueG1sPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+bWVzc2FnZSBmcm9tIGZyb20gTUdCQ0wqRU5HLnhtbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBzdHlsZSBvZiB0aGUgbWVzc2FnZSBib3ggY2FuIGJlIGZsYWdzIG9mIFN0eWxlcy5NU0dCT1hfeHh4IDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBtZXNzYWdlIGJveCBzdHlsZSBmcm9tIFN0eWxlcy5NU0dCT1hfWFhYPC9yZXR1cm5zPlxyXG4gIGFzeW5jIHdyaXRlVG9NZXNzYWdlQm94KHRpdGxlSWQ6IHN0cmluZywgbXNnSWQ6IHN0cmluZywgc3R5bGU6IG51bWJlcik6UHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGxldCB0aXRsZTogc3RyaW5nID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLmdldENvbnN0TWVzc2FnZSh0aXRsZUlkKTtcclxuICAgIGxldCBtc2c6IHN0cmluZyA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZS5nZXRDb25zdE1lc3NhZ2UobXNnSWQpO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLk1lc3NhZ2VCb3godGl0bGUsIG1zZywgc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRpc3BsYXkgYSBNZXNzYWdlIEJveCAoY29uZmlybSkgd2l0aCAyIGJ1dHRvbnMgLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dJZFwiPm1lc3NhZ2UgbnVtYmVyIChmcm9tIE1zZ0ludGVyZmFjZS5qYXZhKSB0aGF0IHdpbGwgYmUgZGlzcGxheSBvbiB0aGUgY29udGVudCBvZiB0aGUgTWVzc2FnZSBCb3ggPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0eWxlXCI+dGhlIGljb24gYW5kIHRoZSBidXR0b24gdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbmZpcm1hdGlvbiBib3ggPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBidXR0b24gdGhhdCB3YXMgcHJlc3NlZCAoU3R5bGVzLk1TR0JPWF9CVVRUT05feHh4KSA8L3JldHVybnM+XHJcbiAgYXN5bmMgY29uZmlybShtc2dJZDogc3RyaW5nLCBzdHlsZTogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+O1xyXG4gIGFzeW5jIGNvbmZpcm0obXNnSWQ6IHN0cmluZywgc3R5bGU/OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLndyaXRlVG9NZXNzYWdlQm94KE1zZ0ludGVyZmFjZS5DT05GSVJNX1NUUl9XSU5ET1dfVElUTEUsIG1zZ0lkLCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZGlzcGxheSBhIE1lc3NhZ2UgQm94IChjb25maXJtKSB3aXRoIDIgYnV0dG9ucyA6IHllcyAmIG5vIGFuZCBpY29uIHF1ZXN0aW9uLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dJZFwiPm1lc3NhZ2UgbnVtYmVyIChmcm9tIE1zZ0ludGVyZmFjZS5qYXZhKSB0aGF0IHdpbGwgYmUgZGlzcGxheSBvbiB0aGUgY29udGVudCBvZiB0aGUgTWVzc2FnZSBCb3hcclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGUgYnV0dG9uIFlFUyB3YXMgcHJlc3NlZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHB1YmxpYyBhc3luYyBjb25maXJtX2Jvb2wobXNnSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IHJldFJlc3VsdDogbnVtYmVyID0gYXdhaXQgdGhpcy5jb25maXJtKG1zZ0lkLCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PS19DQU5DRUwpO1xyXG4gICAgcmV0dXJuIHJldFJlc3VsdCA9PSA8bnVtYmVyPlN0eWxlcy5NU0dCT1hfUkVTVUxUX09LO1xyXG4gIH1cclxufVxyXG4iXX0=
|