@magic-xpa/engine 4.801.0-dev481.305 → 4.801.0-dev481.308

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.
Files changed (62) hide show
  1. package/esm2020/src/ClientManager.mjs +2 -11
  2. package/esm2020/src/CommandsTable.mjs +12 -13
  3. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  4. package/esm2020/src/GUIManager.mjs +1 -2
  5. package/esm2020/src/GuiEventsProcessor.mjs +2 -19
  6. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +35 -35
  7. package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +1 -1
  8. package/esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +7 -7
  9. package/esm2020/src/commands/ClientToServer/QueryCommand.mjs +1 -1
  10. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +2 -2
  11. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +1 -1
  12. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +1 -1
  13. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +1 -2
  14. package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +5 -5
  15. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +1 -3
  16. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +1 -1
  17. package/esm2020/src/data/DataSourceIdKey.mjs +1 -9
  18. package/esm2020/src/data/DataView.mjs +52 -54
  19. package/esm2020/src/data/DvCache.mjs +4 -29
  20. package/esm2020/src/env/Environment.mjs +2 -5
  21. package/esm2020/src/env/LanguageData.mjs +1 -2
  22. package/esm2020/src/event/ActionManager.mjs +2 -5
  23. package/esm2020/src/event/Event.mjs +249 -355
  24. package/esm2020/src/event/EventHandler.mjs +1 -2
  25. package/esm2020/src/event/EventHandlerPosition.mjs +1 -2
  26. package/esm2020/src/event/EventsManager.mjs +24 -44
  27. package/esm2020/src/exp/ExpressionEvaluator.mjs +1 -6
  28. package/esm2020/src/gui/MgControl.mjs +1 -3
  29. package/esm2020/src/gui/MgForm.mjs +1 -2
  30. package/esm2020/src/http/client/HttpClientBase.mjs +1 -17
  31. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +1 -10
  32. package/esm2020/src/rt/DataviewHeaders.mjs +2 -6
  33. package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +1 -2
  34. package/esm2020/src/rt/LastFocusedManager.mjs +1 -5
  35. package/esm2020/src/rt/Operation.mjs +2 -12
  36. package/esm2020/src/tasks/Task.mjs +3 -17
  37. package/esm2020/src/util/FlowMonitorQueue.mjs +1 -14
  38. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +1 -3
  39. package/fesm2015/magic-xpa-engine.mjs +519 -800
  40. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  41. package/fesm2020/magic-xpa-engine.mjs +512 -790
  42. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  43. package/package.json +4 -4
  44. package/src/ClientManager.d.ts +0 -3
  45. package/src/CommandsTable.d.ts +5 -5
  46. package/src/GuiEventsProcessor.d.ts +0 -2
  47. package/src/commands/ClientToServer/CommandFactory.d.ts +35 -35
  48. package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +2 -2
  49. package/src/commands/ServerToClient/ResetLocateCommand.d.ts +2 -2
  50. package/src/commands/ServerToClient/VerifyCommand.d.ts +0 -1
  51. package/src/data/DataSourceIdKey.d.ts +0 -5
  52. package/src/data/DataView.d.ts +0 -1
  53. package/src/data/DvCache.d.ts +2 -6
  54. package/src/env/Environment.d.ts +0 -2
  55. package/src/event/ActionManager.d.ts +1 -3
  56. package/src/event/Event.d.ts +5 -22
  57. package/src/event/EventsManager.d.ts +1 -5
  58. package/src/http/client/HttpClientBase.d.ts +0 -2
  59. package/src/remote/RemoteCommandsProcessor.d.ts +0 -4
  60. package/src/rt/DataviewHeaders.d.ts +1 -3
  61. package/src/rt/Operation.d.ts +0 -4
  62. package/src/util/FlowMonitorQueue.d.ts +0 -11
@@ -1,17 +1,14 @@
1
- import { ApplicationException, Char, Exception, HashUtils, Int32, NNumber, NString, NumberStyles, RefParam, StringBuilder } from "@magic-xpa/mscorelib";
2
- import { Base64, ForceExit, InternalInterface, Logger, Misc, StorageAttribute, StrUtil, XMLConstants, XmlParser } from "@magic-xpa/utils";
3
- import { BlobType, DisplayConvertor, KeyboardItem, Modifiers, PIC, RecordUtils, TaskDefinitionIdTableSaxHandler } from "@magic-xpa/gui";
4
- import { ConstInterface } from "../ConstInterface";
5
- import { LastFocusedManager } from "../rt/LastFocusedManager";
6
- import { AccessHelper } from "../AccessHelper";
1
+ import { ApplicationException, Char, HashUtils, Int32, NNumber, NString, NumberStyles, RefParam, StringBuilder } from '@magic-xpa/mscorelib';
2
+ import { Base64, ForceExit, InternalInterface, Logger, Misc, StorageAttribute, StrUtil, XMLConstants, XmlParser } from '@magic-xpa/utils';
3
+ import { DisplayConvertor, KeyboardItem, Modifiers, RecordUtils, TaskDefinitionIdTableSaxHandler } from '@magic-xpa/gui';
4
+ import { ConstInterface } from '../ConstInterface';
5
+ import { LastFocusedManager } from '../rt/LastFocusedManager';
6
+ import { AccessHelper } from '../AccessHelper';
7
7
  export class Event {
8
8
  constructor() {
9
9
  this.Exp = null;
10
10
  this._forceExit = ForceExit.None;
11
11
  this.kbdItm = null;
12
- this._osCommandShow = 0;
13
- this._osCommandText = null;
14
- this._osCommandWait = false;
15
12
  this._paramAttrs = null;
16
13
  this._paramNulls = null;
17
14
  this._paramVals = null;
@@ -22,11 +19,9 @@ export class Event {
22
19
  this._type = Char.MinValue;
23
20
  this._userDefinedFuncName = null;
24
21
  this._userDefinedFuncNameHashCode = 0;
25
- this._userEvtDesc = "";
22
+ this._userEvtDesc = '';
26
23
  this._userEvtIdx = Int32.MinValue;
27
- this.ownerTaskDefinitionId = null;
28
24
  this.InternalEvent = 0;
29
- this.PrgDescription = null;
30
25
  this.PublicName = null;
31
26
  this.UserEvt = null;
32
27
  this.UserEvtTaskTag = null;
@@ -67,7 +62,7 @@ export class Event {
67
62
  this.InitUserData(taskRef, userValue);
68
63
  }
69
64
  else
70
- Logger.Instance.WriteExceptionToLogWithMsg("in Event.FillData() out of string bounds");
65
+ Logger.Instance.WriteExceptionToLogWithMsg('in Event.FillData() out of string bounds');
71
66
  }
72
67
  InitInnerObjects(xmlParser) {
73
68
  let nextTag = xmlParser.getNextTag();
@@ -143,7 +138,7 @@ export class Event {
143
138
  case ConstInterface.MG_TAG_USR_DEF_FUC_RET_EXP_ATTR:
144
139
  break;
145
140
  default:
146
- Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("There is no such tag in Event class. Insert case to Event.initElements for {0}", attribute));
141
+ Logger.Instance.WriteExceptionToLogWithMsg(NString.Format('There is no such tag in Event class. Insert case to Event.initElements for {0}', attribute));
147
142
  break;
148
143
  }
149
144
  }
@@ -151,7 +146,7 @@ export class Event {
151
146
  this.kbdItm = new KeyboardItem(keyCode, modifier);
152
147
  }
153
148
  InitUserData(taskRef, userValue) {
154
- let comma = userValue.indexOf(",");
149
+ let comma = userValue.indexOf(',');
155
150
  if (comma > -1) {
156
151
  let ueTaskId = userValue.substr(0, comma);
157
152
  if (taskRef !== null)
@@ -161,8 +156,8 @@ export class Event {
161
156
  if (ueTask !== null) {
162
157
  this.UserEvt = ueTask.getUserEvent(ueIdx);
163
158
  if (this.UserEvt === null) {
164
- throw new ApplicationException("in Event.fillData(): user event not found. task id = " + ueTaskId +
165
- ", user event index = " + ueIdx);
159
+ throw new ApplicationException('in Event.fillData(): user event not found. task id = ' + ueTaskId +
160
+ ', user event index = ' + ueIdx);
166
161
  }
167
162
  this.UserEvtTaskTag = ueTaskId;
168
163
  this._userEvtIdx = ueIdx;
@@ -179,7 +174,6 @@ export class Event {
179
174
  handler.parse(xmlBuffer);
180
175
  }
181
176
  SetTaskDefinitionId(taskDefinitionId) {
182
- this.ownerTaskDefinitionId = taskDefinitionId;
183
177
  }
184
178
  findUserEvent() {
185
179
  if (this._type === ConstInterface.EVENT_TYPE_USER && this.UserEvt === null) {
@@ -187,7 +181,7 @@ export class Event {
187
181
  if (ueTask !== null)
188
182
  this.UserEvt = ueTask.getUserEvent(this._userEvtIdx);
189
183
  if (this.UserEvt === null)
190
- throw new ApplicationException(NString.Format("in Event.findUserEvent(): user event not found. task id = {0} doesn't exist", this.UserEvtTaskTag));
184
+ throw new ApplicationException(NString.Format('in Event.findUserEvent(): user event not found. task id = {0} doesn\'t exist', this.UserEvtTaskTag));
191
185
  }
192
186
  }
193
187
  equals(evt) {
@@ -321,7 +315,7 @@ export class Event {
321
315
  return this.getBrkLevel(false);
322
316
  }
323
317
  getBrkLevel_1(flowMonitor) {
324
- let level = "";
318
+ let level = '';
325
319
  switch (this._type) {
326
320
  case ConstInterface.EVENT_TYPE_INTERNAL:
327
321
  switch (this.InternalEvent) {
@@ -366,7 +360,7 @@ export class Event {
366
360
  level = flowMonitor ? ConstInterface.BRK_LEVEL_HANDLER_EXPRESSION_FM : ConstInterface.BRK_LEVEL_HANDLER_EXPRESSION + '_' + this.Exp.getId();
367
361
  break;
368
362
  case ConstInterface.EVENT_TYPE_USER:
369
- level = (flowMonitor ? (ConstInterface.BRK_LEVEL_HANDLER_USER_FM + ": ") : (ConstInterface.BRK_LEVEL_HANDLER_USER + '_')) + (this.UserEvt != null ? this.UserEvt._userEvtDesc : this._userEvtDesc);
363
+ level = (flowMonitor ? (ConstInterface.BRK_LEVEL_HANDLER_USER_FM + ': ') : (ConstInterface.BRK_LEVEL_HANDLER_USER + '_')) + (this.UserEvt != null ? this.UserEvt._userEvtDesc : this._userEvtDesc);
370
364
  break;
371
365
  case ConstInterface.EVENT_TYPE_USER_FUNC:
372
366
  level = (flowMonitor ? (ConstInterface.BRK_LEVEL_USER_FUNCTION_FM + ':') : (ConstInterface.BRK_LEVEL_USER_FUNCTION + '_')) + this._userDefinedFuncName;
@@ -378,580 +372,580 @@ export class Event {
378
372
  let description;
379
373
  switch (internalEventCode) {
380
374
  case InternalInterface.MG_ACT_ABOUT:
381
- description = "About Magic";
375
+ description = 'About Magic';
382
376
  break;
383
377
  case InternalInterface.MG_ACT_ACTION_LIST:
384
- description = "Action List";
378
+ description = 'Action List';
385
379
  break;
386
380
  case InternalInterface.MG_ACT_ADD_HYPERLINK:
387
- description = "";
381
+ description = '';
388
382
  break;
389
383
  case InternalInterface.MG_ACT_ALIGN_LEFT:
390
- description = "Left";
384
+ description = 'Left';
391
385
  break;
392
386
  case InternalInterface.MG_ACT_ALIGN_RIGHT:
393
- description = "Right";
387
+ description = 'Right';
394
388
  break;
395
389
  case InternalInterface.MG_ACT_APPL_PROPERTIES:
396
- description = "";
390
+ description = '';
397
391
  break;
398
392
  case InternalInterface.MG_ACT_APPLICATIONS:
399
- description = "Applications";
393
+ description = 'Applications';
400
394
  break;
401
395
  case InternalInterface.MG_ACT_APPLICATIONS_LIST:
402
- description = "Applications List";
396
+ description = 'Applications List';
403
397
  break;
404
398
  case InternalInterface.MG_ACT_ATTACH_TO_TABLE:
405
- description = "Attach to Table";
399
+ description = 'Attach to Table';
406
400
  break;
407
401
  case InternalInterface.MG_ACT_AUTHORIZE:
408
- description = "Authorize";
402
+ description = 'Authorize';
409
403
  break;
410
404
  case InternalInterface.MG_ACT_EDT_BEGFLD:
411
- description = "Begin Field";
405
+ description = 'Begin Field';
412
406
  break;
413
407
  case InternalInterface.MG_ACT_EDT_BEGFORM:
414
- description = "Begin Form";
408
+ description = 'Begin Form';
415
409
  break;
416
410
  case InternalInterface.MG_ACT_EDT_BEGLINE:
417
- description = "Begin Line";
411
+ description = 'Begin Line';
418
412
  break;
419
413
  case InternalInterface.MG_ACT_EDT_BEGNXTLINE:
420
- description = "Begin Next Line";
414
+ description = 'Begin Next Line';
421
415
  break;
422
416
  case InternalInterface.MG_ACT_EDT_BEGPAGE:
423
- description = "Begin Page";
417
+ description = 'Begin Page';
424
418
  break;
425
419
  case InternalInterface.MG_ACT_TBL_BEGLINE:
426
- description = "Begin Row";
420
+ description = 'Begin Row';
427
421
  break;
428
422
  case InternalInterface.MG_ACT_TBL_BEGPAGE:
429
- description = "Begin Screen";
423
+ description = 'Begin Screen';
430
424
  break;
431
425
  case InternalInterface.MG_ACT_TBL_BEGTBL:
432
- description = "Begin table";
426
+ description = 'Begin table';
433
427
  break;
434
428
  case InternalInterface.MG_ACT_BOTTOM:
435
- description = "Bottom";
429
+ description = 'Bottom';
436
430
  break;
437
431
  case InternalInterface.MG_ACT_BULLET:
438
- description = "Bullet";
432
+ description = 'Bullet';
439
433
  break;
440
434
  case InternalInterface.MG_ACT_BUTTON:
441
- description = "Button Press";
435
+ description = 'Button Press';
442
436
  break;
443
437
  case InternalInterface.MG_ACT_CANCEL:
444
- description = "Cancel";
438
+ description = 'Cancel';
445
439
  break;
446
440
  case InternalInterface.MG_ACT_RT_QUIT:
447
- description = "Quit";
441
+ description = 'Quit';
448
442
  break;
449
443
  case InternalInterface.MG_ACT_CENTER:
450
- description = "Center";
444
+ description = 'Center';
451
445
  break;
452
446
  case InternalInterface.MG_ACT_CHECK_SYNTAX:
453
- description = "Check Syntax";
447
+ description = 'Check Syntax';
454
448
  break;
455
449
  case InternalInterface.MG_ACT_CHECK_TO_END:
456
- description = "Check to End";
450
+ description = 'Check to End';
457
451
  break;
458
452
  case InternalInterface.MG_ACT_CLEAR_TEMPLATE:
459
- description = "Clear Template";
453
+ description = 'Clear Template';
460
454
  break;
461
455
  case InternalInterface.MG_ACT_CLEAR_VALUE:
462
- description = "Clear Value";
456
+ description = 'Clear Value';
463
457
  break;
464
458
  case InternalInterface.MG_ACT_CLOSE:
465
- description = "Close";
459
+ description = 'Close';
466
460
  break;
467
461
  case InternalInterface.MG_ACT_ACT_CLOSE_APPL:
468
- description = "Close Application";
462
+ description = 'Close Application';
469
463
  break;
470
464
  case InternalInterface.MG_ACT_COMMUNICATIONS:
471
- description = "Communications";
465
+ description = 'Communications';
472
466
  break;
473
467
  case InternalInterface.MG_ACT_COMPONENTS:
474
- description = "Components";
468
+ description = 'Components';
475
469
  break;
476
470
  case InternalInterface.MG_ACT_CTRL_HIT:
477
- description = "Control Hit";
471
+ description = 'Control Hit';
478
472
  break;
479
473
  case InternalInterface.MG_ACT_CONTROL_NAME_LIST:
480
- description = "Control Name List";
474
+ description = 'Control Name List';
481
475
  break;
482
476
  case InternalInterface.MG_ACT_CLIP_COPY:
483
- description = "Copy";
477
+ description = 'Copy';
484
478
  break;
485
479
  case InternalInterface.MG_ACT_COPY_LAYOUT:
486
- description = "Copy Layout";
480
+ description = 'Copy Layout';
487
481
  break;
488
482
  case InternalInterface.MG_ACT_COPY_SUBTREE:
489
- description = "Copy Subtree";
483
+ description = 'Copy Subtree';
490
484
  break;
491
485
  case InternalInterface.MG_ACT_CRELINE:
492
- description = "Create Line";
486
+ description = 'Create Line';
493
487
  break;
494
488
  case InternalInterface.MG_ACT_CRELINE_ABOVE:
495
- description = "Create Line Above";
489
+ description = 'Create Line Above';
496
490
  break;
497
491
  case InternalInterface.MG_ACT_CREATE_PARENT:
498
- description = "Create Parent";
492
+ description = 'Create Parent';
499
493
  break;
500
494
  case InternalInterface.MG_ACT_RTO_CREATE:
501
- description = "Create Records";
495
+ description = 'Create Records';
502
496
  break;
503
497
  case InternalInterface.MG_ACT_CREATE_SUBTASK:
504
- description = "Create Subtask";
498
+ description = 'Create Subtask';
505
499
  break;
506
500
  case InternalInterface.MG_ACT_CROSS_REFERENCE:
507
- description = "Cross Reference";
501
+ description = 'Cross Reference';
508
502
  break;
509
503
  case InternalInterface.MG_ACT_CUT:
510
- description = "Cut";
504
+ description = 'Cut';
511
505
  break;
512
506
  case InternalInterface.MG_ACT_DB_TABLES:
513
- description = "";
507
+ description = '';
514
508
  break;
515
509
  case InternalInterface.MG_ACT_DBMS:
516
- description = "DBMS";
510
+ description = 'DBMS';
517
511
  break;
518
512
  case InternalInterface.MG_ACT_DDF_MAKE:
519
- description = "DDF Make";
513
+ description = 'DDF Make';
520
514
  break;
521
515
  case InternalInterface.MG_ACT_DATABASES:
522
- description = "Databases";
516
+ description = 'Databases';
523
517
  break;
524
518
  case InternalInterface.MG_ACT_DEFAULT_LAYOUT:
525
- description = "Default Layout";
519
+ description = 'Default Layout';
526
520
  break;
527
521
  case InternalInterface.MG_ACT_DEFINE_EXPRESSION:
528
- description = "Define Expression";
522
+ description = 'Define Expression';
529
523
  break;
530
524
  case InternalInterface.MG_ACT_EDT_DELCURCH:
531
- description = "Current Char";
525
+ description = 'Current Char';
532
526
  break;
533
527
  case InternalInterface.MG_ACT_EDT_DELPRVCH:
534
- description = "Previous Char";
528
+ description = 'Previous Char';
535
529
  break;
536
530
  case InternalInterface.MG_ACT_DELETE_HYPERLINK:
537
- description = "Delete Hyperlink";
531
+ description = 'Delete Hyperlink';
538
532
  break;
539
533
  case InternalInterface.MG_ACT_DELLINE:
540
- description = "Delete Line";
534
+ description = 'Delete Line';
541
535
  break;
542
536
  case InternalInterface.MG_ACT_DELETE_SUBTREE:
543
- description = "Delete Subtree";
537
+ description = 'Delete Subtree';
544
538
  break;
545
539
  case InternalInterface.MG_ACT_RT_COPYFLD:
546
- description = "Ditto";
540
+ description = 'Ditto';
547
541
  break;
548
542
  case InternalInterface.MG_ACT_DISPLAY_REFRESH:
549
- description = "Display Refresh";
543
+ description = 'Display Refresh';
550
544
  break;
551
545
  case InternalInterface.MG_ACT_EDIT_MAIN_FORM:
552
- description = "Edit Main Form";
546
+ description = 'Edit Main Form';
553
547
  break;
554
548
  case InternalInterface.MG_ACT_EDT_ENDFLD:
555
- description = "End Field";
549
+ description = 'End Field';
556
550
  break;
557
551
  case InternalInterface.MG_ACT_EDT_ENDFORM:
558
- description = "End Form";
552
+ description = 'End Form';
559
553
  break;
560
554
  case InternalInterface.MG_ACT_EDT_ENDLINE:
561
- description = "End Line";
555
+ description = 'End Line';
562
556
  break;
563
557
  case InternalInterface.MG_ACT_EDT_ENDPAGE:
564
- description = "End Page";
558
+ description = 'End Page';
565
559
  break;
566
560
  case InternalInterface.MG_ACT_TBL_ENDLINE:
567
- description = "End Row";
561
+ description = 'End Row';
568
562
  break;
569
563
  case InternalInterface.MG_ACT_TBL_ENDPAGE:
570
- description = "End Screen";
564
+ description = 'End Screen';
571
565
  break;
572
566
  case InternalInterface.MG_ACT_TBL_ENDTBL:
573
- description = "End Table";
567
+ description = 'End Table';
574
568
  break;
575
569
  case InternalInterface.MG_ACT_ENVIRONMENT:
576
- description = "Environment";
570
+ description = 'Environment';
577
571
  break;
578
572
  case InternalInterface.MG_ACT_EXECUTE_PROGRAM:
579
- description = "Execute Program";
573
+ description = 'Execute Program';
580
574
  break;
581
575
  case InternalInterface.MG_ACT_EXECUTE_REPORT:
582
- description = "Execute Report";
576
+ description = 'Execute Report';
583
577
  break;
584
578
  case InternalInterface.MG_ACT_EXIT:
585
- description = "Exit";
579
+ description = 'Exit';
586
580
  break;
587
581
  case InternalInterface.MG_ACT_EXIT_SYSTEM:
588
- description = "Exit System";
582
+ description = 'Exit System';
589
583
  break;
590
584
  case InternalInterface.MG_ACT_EXPORT_IMPORT:
591
- description = "Export/Import";
585
+ description = 'Export/Import';
592
586
  break;
593
587
  case InternalInterface.MG_ACT_EXPRESSION_RULES:
594
- description = "Expression rules";
588
+ description = 'Expression rules';
595
589
  break;
596
590
  case InternalInterface.MG_ACT_EXTERNAL_EDITOR:
597
- description = "External Editor";
591
+ description = 'External Editor';
598
592
  break;
599
593
  case InternalInterface.MG_ACT_EXT_EVENT:
600
- description = "External Event";
594
+ description = 'External Event';
601
595
  break;
602
596
  case InternalInterface.MG_ACT_FORMS:
603
- description = "Forms";
597
+ description = 'Forms';
604
598
  break;
605
599
  case InternalInterface.MG_ACT_FROM_VALUE:
606
- description = "From Value";
600
+ description = 'From Value';
607
601
  break;
608
602
  case InternalInterface.MG_ACT_FUNCTION_LIST:
609
- description = "Function List";
603
+ description = 'Function List';
610
604
  break;
611
605
  case InternalInterface.MG_ACT_GENERATE_FORM:
612
- description = "Generate Form";
606
+ description = 'Generate Form';
613
607
  break;
614
608
  case InternalInterface.MG_ACT_GENERATE_PROGRAM:
615
- description = "Generate Program";
609
+ description = 'Generate Program';
616
610
  break;
617
611
  case InternalInterface.MG_ACT_GO_TO_TOP:
618
- description = "Go to Top";
612
+ description = 'Go to Top';
619
613
  break;
620
614
  case InternalInterface.MG_ACT_H_CENTER_OF_FORM:
621
- description = "";
615
+ description = '';
622
616
  break;
623
617
  case InternalInterface.MG_ACT_HTML_STYLES:
624
- description = "HTML Styles";
618
+ description = 'HTML Styles';
625
619
  break;
626
620
  case InternalInterface.MG_ACT_HELP:
627
- description = "Help";
621
+ description = 'Help';
628
622
  break;
629
623
  case InternalInterface.MG_ACT_HELP_SCREENS:
630
- description = "Help Screens";
624
+ description = 'Help Screens';
631
625
  break;
632
626
  case InternalInterface.MG_ACT_HORIZ_CENTER:
633
- description = "Horiz. Center";
627
+ description = 'Horiz. Center';
634
628
  break;
635
629
  case InternalInterface.MG_ACT_I_O_FILES:
636
- description = "Tables";
630
+ description = 'Tables';
637
631
  break;
638
632
  case InternalInterface.MG_ACT_INDENT:
639
- description = "Indent";
633
+ description = 'Indent';
640
634
  break;
641
635
  case InternalInterface.MG_ACT_INSERT_OBJECT:
642
- description = "Insert Object";
636
+ description = 'Insert Object';
643
637
  break;
644
638
  case InternalInterface.MG_ACT_JUMP_TO_ROW:
645
- description = "Jump to Row";
639
+ description = 'Jump to Row';
646
640
  break;
647
641
  case InternalInterface.MG_ACT_KEYBOARD_LIST:
648
- description = "Keyboard List";
642
+ description = 'Keyboard List';
649
643
  break;
650
644
  case InternalInterface.MG_ACT_KEYBOARD_MAPPING:
651
- description = "Keyboard Mapping";
645
+ description = 'Keyboard Mapping';
652
646
  break;
653
647
  case InternalInterface.MG_ACT_LANGUAGES:
654
- description = "languages";
648
+ description = 'languages';
655
649
  break;
656
650
  case InternalInterface.MG_ACT_RTO_SEARCH:
657
- description = "Locate Next";
651
+ description = 'Locate Next';
658
652
  break;
659
653
  case InternalInterface.MG_ACT_RTO_LOCATE:
660
- description = "Locate a Record";
654
+ description = 'Locate a Record';
661
655
  break;
662
656
  case InternalInterface.MG_ACT_LOGICALPNAMES:
663
- description = "";
657
+ description = '';
664
658
  break;
665
659
  case InternalInterface.MG_ACT_LOGON:
666
- description = "Logon";
660
+ description = 'Logon';
667
661
  break;
668
662
  case InternalInterface.MG_ACT_USING_HELP:
669
- description = "Help Topics";
663
+ description = 'Help Topics';
670
664
  break;
671
665
  case InternalInterface.MG_ACT_EDT_MARKNXTCH:
672
- description = "Mark Next Char";
666
+ description = 'Mark Next Char';
673
667
  break;
674
668
  case InternalInterface.MG_ACT_MARK_NEXT_LINE:
675
- description = "Mark Next Line MLE";
669
+ description = 'Mark Next Line MLE';
676
670
  break;
677
671
  case InternalInterface.MG_ACT_EDT_MARKPRVCH:
678
- description = "Mark Previous Char";
672
+ description = 'Mark Previous Char';
679
673
  break;
680
674
  case InternalInterface.MG_ACT_EDT_MARKPRVLINE:
681
- description = "Mark Previous Line MLE";
675
+ description = 'Mark Previous Line MLE';
682
676
  break;
683
677
  case InternalInterface.MG_ACT_MARK_SUBTREE:
684
- description = "";
678
+ description = '';
685
679
  break;
686
680
  case InternalInterface.MG_ACT_EDT_MARKTOBEG:
687
- description = "Mark To Beginning";
681
+ description = 'Mark To Beginning';
688
682
  break;
689
683
  case InternalInterface.MG_ACT_EDT_MARKTOEND:
690
- description = "Mark To End";
684
+ description = 'Mark To End';
691
685
  break;
692
686
  case InternalInterface.MG_ACT_MAXIMUM_HEIGHT:
693
- description = "Maximum Height";
687
+ description = 'Maximum Height';
694
688
  break;
695
689
  case InternalInterface.MG_ACT_MAXIMUM_WIDTH:
696
- description = "Maximum Width";
690
+ description = 'Maximum Width';
697
691
  break;
698
692
  case InternalInterface.MG_ACT_MENU_BAR:
699
- description = "Menu Bar";
693
+ description = 'Menu Bar';
700
694
  break;
701
695
  case InternalInterface.MG_ACT_MENUS:
702
- description = "";
696
+ description = '';
703
697
  break;
704
698
  case InternalInterface.MG_ACT_MINIMUM_HEIGHT:
705
- description = "Minimum Height";
699
+ description = 'Minimum Height';
706
700
  break;
707
701
  case InternalInterface.MG_ACT_MINIMUM_WIDTH:
708
- description = "Minimum Width";
702
+ description = 'Minimum Width';
709
703
  break;
710
704
  case InternalInterface.MG_ACT_RTO_MODIFY:
711
- description = "Modify Records";
705
+ description = 'Modify Records';
712
706
  break;
713
707
  case InternalInterface.MG_ACT_MONITOR_DEBUGGER:
714
- description = "Monitor/Debugger";
708
+ description = 'Monitor/Debugger';
715
709
  break;
716
710
  case InternalInterface.MG_ACT_MOVE_ENTRY:
717
- description = "Move Entry";
711
+ description = 'Move Entry';
718
712
  break;
719
713
  case InternalInterface.MG_ACT_MOVE_SUBTREE:
720
- description = "Move Subtree";
714
+ description = 'Move Subtree';
721
715
  break;
722
716
  case InternalInterface.MG_ACT_NULL_SETTINGS:
723
- description = "NULL Settings";
717
+ description = 'NULL Settings';
724
718
  break;
725
719
  case InternalInterface.MG_ACT_EDT_NXTCHAR:
726
- description = "Next Char";
720
+ description = 'Next Char';
727
721
  break;
728
722
  case InternalInterface.MG_ACT_EDT_NXTLINE:
729
- description = "Next Line";
723
+ description = 'Next Line';
730
724
  break;
731
725
  case InternalInterface.MG_ACT_EDT_NXTPAGE:
732
- description = "Next Page";
726
+ description = 'Next Page';
733
727
  break;
734
728
  case InternalInterface.MG_ACT_TBL_NXTLINE:
735
- description = "Next Row";
729
+ description = 'Next Row';
736
730
  break;
737
731
  case InternalInterface.MG_ACT_TBL_NXTPAGE:
738
- description = "Next Screen";
732
+ description = 'Next Screen';
739
733
  break;
740
734
  case InternalInterface.MG_ACT_EDT_NXTTAB:
741
- description = "Next Tab";
735
+ description = 'Next Tab';
742
736
  break;
743
737
  case InternalInterface.MG_ACT_EDT_NXTWORD:
744
- description = "Next Word";
738
+ description = 'Next Word';
745
739
  break;
746
740
  case InternalInterface.MG_ACT_NORMAL:
747
- description = "Normal";
741
+ description = 'Normal';
748
742
  break;
749
743
  case InternalInterface.MG_ACT_OK:
750
- description = "OK";
744
+ description = 'OK';
751
745
  break;
752
746
  case InternalInterface.MG_ACT_OLE2:
753
- description = "OLE2";
747
+ description = 'OLE2';
754
748
  break;
755
749
  case InternalInterface.MG_ACT_OPEN_APPLICATION:
756
- description = "Open Application";
750
+ description = 'Open Application';
757
751
  break;
758
752
  case InternalInterface.MG_ACT_OVERWRITE_ENTRY:
759
- description = "Overwrite Entry";
753
+ description = 'Overwrite Entry';
760
754
  break;
761
755
  case InternalInterface.MG_ACT_OVERWRITE_SUBTREE:
762
- description = "Overwrite Subtree";
756
+ description = 'Overwrite Subtree';
763
757
  break;
764
758
  case InternalInterface.MG_ACT_PPD:
765
- description = "PPD";
759
+ description = 'PPD';
766
760
  break;
767
761
  case InternalInterface.MG_ACT_PAGE_FOOTER:
768
- description = "Page Footer";
762
+ description = 'Page Footer';
769
763
  break;
770
764
  case InternalInterface.MG_ACT_PAGE_HEADER:
771
- description = "Page Header";
765
+ description = 'Page Header';
772
766
  break;
773
767
  case InternalInterface.MG_ACT_CLIP_PASTE:
774
- description = "Paste";
768
+ description = 'Paste';
775
769
  break;
776
770
  case InternalInterface.MG_ACT_PASTE_LINK:
777
- description = "Paste Link";
771
+ description = 'Paste Link';
778
772
  break;
779
773
  case InternalInterface.MG_ACT_PASTE_SUBTREE:
780
- description = "Paste Subtree";
774
+ description = 'Paste Subtree';
781
775
  break;
782
776
  case InternalInterface.MG_ACT_EDT_PRVCHAR:
783
- description = "Previous Char";
777
+ description = 'Previous Char';
784
778
  break;
785
779
  case InternalInterface.MG_ACT_EDT_PRVLINE:
786
- description = "Previous Line";
780
+ description = 'Previous Line';
787
781
  break;
788
782
  case InternalInterface.MG_ACT_EDT_PRVPAGE:
789
- description = "Previous Page";
783
+ description = 'Previous Page';
790
784
  break;
791
785
  case InternalInterface.MG_ACT_TBL_PRVLINE:
792
- description = "Previous Row";
786
+ description = 'Previous Row';
793
787
  break;
794
788
  case InternalInterface.MG_ACT_TBL_PRVPAGE:
795
- description = "Previous Screen";
789
+ description = 'Previous Screen';
796
790
  break;
797
791
  case InternalInterface.MG_ACT_EDT_PRVTAB:
798
- description = "Previous Tab";
792
+ description = 'Previous Tab';
799
793
  break;
800
794
  case InternalInterface.MG_ACT_EDT_PRVWORD:
801
- description = "Previous Word";
795
+ description = 'Previous Word';
802
796
  break;
803
797
  case InternalInterface.MG_ACT_PRINT_ATTRIBUTES:
804
- description = "Print Attributes";
798
+ description = 'Print Attributes';
805
799
  break;
806
800
  case InternalInterface.MG_ACT_PRINTER_SETUP:
807
- description = "Printer Setup";
801
+ description = 'Printer Setup';
808
802
  break;
809
803
  case InternalInterface.MG_ACT_PRINTERS:
810
- description = "Printers";
804
+ description = 'Printers';
811
805
  break;
812
806
  case InternalInterface.MG_ACT_PROGRAMS:
813
- description = "Programs";
807
+ description = 'Programs';
814
808
  break;
815
809
  case InternalInterface.MG_ACT_PROPERTIES:
816
- description = "Properties";
810
+ description = 'Properties';
817
811
  break;
818
812
  case InternalInterface.MG_ACT_RTO_QUERY:
819
- description = "Query Records";
813
+ description = 'Query Records';
820
814
  break;
821
815
  case InternalInterface.MG_ACT_RTO_RANGE:
822
- description = "Range of Records";
816
+ description = 'Range of Records';
823
817
  break;
824
818
  case InternalInterface.MG_ACT_RT_REFRESH_RECORD:
825
- description = "Record Flush";
819
+ description = 'Record Flush';
826
820
  break;
827
821
  case InternalInterface.MG_ACT_REDIRECT_FILES:
828
- description = "Redirect Files";
822
+ description = 'Redirect Files';
829
823
  break;
830
824
  case InternalInterface.MG_ACT_REDRAW_LAYOUT:
831
- description = "";
825
+ description = '';
832
826
  break;
833
827
  case InternalInterface.MG_ACT_REPEAT_ENTRY:
834
- description = "Repeat Entry";
828
+ description = 'Repeat Entry';
835
829
  break;
836
830
  case InternalInterface.MG_ACT_REPEAT_SUBTREE:
837
- description = "Repeat Subtree";
831
+ description = 'Repeat Subtree';
838
832
  break;
839
833
  case InternalInterface.MG_ACT_REPORT_GENERATOR:
840
- description = "";
834
+ description = '';
841
835
  break;
842
836
  case InternalInterface.MG_ACT_RESTORE_DEFAULTS:
843
- description = "Restore Defaults";
837
+ description = 'Restore Defaults';
844
838
  break;
845
839
  case InternalInterface.MG_ACT_RETURN_TO_TREE:
846
- description = "";
840
+ description = '';
847
841
  break;
848
842
  case InternalInterface.MG_ACT_RIGHT:
849
- description = "Right";
843
+ description = 'Right';
850
844
  break;
851
845
  case InternalInterface.MG_ACT_RIGHTS:
852
- description = "";
846
+ description = '';
853
847
  break;
854
848
  case InternalInterface.MG_ACT_RIGHTS_LIST:
855
- description = "Rights List";
849
+ description = 'Rights List';
856
850
  break;
857
851
  case InternalInterface.MG_ACT_SQL_ASSIST:
858
- description = "SQL Assist";
852
+ description = 'SQL Assist';
859
853
  break;
860
854
  case InternalInterface.MG_ACT_SQL_COLUMNS:
861
- description = "SQL Columns";
855
+ description = 'SQL Columns';
862
856
  break;
863
857
  case InternalInterface.MG_ACT_SQL_COMMAND:
864
- description = "SQL Command";
858
+ description = 'SQL Command';
865
859
  break;
866
860
  case InternalInterface.MG_ACT_SQL_FLIP_DESC:
867
- description = "SQL Flip Desc.";
861
+ description = 'SQL Flip Desc.';
868
862
  break;
869
863
  case InternalInterface.MG_ACT_SQL_KEYWORDS:
870
- description = "SQL Keywords";
864
+ description = 'SQL Keywords';
871
865
  break;
872
866
  case InternalInterface.MG_ACT_SQL_OPERATORS:
873
- description = "SQL Operators";
867
+ description = 'SQL Operators';
874
868
  break;
875
869
  case InternalInterface.MG_ACT_SQL_TABLES:
876
- description = "SQL Tables";
870
+ description = 'SQL Tables';
877
871
  break;
878
872
  case InternalInterface.MG_ACT_SQL_WHERE_CLAUSE:
879
- description = "";
873
+ description = '';
880
874
  break;
881
875
  case InternalInterface.MG_ACT_RT_REFRESH_SCREEN:
882
- description = "Screen Refresh";
876
+ description = 'Screen Refresh';
883
877
  break;
884
878
  case InternalInterface.MG_ACT_SECRET_NAMES:
885
- description = "Secret Names";
879
+ description = 'Secret Names';
886
880
  break;
887
881
  case InternalInterface.MG_ACT_SELECT:
888
- description = "Select";
882
+ description = 'Select';
889
883
  break;
890
884
  case InternalInterface.MG_ACT_EDT_MARKALL:
891
- description = "Select All";
885
+ description = 'Select All';
892
886
  break;
893
887
  case InternalInterface.MG_ACT_SERVERS:
894
- description = "";
888
+ description = '';
895
889
  break;
896
890
  case InternalInterface.MG_ACT_SERVICES:
897
- description = "";
891
+ description = '';
898
892
  break;
899
893
  case InternalInterface.MG_ACT_RT_EDT_NULL:
900
- description = "Set to NULL";
894
+ description = 'Set to NULL';
901
895
  break;
902
896
  case InternalInterface.MG_ACT_SHELL_TO_OS:
903
- description = "Shell to OS";
897
+ description = 'Shell to OS';
904
898
  break;
905
899
  case InternalInterface.MG_ACT_SHOW_EXPRESSION:
906
- description = "Show Expression";
900
+ description = 'Show Expression';
907
901
  break;
908
902
  case InternalInterface.MG_ACT_SHOW_FULL_LAYOUT:
909
- description = "";
903
+ description = '';
910
904
  break;
911
905
  case InternalInterface.MG_ACT_SHRINK_TREE:
912
- description = "";
906
+ description = '';
913
907
  break;
914
908
  case InternalInterface.MG_ACT_SORT:
915
- description = "Sort";
909
+ description = 'Sort';
916
910
  break;
917
911
  case InternalInterface.MG_ACT_SORT_RECORDS:
918
- description = "Sort Records";
912
+ description = 'Sort Records';
919
913
  break;
920
914
  case InternalInterface.MG_ACT_TABLE_LOCATE:
921
- description = "Table Locate";
915
+ description = 'Table Locate';
922
916
  break;
923
917
  case InternalInterface.MG_ACT_TABLE_LOCATE_NEXT:
924
- description = "Table Locate Next";
918
+ description = 'Table Locate Next';
925
919
  break;
926
920
  case InternalInterface.MG_ACT_TABLES:
927
- description = "";
921
+ description = '';
928
922
  break;
929
923
  case InternalInterface.MG_ACT_TASK_CONTROL:
930
- description = "";
924
+ description = '';
931
925
  break;
932
926
  case InternalInterface.MG_ACT_TASK_EVENTS:
933
- description = "";
927
+ description = '';
934
928
  break;
935
929
  case InternalInterface.MG_ACT_TO_VALUE:
936
- description = "To Value";
930
+ description = 'To Value';
937
931
  break;
938
932
  case InternalInterface.MG_ACT_TOOLKIT_RUNTIME:
939
- description = "Toolkit/Runtime";
933
+ description = 'Toolkit/Runtime';
940
934
  break;
941
935
  case InternalInterface.MG_ACT_TOP:
942
- description = "Top";
936
+ description = 'Top';
943
937
  break;
944
938
  case InternalInterface.MG_ACT_TYPES:
945
- description = "";
939
+ description = '';
946
940
  break;
947
941
  case InternalInterface.MG_ACT_EDT_UNDO:
948
- description = "Undo Editing";
942
+ description = 'Undo Editing';
949
943
  break;
950
944
  case InternalInterface.MG_ACT_UNINDENT:
951
- description = "Unindent";
945
+ description = 'Unindent';
952
946
  break;
953
947
  case InternalInterface.MG_ACT_UPDATE_LINK:
954
- description = "";
948
+ description = '';
955
949
  break;
956
950
  case InternalInterface.MG_ACT_USER_ACTION_1:
957
951
  case InternalInterface.MG_ACT_USER_ACTION_2:
@@ -973,100 +967,100 @@ export class Event {
973
967
  case InternalInterface.MG_ACT_USER_ACTION_18:
974
968
  case InternalInterface.MG_ACT_USER_ACTION_19:
975
969
  case InternalInterface.MG_ACT_USER_ACTION_20:
976
- description = "User Action " + (internalEventCode - InternalInterface.MG_ACT_USER_ACTION_1 + 1);
970
+ description = 'User Action ' + (internalEventCode - InternalInterface.MG_ACT_USER_ACTION_1 + 1);
977
971
  break;
978
972
  case InternalInterface.MG_ACT_USER_GROUPS:
979
- description = "";
973
+ description = '';
980
974
  break;
981
975
  case InternalInterface.MG_ACT_USER_IDS:
982
- description = "User IDs";
976
+ description = 'User IDs';
983
977
  break;
984
978
  case InternalInterface.MG_ACT_V_CENTER_OF_FORM:
985
- description = "Center of Form";
979
+ description = 'Center of Form';
986
980
  break;
987
981
  case InternalInterface.MG_ACT_VERTICAL_CENTER:
988
- description = "Vertical Center";
982
+ description = 'Vertical Center';
989
983
  break;
990
984
  case InternalInterface.MG_ACT_VIEW_BY_KEY:
991
- description = "View by Key";
985
+ description = 'View by Key';
992
986
  break;
993
987
  case InternalInterface.MG_ACT_RT_REFRESH_VIEW:
994
- description = "View Refresh";
988
+ description = 'View Refresh';
995
989
  break;
996
990
  case InternalInterface.MG_ACT_VIRTUAL_VARIABLES:
997
- description = "Variables";
991
+ description = 'Variables';
998
992
  break;
999
993
  case InternalInterface.MG_ACT_VISUAL_CONNECTION:
1000
- description = "Visual Connection";
994
+ description = 'Visual Connection';
1001
995
  break;
1002
996
  case InternalInterface.MG_ACT_HIT:
1003
- description = "Window Hit";
997
+ description = 'Window Hit';
1004
998
  break;
1005
999
  case InternalInterface.MG_ACT_WINMOVE:
1006
- description = "Window Reposition";
1000
+ description = 'Window Reposition';
1007
1001
  break;
1008
1002
  case InternalInterface.MG_ACT_WINSIZE:
1009
- description = "Window Resize";
1003
+ description = 'Window Resize';
1010
1004
  break;
1011
1005
  case InternalInterface.MG_ACT_ZOOM:
1012
- description = "Zoom";
1006
+ description = 'Zoom';
1013
1007
  break;
1014
1008
  case InternalInterface.MG_ACT_LOCKING_DETAILS:
1015
- description = "Locking Details";
1009
+ description = 'Locking Details';
1016
1010
  break;
1017
1011
  case InternalInterface.MG_ACT_LOCKING_ABORT:
1018
- description = "Locking Abort";
1012
+ description = 'Locking Abort';
1019
1013
  break;
1020
1014
  case InternalInterface.MG_ACT_LOCKING_RETRY:
1021
- description = "Locking Retry";
1015
+ description = 'Locking Retry';
1022
1016
  break;
1023
1017
  case InternalInterface.MG_ACT_CHECK_OBJECT_LIST:
1024
- description = "Check Object List";
1018
+ description = 'Check Object List';
1025
1019
  break;
1026
1020
  case InternalInterface.MG_ACT_USERS_LIST:
1027
- description = "Users List";
1021
+ description = 'Users List';
1028
1022
  break;
1029
1023
  case InternalInterface.MG_ACT_MODELS:
1030
- description = "Models";
1024
+ description = 'Models';
1031
1025
  break;
1032
1026
  case InternalInterface.MG_ACT_WEB_CLICK:
1033
- description = "Click";
1027
+ description = 'Click';
1034
1028
  break;
1035
1029
  case InternalInterface.MG_ACT_WEB_ON_DBLICK:
1036
- description = "DblClick";
1030
+ description = 'DblClick';
1037
1031
  break;
1038
1032
  case InternalInterface.MG_ACT_BROWSER_ESC:
1039
- description = "Esc";
1033
+ description = 'Esc';
1040
1034
  break;
1041
1035
  case InternalInterface.MG_ACT_ROLLBACK:
1042
- description = "Rollback";
1036
+ description = 'Rollback';
1043
1037
  break;
1044
1038
  case InternalInterface.MG_ACT_EMPTY_DATAVIEW:
1045
- description = "Empty Dataview";
1039
+ description = 'Empty Dataview';
1046
1040
  break;
1047
1041
  case InternalInterface.MG_ACT_CTRL_MODIFY:
1048
- description = "Control Modify";
1042
+ description = 'Control Modify';
1049
1043
  break;
1050
1044
  case InternalInterface.MG_ACT_PRINT_DATA:
1051
- description = "Print Data";
1045
+ description = 'Print Data';
1052
1046
  break;
1053
1047
  case InternalInterface.MG_ACT_POST_REFRESH_BY_PARENT:
1054
- description = "Post Refresh by Parent";
1048
+ description = 'Post Refresh by Parent';
1055
1049
  break;
1056
1050
  case InternalInterface.MG_ACT_SWITCH_TO_OFFLINE:
1057
- description = "Switch To Offline";
1051
+ description = 'Switch To Offline';
1058
1052
  break;
1059
1053
  case InternalInterface.MG_ACT_UNAVAILABLE_SERVER:
1060
- description = "Unavailable Server";
1054
+ description = 'Unavailable Server';
1061
1055
  break;
1062
1056
  case InternalInterface.MG_ACT_CONTEXT_MENU:
1063
- description = "Context Menu";
1057
+ description = 'Context Menu';
1064
1058
  break;
1065
1059
  case InternalInterface.MG_ACT_ENTER_ROW_EDITING:
1066
- description = "Enter Row Editing";
1060
+ description = 'Enter Row Editing';
1067
1061
  break;
1068
1062
  case InternalInterface.MG_ACT_NO_PROG_EXE_RIGHTS:
1069
- description = "No Program Execution Rights";
1063
+ description = 'No Program Execution Rights';
1070
1064
  break;
1071
1065
  case InternalInterface.MG_ACT_WEBCLIENT_ROUTE:
1072
1066
  description = 'Route';
@@ -1102,7 +1096,7 @@ export class Event {
1102
1096
  description = 'Index Change';
1103
1097
  break;
1104
1098
  default:
1105
- description = "";
1099
+ description = '';
1106
1100
  break;
1107
1101
  }
1108
1102
  return description;
@@ -1121,37 +1115,34 @@ export class Event {
1121
1115
  getKeyboardItemString() {
1122
1116
  let kbi = this.getKbdItm();
1123
1117
  if (kbi === null)
1124
- return "";
1118
+ return '';
1125
1119
  return kbi.ToString();
1126
1120
  }
1127
1121
  seconds2String() {
1128
1122
  let time = new Array(3);
1129
- let buffer = "";
1123
+ let buffer = '';
1130
1124
  time[0] = Math.floor(this._seconds / 3600);
1131
1125
  time[1] = Math.floor((this._seconds - time[0] * 3600) / 60);
1132
1126
  time[2] = this._seconds % 60;
1133
1127
  for (let i = 0; i < time.length; i++) {
1134
1128
  if (time[i] === 0)
1135
- buffer += "00";
1129
+ buffer += '00';
1136
1130
  else if (time[i] < 10)
1137
- buffer += ("0" + time[i]);
1131
+ buffer += ('0' + time[i]);
1138
1132
  else
1139
1133
  buffer += time[i];
1140
1134
  if (i < time.length - 1)
1141
- buffer += ":";
1135
+ buffer += ':';
1142
1136
  }
1143
1137
  return buffer;
1144
1138
  }
1145
- getParamVal(idx) {
1146
- return this._paramVals[idx];
1147
- }
1148
1139
  parseParamVal(valueStr) {
1149
1140
  let startOfs = 0, endOfs = 0, nLen, j;
1150
1141
  let sLen, sValue = null;
1151
1142
  for (j = 0; j < this._parameters; j++) {
1152
1143
  switch (this._paramAttrs[j]) {
1153
1144
  case StorageAttribute.SKIP:
1154
- sValue = "";
1145
+ sValue = '';
1155
1146
  break;
1156
1147
  case StorageAttribute.ALPHA:
1157
1148
  case StorageAttribute.BLOB_VECTOR:
@@ -1211,88 +1202,9 @@ export class Event {
1211
1202
  }
1212
1203
  return endOfs;
1213
1204
  }
1214
- setParamVals(paramVals_) {
1215
- this._paramVals = paramVals_;
1216
- this._paramAttrs = this._paramNulls = "";
1217
- this._parameters = 0;
1218
- if (this._paramVals !== null) {
1219
- this._parameters = this._paramVals.length;
1220
- for (let i = 0; i < this._parameters; i++) {
1221
- this._paramAttrs += StorageAttribute.ALPHA;
1222
- this._paramNulls += "0";
1223
- }
1224
- }
1225
- }
1226
- setParamType(paramNum, fld) {
1227
- let currType;
1228
- let currValue;
1229
- let newType = fld.getType();
1230
- let pic = null;
1231
- let sameType = false;
1232
- if (this._paramVals != null && this.getParamNum() >= paramNum) {
1233
- currType = this._paramAttrs[paramNum];
1234
- sameType = (currType === newType);
1235
- if (!sameType) {
1236
- let charArr = null;
1237
- currValue = this._paramVals[paramNum];
1238
- switch (newType) {
1239
- case StorageAttribute.ALPHA:
1240
- case StorageAttribute.BLOB:
1241
- case StorageAttribute.BLOB_VECTOR:
1242
- case StorageAttribute.MEMO:
1243
- case StorageAttribute.UNICODE:
1244
- break;
1245
- case StorageAttribute.NUMERIC:
1246
- case StorageAttribute.DATE:
1247
- case StorageAttribute.TIME:
1248
- if (currType === StorageAttribute.ALPHA) {
1249
- try {
1250
- pic = PIC.buildPicture(newType, currValue, fld.getTask().getCompIdx(), true);
1251
- this._paramVals[paramNum] = DisplayConvertor.Instance.disp2mg(currValue, pic, fld.getTask().getCompIdx(), BlobType.CONTENT_TYPE_UNKNOWN);
1252
- sameType = true;
1253
- }
1254
- catch (exception) {
1255
- if (exception instanceof Exception) {
1256
- sameType = false;
1257
- Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Event.setParamType() cannot transfer {0} to Numeric with picture {1}", currValue, (pic != null ? pic.getFormat() : "null")));
1258
- }
1259
- else
1260
- throw exception;
1261
- }
1262
- }
1263
- break;
1264
- case StorageAttribute.BOOLEAN:
1265
- if (currType === StorageAttribute.ALPHA) {
1266
- currValue = currValue.trim();
1267
- if (currValue === "1" || currValue.toLowerCase() === "true")
1268
- this._paramVals[paramNum] = "1";
1269
- else
1270
- this._paramVals[paramNum] = "0";
1271
- sameType = true;
1272
- }
1273
- break;
1274
- }
1275
- if (sameType) {
1276
- charArr = NString.ToCharArray(this._paramAttrs);
1277
- charArr[paramNum] = newType;
1278
- this._paramAttrs = NString.FromChars(charArr);
1279
- }
1280
- }
1281
- }
1282
- return sameType;
1283
- }
1284
1205
  getParamNum() {
1285
1206
  return this._parameters;
1286
1207
  }
1287
- getParamNull(idx) {
1288
- if ('0' === this._paramNulls.charAt(idx))
1289
- return false;
1290
- else
1291
- return true;
1292
- }
1293
- getParamAttr(idx) {
1294
- return this._paramAttrs.charAt(idx);
1295
- }
1296
1208
  isControlHeader() {
1297
1209
  return this.getType() == ConstInterface.EVENT_TYPE_INTERNAL &&
1298
1210
  (this.getInternalCode() == InternalInterface.MG_ACT_CTRL_PREFIX ||
@@ -1324,7 +1236,7 @@ export class Event {
1324
1236
  buffer.Append('ID ' + this.Exp.getId().toString());
1325
1237
  break;
1326
1238
  default:
1327
- buffer.Append("unknown event type ");
1239
+ buffer.Append('unknown event type ');
1328
1240
  break;
1329
1241
  }
1330
1242
  }
@@ -1404,24 +1316,6 @@ export class Event {
1404
1316
  getUserDefinedFuncRetExp() {
1405
1317
  return this._returnExp;
1406
1318
  }
1407
- getOsCommandText() {
1408
- return this._osCommandText;
1409
- }
1410
- setOsCommandText(osCommandText) {
1411
- this._osCommandText = osCommandText;
1412
- }
1413
- getOsCommandWait() {
1414
- return this._osCommandWait;
1415
- }
1416
- setOsCommandWait(wait) {
1417
- this._osCommandWait = wait;
1418
- }
1419
- getOsCommandShow() {
1420
- return this._osCommandShow;
1421
- }
1422
- setOsCommandShow(osShow) {
1423
- this._osCommandShow = osShow;
1424
- }
1425
1319
  setTimestamp() {
1426
1320
  this._timestamp = Event._lastTimestamp++;
1427
1321
  }
@@ -1429,8 +1323,8 @@ export class Event {
1429
1323
  return this._timestamp;
1430
1324
  }
1431
1325
  toString() {
1432
- return NString.Format("{{Event: {0}}}", this.getBrkLevel());
1326
+ return NString.Format('{{Event: {0}}}', this.getBrkLevel());
1433
1327
  }
1434
1328
  }
1435
1329
  Event._lastTimestamp = 0;
1436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFFBQVEsRUFDUixhQUFhLEVBQ2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osU0FBUyxFQUNULEdBQUcsRUFDSCxXQUFXLEVBRVgsK0JBQStCLEVBQ2hDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUs3QyxNQUFNLE9BQU8sS0FBSztJQWlDaEI7UUE1QkEsUUFBRyxHQUFlLElBQUksQ0FBQztRQUN2QixlQUFVLEdBQWMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUN2QyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQUNwQixtQkFBYyxHQUFlLENBQUMsQ0FBQztRQUMvQixtQkFBYyxHQUFXLElBQUksQ0FBQztRQUM5QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUN4QyxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixl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LEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXQrRGMsb0JBQWMsR0FBVyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFwcGxpY2F0aW9uRXhjZXB0aW9uLFxyXG4gIENoYXIsXHJcbiAgRXhjZXB0aW9uLFxyXG4gIEhhc2hVdGlscyxcclxuICBJbnQzMixcclxuICBMaXN0LFxyXG4gIE5OdW1iZXIsXHJcbiAgTlN0cmluZyxcclxuICBOdW1iZXJTdHlsZXMsXHJcbiAgUmVmUGFyYW0sXHJcbiAgU3RyaW5nQnVpbGRlclxyXG59IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1xyXG4gIEJhc2U2NCxcclxuICBDYWxsT3NTaG93LFxyXG4gIEZvcmNlRXhpdCxcclxuICBJbnRlcm5hbEludGVyZmFjZSxcclxuICBMb2dnZXIsXHJcbiAgTWlzYyxcclxuICBTdG9yYWdlQXR0cmlidXRlLFxyXG4gIFN0clV0aWwsXHJcbiAgWE1MQ29uc3RhbnRzLFxyXG4gIFhtbFBhcnNlclxyXG59IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgQmxvYlR5cGUsXHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBLZXlib2FyZEl0ZW0sXHJcbiAgTW9kaWZpZXJzLFxyXG4gIFBJQyxcclxuICBSZWNvcmRVdGlscyxcclxuICBUYXNrRGVmaW5pdGlvbklkLFxyXG4gIFRhc2tEZWZpbml0aW9uSWRUYWJsZVNheEhhbmRsZXJcclxufSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtFeHByZXNzaW9ufSBmcm9tIFwiLi4vZXhwL0V4cHJlc3Npb25cIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7VGFza0Jhc2V9IGZyb20gXCIuLi90YXNrcy9UYXNrQmFzZVwiO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlcn0gZnJvbSBcIi4uL3J0L0xhc3RGb2N1c2VkTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudCB0aGUgZXZlbnQgZW50aXR5XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBFdmVudCB7XHJcbiAgLy8gQVRURU5USU9OICFcclxuICAvLyBhbnkgY2hhbmdlIHRvIHRoZSBtZW1iZXIgdmFyaWFibGVzIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjaGFuZ2UgdG8gdGhlIENUT1IgdGhhdFxyXG4gIC8vIGdldHMgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdFdmVudCcuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2xhc3RUaW1lc3RhbXA6IG51bWJlciA9IDA7IC8vIGxhc3QgdGltZXN0YW1wXHJcbiAgRXhwOiBFeHByZXNzaW9uID0gbnVsbDsgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgX2ZvcmNlRXhpdDogRm9yY2VFeGl0ID0gRm9yY2VFeGl0Lk5vbmU7IC8vIFRoZSDigJxmb3JjZSBleGl0P2lzIG9uZSBvZjogUmVjb3JkLCBDb250cm9sLCBOb25lLiBUaGlzIGF0dHJpYnV0ZSBpcyByZWxldmFudCBvbmx5IGZvciBldmVudHMgaW4gdGhlIOKAnHVzZXIgZXZlbnRzP3RhYmxlLlxyXG4gIGtiZEl0bTogS2V5Ym9hcmRJdGVtID0gbnVsbDsgLy8gZm9yIHN5c3RlbSBldmVudHNcclxuICBwcml2YXRlIF9vc0NvbW1hbmRTaG93OiBDYWxsT3NTaG93ID0gMDtcclxuICBwcml2YXRlIF9vc0NvbW1hbmRUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG4gIHByaXZhdGUgX29zQ29tbWFuZFdhaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfcGFyYW1BdHRyczogc3RyaW5nID0gbnVsbDtcclxuICBfcGFyYW1OdWxsczogc3RyaW5nID0gbnVsbDtcclxuICBfcGFyYW1WYWxzOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgX3BhcmFtZXRlcnM6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfcmV0dXJuRXhwOiBudW1iZXIgPSAwO1xyXG4gIC8qIGV4cHJlc3Npb24gbnVtYmVyIHRvIHNwZWNpZnkgdGhlIEZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlICovXHJcbiAgX3NlY29uZHM6IG51bWJlciA9IEludDMyLk1pblZhbHVlOyAvLyBmb3IgdGltZXIgZXZlbnRzXHJcbiAgX3RpbWVzdGFtcDogbnVtYmVyID0gMDtcclxuICBfdHlwZTogc3RyaW5nID0gQ2hhci5NaW5WYWx1ZTsgLy8gU3lzdGVtfEludGVybmFsfFRpbWVyfEV4cHJlc3Npb258VXNlcnxOb25lXHJcbiAgcHJpdmF0ZSBfdXNlckRlZmluZWRGdW5jTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF91c2VyRGVmaW5lZEZ1bmNOYW1lSGFzaENvZGU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfdXNlckV2dERlc2M6IHN0cmluZyA9IFwiXCI7XHJcbiAgX3VzZXJFdnRJZHg6IG51bWJlciA9IEludDMyLk1pblZhbHVlOyAvLyB0aGUgaW5kZXggb2YgdGhlIHVzZXIgZXZlbnQgaW4gdGhlIHRhc2tzIHVzZXIgZXZlbnRzIHRhYmxlXHJcblxyXG4gIHByaXZhdGUgb3duZXJUYXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkID0gbnVsbDtcclxuICBJbnRlcm5hbEV2ZW50OiBudW1iZXIgPSAwOyAvLyBpbnRlcm5hbCBldmVudCBjb2RlXHJcbiAgUHJnRGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XHJcbiAgUHVibGljTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBVc2VyRXZ0OiBFdmVudCA9IG51bGw7XHJcbiAgVXNlckV2dFRhc2tUYWc6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IEludDMyLk1pblZhbHVlO1xyXG4gICAgdGhpcy5zZXRUaW1lc3RhbXAoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb3B5IENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcl8xKGV2dDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBldnQuX3R5cGU7XHJcbiAgICB0aGlzLmtiZEl0bSA9IGV2dC5rYmRJdG07XHJcbiAgICB0aGlzLkludGVybmFsRXZlbnQgPSBldnQuSW50ZXJuYWxFdmVudDtcclxuICAgIHRoaXMuX3NlY29uZHMgPSBldnQuX3NlY29uZHM7XHJcbiAgICB0aGlzLkV4cCA9IGV2dC5FeHA7XHJcbiAgICB0aGlzLl9mb3JjZUV4aXQgPSBldnQuX2ZvcmNlRXhpdDtcclxuICAgIHRoaXMuVXNlckV2dCA9IGV2dC5Vc2VyRXZ0O1xyXG4gICAgdGhpcy5Vc2VyRXZ0VGFza1RhZyA9IGV2dC5Vc2VyRXZ0VGFza1RhZztcclxuICAgIHRoaXMuX3VzZXJFdnRJZHggPSBldnQuX3VzZXJFdnRJZHg7XHJcbiAgICB0aGlzLl90aW1lc3RhbXAgPSAwO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBGb3JjZUV4aXQoKTogRm9yY2VFeGl0IHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JjZUV4aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTmVlZCBwYXJ0IGlucHV0IFN0cmluZyB0byByZWxldmFudCBmb3IgdGhlIGNsYXNzIGRhdGEuXHJcbiAgLy8vICAgaW5kZXggb2YgZW5kIDxldmVudCAuLi4+IHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ4bWxQYXJzZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPjwvcGFyYW0+XHJcbiAgZmlsbERhdGEoeG1sUGFyc2VyOiBYbWxQYXJzZXIsIHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICBsZXQgdXNlclZhbHVlOiBzdHJpbmdcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgeG1sUGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgeG1sUGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHhtbFBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHhtbFBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVCkgKyBDb25zdEludGVyZmFjZS5NR19UQUdfRVZFTlQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMoeG1sUGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuXHJcbiAgICAgIGxldCByZWZVc2VyVmFsdWU6IFJlZlBhcmFtPHN0cmluZz4gPSBuZXcgUmVmUGFyYW0odXNlclZhbHVlKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvciwgdGFza1JlZiwgcmVmVXNlclZhbHVlKTtcclxuICAgICAgdXNlclZhbHVlID0gcmVmVXNlclZhbHVlLnZhbHVlO1xyXG5cclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleChlbmRDb250ZXh0ICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcblxyXG4gICAgICB0aGlzLkluaXRJbm5lck9iamVjdHMoeG1sUGFyc2VyKTtcclxuXHJcbiAgICAgIGlmICh1c2VyVmFsdWUgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5Jbml0VXNlckRhdGEodGFza1JlZiwgdXNlclZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRXZlbnQuRmlsbERhdGEoKSBvdXQgb2Ygc3RyaW5nIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdElubmVyT2JqZWN0cyh4bWxQYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IG5leHRUYWc6IHN0cmluZyA9IHhtbFBhcnNlci5nZXROZXh0VGFnKCk7XHJcbiAgICBzd2l0Y2ggKG5leHRUYWcpIHtcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfVEFHX1RBU0tERUZJTklUSU9OSURfRU5UUlk6XHJcbiAgICAgICAgbGV0IHhtbEJ1ZmZlcjogc3RyaW5nID0geG1sUGFyc2VyLlJlYWRUb0VuZE9mQ3VycmVudEVsZW1lbnQoKTtcclxuICAgICAgICB0aGlzLkluaXRUYXNrRGVmaW5pdGlvbklkKHhtbEJ1ZmZlcik7XHJcblxyXG4gICAgICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgeG1sUGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyAoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSkubGVuZ3RoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBNYWtlIGluaXRpYWxpemF0aW9uIG9mIHByaXZhdGUgZWxlbWVudHMgYnkgZm91bmQgdG9rZW5zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPmZvdW5kIHRva2Vucywgd2hpY2ggY29uc2lzdCBhdHRyaWJ1dGUvdmFsdWUgb2YgZXZlcnkgZm91bmRlbGVtZW50PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+LCB0YXNrUmVmOiBUYXNrQmFzZSwgcmVmVXNlclZhbHVlOiBSZWZQYXJhbTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBsZXQgbW9kaWZpZXI6IE1vZGlmaWVycyA9IE1vZGlmaWVycy5NT0RJRklFUl9OT05FO1xyXG4gICAgbGV0IGtleUNvZGU6IG51bWJlciA9IC0xO1xyXG4gICAgcmVmVXNlclZhbHVlLnZhbHVlID0gbnVsbDtcclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpe1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FVkVOVFRZUEU6XHJcbiAgICAgICAgICB0aGlzLl90eXBlID0gdmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBTeXN0ZW18SW50ZXJuYWx8VXNlcnxUaW1lcnxFeHByZXNzaW9ufFJlY29tcHV0ZVxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9NT0RJRklFUjpcclxuICAgICAgICAgIG1vZGlmaWVyID0gPE1vZGlmaWVycz52YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIEFsdHxDdHJsfFNoaWZ0fE5vbmVcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU5URVJOQUxFVkVOVDpcclxuICAgICAgICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWUNPREU6XHJcbiAgICAgICAgICBrZXlDb2RlID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU0VDT05EUzpcclxuICAgICAgICAgIHRoaXMuX3NlY29uZHMgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfRVhQOlxyXG4gICAgICAgICAgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgICAgICAgICB0aGlzLkV4cCA9IHRhc2tSZWYuZ2V0RXhwQnlJZChYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRk9SQ0VfRVhJVDpcclxuICAgICAgICAgIHRoaXMuX2ZvcmNlRXhpdCA9IDxGb3JjZUV4aXQ+dmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVTQzpcclxuICAgICAgICAgIHRoaXMuX3VzZXJFdnREZXNjID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QVUJMSUM6XHJcbiAgICAgICAgICB0aGlzLlB1YmxpY05hbWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1BBUkFNUzpcclxuICAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QQVJfQVRUUlM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbUF0dHJzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFOlxyXG4gICAgICAgICAgbGV0IHBhcmFtU3RyOiBzdHJpbmcgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgdGhpcy5fcGFyYW1WYWxzID0gbmV3IEFycmF5KHRoaXMuX3BhcmFtZXRlcnMpO1xyXG4gICAgICAgICAgLy8gcHV0IHRoZSBwYXJhbVZhbHMgaW4gcGxhY2VcclxuICAgICAgICAgIHRoaXMucGFyc2VQYXJhbVZhbChwYXJhbVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTlVMTFM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbU51bGxzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVNFUjpcclxuICAgICAgICAgIHJlZlVzZXJWYWx1ZS52YWx1ZSA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gVVNFUiBldmVudFxyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTkFNRTpcclxuICAgICAgICAgIHRoaXMuc2V0VXNlckRlZmluZWRGdW5jTmFtZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU1JfREVGX0ZVQ19SRVRfRVhQX0lEOlxyXG4gICAgICAgICAgdGhpcy5fcmV0dXJuRXhwID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU1JfREVGX0ZVQ19SRVRfRVhQX0FUVFI6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gRXZlbnQgY2xhc3MuIEluc2VydCBjYXNlIHRvIEV2ZW50LmluaXRFbGVtZW50cyBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSlcclxuICAgICAgdGhpcy5rYmRJdG0gPSBuZXcgS2V5Ym9hcmRJdGVtKGtleUNvZGUsIG1vZGlmaWVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tIHRoZSBcInVzZXJcIiBhdHRyaWJ1dGUgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1JlZlwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBJbml0VXNlckRhdGEodGFza1JlZjogVGFza0Jhc2UsIHVzZXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgY29tbWE6IG51bWJlciA9IHVzZXJWYWx1ZS5pbmRleE9mKFwiLFwiKTtcclxuICAgIGlmIChjb21tYSA+IC0xKSB7XHJcbiAgICAgIGxldCB1ZVRhc2tJZDogc3RyaW5nID0gdXNlclZhbHVlLnN1YnN0cigwLCBjb21tYSk7XHJcbiAgICAgIGlmICh0YXNrUmVmICE9PSBudWxsKVxyXG4gICAgICAgIHVlVGFza0lkID0gdGFza1JlZi5UYXNrU2VydmljZS5HZXRFdmVudFRhc2tJZCggdWVUYXNrSWQpO1xyXG5cclxuICAgICAgbGV0IHVlVGFzazogVGFza0Jhc2UgPSA8VGFza0Jhc2U+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHVlVGFza0lkKTtcclxuXHJcbiAgICAgIGxldCB1ZUlkeDogbnVtYmVyID0gWG1sUGFyc2VyLmdldEludCh1c2VyVmFsdWUuc3Vic3RyKGNvbW1hICsgMSkpO1xyXG5cclxuICAgICAgaWYgKHVlVGFzayAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuVXNlckV2dCA9IHVlVGFzay5nZXRVc2VyRXZlbnQodWVJZHgpO1xyXG4gICAgICAgIGlmICh0aGlzLlVzZXJFdnQgPT09IG51bGwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIEV2ZW50LmZpbGxEYXRhKCk6IHVzZXIgZXZlbnQgbm90IGZvdW5kLiB0YXNrIGlkID0gXCIgKyB1ZVRhc2tJZCArXHJcbiAgICAgICAgICAgIFwiLCB1c2VyIGV2ZW50IGluZGV4ID0gXCIgKyB1ZUlkeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuVXNlckV2dFRhc2tUYWcgPSB1ZVRhc2tJZDtcclxuICAgICAgICB0aGlzLl91c2VyRXZ0SWR4ID0gdWVJZHg7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhlIHRhc2sgaGFzbid0IGJlZW4gZm91bmQsIGl0IG5vdCBwYXJzZWQsIHlldFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlVzZXJFdnRUYXNrVGFnID0gdWVUYXNrSWQ7XHJcbiAgICAgICAgdGhpcy5fdXNlckV2dElkeCA9IHVlSWR4O1xyXG4gICAgICAgIHRoaXMuVXNlckV2dCA9IG51bGw7IC8vIGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQgb24gdGhpcyBzdGVwXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdFRhc2tEZWZpbml0aW9uSWQoeG1sQnVmZmVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBoYW5kbGVyOiBUYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyID0gbmV3IFRhc2tEZWZpbml0aW9uSWRUYWJsZVNheEhhbmRsZXIodGhpcy5TZXRUYXNrRGVmaW5pdGlvbklkKTtcclxuICAgIGhhbmRsZXIucGFyc2UoeG1sQnVmZmVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2FsbGJhY2sgZm9yIHRoZSBzYXggcGFyc2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrRGVmaW5pdGlvbklkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ4bWxJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGVmYXVsdFRhZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgU2V0VGFza0RlZmluaXRpb25JZCh0YXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkKTogdm9pZCB7XHJcbiAgICB0aGlzLm93bmVyVGFza0RlZmluaXRpb25JZCA9IHRhc2tEZWZpbml0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmluZCB0YXNrIGZvciBVc2VyIEV2ZW50IGlmIGl0IHdhcyBub3QgZm91bmQgZHVyaW5nIHBhcnNpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbmRVc2VyRXZlbnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSICYmIHRoaXMuVXNlckV2dCA9PT0gbnVsbCkge1xyXG4gICAgICBsZXQgdWVUYXNrOiBUYXNrQmFzZSA9IDxUYXNrQmFzZT5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodGhpcy5Vc2VyRXZ0VGFza1RhZyk7XHJcbiAgICAgIGlmICh1ZVRhc2sgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5Vc2VyRXZ0ID0gdWVUYXNrLmdldFVzZXJFdmVudCh0aGlzLl91c2VyRXZ0SWR4KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLlVzZXJFdnQgPT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKE5TdHJpbmcuRm9ybWF0KFwiaW4gRXZlbnQuZmluZFVzZXJFdmVudCgpOiB1c2VyIGV2ZW50IG5vdCBmb3VuZC4gdGFzayBpZCA9IHswfSBkb2Vzbid0IGV4aXN0XCIsIHRoaXMuVXNlckV2dFRhc2tUYWcpKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29tcGFyZSB0aGlzIGV2ZW50IHRvIGFub3RoZXIgLSByZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGV2ZW50cyBhcmUgaWRlbnRpY2FsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBlcXVhbHMoZXZ0OiBFdmVudCk6IGJvb2xlYW57XHJcbiAgICBsZXQgYkVxdWFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gY29tcGFyZSByZWZlcmVuY2VzXHJcbiAgICBpZiAodGhpcyA9PT0gZXZ0KVxyXG4gICAgICBiRXF1YWwgPSB0cnVlO1xyXG4gICAgLy8gZG8gc2hhbGxvdyBjb21wYXJpc2lvblxyXG4gICAgZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gZXZ0Ll90eXBlKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgICBiRXF1YWwgPSB0aGlzLmtiZEl0bS5lcXVhbHMoZXZ0LmtiZEl0bSk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMOlxyXG4gICAgICAgICAgYkVxdWFsID0gKHRoaXMuSW50ZXJuYWxFdmVudCA9PT0gZXZ0LkludGVybmFsRXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICAgIGJFcXVhbCA9ICh0aGlzLl9zZWNvbmRzID09PSBldnQuX3NlY29uZHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OOlxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9QVUJMSUM6XHJcbiAgICAgICAgICBiRXF1YWwgPSAodGhpcy5FeHAgPT09IGV2dC5FeHApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgICAgYkVxdWFsID0gKHRoaXMuVXNlckV2dCA9PT0gZXZ0LlVzZXJFdnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkM6XHJcbiAgICAgICAgICBpZiAodGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlID09PSBldnQuZ2V0VXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlKCkpIHtcclxuICAgICAgICAgICAgaWYgKE5TdHJpbmcuRXF1YWxzKGV2dC5nZXRVc2VyRGVmaW5lZEZ1bmNOYW1lKCksIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWUsIHRydWUpKVxyXG4gICAgICAgICAgICAgIGJFcXVhbCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJFcXVhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3IgaW50ZXJuYWwgZXZlbnRzLCBjb21wYXJlIHRoZSBpbnRlcm5hbCBuYW1lc1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDIHx8IGV2dC5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9QVUJMSUMpIHtcclxuICAgICAgbGV0IG5hbWUxOiBTdHJpbmcgPSBudWxsO1xyXG4gICAgICBsZXQgbmFtZTI6IFN0cmluZyA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLl90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgZXZ0Ll90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIpXHJcbiAgICAgICAgYkVxdWFsID0gZmFsc2U7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDKSB7XHJcbiAgICAgICAgbmFtZTEgPSB0aGlzLlB1YmxpY05hbWU7XHJcbiAgICAgICAgbmFtZTIgPSBldnQuZ2V0VXNlckV2ZW50KCkuUHVibGljTmFtZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuYW1lMSA9IGV2dC5QdWJsaWNOYW1lO1xyXG4gICAgICAgIG5hbWUyID0gdGhpcy5nZXRVc2VyRXZlbnQoKS5QdWJsaWNOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuYW1lMSA9PT0gbnVsbCB8fCBuYW1lMiA9PT0gbnVsbClcclxuICAgICAgICBiRXF1YWwgPSBmYWxzZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJFcXVhbCA9IChuYW1lMSA9PT0gbmFtZTIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCAmJiBldnQuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKSB7XHJcbiAgICAgIGlmIChMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKSAhPT0gbnVsbCAmJiAoQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuZ2V0TWF0Y2hpbmdBY3Rpb24oIGV2dC5nZXRLYmRJdG0oKSkpID09PSB0aGlzLmdldEludGVybmFsQ29kZSgpKVxyXG4gICAgICAgIGJFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgZXZ0Ll90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIpIHtcclxuICAgICAgLy8gYmVmb3JlIHVzaW5nIHRoZSB1c2VyIGV2ZW50LCBjaGVjayB0aGF0IGl0IGlzIHZhbGlkXHJcbiAgICAgIHRoaXMuZmluZFVzZXJFdmVudCgpO1xyXG5cclxuICAgICAgLy8gaWYgb25lIGV2ZW50IG9mIHRoZSB0d28gaXMgYSB1c2VyIGV2ZW50IGFuZCB0aGUgb3RoZXIgaXNuJ3QgdGhlblxyXG4gICAgICAvLyBjb21wYXJlIHRoZSB0cmlnZ2VyIG9mIHRoZSB1c2VyIGV2ZW50IHRvIHRoZSBub24tdXNlciBldmVudFxyXG4gICAgICBiRXF1YWwgPSAgdGhpcy5Vc2VyRXZ0LmVxdWFscyhldnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJFcXVhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGludGVybmFsIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIHNldFB1YmxpY05hbWUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBGb3IgYSBydW50aW1lIGludGVybmFsIGV2ZW50IC0gY2FsY3VsYXRlIHRoZSBpbnRlcm5hbCBuYW1lLlxyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDICYmIHRoaXMuRXhwICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuUHVibGljTmFtZSA9IChhd2FpdCB0aGlzLkV4cC5ldmFsdWF0ZVdpdGhSZXNMZW5ndGgoMjU1KSkubWdWYWw7XHJcbiAgICAgIGlmICh0aGlzLlB1YmxpY05hbWUgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5QdWJsaWNOYW1lID0gU3RyVXRpbC5ydHJpbSh0aGlzLlB1YmxpY05hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhbiBJbnRlcm5hbCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb2RlXCI+dGhlIGNvZGUgb2YgdGhlIGludGVybmFsIGV2ZW50IDwvcGFyYW0+XHJcbiAgc2V0SW50ZXJuYWwoY29kZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTDtcclxuICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IGNvZGU7XHJcblxyXG4gICAgLy8gTUdfQUNUX0hJVC9NR19BQ1RfQ1RSTF9ISVQgYXJlIGNhdXNlZCBieSBtb3VzZSBjbGljay4gSW4gdGhpcyBjYXNlXHJcbiAgICAvLyB0aW1lIG9mIGxhc3QgdXNlciBhY3Rpb24gZm9yIElETEUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlLWV2YWx1YXRlZC5cclxuICAgIGlmIChjb2RlID09PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUIHx8IGNvZGUgPT09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVClcclxuICAgICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkxhc3RBY3Rpb25UaW1lID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYW4gRXhwcmVzc2lvbiBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgZXhwcmVzc2lvbiBvYmplY3QgPC9wYXJhbT5cclxuICBzZXRFeHByZXNzaW9uKGV4cFJlZjogRXhwcmVzc2lvbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjtcclxuICAgIHRoaXMuRXhwID0gZXhwUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBFeHByZXNzaW9uIG9mIHRoZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RXhwcmVzc2lvbigpOiBFeHByZXNzaW9uIHtcclxuICAgIHJldHVybiB0aGlzLkV4cDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgVXNlckV2ZW50IGRlc2NyaXB0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGdldFVzckV2bnREZXNjKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuVXNlckV2dCAhPT0gbnVsbCkgPyB0aGlzLlVzZXJFdnQuX3VzZXJFdnREZXNjIDogdGhpcy5fdXNlckV2dERlc2M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgU3lzdGVtIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImtleWJvYXJkSXRlbVwiPnRoZSBrZXlib2FyZCBpdGVtIG9iamVjdCA8L3BhcmFtPlxyXG4gIHNldFN5c3RlbShrZXlib2FyZEl0ZW06IEtleWJvYXJkSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNO1xyXG4gICAgdGhpcy5rYmRJdG0gPSBrZXlib2FyZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgU3lzdGVtIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImtleWJvYXJkSXRlbVwiPnRoZSBrZXlib2FyZCBpdGVtIG9iamVjdCA8L3BhcmFtPlxyXG4gIHNldEtleWJvYXJkSXRlbShrZXlib2FyZEl0ZW06IEtleWJvYXJkSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5rYmRJdG0gPSBrZXlib2FyZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHR5cGUgcmV0dXJucyBTeXN0ZW18SW50ZXJuYWx8VXNlcnxUaW1lcnxFeHByZXNzaW9ufFJlY29tcHV0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHR5cGUgcmVjZWl2ZXMgU3lzdGVtfEludGVybmFsfFVzZXJ8VGltZXJ8RXhwcmVzc2lvbnxSZWNvbXB1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFR5cGUoYVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IGFUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBpbnRlcm5hbCBldmVudCBjb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IGludCBpcyB0aGUgaW50ZXJuYWwgZXZlbnQgY29kZSA8L3JldHVybnM+XHJcbiAgZ2V0SW50ZXJuYWxDb2RlKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTClcclxuICAgICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxFdmVudDtcclxuICAgIHJldHVybiBJbnQzMi5NaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGtleWJvYXJkIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEtiZEl0bSgpOiBLZXlib2FyZEl0ZW0ge1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKVxyXG4gICAgICByZXR1cm4gdGhpcy5rYmRJdG07XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGtleWJvYXJkIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEtiZEl0bUFsd2F5cygpOiBLZXlib2FyZEl0ZW0ge1xyXG4gICAgcmV0dXJuIHRoaXMua2JkSXRtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBmb3Igbm9uIGRhdGEgZXZlbnRzIG9yIGRhdGEgZXZlbnRzIHdoaWNoIHRoZWlyIGV4cHJlc3Npb25cclxuICAvLy8gICBldmFsdWF0ZXMgdG8gdHJ1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgZGF0YUV2ZW50SXNUcnVlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT04gJiZcclxuICAgICAgISh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgdGhpcy5nZXRVc2VyRXZlbnRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTikpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUilcclxuICAgICAgcmV0dXJuIERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKGF3YWl0IHRoaXMuRXhwLmV2YWx1YXRlV2l0aFJlc3VsdFR5cGVBbmRMZW5ndGgoU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOLCAwKSk7XHJcbiAgICByZXR1cm4gRGlzcGxheUNvbnZlcnRvci50b0Jvb2xlYW4oYXdhaXQgdGhpcy5Vc2VyRXZ0LmdldEV4cHJlc3Npb24oKS5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiwgMCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbnVtYmVyIG9mIHNlY29uZHMgKGZvciB0aW1lciBldmVudHMpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kcztcclxuICB9XHJcblxyXG4gIGdldEJya0xldmVsKCk6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcj86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMShmbG93TW9uaXRvcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudCBub3QgZm9yIEZsb3cgTW9uaXRvcmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbG93TW9uaXRvclwiPmlzIGl0IG5lZWRlZCBmb3IgRmxvdyBNb25pdG9yaW5nIHVzYWdlIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8xKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBsZXZlbDogc3RyaW5nID0gXCJcIjtcclxuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLkludGVybmFsRXZlbnQpIHtcclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfUFJFRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1RBU0tfUFJFRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1RBU0tfUFJFRklYO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1NVRkZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1NVRkZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1NVRkZJWDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfUFJFRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1JFQ19QUkVGSVg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1NVRkZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfU1VGRklYO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWCArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9TVUZGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9TVUZGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9TVUZGSVggKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfVkVSSUZJQ0FUSU9OOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfVkVSSUZJQ0FUSU9OX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfVkVSSUZJQ0FUSU9OICsgJ18nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRTpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRV9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRSArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX0lOVEVSTkFMX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfSU5URVJOQUwgKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXZlbCArPSBFdmVudC5nZXRJbnRlcm5hbEV2dERlc2NyaXB0aW9uKHRoaXMuSW50ZXJuYWxFdmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNOlxyXG4gICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9TWVNURU1fRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9TWVNURU0gKyAnXyc7XHJcbiAgICAgICAgbGV2ZWwgKz0gdGhpcy5nZXRLZXlib2FyZEl0ZW1TdHJpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfVElNRVJfRk0gKyAnICcgKyB0aGlzLnNlY29uZHMyU3RyaW5nKCkgOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9USU1FUiArICdfJyArIHRoaXMuc2Vjb25kczJTdHJpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OOlxyXG4gICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9FWFBSRVNTSU9OX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfRVhQUkVTU0lPTiArICdfJyArIHRoaXMuRXhwLmdldElkKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUjpcclxuICAgICAgICBsZXZlbCA9IChmbG93TW9uaXRvciA/IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9VU0VSX0ZNICsgXCI6IFwiKSA6IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9VU0VSICsgJ18nKSkgKyAodGhpcy5Vc2VyRXZ0ICE9IG51bGwgPyB0aGlzLlVzZXJFdnQuX3VzZXJFdnREZXNjIDogdGhpcy5fdXNlckV2dERlc2MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVJfRlVOQzpcclxuICAgICAgICBsZXZlbCA9IChmbG93TW9uaXRvciA/IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVVNFUl9GVU5DVElPTl9GTSArICc6JykgOiAoQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1VTRVJfRlVOQ1RJT04gKyAnXycpKSArIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gZGVzY3JpcHRpb24gb2YgdGhlIGV2ZW50IDwvcmV0dXJucz5cclxuICBwdWJsaWMgc3RhdGljIGdldEludGVybmFsRXZ0RGVzY3JpcHRpb24oaW50ZXJuYWxFdmVudENvZGU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHN3aXRjaCAoaW50ZXJuYWxFdmVudENvZGUpIHtcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUJPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkFib3V0IE1hZ2ljXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BQ1RJT05fTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQWN0aW9uIExpc3RcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FERF9IWVBFUkxJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUxJR05fTEVGVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTGVmdFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUxJR05fUklHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJpZ2h0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BUFBMX1BST1BFUlRJRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVBQTElDQVRJT05TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJBcHBsaWNhdGlvbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FQUExJQ0FUSU9OU19MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJBcHBsaWNhdGlvbnMgTGlzdFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVRUQUNIX1RPX1RBQkxFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJBdHRhY2ggdG8gVGFibGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FVVEhPUklaRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQXV0aG9yaXplXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHRkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJCZWdpbiBGaWVsZFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0JFR0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJlZ2luIEZvcm1cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9CRUdMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJCZWdpbiBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQmVnaW4gTmV4dCBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQmVnaW4gUGFnZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR0xJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJlZ2luIFJvd1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1BBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJlZ2luIFNjcmVlblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1RCTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQmVnaW4gdGFibGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JPVFRPTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQm90dG9tXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9CVUxMRVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJ1bGxldFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQlVUVE9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJCdXR0b24gUHJlc3NcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NBTkNFTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2FuY2VsXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9RVUlUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJRdWl0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DRU5URVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNlbnRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0hFQ0tfU1lOVEFYOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDaGVjayBTeW50YXhcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NIRUNLX1RPX0VORDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2hlY2sgdG8gRW5kXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTEVBUl9URU1QTEFURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2xlYXIgVGVtcGxhdGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMRUFSX1ZBTFVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDbGVhciBWYWx1ZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xPU0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNsb3NlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BQ1RfQ0xPU0VfQVBQTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2xvc2UgQXBwbGljYXRpb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT01NVU5JQ0FUSU9OUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ29tbXVuaWNhdGlvbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTVBPTkVOVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNvbXBvbmVudHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfSElUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDb250cm9sIEhpdFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09OVFJPTF9OQU1FX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNvbnRyb2wgTmFtZSBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTElQX0NPUFk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNvcHlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPUFlfTEFZT1VUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDb3B5IExheW91dFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09QWV9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDb3B5IFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NSRUxJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DUkVMSU5FX0FCT1ZFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDcmVhdGUgTGluZSBBYm92ZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JFQVRFX1BBUkVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3JlYXRlIFBhcmVudFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX0NSRUFURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3JlYXRlIFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NSRUFURV9TVUJUQVNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDcmVhdGUgU3VidGFza1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JPU1NfUkVGRVJFTkNFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDcm9zcyBSZWZlcmVuY2VcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NVVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3V0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9EQl9UQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREJNUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiREJNU1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRERGX01BS0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRERiBNYWtlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9EQVRBQkFTRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRhdGFiYXNlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREVGQVVMVF9MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRlZmF1bHQgTGF5b3V0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUZJTkVfRVhQUkVTU0lPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRGVmaW5lIEV4cHJlc3Npb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9ERUxDVVJDSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3VycmVudCBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfREVMUFJWQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIENoYXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RFTEVURV9IWVBFUkxJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRlbGV0ZSBIeXBlcmxpbmtcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RFTExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRlbGV0ZSBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUxFVEVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRGVsZXRlIFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX0NPUFlGTEQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRpdHRvXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ESVNQTEFZX1JFRlJFU0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRpc3BsYXkgUmVmcmVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURJVF9NQUlOX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkVkaXQgTWFpbiBGb3JtXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5ERkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFbmQgRmllbGRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9FTkRGT1JNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFbmQgRm9ybVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0VORExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkVuZCBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5EUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW5kIFBhZ2VcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9FTkRMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFbmQgUm93XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfRU5EUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW5kIFNjcmVlblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0VORFRCTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW5kIFRhYmxlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTlZJUk9OTUVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW52aXJvbm1lbnRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYRUNVVEVfUFJPR1JBTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhlY3V0ZSBQcm9ncmFtXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWEVDVVRFX1JFUE9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhlY3V0ZSBSZXBvcnRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYSVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkV4aXRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYSVRfU1lTVEVNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFeGl0IFN5c3RlbVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhQT1JUX0lNUE9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhwb3J0L0ltcG9ydFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhQUkVTU0lPTl9SVUxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhwcmVzc2lvbiBydWxlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhURVJOQUxfRURJVE9SOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFeHRlcm5hbCBFZGl0b3JcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWFRfRVZFTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkV4dGVybmFsIEV2ZW50XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9GT1JNUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRm9ybXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZST01fVkFMVUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkZyb20gVmFsdWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZVTkNUSU9OX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkZ1bmN0aW9uIExpc3RcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dFTkVSQVRFX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkdlbmVyYXRlIEZvcm1cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dFTkVSQVRFX1BST0dSQU06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkdlbmVyYXRlIFByb2dyYW1cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dPX1RPX1RPUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiR28gdG8gVG9wXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9IX0NFTlRFUl9PRl9GT1JNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hUTUxfU1RZTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJIVE1MIFN0eWxlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSEVMUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSGVscFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSEVMUF9TQ1JFRU5TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJIZWxwIFNjcmVlbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hPUklaX0NFTlRFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSG9yaXouIENlbnRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSV9PX0ZJTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJUYWJsZXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0lOREVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSW5kZW50XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9JTlNFUlRfT0JKRUNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJJbnNlcnQgT2JqZWN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9KVU1QX1RPX1JPVzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSnVtcCB0byBSb3dcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0tFWUJPQVJEX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIktleWJvYXJkIExpc3RcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0tFWUJPQVJEX01BUFBJTkc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIktleWJvYXJkIE1hcHBpbmdcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0xBTkdVQUdFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwibGFuZ3VhZ2VzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVE9fU0VBUkNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJMb2NhdGUgTmV4dFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX0xPQ0FURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTG9jYXRlIGEgUmVjb3JkXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0dJQ0FMUE5BTUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0xPR09OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJMb2dvblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNJTkdfSEVMUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSGVscCBUb3BpY3NcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLTlhUQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1hcmsgTmV4dCBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVJLX05FWFRfTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWFyayBOZXh0IExpbmUgTUxFXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1BSVkNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNYXJrIFByZXZpb3VzIENoYXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWFyayBQcmV2aW91cyBMaW5lIE1MRVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUFSS19TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLVE9CRUc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1hcmsgVG8gQmVnaW5uaW5nXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1RPRU5EOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNYXJrIFRvIEVuZFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUFYSU1VTV9IRUlHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1heGltdW0gSGVpZ2h0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVhJTVVNX1dJRFRIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNYXhpbXVtIFdpZHRoXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NRU5VX0JBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWVudSBCYXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01FTlVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01JTklNVU1fSEVJR0hUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNaW5pbXVtIEhlaWdodFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUlOSU1VTV9XSURUSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWluaW11bSBXaWR0aFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX01PRElGWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTW9kaWZ5IFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PTklUT1JfREVCVUdHRVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1vbml0b3IvRGVidWdnZXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PVkVfRU5UUlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1vdmUgRW50cnlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PVkVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTW92ZSBTdWJ0cmVlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9OVUxMX1NFVFRJTkdTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJOVUxMIFNldHRpbmdzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUQ0hBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBQYWdlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBSb3dcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9OWFRQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJOZXh0IFNjcmVlblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX05YVFRBQjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBUYWJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9OWFRXT1JEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJOZXh0IFdvcmRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX05PUk1BTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTm9ybWFsXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiT0tcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09MRTI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk9MRTJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09QRU5fQVBQTElDQVRJT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk9wZW4gQXBwbGljYXRpb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09WRVJXUklURV9FTlRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiT3ZlcndyaXRlIEVudHJ5XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PVkVSV1JJVEVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiT3ZlcndyaXRlIFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BQRDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUFBEXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QQUdFX0ZPT1RFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUGFnZSBGb290ZXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBR0VfSEVBREVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQYWdlIEhlYWRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xJUF9QQVNURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUGFzdGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBU1RFX0xJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlBhc3RlIExpbmtcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBU1RFX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlBhc3RlIFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZDSEFSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmV2aW91cyBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUHJldmlvdXMgTGluZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1BSVlBBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIFBhZ2VcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmV2aW91cyBSb3dcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmV2aW91cyBTY3JlZW5cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZUQUI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIFRhYlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1BSVldPUkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIFdvcmRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5UX0FUVFJJQlVURVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByaW50IEF0dHJpYnV0ZXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5URVJfU0VUVVA6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByaW50ZXIgU2V0dXBcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5URVJTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmludGVyc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJPR1JBTVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByb2dyYW1zXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUk9QRVJUSUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcm9wZXJ0aWVzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVE9fUVVFUlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlF1ZXJ5IFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19SQU5HRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmFuZ2Ugb2YgUmVjb3Jkc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRfUkVGUkVTSF9SRUNPUkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJlY29yZCBGbHVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVESVJFQ1RfRklMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJlZGlyZWN0IEZpbGVzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRURSQVdfTEFZT1VUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUEVBVF9FTlRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmVwZWF0IEVudHJ5XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRVBFQVRfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmVwZWF0IFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUE9SVF9HRU5FUkFUT1I6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVTVE9SRV9ERUZBVUxUUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmVzdG9yZSBEZWZhdWx0c1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVUVVJOX1RPX1RSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUklHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJpZ2h0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SSUdIVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUklHSFRTX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJpZ2h0cyBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQVNTSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgQXNzaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQ09MVU1OUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU1FMIENvbHVtbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9DT01NQU5EOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgQ29tbWFuZFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX0ZMSVBfREVTQzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU1FMIEZsaXAgRGVzYy5cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9LRVlXT1JEUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU1FMIEtleXdvcmRzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfT1BFUkFUT1JTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgT3BlcmF0b3JzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfVEFCTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgVGFibGVzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfV0hFUkVfQ0xBVVNFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX1JFRlJFU0hfU0NSRUVOOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTY3JlZW4gUmVmcmVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VDUkVUX05BTUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTZWNyZXQgTmFtZXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NFTEVDVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU2VsZWN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS0FMTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU2VsZWN0IEFsbFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VSVkVSUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRVJWSUNFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9FRFRfTlVMTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU2V0IHRvIE5VTExcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NIRUxMX1RPX09TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTaGVsbCB0byBPU1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hPV19FWFBSRVNTSU9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTaG93IEV4cHJlc3Npb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NIT1dfRlVMTF9MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hSSU5LX1RSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU09SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU29ydFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU09SVF9SRUNPUkRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTb3J0IFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBQkxFX0xPQ0FURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiVGFibGUgTG9jYXRlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQUJMRV9MT0NBVEVfTkVYVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiVGFibGUgTG9jYXRlIE5leHRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBQkxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX0NPTlRST0w6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19FVkVOVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVE9fVkFMVUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlRvIFZhbHVlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UT09MS0lUX1JVTlRJTUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlRvb2xraXQvUnVudGltZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVE9QOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJUb3BcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RZUEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9VTkRPOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVbmRvIEVkaXRpbmdcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VOSU5ERU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVbmluZGVudFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVBEQVRFX0xJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNDpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fODpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fOTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTA6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzExOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xMjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTM6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE0OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xNTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTY6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE3OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xODpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTk6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzIwOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVc2VyIEFjdGlvbiBcIiArIChpbnRlcm5hbEV2ZW50Q29kZSAtIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xICsgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0dST1VQUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0lEUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiVXNlciBJRHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZfQ0VOVEVSX09GX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNlbnRlciBvZiBGb3JtXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WRVJUSUNBTF9DRU5URVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZlcnRpY2FsIENlbnRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklFV19CWV9LRVk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZpZXcgYnkgS2V5XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9SRUZSRVNIX1ZJRVc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZpZXcgUmVmcmVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklSVFVBTF9WQVJJQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZhcmlhYmxlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklTVUFMX0NPTk5FQ1RJT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZpc3VhbCBDb25uZWN0aW9uXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ISVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIldpbmRvdyBIaXRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dJTk1PVkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIldpbmRvdyBSZXBvc2l0aW9uXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XSU5TSVpFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJXaW5kb3cgUmVzaXplXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9aT09NOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJab29tXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0NLSU5HX0RFVEFJTFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkxvY2tpbmcgRGV0YWlsc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9DS0lOR19BQk9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTG9ja2luZyBBYm9ydFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9DS0lOR19SRVRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTG9ja2luZyBSZXRyeVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0hFQ0tfT0JKRUNUX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNoZWNrIE9iamVjdCBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSU19MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVc2VycyBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NT0RFTFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1vZGVsc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX0NMSUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDbGlja1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX09OX0RCTElDSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRGJsQ2xpY2tcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JST1dTRVJfRVNDOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFc2NcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JPTExCQUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJSb2xsYmFja1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRU1QVFlfREFUQVZJRVc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkVtcHR5IERhdGF2aWV3XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX01PRElGWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ29udHJvbCBNb2RpZnlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5UX0RBVEE6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByaW50IERhdGFcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BPU1RfUkVGUkVTSF9CWV9QQVJFTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlBvc3QgUmVmcmVzaCBieSBQYXJlbnRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NXSVRDSF9UT19PRkZMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTd2l0Y2ggVG8gT2ZmbGluZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVU5BVkFJTEFCTEVfU0VSVkVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVbmF2YWlsYWJsZSBTZXJ2ZXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTlRFWFRfTUVOVTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ29udGV4dCBNZW51XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTlRFUl9ST1dfRURJVElORzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW50ZXIgUm93IEVkaXRpbmdcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9fUFJPR19FWEVfUklHSFRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJObyBQcm9ncmFtIEV4ZWN1dGlvbiBSaWdodHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQkNMSUVOVF9ST1VURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSb3V0ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT0xfU09SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb2x1bW4gU29ydCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ST1dfREFUQV9DVVJSX1BBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR2V0IFJvd3MnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9DTE9TRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTdWJmb3JtIENsb3NlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NVQkZPUk1fUkVGUkVTSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTdWJmb3JtIFJlZnJlc2gnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9PUEVOOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1N1YmZvcm0gT3Blbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT01QVVRFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbXB1dGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0FDSEVfTkVYVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHZXQgTmV4dCBEYXRhJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NBQ0hFX1BSRVY6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR2V0IFByZXZpb3VzIERhdGEnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRkVUQ0hfREFUQV9DT05UUk9MX1ZBTFVFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdGZXRjaCBkYXRhIGNvbnRyb2wgdmFsdWVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0lOREVYX0NIQU5HRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdJbmRleCBDaGFuZ2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdHlwZSBvZiBVc2VyIEV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHR5cGUgb2YgdXNlciBldmVudCA8L3JldHVybnM+XHJcbiAgZ2V0VXNlckV2ZW50VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuVXNlckV2dCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfTk9USU5JVEVEO1xyXG5cclxuICAgIHJldHVybiB0aGlzLlVzZXJFdnQuZ2V0VHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzZWNvbmRzIG9mIHRoZSB1c2VyIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTZWNvbmRzT2ZVc2VyRXZlbnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLlVzZXJFdnQuZ2V0U2Vjb25kcygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdXNlciBldmVudCBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHVzZXIgZXZlbnQgb2JqZWN0IDwvcmV0dXJucz5cclxuICBnZXRVc2VyRXZlbnQoKTogRXZlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuVXNlckV2dDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQga2V5Ym9hcmQgaXRlbSAoIGZvciBzeXN0ZW0gZXZlbnQgKSBpbiBmb3JtIG9mIHN0cmluZ1xyXG4gIC8vLyAgIGZvciBzeXN0ZW0gZXZlbnRzIE9OTFlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRJdGVtU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICBsZXQga2JpOiBLZXlib2FyZEl0ZW0gPSB0aGlzLmdldEtiZEl0bSgpO1xyXG4gICAgaWYgKGtiaSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICByZXR1cm4ga2JpLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5zZXJ0IHRoZSBzZWNvbmRzIHRvIHRoZSBwaWN0dXJlIFwiSEg6TU06U1NcIiBmb3IgU1RPUkFHRV9BVFRSX1RJTUVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gZm9ybWF0ZWQgc3RyaW5nIG9mIHNlY29uZHNcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc2Vjb25kczJTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIGxldCB0aW1lOiBudW1iZXJbXSA9IG5ldyBBcnJheTxudW1iZXI+KDMpO1xyXG4gICAgbGV0IGJ1ZmZlcjogc3RyaW5nID0gXCJcIjtcclxuICAgIHRpbWVbMF0gPSBNYXRoLmZsb29yKHRoaXMuX3NlY29uZHMgLyAzNjAwKTtcclxuICAgIHRpbWVbMV0gPSBNYXRoLmZsb29yKCh0aGlzLl9zZWNvbmRzIC0gdGltZVswXSAqIDM2MDApIC8gNjApO1xyXG4gICAgdGltZVsyXSA9IHRoaXMuX3NlY29uZHMgJSA2MDtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aW1lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aW1lW2ldID09PSAwKVxyXG4gICAgICAgIGJ1ZmZlciArPSBcIjAwXCI7XHJcbiAgICAgIGVsc2UgaWYgKHRpbWVbaV0gPCAxMClcclxuICAgICAgICBidWZmZXIgKz0gKFwiMFwiICsgdGltZVtpXSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBidWZmZXIgKz0gdGltZVtpXTtcclxuICAgICAgLy8gZG9uJ3QgaW5zZXJ0IGRlbGltaXRlciBhZnRlciB0aGUgbGFzdCBjYXNlXHJcbiAgICAgIGlmIChpIDwgdGltZS5sZW5ndGggLSAxKVxyXG4gICAgICAgIGJ1ZmZlciArPSBcIjpcIjtcclxuICAgIH1cclxuICAgIHJldHVybiBidWZmZXI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPi0gdGhlIGluZGV4IG9mIHRoZSBwYXJhbWV0ZXIgKCAwID0gZmlyc3QgcGFyYW0pIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgdmFsdWUgaW4gYSBzdHJpbmcgPC9yZXR1cm5zPlxyXG4gIGdldFBhcmFtVmFsKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wYXJhbVZhbHNbaWR4XTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZSB0aGUgcGFyYW1ldGVycyB2YWx1ZXMgZnJvbSB0aGUgdmFsdWUgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbHVlU3RyXCI+aW5kZXggb2YgdGhlIHBhcmFtIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcGFyYW1ldGVyIHZhbHVlIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHBhcnNlUGFyYW1WYWwodmFsdWVTdHI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRPZnM6IG51bWJlciA9IDAsIGVuZE9mcyA9IDAsIG5MZW4sIGo7XHJcbiAgICBsZXQgc0xlbjogc3RyaW5nLCBzVmFsdWUgPSBudWxsO1xyXG5cclxuICAgIC8vIGZpbmQgdGhlIHZhbHVlIGxvY2F0aW9uXHJcbiAgICBmb3IgKGogPSAwOyBqIDwgdGhpcy5fcGFyYW1ldGVyczsgaisrKSB7XHJcbiAgICAgIHN3aXRjaCAoPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSkge1xyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5TS0lQOlxyXG4gICAgICAgICAgc1ZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SOlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5NRU1POlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyA0O1xyXG4gICAgICAgICAgc0xlbiA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgIG5MZW4gPSBOTnVtYmVyLlBhcnNlKHNMZW4sIE51bWJlclN0eWxlcy5IZXhOdW1iZXIpO1xyXG4gICAgICAgICAgc3RhcnRPZnMgPSBlbmRPZnM7XHJcblxyXG4gICAgICAgICAgLy8gUUNSIDE2OTkgZGVjb2RlIHRoZSBwYXJhbWV0ZXIgZnJvbSBiYXNlNjQgaWYgbmVlZGVkXHJcbiAgICAgICAgICBpZiAoQWNjZXNzSGVscGVyLmVudmlyb25tZW50LkdldERlYnVnTGV2ZWwoKSA+IDEgfHwgKDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0pID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8ICg8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8ICg8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5NRU1PKSB7XHJcbiAgICAgICAgICAgIGlmICgobkxlbiAmIDB4ODAwMCkgPiAwKVxyXG4gICAgICAgICAgICAvLyBwYXJzZSBzcGFubmVkIHJlY29yZCBlbmNvZGVkIHRvIEhleFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuIG9mIHRoZSBwYXJhbWV0ZXIgZGF0YVxyXG4gICAgICAgICAgICAgIG5MZW4gPSAobkxlbiAmIDB4N0ZGRik7XHJcbiAgICAgICAgICAgICAgbkxlbiAqPSAyO1xyXG5cclxuICAgICAgICAgICAgICAvLyBwYXJzZSB0aGUgU3RyaW5nXHJcbiAgICAgICAgICAgICAgbGV0IHJlczogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICAgICAgICAgICAgZW5kT2ZzICs9IFJlY29yZFV0aWxzLmdldFNwYW5uZWRGaWVsZCh2YWx1ZVN0ciwgbkxlbiwgc3RhcnRPZnMsIDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0sIHJlcywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgdmFsdWVTdHIgPSByZXMuVG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBub24gc3Bhbm5lZCBwYXJhbXNcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyBuTGVuO1xyXG4gICAgICAgICAgICAgIHNWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgobkxlbiAmIDB4ODAwMCkgPiAwKVxyXG4gICAgICAgICAgICAvLyBwYXJzZSBzcGFubmVkIHJlY29yZCBlbmNvZGVkIHRvIEhleFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuIG9mIHRoZSBwYXJhbWV0ZXIgZGF0YVxyXG4gICAgICAgICAgICAgIG5MZW4gPSAobkxlbiAmIDB4N0ZGRik7XHJcbiAgICAgICAgICAgICAgbkxlbiA9IE1hdGguZmxvb3IoKG5MZW4gKyAyKSAvIDMpICogNDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gcGFyc2UgdGhlIFN0cmluZ1xyXG4gICAgICAgICAgICAgIGxldCByZXM6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgICAgICAgIGVuZE9mcyArPSBSZWNvcmRVdGlscy5nZXRTcGFubmVkRmllbGQodmFsdWVTdHIsIG5MZW4sIHN0YXJ0T2ZzLCA8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdLCByZXMsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSByZXMuVG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIE1hdGguZmxvb3IoKG5MZW4gKyAyKSAvIDMpICogNDtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSBCYXNlNjQuZGVjb2RlKHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgICAvLyBRQ1IgMTY5OSBkZWNvZGUgdGhlIHBhcmFtZXRlciBmcm9tIGJhc2U2NCBpZiBuZWVkZWRcclxuICAgICAgICAgIGlmIChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0RGVidWdMZXZlbCgpID4gMSkge1xyXG4gICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSAqIDI7XHJcbiAgICAgICAgICAgIHNWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIChNYXRoLmZsb29yKChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0U2lnbmlmaWNhbnROdW1TaXplKCkgKyAyKSAvIDMpICogNCk7XHJcbiAgICAgICAgICAgIHNWYWx1ZSA9IEJhc2U2NC5kZWNvZGVUb0hleCh2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyAxO1xyXG4gICAgICAgICAgc1ZhbHVlID0gdmFsdWVTdHIuc3Vic3RyKHN0YXJ0T2ZzLCAoZW5kT2ZzKSAtIChzdGFydE9mcykpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fcGFyYW1WYWxzW2pdID0gc1ZhbHVlO1xyXG4gICAgICBzdGFydE9mcyA9IGVuZE9mcztcclxuICAgIH1cclxuICAgIHJldHVybiBlbmRPZnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IEFyZ3VtZW50IFZhbHVlcyAsIHdpdGhvdXQgc2V0dGluZyBvZiB0aGUgcGFyYW1BdHRyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0UGFyYW1WYWxzKHBhcmFtVmFsc186IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYXJhbVZhbHMgPSBwYXJhbVZhbHNfO1xyXG4gICAgdGhpcy5fcGFyYW1BdHRycyA9IHRoaXMuX3BhcmFtTnVsbHMgPSBcIlwiO1xyXG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuX3BhcmFtVmFscyAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gdGhpcy5fcGFyYW1WYWxzLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX3BhcmFtZXRlcnM7IGkrKykge1xyXG4gICAgICAgIHRoaXMuX3BhcmFtQXR0cnMgKz0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTsgLy8gdGVtcG9yYXJ5IHR5cGUgb2YgdGhlIGRhdGFcclxuICAgICAgICB0aGlzLl9wYXJhbU51bGxzICs9IFwiMFwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVHJ5IHRvIGV2YWx1YXRlIHZhbHVlIHRvIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGZpZWxkIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyYW1OdW1cIj5udW1iZXIgb2YgdGhlIHBhcmFtZXRlciA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkXCI+LSBmaWVsZCB3aXRoIGl0J3MgdHlwZSwgdG8gZW5mb3JjZSBpdHMgdHlwZSB0byB0aGUgcGFyYW1ldGVyIHZhbHVlIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIC0gaWYgc2V0dGluZyBvZiB0aGUgdHlwZSBoYXMgb3ZlciB3aXRob3V0IHByb2JsZW1zIGFuZCBub3cgdGhlIHBhcmFtZXRlciBhbmQgdGhlIGZpZWxkcyBoYXZlIHRoZSBzYW1lIHR5cGUsXHJcbiAgLy8vICAgZmFsc2UgLSB0aGUgc2V0dGluZyBpbXBvc3NpYmxlLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgcHJvdGVjdGVkIHNldFBhcmFtVHlwZShwYXJhbU51bTogbnVtYmVyLCBmbGQ6IEZpZWxkKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY3VyclR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGU7XHJcbiAgICBsZXQgY3VyclZhbHVlOiBzdHJpbmc7XHJcbiAgICBsZXQgbmV3VHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IGZsZC5nZXRUeXBlKCk7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHNhbWVUeXBlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuX3BhcmFtVmFscyAhPSBudWxsICYmIHRoaXMuZ2V0UGFyYW1OdW0oKSA+PSBwYXJhbU51bSkge1xyXG4gICAgICBjdXJyVHlwZSA9IDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbcGFyYW1OdW1dO1xyXG5cclxuICAgICAgc2FtZVR5cGUgPSAoY3VyclR5cGUgPT09IG5ld1R5cGUpO1xyXG4gICAgICBpZiAoIXNhbWVUeXBlKSB7XHJcbiAgICAgICAgLy8gdHJ5IHRvIHNldCB0aGUgbmV3IHR5cGUgdG8gdGhlIHBhcmFtZXRlclxyXG4gICAgICAgIGxldCBjaGFyQXJyOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgICAgICAgY3VyclZhbHVlID0gdGhpcy5fcGFyYW1WYWxzW3BhcmFtTnVtXTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChuZXdUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUjpcclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5NRU1POlxyXG4gICAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICAgICAgaWYgKGN1cnJUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBKSB7XHJcbiAgICAgICAgICAgICAgLy8gZnJvbSBhbHBoYSB0byBudW1lcmljXHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHBpYyA9IFBJQy5idWlsZFBpY3R1cmUobmV3VHlwZSwgY3VyclZhbHVlLCBmbGQuZ2V0VGFzaygpLmdldENvbXBJZHgoKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbVZhbHNbcGFyYW1OdW1dID0gRGlzcGxheUNvbnZlcnRvci5JbnN0YW5jZS5kaXNwMm1nKGN1cnJWYWx1ZSwgIHBpYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxkLmdldFRhc2soKS5nZXRDb21wSWR4KCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9VTktOT1dOKTtcclxuICAgICAgICAgICAgICAgIHNhbWVUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiBpbnN0YW5jZW9mIEV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAvLyBjYW5Ob3RFdmFsdWF0ZUFzTnVtZXJpY1xyXG4gICAgICAgICAgICAgICAgICBzYW1lVHlwZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coTlN0cmluZy5Gb3JtYXQoXCJFdmVudC5zZXRQYXJhbVR5cGUoKSBjYW5ub3QgdHJhbnNmZXIgezB9IHRvIE51bWVyaWMgd2l0aCBwaWN0dXJlIHsxfVwiLCBjdXJyVmFsdWUsIChwaWMgIT0gbnVsbCA/IHBpYy5nZXRGb3JtYXQoKSA6IFwibnVsbFwiKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgICAgICBpZiAoY3VyclR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEpIHtcclxuICAgICAgICAgICAgICAvLyBmcm9tIGFscGhhIHRvIGxvZ2ljYWxcclxuICAgICAgICAgICAgICBjdXJyVmFsdWUgPSBjdXJyVmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICAgIGlmIChjdXJyVmFsdWUgPT09IFwiMVwiIHx8IGN1cnJWYWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIilcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcmFtVmFsc1twYXJhbU51bV0gPSBcIjFcIjtcclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbVZhbHNbcGFyYW1OdW1dID0gXCIwXCI7XHJcbiAgICAgICAgICAgICAgc2FtZVR5cGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNhbWVUeXBlKSB7XHJcbiAgICAgICAgICBjaGFyQXJyID0gTlN0cmluZy5Ub0NoYXJBcnJheSh0aGlzLl9wYXJhbUF0dHJzKTtcclxuICAgICAgICAgIGNoYXJBcnJbcGFyYW1OdW1dID0gPHN0cmluZz5uZXdUeXBlO1xyXG4gICAgICAgICAgdGhpcy5fcGFyYW1BdHRycyA9IE5TdHJpbmcuRnJvbUNoYXJzKGNoYXJBcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSAvLyBub3QgdGhlIHNhbWUgdHlwZVxyXG4gICAgfS8vIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyXHJcblxyXG4gICAgcmV0dXJuIHNhbWVUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCB0aGUgbnVtYmVyIG9mIHBhcmFtc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBudW1iZXIgb2YgcGFyYW1zIDwvcmV0dXJucz5cclxuICBnZXRQYXJhbU51bSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSBudWxsIGZsYWcgb2YgdGhlIHBhcmFtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBwYXJhbSBpbmRleCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbnVsbCBmbGFnIDwvcmV0dXJucz5cclxuICBnZXRQYXJhbU51bGwoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICgnMCcgPT09IHRoaXMuX3BhcmFtTnVsbHMuY2hhckF0KGlkeCkpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIHBhcmFtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBwYXJhbSBpbmRleCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gYXR0cmlidXRlIGNoYXIgPC9yZXR1cm5zPlxyXG4gIGdldFBhcmFtQXR0cihpZHg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1BdHRycy5jaGFyQXQoaWR4KTtcclxuICB9XHJcblxyXG4gIGlzQ29udHJvbEhlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFR5cGUoKSA9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMICYmXHJcbiAgICAgICh0aGlzLmdldEludGVybmFsQ29kZSgpID09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWCB8fFxyXG4gICAgICAgIHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYIHx8XHJcbiAgICAgICAgdGhpcy5nZXRJbnRlcm5hbENvZGUoKSA9PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT04pO1xyXG4gIH1cclxuXHJcbiAgaXNWYXJpYWJsZUhlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFR5cGUoKSA9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMICYmXHJcbiAgICAgIHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBBcHBlbmRzIHRoZSBldmVudCdzIGRlc2NyaXB0aW9uIHRvIHRoZSBnaXZlbiBTdHJpbmdCdWlsZGVyLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJidWZmZXJcIj5UaGUgYnVmZmVyIHRvIHdoaWNoIHRoZSBkZXNjcmlwdGlvbiBzaG91bGQgYmUgYXBwZW5kZWQuPC9wYXJhbT5cclxuICBwdWJsaWMgQXBwZW5kRGVzY3JpcHRpb24oYnVmZmVyOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoRXZlbnQuZ2V0SW50ZXJuYWxFdnREZXNjcmlwdGlvbih0aGlzLkludGVybmFsRXZlbnQpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLmdldEtleWJvYXJkSXRlbVN0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQodGhpcy5nZXRVc3JFdm50RGVzYygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkM6XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKHRoaXMuc2Vjb25kczJTdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKCAnSUQgJyArIHRoaXMuRXhwLmdldElkKCkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoXCJ1bmtub3duIGV2ZW50IHR5cGUgXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybnMgd2hldGhlciB0aGUgaW50ZXJuYWwgZXZlbnQgY29kZSBpcyBiZXR3ZWVuIDEwMDEgJiAxMDA4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgaXNOZXdJbnRlcm5hbEV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxFdmVudCA+PSAxMDAxICYmIHRoaXMuSW50ZXJuYWxFdmVudCA8PSAxMDA4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGRlc2NyaXB0aW9uIGZvciBuZXcgaW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBnZXROZXdJbnRlcm5hbEV2ZW50RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcclxuICAgIGxldCBldmVudERlc2M6IHN0cmluZyA9IE5TdHJpbmcuRW1wdHk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5JbnRlcm5hbEV2ZW50KSB7XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19QUkVGSVg6XHJcbiAgICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19QUkVGSVhfRk07XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19TVUZGSVg6XHJcbiAgICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19TVUZGSVhfRk07XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWDpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfUFJFRklYX0ZNO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVg6XHJcbiAgICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1NVRkZJWF9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWF9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1NVRkZJWF9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1ZFUklGSUNBVElPTl9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRTpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRV9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgcmV0dXJuIGV2ZW50RGVzYztcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybiB0aGUgZGVzY3JpcHRpb24gZm9yIG5ldyBpbnRlcm5hbCBldmVudHMgb3IgcmV0dXJuIHRoZSB0eXBlIGluIHN0cmluZyBmb3JtYXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBnZXRFdmVudFR5cGUoKSA6IHN0cmluZyB7XHJcbiAgICAvLyBGb3IgdGhlIG5ldyBpbnRlcm5hbCBldmVudHMsIHRoZXJlIGlzIG5vIHR5cGUgc28gaW5zdGVhZCBnZXQgdGhlIGRlc2NyaXB0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5pc05ld0ludGVybmFsRXZlbnQoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTlN0cmluZy5UcmltRW5kKHRoaXMuZ2V0TmV3SW50ZXJuYWxFdmVudERlc2NyaXB0aW9uKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdldEV2ZW50VHlwZVN0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm4gdGhlIHR5cGUgb2YgZXZlbnQgaW4gc3RyaW5nIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldEV2ZW50VHlwZVN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgbGV0IGV2ZW50VHlwZTogc3RyaW5nO1xyXG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgIGV2ZW50VHlwZSA9ICdJbnRlcm5hbCBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNOlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICdTeXN0ZW0gRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT046XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJ0V4cHJlc3Npb24gRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSOlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICdUaW1lciBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUjpcclxuICAgICAgICBldmVudFR5cGUgPSAnVXNlciBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBldmVudFR5cGUgPSAnJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXZlbnRUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHVzZXIgZGVmaW5lZCBmdW5jdGlvbidzIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFVzZXJEZWZpbmVkRnVuY05hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lID0gbmFtZTtcclxuICAgIGxldCBmdW5jdGlvbk5hbWVVcHBlcjogc3RyaW5nID0gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlID0gSGFzaFV0aWxzLkdldEhhc2hDb2RlKGZ1bmN0aW9uTmFtZVVwcGVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyBuYW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRVc2VyRGVmaW5lZEZ1bmNOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyBuYW1lJ3MgaGFzaCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHVzZXIgZGVmaW5lZCBmdW5jdGlvbidzIHJldHVybiBleHByZXNzaW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRVc2VyRGVmaW5lZEZ1bmNSZXRFeHAoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXR1cm5FeHA7XHJcbiAgfVxyXG5cclxuICBnZXRPc0NvbW1hbmRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3NDb21tYW5kVGV4dDtcclxuICB9XHJcblxyXG4gIHNldE9zQ29tbWFuZFRleHQob3NDb21tYW5kVGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vc0NvbW1hbmRUZXh0ID0gb3NDb21tYW5kVGV4dDtcclxuICB9XHJcblxyXG4gIGdldE9zQ29tbWFuZFdhaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3NDb21tYW5kV2FpdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0T3NDb21tYW5kV2FpdCh3YWl0OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vc0NvbW1hbmRXYWl0ID0gd2FpdDtcclxuICB9XHJcblxyXG4gIGdldE9zQ29tbWFuZFNob3coKTogQ2FsbE9zU2hvdyB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3NDb21tYW5kU2hvdztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0T3NDb21tYW5kU2hvdyhvc1Nob3c6IENhbGxPc1Nob3cpOiB2b2lkIHtcclxuICAgIHRoaXMuX29zQ29tbWFuZFNob3cgPSBvc1Nob3c7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHNldFRpbWVzdGFtcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RpbWVzdGFtcCA9IEV2ZW50Ll9sYXN0VGltZXN0YW1wKys7XHJcbiAgfVxyXG5cclxuICBnZXRUaW1lc3RhbXAoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lc3RhbXA7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE5TdHJpbmcuRm9ybWF0KFwie3tFdmVudDogezB9fX1cIiwgdGhpcy5nZXRCcmtMZXZlbCgpKTtcclxuICB9XHJcbn1cclxuIl19
1330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxLQUFLLEVBRUwsT0FBTyxFQUNQLE9BQU8sRUFDUCxZQUFZLEVBQ1osUUFBUSxFQUNSLGFBQWEsRUFDZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sSUFBSSxFQUNKLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBRVgsK0JBQStCLEVBQ2hDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsvQyxNQUFNLE9BQU8sS0FBSztJQTZCaEI7UUF4QkEsUUFBRyxHQUFlLElBQUksQ0FBQztRQUN2QixlQUFVLEdBQWMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUN2QyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQUU1QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFL0IsYUFBUSxHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFD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QUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUtELHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBSUQsOEJBQThCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7SUFLRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFPRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUF2MERjLG9CQUFjLEdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvbkV4Y2VwdGlvbixcclxuICBDaGFyLFxyXG4gIEhhc2hVdGlscyxcclxuICBJbnQzMixcclxuICBMaXN0LFxyXG4gIE5OdW1iZXIsXHJcbiAgTlN0cmluZyxcclxuICBOdW1iZXJTdHlsZXMsXHJcbiAgUmVmUGFyYW0sXHJcbiAgU3RyaW5nQnVpbGRlclxyXG59IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtcclxuICBCYXNlNjQsXHJcbiAgRm9yY2VFeGl0LFxyXG4gIEludGVybmFsSW50ZXJmYWNlLFxyXG4gIExvZ2dlcixcclxuICBNaXNjLFxyXG4gIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgU3RyVXRpbCxcclxuICBYTUxDb25zdGFudHMsXHJcbiAgWG1sUGFyc2VyXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBLZXlib2FyZEl0ZW0sXHJcbiAgTW9kaWZpZXJzLFxyXG4gIFJlY29yZFV0aWxzLFxyXG4gIFRhc2tEZWZpbml0aW9uSWQsXHJcbiAgVGFza0RlZmluaXRpb25JZFRhYmxlU2F4SGFuZGxlclxyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cC9FeHByZXNzaW9uJztcclxuaW1wb3J0IHsgQ29uc3RJbnRlcmZhY2UgfSBmcm9tICcuLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRhc2tCYXNlIH0gZnJvbSAnLi4vdGFza3MvVGFza0Jhc2UnO1xyXG5pbXBvcnQgeyBMYXN0Rm9jdXNlZE1hbmFnZXIgfSBmcm9tICcuLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tICcuLi9BY2Nlc3NIZWxwZXInO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudCB0aGUgZXZlbnQgZW50aXR5XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBFdmVudCB7XHJcbiAgLy8gQVRURU5USU9OICFcclxuICAvLyBhbnkgY2hhbmdlIHRvIHRoZSBtZW1iZXIgdmFyaWFibGVzIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjaGFuZ2UgdG8gdGhlIENUT1IgdGhhdFxyXG4gIC8vIGdldHMgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdFdmVudCcuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2xhc3RUaW1lc3RhbXA6IG51bWJlciA9IDA7IC8vIGxhc3QgdGltZXN0YW1wXHJcbiAgRXhwOiBFeHByZXNzaW9uID0gbnVsbDsgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgX2ZvcmNlRXhpdDogRm9yY2VFeGl0ID0gRm9yY2VFeGl0Lk5vbmU7IC8vIFRoZSDigJxmb3JjZSBleGl0P2lzIG9uZSBvZjogUmVjb3JkLCBDb250cm9sLCBOb25lLiBUaGlzIGF0dHJpYnV0ZSBpcyByZWxldmFudCBvbmx5IGZvciBldmVudHMgaW4gdGhlIOKAnHVzZXIgZXZlbnRzP3RhYmxlLlxyXG4gIGtiZEl0bTogS2V5Ym9hcmRJdGVtID0gbnVsbDsgLy8gZm9yIHN5c3RlbSBldmVudHNcclxuXHJcbiAgX3BhcmFtQXR0cnM6IHN0cmluZyA9IG51bGw7XHJcbiAgX3BhcmFtTnVsbHM6IHN0cmluZyA9IG51bGw7XHJcbiAgX3BhcmFtVmFsczogc3RyaW5nW10gPSBudWxsO1xyXG4gIF9wYXJhbWV0ZXJzOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX3JldHVybkV4cDogbnVtYmVyID0gMDtcclxuICAvKiBleHByZXNzaW9uIG51bWJlciB0byBzcGVjaWZ5IHRoZSBGdW5jdGlvbidzIHJldHVybiB2YWx1ZSAqL1xyXG4gIF9zZWNvbmRzOiBudW1iZXIgPSBJbnQzMi5NaW5WYWx1ZTsgLy8gZm9yIHRpbWVyIGV2ZW50c1xyXG4gIF90aW1lc3RhbXA6IG51bWJlciA9IDA7XHJcbiAgX3R5cGU6IHN0cmluZyA9IENoYXIuTWluVmFsdWU7IC8vIFN5c3RlbXxJbnRlcm5hbHxUaW1lcnxFeHByZXNzaW9ufFVzZXJ8Tm9uZVxyXG4gIHByaXZhdGUgX3VzZXJEZWZpbmVkRnVuY05hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX3VzZXJFdnREZXNjOiBzdHJpbmcgPSAnJztcclxuICBfdXNlckV2dElkeDogbnVtYmVyID0gSW50MzIuTWluVmFsdWU7IC8vIHRoZSBpbmRleCBvZiB0aGUgdXNlciBldmVudCBpbiB0aGUgdGFza3MgdXNlciBldmVudHMgdGFibGVcclxuXHJcbiAgSW50ZXJuYWxFdmVudDogbnVtYmVyID0gMDsgLy8gaW50ZXJuYWwgZXZlbnQgY29kZVxyXG4gIFB1YmxpY05hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgVXNlckV2dDogRXZlbnQgPSBudWxsO1xyXG4gIFVzZXJFdnRUYXNrVGFnOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLkludGVybmFsRXZlbnQgPSBJbnQzMi5NaW5WYWx1ZTtcclxuICAgIHRoaXMuc2V0VGltZXN0YW1wKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29weSBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3JfMShldnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gZXZ0Ll90eXBlO1xyXG4gICAgdGhpcy5rYmRJdG0gPSBldnQua2JkSXRtO1xyXG4gICAgdGhpcy5JbnRlcm5hbEV2ZW50ID0gZXZ0LkludGVybmFsRXZlbnQ7XHJcbiAgICB0aGlzLl9zZWNvbmRzID0gZXZ0Ll9zZWNvbmRzO1xyXG4gICAgdGhpcy5FeHAgPSBldnQuRXhwO1xyXG4gICAgdGhpcy5fZm9yY2VFeGl0ID0gZXZ0Ll9mb3JjZUV4aXQ7XHJcbiAgICB0aGlzLlVzZXJFdnQgPSBldnQuVXNlckV2dDtcclxuICAgIHRoaXMuVXNlckV2dFRhc2tUYWcgPSBldnQuVXNlckV2dFRhc2tUYWc7XHJcbiAgICB0aGlzLl91c2VyRXZ0SWR4ID0gZXZ0Ll91c2VyRXZ0SWR4O1xyXG4gICAgdGhpcy5fdGltZXN0YW1wID0gMDtcclxuICB9XHJcblxyXG5cclxuICBnZXQgRm9yY2VFeGl0KCk6IEZvcmNlRXhpdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VFeGl0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE5lZWQgcGFydCBpbnB1dCBTdHJpbmcgdG8gcmVsZXZhbnQgZm9yIHRoZSBjbGFzcyBkYXRhLlxyXG4gIC8vLyAgIGluZGV4IG9mIGVuZCA8ZXZlbnQgLi4uPiB0YWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwieG1sUGFyc2VyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj48L3BhcmFtPlxyXG4gIGZpbGxEYXRhKHhtbFBhcnNlcjogWG1sUGFyc2VyLCB0YXNrUmVmOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgbGV0IHVzZXJWYWx1ZTogc3RyaW5nO1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHhtbFBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCB4bWxQYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogc3RyaW5nID0geG1sUGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgeG1sUGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UKSArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVC5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2Vucyh4bWxQYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG5cclxuICAgICAgbGV0IHJlZlVzZXJWYWx1ZTogUmVmUGFyYW08c3RyaW5nPiA9IG5ldyBSZWZQYXJhbSh1c2VyVmFsdWUpO1xyXG5cclxuICAgICAgdGhpcy5pbml0RWxlbWVudHModG9rZW5zVmVjdG9yLCB0YXNrUmVmLCByZWZVc2VyVmFsdWUpO1xyXG4gICAgICB1c2VyVmFsdWUgPSByZWZVc2VyVmFsdWUudmFsdWU7XHJcblxyXG4gICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX0NMT1NFLmxlbmd0aCk7IC8vIHRvIGRlbGV0ZSBcIj5cIiB0b29cclxuXHJcbiAgICAgIHRoaXMuSW5pdElubmVyT2JqZWN0cyh4bWxQYXJzZXIpO1xyXG5cclxuICAgICAgaWYgKHVzZXJWYWx1ZSAhPT0gbnVsbClcclxuICAgICAgICB0aGlzLkluaXRVc2VyRGF0YSh0YXNrUmVmLCB1c2VyVmFsdWUpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZygnaW4gRXZlbnQuRmlsbERhdGEoKSBvdXQgb2Ygc3RyaW5nIGJvdW5kcycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBJbml0SW5uZXJPYmplY3RzKHhtbFBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICBsZXQgbmV4dFRhZzogc3RyaW5nID0geG1sUGFyc2VyLmdldE5leHRUYWcoKTtcclxuICAgIHN3aXRjaCAobmV4dFRhZykge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19UQUdfVEFTS0RFRklOSVRJT05JRF9FTlRSWTpcclxuICAgICAgICBsZXQgeG1sQnVmZmVyOiBzdHJpbmcgPSB4bWxQYXJzZXIuUmVhZFRvRW5kT2ZDdXJyZW50RWxlbWVudCgpO1xyXG4gICAgICAgIHRoaXMuSW5pdFRhc2tEZWZpbml0aW9uSWQoeG1sQnVmZmVyKTtcclxuXHJcbiAgICAgICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHhtbFBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihDb25zdEludGVyZmFjZS5NR19UQUdfRVZFTlQgKyBYTUxDb25zdGFudHMuVEFHX0NMT1NFLCB4bWxQYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgICAgIHhtbFBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIChDb25zdEludGVyZmFjZS5NR19UQUdfRVZFTlQgKyBYTUxDb25zdGFudHMuVEFHX0NMT1NFKS5sZW5ndGgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE1ha2UgaW5pdGlhbGl6YXRpb24gb2YgcHJpdmF0ZSBlbGVtZW50cyBieSBmb3VuZCB0b2tlbnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidG9rZW5zVmVjdG9yXCI+Zm91bmQgdG9rZW5zLCB3aGljaCBjb25zaXN0IGF0dHJpYnV0ZS92YWx1ZSBvZiBldmVyeSBmb3VuZGVsZW1lbnQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0RWxlbWVudHModG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4sIHRhc2tSZWY6IFRhc2tCYXNlLCByZWZVc2VyVmFsdWU6IFJlZlBhcmFtPHN0cmluZz4pOiB2b2lkIHtcclxuICAgIGxldCBtb2RpZmllcjogTW9kaWZpZXJzID0gTW9kaWZpZXJzLk1PRElGSUVSX05PTkU7XHJcbiAgICBsZXQga2V5Q29kZTogbnVtYmVyID0gLTE7XHJcbiAgICByZWZVc2VyVmFsdWUudmFsdWUgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSAodG9rZW5zVmVjdG9yLmdldF9JdGVtKGopKTtcclxuICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSAodG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FVkVOVFRZUEU6XHJcbiAgICAgICAgICB0aGlzLl90eXBlID0gdmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBTeXN0ZW18SW50ZXJuYWx8VXNlcnxUaW1lcnxFeHByZXNzaW9ufFJlY29tcHV0ZVxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9NT0RJRklFUjpcclxuICAgICAgICAgIG1vZGlmaWVyID0gPE1vZGlmaWVycz52YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIEFsdHxDdHJsfFNoaWZ0fE5vbmVcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU5URVJOQUxFVkVOVDpcclxuICAgICAgICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWUNPREU6XHJcbiAgICAgICAgICBrZXlDb2RlID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU0VDT05EUzpcclxuICAgICAgICAgIHRoaXMuX3NlY29uZHMgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfRVhQOlxyXG4gICAgICAgICAgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgICAgICAgICB0aGlzLkV4cCA9IHRhc2tSZWYuZ2V0RXhwQnlJZChYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRk9SQ0VfRVhJVDpcclxuICAgICAgICAgIHRoaXMuX2ZvcmNlRXhpdCA9IDxGb3JjZUV4aXQ+dmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVTQzpcclxuICAgICAgICAgIHRoaXMuX3VzZXJFdnREZXNjID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QVUJMSUM6XHJcbiAgICAgICAgICB0aGlzLlB1YmxpY05hbWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1BBUkFNUzpcclxuICAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QQVJfQVRUUlM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbUF0dHJzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFOlxyXG4gICAgICAgICAgbGV0IHBhcmFtU3RyOiBzdHJpbmcgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgdGhpcy5fcGFyYW1WYWxzID0gbmV3IEFycmF5KHRoaXMuX3BhcmFtZXRlcnMpO1xyXG4gICAgICAgICAgLy8gcHV0IHRoZSBwYXJhbVZhbHMgaW4gcGxhY2VcclxuICAgICAgICAgIHRoaXMucGFyc2VQYXJhbVZhbChwYXJhbVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTlVMTFM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbU51bGxzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVNFUjpcclxuICAgICAgICAgIHJlZlVzZXJWYWx1ZS52YWx1ZSA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gVVNFUiBldmVudFxyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTkFNRTpcclxuICAgICAgICAgIHRoaXMuc2V0VXNlckRlZmluZWRGdW5jTmFtZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU1JfREVGX0ZVQ19SRVRfRVhQX0lEOlxyXG4gICAgICAgICAgdGhpcy5fcmV0dXJuRXhwID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU1JfREVGX0ZVQ19SRVRfRVhQX0FUVFI6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KCdUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBFdmVudCBjbGFzcy4gSW5zZXJ0IGNhc2UgdG8gRXZlbnQuaW5pdEVsZW1lbnRzIGZvciB7MH0nLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU0pXHJcbiAgICAgIHRoaXMua2JkSXRtID0gbmV3IEtleWJvYXJkSXRlbShrZXlDb2RlLCBtb2RpZmllcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFBlcmZvcm0gdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgZnJvbSB0aGUgXCJ1c2VyXCIgYXR0cmlidXRlIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tSZWZcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgSW5pdFVzZXJEYXRhKHRhc2tSZWY6IFRhc2tCYXNlLCB1c2VyVmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGNvbW1hOiBudW1iZXIgPSB1c2VyVmFsdWUuaW5kZXhPZignLCcpO1xyXG4gICAgaWYgKGNvbW1hID4gLTEpIHtcclxuICAgICAgbGV0IHVlVGFza0lkOiBzdHJpbmcgPSB1c2VyVmFsdWUuc3Vic3RyKDAsIGNvbW1hKTtcclxuICAgICAgaWYgKHRhc2tSZWYgIT09IG51bGwpXHJcbiAgICAgICAgdWVUYXNrSWQgPSB0YXNrUmVmLlRhc2tTZXJ2aWNlLkdldEV2ZW50VGFza0lkKHVlVGFza0lkKTtcclxuXHJcbiAgICAgIGxldCB1ZVRhc2s6IFRhc2tCYXNlID0gPFRhc2tCYXNlPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh1ZVRhc2tJZCk7XHJcblxyXG4gICAgICBsZXQgdWVJZHg6IG51bWJlciA9IFhtbFBhcnNlci5nZXRJbnQodXNlclZhbHVlLnN1YnN0cihjb21tYSArIDEpKTtcclxuXHJcbiAgICAgIGlmICh1ZVRhc2sgIT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLlVzZXJFdnQgPSB1ZVRhc2suZ2V0VXNlckV2ZW50KHVlSWR4KTtcclxuICAgICAgICBpZiAodGhpcy5Vc2VyRXZ0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oJ2luIEV2ZW50LmZpbGxEYXRhKCk6IHVzZXIgZXZlbnQgbm90IGZvdW5kLiB0YXNrIGlkID0gJyArIHVlVGFza0lkICtcclxuICAgICAgICAgICAgJywgdXNlciBldmVudCBpbmRleCA9ICcgKyB1ZUlkeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuVXNlckV2dFRhc2tUYWcgPSB1ZVRhc2tJZDtcclxuICAgICAgICB0aGlzLl91c2VyRXZ0SWR4ID0gdWVJZHg7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhlIHRhc2sgaGFzbid0IGJlZW4gZm91bmQsIGl0IG5vdCBwYXJzZWQsIHlldFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlVzZXJFdnRUYXNrVGFnID0gdWVUYXNrSWQ7XHJcbiAgICAgICAgdGhpcy5fdXNlckV2dElkeCA9IHVlSWR4O1xyXG4gICAgICAgIHRoaXMuVXNlckV2dCA9IG51bGw7IC8vIGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQgb24gdGhpcyBzdGVwXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdFRhc2tEZWZpbml0aW9uSWQoeG1sQnVmZmVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBoYW5kbGVyOiBUYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyID0gbmV3IFRhc2tEZWZpbml0aW9uSWRUYWJsZVNheEhhbmRsZXIodGhpcy5TZXRUYXNrRGVmaW5pdGlvbklkKTtcclxuICAgIGhhbmRsZXIucGFyc2UoeG1sQnVmZmVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2FsbGJhY2sgZm9yIHRoZSBzYXggcGFyc2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrRGVmaW5pdGlvbklkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ4bWxJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGVmYXVsdFRhZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgU2V0VGFza0RlZmluaXRpb25JZCh0YXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmluZCB0YXNrIGZvciBVc2VyIEV2ZW50IGlmIGl0IHdhcyBub3QgZm91bmQgZHVyaW5nIHBhcnNpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbmRVc2VyRXZlbnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSICYmIHRoaXMuVXNlckV2dCA9PT0gbnVsbCkge1xyXG4gICAgICBsZXQgdWVUYXNrOiBUYXNrQmFzZSA9IDxUYXNrQmFzZT5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodGhpcy5Vc2VyRXZ0VGFza1RhZyk7XHJcbiAgICAgIGlmICh1ZVRhc2sgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5Vc2VyRXZ0ID0gdWVUYXNrLmdldFVzZXJFdmVudCh0aGlzLl91c2VyRXZ0SWR4KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLlVzZXJFdnQgPT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKE5TdHJpbmcuRm9ybWF0KCdpbiBFdmVudC5maW5kVXNlckV2ZW50KCk6IHVzZXIgZXZlbnQgbm90IGZvdW5kLiB0YXNrIGlkID0gezB9IGRvZXNuXFwndCBleGlzdCcsIHRoaXMuVXNlckV2dFRhc2tUYWcpKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29tcGFyZSB0aGlzIGV2ZW50IHRvIGFub3RoZXIgLSByZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGV2ZW50cyBhcmUgaWRlbnRpY2FsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBlcXVhbHMoZXZ0OiBFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGJFcXVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIGNvbXBhcmUgcmVmZXJlbmNlc1xyXG4gICAgaWYgKHRoaXMgPT09IGV2dClcclxuICAgICAgYkVxdWFsID0gdHJ1ZTtcclxuICAgIC8vIGRvIHNoYWxsb3cgY29tcGFyaXNpb25cclxuICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09IGV2dC5fdHlwZSkge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNOlxyXG4gICAgICAgICAgYkVxdWFsID0gdGhpcy5rYmRJdG0uZXF1YWxzKGV2dC5rYmRJdG0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTDpcclxuICAgICAgICAgIGJFcXVhbCA9ICh0aGlzLkludGVybmFsRXZlbnQgPT09IGV2dC5JbnRlcm5hbEV2ZW50KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVElNRVI6XHJcbiAgICAgICAgICBiRXF1YWwgPSAodGhpcy5fc2Vjb25kcyA9PT0gZXZ0Ll9zZWNvbmRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjpcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDOlxyXG4gICAgICAgICAgYkVxdWFsID0gKHRoaXMuRXhwID09PSBldnQuRXhwKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUjpcclxuICAgICAgICAgIGJFcXVhbCA9ICh0aGlzLlVzZXJFdnQgPT09IGV2dC5Vc2VyRXZ0KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUl9GVU5DOlxyXG4gICAgICAgICAgaWYgKHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWVIYXNoQ29kZSA9PT0gZXZ0LmdldFVzZXJEZWZpbmVkRnVuY05hbWVIYXNoQ29kZSgpKSB7XHJcbiAgICAgICAgICAgIGlmIChOU3RyaW5nLkVxdWFscyhldnQuZ2V0VXNlckRlZmluZWRGdW5jTmFtZSgpLCB0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lLCB0cnVlKSlcclxuICAgICAgICAgICAgICBiRXF1YWwgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBiRXF1YWwgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRm9yIGludGVybmFsIGV2ZW50cywgY29tcGFyZSB0aGUgaW50ZXJuYWwgbmFtZXNcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1BVQkxJQyB8fCBldnQuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDKSB7XHJcbiAgICAgIGxldCBuYW1lMTogU3RyaW5nID0gbnVsbDtcclxuICAgICAgbGV0IG5hbWUyOiBTdHJpbmcgPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5fdHlwZSAhPT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSICYmIGV2dC5fdHlwZSAhPT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSKVxyXG4gICAgICAgIGJFcXVhbCA9IGZhbHNlO1xyXG4gICAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1BVQkxJQykge1xyXG4gICAgICAgIG5hbWUxID0gdGhpcy5QdWJsaWNOYW1lO1xyXG4gICAgICAgIG5hbWUyID0gZXZ0LmdldFVzZXJFdmVudCgpLlB1YmxpY05hbWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmFtZTEgPSBldnQuUHVibGljTmFtZTtcclxuICAgICAgICBuYW1lMiA9IHRoaXMuZ2V0VXNlckV2ZW50KCkuUHVibGljTmFtZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmFtZTEgPT09IG51bGwgfHwgbmFtZTIgPT09IG51bGwpXHJcbiAgICAgICAgYkVxdWFsID0gZmFsc2U7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBiRXF1YWwgPSAobmFtZTEgPT09IG5hbWUyKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCAmJiBldnQuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKSB7XHJcbiAgICAgIGlmIChMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKSAhPT0gbnVsbCAmJiAoQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuZ2V0TWF0Y2hpbmdBY3Rpb24oZXZ0LmdldEtiZEl0bSgpKSkgPT09IHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkpXHJcbiAgICAgICAgYkVxdWFsID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSICYmIGV2dC5fdHlwZSAhPT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSKSB7XHJcbiAgICAgIC8vIGJlZm9yZSB1c2luZyB0aGUgdXNlciBldmVudCwgY2hlY2sgdGhhdCBpdCBpcyB2YWxpZFxyXG4gICAgICB0aGlzLmZpbmRVc2VyRXZlbnQoKTtcclxuXHJcbiAgICAgIC8vIGlmIG9uZSBldmVudCBvZiB0aGUgdHdvIGlzIGEgdXNlciBldmVudCBhbmQgdGhlIG90aGVyIGlzbid0IHRoZW5cclxuICAgICAgLy8gY29tcGFyZSB0aGUgdHJpZ2dlciBvZiB0aGUgdXNlciBldmVudCB0byB0aGUgbm9uLXVzZXIgZXZlbnRcclxuICAgICAgYkVxdWFsID0gdGhpcy5Vc2VyRXZ0LmVxdWFscyhldnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJFcXVhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGludGVybmFsIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIHNldFB1YmxpY05hbWUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBGb3IgYSBydW50aW1lIGludGVybmFsIGV2ZW50IC0gY2FsY3VsYXRlIHRoZSBpbnRlcm5hbCBuYW1lLlxyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDICYmIHRoaXMuRXhwICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuUHVibGljTmFtZSA9IChhd2FpdCB0aGlzLkV4cC5ldmFsdWF0ZVdpdGhSZXNMZW5ndGgoMjU1KSkubWdWYWw7XHJcbiAgICAgIGlmICh0aGlzLlB1YmxpY05hbWUgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5QdWJsaWNOYW1lID0gU3RyVXRpbC5ydHJpbSh0aGlzLlB1YmxpY05hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhbiBJbnRlcm5hbCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb2RlXCI+dGhlIGNvZGUgb2YgdGhlIGludGVybmFsIGV2ZW50IDwvcGFyYW0+XHJcbiAgc2V0SW50ZXJuYWwoY29kZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTDtcclxuICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IGNvZGU7XHJcblxyXG4gICAgLy8gTUdfQUNUX0hJVC9NR19BQ1RfQ1RSTF9ISVQgYXJlIGNhdXNlZCBieSBtb3VzZSBjbGljay4gSW4gdGhpcyBjYXNlXHJcbiAgICAvLyB0aW1lIG9mIGxhc3QgdXNlciBhY3Rpb24gZm9yIElETEUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlLWV2YWx1YXRlZC5cclxuICAgIGlmIChjb2RlID09PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUIHx8IGNvZGUgPT09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVClcclxuICAgICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkxhc3RBY3Rpb25UaW1lID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYW4gRXhwcmVzc2lvbiBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgZXhwcmVzc2lvbiBvYmplY3QgPC9wYXJhbT5cclxuICBzZXRFeHByZXNzaW9uKGV4cFJlZjogRXhwcmVzc2lvbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjtcclxuICAgIHRoaXMuRXhwID0gZXhwUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBFeHByZXNzaW9uIG9mIHRoZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RXhwcmVzc2lvbigpOiBFeHByZXNzaW9uIHtcclxuICAgIHJldHVybiB0aGlzLkV4cDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgVXNlckV2ZW50IGRlc2NyaXB0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGdldFVzckV2bnREZXNjKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuVXNlckV2dCAhPT0gbnVsbCkgPyB0aGlzLlVzZXJFdnQuX3VzZXJFdnREZXNjIDogdGhpcy5fdXNlckV2dERlc2M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgU3lzdGVtIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImtleWJvYXJkSXRlbVwiPnRoZSBrZXlib2FyZCBpdGVtIG9iamVjdCA8L3BhcmFtPlxyXG4gIHNldFN5c3RlbShrZXlib2FyZEl0ZW06IEtleWJvYXJkSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNO1xyXG4gICAgdGhpcy5rYmRJdG0gPSBrZXlib2FyZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgU3lzdGVtIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImtleWJvYXJkSXRlbVwiPnRoZSBrZXlib2FyZCBpdGVtIG9iamVjdCA8L3BhcmFtPlxyXG4gIHNldEtleWJvYXJkSXRlbShrZXlib2FyZEl0ZW06IEtleWJvYXJkSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5rYmRJdG0gPSBrZXlib2FyZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHR5cGUgcmV0dXJucyBTeXN0ZW18SW50ZXJuYWx8VXNlcnxUaW1lcnxFeHByZXNzaW9ufFJlY29tcHV0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHR5cGUgcmVjZWl2ZXMgU3lzdGVtfEludGVybmFsfFVzZXJ8VGltZXJ8RXhwcmVzc2lvbnxSZWNvbXB1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFR5cGUoYVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IGFUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBpbnRlcm5hbCBldmVudCBjb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IGludCBpcyB0aGUgaW50ZXJuYWwgZXZlbnQgY29kZSA8L3JldHVybnM+XHJcbiAgZ2V0SW50ZXJuYWxDb2RlKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTClcclxuICAgICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxFdmVudDtcclxuICAgIHJldHVybiBJbnQzMi5NaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGtleWJvYXJkIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEtiZEl0bSgpOiBLZXlib2FyZEl0ZW0ge1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKVxyXG4gICAgICByZXR1cm4gdGhpcy5rYmRJdG07XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGtleWJvYXJkIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEtiZEl0bUFsd2F5cygpOiBLZXlib2FyZEl0ZW0ge1xyXG4gICAgcmV0dXJuIHRoaXMua2JkSXRtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBmb3Igbm9uIGRhdGEgZXZlbnRzIG9yIGRhdGEgZXZlbnRzIHdoaWNoIHRoZWlyIGV4cHJlc3Npb25cclxuICAvLy8gICBldmFsdWF0ZXMgdG8gdHJ1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgZGF0YUV2ZW50SXNUcnVlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT04gJiZcclxuICAgICAgISh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgdGhpcy5nZXRVc2VyRXZlbnRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTikpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUilcclxuICAgICAgcmV0dXJuIERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKGF3YWl0IHRoaXMuRXhwLmV2YWx1YXRlV2l0aFJlc3VsdFR5cGVBbmRMZW5ndGgoU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOLCAwKSk7XHJcbiAgICByZXR1cm4gRGlzcGxheUNvbnZlcnRvci50b0Jvb2xlYW4oYXdhaXQgdGhpcy5Vc2VyRXZ0LmdldEV4cHJlc3Npb24oKS5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiwgMCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbnVtYmVyIG9mIHNlY29uZHMgKGZvciB0aW1lciBldmVudHMpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kcztcclxuICB9XHJcblxyXG4gIGdldEJya0xldmVsKCk6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcj86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMShmbG93TW9uaXRvcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudCBub3QgZm9yIEZsb3cgTW9uaXRvcmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbG93TW9uaXRvclwiPmlzIGl0IG5lZWRlZCBmb3IgRmxvdyBNb25pdG9yaW5nIHVzYWdlIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8xKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBsZXZlbDogc3RyaW5nID0gJyc7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMOlxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5JbnRlcm5hbEV2ZW50KSB7XHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1BSRUZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1BSRUZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1BSRUZJWDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19TVUZGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19TVUZGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19TVUZGSVg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1BSRUZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfUFJFRklYO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfU1VGRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1JFQ19TVUZGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1NVRkZJWDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9QUkVGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9QUkVGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9QUkVGSVggKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfU1VGRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfU1VGRklYICsgJ18nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1ZFUklGSUNBVElPTl9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1ZFUklGSUNBVElPTiArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkFSSUFCTEU6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVkFSSUFCTEVfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVkFSSUFCTEUgKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9JTlRFUk5BTF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX0lOVEVSTkFMICsgJ18nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV2ZWwgKz0gRXZlbnQuZ2V0SW50ZXJuYWxFdnREZXNjcmlwdGlvbih0aGlzLkludGVybmFsRXZlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTTpcclxuICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfU1lTVEVNX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfU1lTVEVNICsgJ18nO1xyXG4gICAgICAgIGxldmVsICs9IHRoaXMuZ2V0S2V5Ym9hcmRJdGVtU3RyaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVElNRVI6XHJcbiAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX1RJTUVSX0ZNICsgJyAnICsgdGhpcy5zZWNvbmRzMlN0cmluZygpIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfVElNRVIgKyAnXycgKyB0aGlzLnNlY29uZHMyU3RyaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjpcclxuICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfRVhQUkVTU0lPTl9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX0VYUFJFU1NJT04gKyAnXycgKyB0aGlzLkV4cC5nZXRJZCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVI6XHJcbiAgICAgICAgbGV2ZWwgPSAoZmxvd01vbml0b3IgPyAoQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfVVNFUl9GTSArICc6ICcpIDogKENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX1VTRVIgKyAnXycpKSArICh0aGlzLlVzZXJFdnQgIT0gbnVsbCA/IHRoaXMuVXNlckV2dC5fdXNlckV2dERlc2MgOiB0aGlzLl91c2VyRXZ0RGVzYyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUl9GVU5DOlxyXG4gICAgICAgIGxldmVsID0gKGZsb3dNb25pdG9yID8gKENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9VU0VSX0ZVTkNUSU9OX0ZNICsgJzonKSA6IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVVNFUl9GVU5DVElPTiArICdfJykpICsgdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbGV2ZWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlcm5hbCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBkZXNjcmlwdGlvbiBvZiB0aGUgZXZlbnQgPC9yZXR1cm5zPlxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW50ZXJuYWxFdnREZXNjcmlwdGlvbihpbnRlcm5hbEV2ZW50Q29kZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgc3dpdGNoIChpbnRlcm5hbEV2ZW50Q29kZSkge1xyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BQk9VVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdBYm91dCBNYWdpYyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BQ1RJT05fTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdBY3Rpb24gTGlzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BRERfSFlQRVJMSU5LOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BTElHTl9MRUZUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0xlZnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUxJR05fUklHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUmlnaHQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVBQTF9QUk9QRVJUSUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BUFBMSUNBVElPTlM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQXBwbGljYXRpb25zJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FQUExJQ0FUSU9OU19MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0FwcGxpY2F0aW9ucyBMaXN0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FUVEFDSF9UT19UQUJMRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdBdHRhY2ggdG8gVGFibGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVVUSE9SSVpFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0F1dGhvcml6ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHRkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JlZ2luIEZpZWxkJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9CRUdGT1JNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JlZ2luIEZvcm0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0JFR0xJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQmVnaW4gTGluZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdCZWdpbiBOZXh0IExpbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0JFR1BBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQmVnaW4gUGFnZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfQkVHTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdCZWdpbiBSb3cnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1BBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQmVnaW4gU2NyZWVuJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9CRUdUQkw6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQmVnaW4gdGFibGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQk9UVE9NOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JvdHRvbSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9CVUxMRVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQnVsbGV0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JVVFRPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdCdXR0b24gUHJlc3MnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0FOQ0VMOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NhbmNlbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9RVUlUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1F1aXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0VOVEVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NlbnRlcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DSEVDS19TWU5UQVg6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2hlY2sgU3ludGF4JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NIRUNLX1RPX0VORDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDaGVjayB0byBFbmQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xFQVJfVEVNUExBVEU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2xlYXIgVGVtcGxhdGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xFQVJfVkFMVUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2xlYXIgVmFsdWUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xPU0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2xvc2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUNUX0NMT1NFX0FQUEw6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2xvc2UgQXBwbGljYXRpb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTU1VTklDQVRJT05TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbW11bmljYXRpb25zJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTVBPTkVOVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29tcG9uZW50cyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb250cm9sIEhpdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT05UUk9MX05BTUVfTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb250cm9sIE5hbWUgTGlzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTElQX0NPUFk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29weSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT1BZX0xBWU9VVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb3B5IExheW91dCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT1BZX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29weSBTdWJ0cmVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NSRUxJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIExpbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JFTElORV9BQk9WRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgTGluZSBBYm92ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DUkVBVEVfUEFSRU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NyZWF0ZSBQYXJlbnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX0NSRUFURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgUmVjb3Jkcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DUkVBVEVfU1VCVEFTSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgU3VidGFzayc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DUk9TU19SRUZFUkVOQ0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3Jvc3MgUmVmZXJlbmNlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NVVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDdXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREJfVEFCTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9EQk1TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RCTVMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRERGX01BS0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRERGIE1ha2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREFUQUJBU0VTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RhdGFiYXNlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUZBVUxUX0xBWU9VVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEZWZhdWx0IExheW91dCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUZJTkVfRVhQUkVTU0lPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEZWZpbmUgRXhwcmVzc2lvbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfREVMQ1VSQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3VycmVudCBDaGFyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9ERUxQUlZDSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmV2aW91cyBDaGFyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RFTEVURV9IWVBFUkxJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRGVsZXRlIEh5cGVybGluayc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUxMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSBMaW5lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RFTEVURV9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSBTdWJ0cmVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX0NPUFlGTEQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRGl0dG8nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRElTUExBWV9SRUZSRVNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Rpc3BsYXkgUmVmcmVzaCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRElUX01BSU5fRk9STTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFZGl0IE1haW4gRm9ybSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5ERkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0VuZCBGaWVsZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5ERk9STTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgRm9ybSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5ETElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgTGluZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5EUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgUGFnZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfRU5ETElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgUm93JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9FTkRQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0VuZCBTY3JlZW4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0VORFRCTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgVGFibGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRU5WSVJPTk1FTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRW52aXJvbm1lbnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhFQ1VURV9QUk9HUkFNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V4ZWN1dGUgUHJvZ3JhbSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWEVDVVRFX1JFUE9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFeGVjdXRlIFJlcG9ydCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWElUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V4aXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhJVF9TWVNURU06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXhpdCBTeXN0ZW0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhQT1JUX0lNUE9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFeHBvcnQvSW1wb3J0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYUFJFU1NJT05fUlVMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXhwcmVzc2lvbiBydWxlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWFRFUk5BTF9FRElUT1I6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXh0ZXJuYWwgRWRpdG9yJztcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWFRfRVZFTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXh0ZXJuYWwgRXZlbnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRk9STVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRm9ybXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRlJPTV9WQUxVRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdGcm9tIFZhbHVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZVTkNUSU9OX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRnVuY3Rpb24gTGlzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9HRU5FUkFURV9GT1JNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0dlbmVyYXRlIEZvcm0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfR0VORVJBVEVfUFJPR1JBTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHZW5lcmF0ZSBQcm9ncmFtJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dPX1RPX1RPUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHbyB0byBUb3AnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSF9DRU5URVJfT0ZfRk9STTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSFRNTF9TVFlMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSFRNTCBTdHlsZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSEVMUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdIZWxwJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hFTFBfU0NSRUVOUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdIZWxwIFNjcmVlbnMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSE9SSVpfQ0VOVEVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0hvcml6LiBDZW50ZXInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSV9PX0ZJTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1RhYmxlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9JTkRFTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSW5kZW50JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0lOU0VSVF9PQkpFQ1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSW5zZXJ0IE9iamVjdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9KVU1QX1RPX1JPVzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdKdW1wIHRvIFJvdyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9LRVlCT0FSRF9MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0tleWJvYXJkIExpc3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfS0VZQk9BUkRfTUFQUElORzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdLZXlib2FyZCBNYXBwaW5nJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0xBTkdVQUdFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdsYW5ndWFnZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX1NFQVJDSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdMb2NhdGUgTmV4dCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVE9fTE9DQVRFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0xvY2F0ZSBhIFJlY29yZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0dJQ0FMUE5BTUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0dPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdMb2dvbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0lOR19IRUxQOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0hlbHAgVG9waWNzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLTlhUQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWFyayBOZXh0IENoYXInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUFSS19ORVhUX0xJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWFyayBOZXh0IExpbmUgTUxFJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLUFJWQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWFyayBQcmV2aW91cyBDaGFyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNYXJrIFByZXZpb3VzIExpbmUgTUxFJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01BUktfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX01BUktUT0JFRzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNYXJrIFRvIEJlZ2lubmluZyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1RPRU5EOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01hcmsgVG8gRW5kJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01BWElNVU1fSEVJR0hUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01heGltdW0gSGVpZ2h0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01BWElNVU1fV0lEVEg6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWF4aW11bSBXaWR0aCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NRU5VX0JBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNZW51IEJhcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NRU5VUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUlOSU1VTV9IRUlHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWluaW11bSBIZWlnaHQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUlOSU1VTV9XSURUSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNaW5pbXVtIFdpZHRoJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19NT0RJRlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTW9kaWZ5IFJlY29yZHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTU9OSVRPUl9ERUJVR0dFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNb25pdG9yL0RlYnVnZ2VyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PVkVfRU5UUlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTW92ZSBFbnRyeSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NT1ZFX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTW92ZSBTdWJ0cmVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX05VTExfU0VUVElOR1M6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTlVMTCBTZXR0aW5ncyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUQ0hBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdOZXh0IENoYXInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX05YVExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTmV4dCBMaW5lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9OWFRQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05leHQgUGFnZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdOZXh0IFJvdyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfTlhUUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdOZXh0IFNjcmVlbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUVEFCOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05leHQgVGFiJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9OWFRXT1JEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05leHQgV29yZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9OT1JNQUw6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTm9ybWFsJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09LOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ09LJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09MRTI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnT0xFMic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PUEVOX0FQUExJQ0FUSU9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ09wZW4gQXBwbGljYXRpb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfT1ZFUldSSVRFX0VOVFJZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ092ZXJ3cml0ZSBFbnRyeSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PVkVSV1JJVEVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdPdmVyd3JpdGUgU3VidHJlZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUEQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUFBEJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBR0VfRk9PVEVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1BhZ2UgRm9vdGVyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBR0VfSEVBREVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1BhZ2UgSGVhZGVyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMSVBfUEFTVEU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUGFzdGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUEFTVEVfTElOSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQYXN0ZSBMaW5rJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBU1RFX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUGFzdGUgU3VidHJlZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfUFJWQ0hBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmV2aW91cyBDaGFyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByZXZpb3VzIExpbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1BSVlBBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJldmlvdXMgUGFnZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmV2aW91cyBSb3cnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX1BSVlBBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJldmlvdXMgU2NyZWVuJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZUQUI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJldmlvdXMgVGFiJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZXT1JEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByZXZpb3VzIFdvcmQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJJTlRfQVRUUklCVVRFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmludCBBdHRyaWJ1dGVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5URVJfU0VUVVA6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJpbnRlciBTZXR1cCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUklOVEVSUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmludGVycyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUk9HUkFNUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcm9ncmFtcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUk9QRVJUSUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1Byb3BlcnRpZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX1FVRVJZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1F1ZXJ5IFJlY29yZHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX1JBTkdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JhbmdlIG9mIFJlY29yZHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRfUkVGUkVTSF9SRUNPUkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUmVjb3JkIEZsdXNoJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFRElSRUNUX0ZJTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JlZGlyZWN0IEZpbGVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFRFJBV19MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUEVBVF9FTlRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSZXBlYXQgRW50cnknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVQRUFUX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUmVwZWF0IFN1YnRyZWUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVQT1JUX0dFTkVSQVRPUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVTVE9SRV9ERUZBVUxUUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSZXN0b3JlIERlZmF1bHRzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFVFVSTl9UT19UUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SSUdIVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSaWdodCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SSUdIVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JJR0hUU19MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JpZ2h0cyBMaXN0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9BU1NJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU1FMIEFzc2lzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQ09MVU1OUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTUUwgQ29sdW1ucyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQ09NTUFORDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTUUwgQ29tbWFuZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfRkxJUF9ERVNDOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NRTCBGbGlwIERlc2MuJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9LRVlXT1JEUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTUUwgS2V5d29yZHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX09QRVJBVE9SUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTUUwgT3BlcmF0b3JzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9UQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU1FMIFRhYmxlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfV0hFUkVfQ0xBVVNFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9SRUZSRVNIX1NDUkVFTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTY3JlZW4gUmVmcmVzaCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRUNSRVRfTkFNRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU2VjcmV0IE5hbWVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NFTEVDVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTZWxlY3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX01BUktBTEw6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU2VsZWN0IEFsbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRVJWRVJTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRVJWSUNFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRfRURUX05VTEw6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU2V0IHRvIE5VTEwnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hFTExfVE9fT1M6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU2hlbGwgdG8gT1MnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hPV19FWFBSRVNTSU9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1Nob3cgRXhwcmVzc2lvbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TSE9XX0ZVTExfTEFZT1VUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TSFJJTktfVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU09SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTb3J0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NPUlRfUkVDT1JEUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTb3J0IFJlY29yZHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFCTEVfTE9DQVRFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1RhYmxlIExvY2F0ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQUJMRV9MT0NBVEVfTkVYVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdUYWJsZSBMb2NhdGUgTmV4dCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfQ09OVFJPTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19FVkVOVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RPX1ZBTFVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1RvIFZhbHVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RPT0xLSVRfUlVOVElNRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdUb29sa2l0L1J1bnRpbWUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVE9QOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1RvcCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UWVBFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1VORE86XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVW5kbyBFZGl0aW5nJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VOSU5ERU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1VuaW5kZW50JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VQREFURV9MSU5LOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8yOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8zOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl80OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl81OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl82OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl83OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl84OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl85OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xMDpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTE6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzEyOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xMzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTQ6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE1OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xNjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTc6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE4OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xOTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMjA6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVXNlciBBY3Rpb24gJyArIChpbnRlcm5hbEV2ZW50Q29kZSAtIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xICsgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0dST1VQUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9JRFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVXNlciBJRHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVl9DRU5URVJfT0ZfRk9STTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDZW50ZXIgb2YgRm9ybSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WRVJUSUNBTF9DRU5URVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVmVydGljYWwgQ2VudGVyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZJRVdfQllfS0VZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ZpZXcgYnkgS2V5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX1JFRlJFU0hfVklFVzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdWaWV3IFJlZnJlc2gnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklSVFVBTF9WQVJJQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVmFyaWFibGVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZJU1VBTF9DT05ORUNUSU9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1Zpc3VhbCBDb25uZWN0aW9uJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hJVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdXaW5kb3cgSGl0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dJTk1PVkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnV2luZG93IFJlcG9zaXRpb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0lOU0laRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdXaW5kb3cgUmVzaXplJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1pPT006XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnWm9vbSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0NLSU5HX0RFVEFJTFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTG9ja2luZyBEZXRhaWxzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0xPQ0tJTkdfQUJPUlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTG9ja2luZyBBYm9ydCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0NLSU5HX1JFVFJZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0xvY2tpbmcgUmV0cnknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0hFQ0tfT0JKRUNUX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2hlY2sgT2JqZWN0IExpc3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUlNfTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdVc2VycyBMaXN0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PREVMUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNb2RlbHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX0NMSUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NsaWNrJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9PTl9EQkxJQ0s6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRGJsQ2xpY2snO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQlJPV1NFUl9FU0M6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXNjJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JPTExCQUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JvbGxiYWNrJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VNUFRZX0RBVEFWSUVXOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0VtcHR5IERhdGF2aWV3JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfTU9ESUZZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbnRyb2wgTW9kaWZ5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5UX0RBVEE6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJpbnQgRGF0YSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QT1NUX1JFRlJFU0hfQllfUEFSRU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1Bvc3QgUmVmcmVzaCBieSBQYXJlbnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1dJVENIX1RPX09GRkxJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU3dpdGNoIFRvIE9mZmxpbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVU5BVkFJTEFCTEVfU0VSVkVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1VuYXZhaWxhYmxlIFNlcnZlcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT05URVhUX01FTlU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29udGV4dCBNZW51JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VOVEVSX1JPV19FRElUSU5HOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0VudGVyIFJvdyBFZGl0aW5nJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9fUFJPR19FWEVfUklHSFRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05vIFByb2dyYW0gRXhlY3V0aW9uIFJpZ2h0cyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJDTElFTlRfUk9VVEU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUm91dGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09MX1NPUlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29sdW1uIFNvcnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUk9XX0RBVEFfQ1VSUl9QQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0dldCBSb3dzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NVQkZPUk1fQ0xPU0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU3ViZm9ybSBDbG9zZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TVUJGT1JNX1JFRlJFU0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU3ViZm9ybSBSZWZyZXNoJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NVQkZPUk1fT1BFTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTdWJmb3JtIE9wZW4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09NUFVURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb21wdXRlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NBQ0hFX05FWFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR2V0IE5leHQgRGF0YSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DQUNIRV9QUkVWOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0dldCBQcmV2aW91cyBEYXRhJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZFVENIX0RBVEFfQ09OVFJPTF9WQUxVRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRmV0Y2ggZGF0YSBjb250cm9sIHZhbHVlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9JTkRFWF9DSEFOR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSW5kZXggQ2hhbmdlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0eXBlIG9mIFVzZXIgRXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdHlwZSBvZiB1c2VyIGV2ZW50IDwvcmV0dXJucz5cclxuICBnZXRVc2VyRXZlbnRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5Vc2VyRXZ0ID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9OT1RJTklURUQ7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuVXNlckV2dC5nZXRUeXBlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHNlY29uZHMgb2YgdGhlIHVzZXIgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFNlY29uZHNPZlVzZXJFdmVudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuVXNlckV2dC5nZXRTZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB1c2VyIGV2ZW50IG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgdXNlciBldmVudCBvYmplY3QgPC9yZXR1cm5zPlxyXG4gIGdldFVzZXJFdmVudCgpOiBFdmVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5Vc2VyRXZ0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBrZXlib2FyZCBpdGVtICggZm9yIHN5c3RlbSBldmVudCApIGluIGZvcm0gb2Ygc3RyaW5nXHJcbiAgLy8vICAgZm9yIHN5c3RlbSBldmVudHMgT05MWVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRLZXlib2FyZEl0ZW1TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIGxldCBrYmk6IEtleWJvYXJkSXRlbSA9IHRoaXMuZ2V0S2JkSXRtKCk7XHJcbiAgICBpZiAoa2JpID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4ga2JpLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5zZXJ0IHRoZSBzZWNvbmRzIHRvIHRoZSBwaWN0dXJlIFwiSEg6TU06U1NcIiBmb3IgU1RPUkFHRV9BVFRSX1RJTUVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gZm9ybWF0ZWQgc3RyaW5nIG9mIHNlY29uZHNcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc2Vjb25kczJTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIGxldCB0aW1lOiBudW1iZXJbXSA9IG5ldyBBcnJheTxudW1iZXI+KDMpO1xyXG4gICAgbGV0IGJ1ZmZlcjogc3RyaW5nID0gJyc7XHJcbiAgICB0aW1lWzBdID0gTWF0aC5mbG9vcih0aGlzLl9zZWNvbmRzIC8gMzYwMCk7XHJcbiAgICB0aW1lWzFdID0gTWF0aC5mbG9vcigodGhpcy5fc2Vjb25kcyAtIHRpbWVbMF0gKiAzNjAwKSAvIDYwKTtcclxuICAgIHRpbWVbMl0gPSB0aGlzLl9zZWNvbmRzICUgNjA7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGltZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGltZVtpXSA9PT0gMClcclxuICAgICAgICBidWZmZXIgKz0gJzAwJztcclxuICAgICAgZWxzZSBpZiAodGltZVtpXSA8IDEwKVxyXG4gICAgICAgIGJ1ZmZlciArPSAoJzAnICsgdGltZVtpXSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBidWZmZXIgKz0gdGltZVtpXTtcclxuICAgICAgLy8gZG9uJ3QgaW5zZXJ0IGRlbGltaXRlciBhZnRlciB0aGUgbGFzdCBjYXNlXHJcbiAgICAgIGlmIChpIDwgdGltZS5sZW5ndGggLSAxKVxyXG4gICAgICAgIGJ1ZmZlciArPSAnOic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnVmZmVyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZSB0aGUgcGFyYW1ldGVycyB2YWx1ZXMgZnJvbSB0aGUgdmFsdWUgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbHVlU3RyXCI+aW5kZXggb2YgdGhlIHBhcmFtIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcGFyYW1ldGVyIHZhbHVlIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHBhcnNlUGFyYW1WYWwodmFsdWVTdHI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRPZnM6IG51bWJlciA9IDAsIGVuZE9mcyA9IDAsIG5MZW4sIGo7XHJcbiAgICBsZXQgc0xlbjogc3RyaW5nLCBzVmFsdWUgPSBudWxsO1xyXG5cclxuICAgIC8vIGZpbmQgdGhlIHZhbHVlIGxvY2F0aW9uXHJcbiAgICBmb3IgKGogPSAwOyBqIDwgdGhpcy5fcGFyYW1ldGVyczsgaisrKSB7XHJcbiAgICAgIHN3aXRjaCAoPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSkge1xyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5TS0lQOlxyXG4gICAgICAgICAgc1ZhbHVlID0gJyc7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUjpcclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTUVNTzpcclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgICAgIGVuZE9mcyA9IHN0YXJ0T2ZzICsgNDtcclxuICAgICAgICAgIHNMZW4gPSB2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSk7XHJcbiAgICAgICAgICBuTGVuID0gTk51bWJlci5QYXJzZShzTGVuLCBOdW1iZXJTdHlsZXMuSGV4TnVtYmVyKTtcclxuICAgICAgICAgIHN0YXJ0T2ZzID0gZW5kT2ZzO1xyXG5cclxuICAgICAgICAgIC8vIFFDUiAxNjk5IGRlY29kZSB0aGUgcGFyYW1ldGVyIGZyb20gYmFzZTY0IGlmIG5lZWRlZFxyXG4gICAgICAgICAgaWYgKEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudC5HZXREZWJ1Z0xldmVsKCkgPiAxIHx8ICg8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCAoPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERSB8fCAoPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTUVNTykge1xyXG4gICAgICAgICAgICBpZiAoKG5MZW4gJiAweDgwMDApID4gMClcclxuICAgICAgICAgICAgLy8gcGFyc2Ugc3Bhbm5lZCByZWNvcmQgZW5jb2RlZCB0byBIZXhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbiBvZiB0aGUgcGFyYW1ldGVyIGRhdGFcclxuICAgICAgICAgICAgICBuTGVuID0gKG5MZW4gJiAweDdGRkYpO1xyXG4gICAgICAgICAgICAgIG5MZW4gKj0gMjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gcGFyc2UgdGhlIFN0cmluZ1xyXG4gICAgICAgICAgICAgIGxldCByZXM6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgICAgICAgIGVuZE9mcyArPSBSZWNvcmRVdGlscy5nZXRTcGFubmVkRmllbGQodmFsdWVTdHIsIG5MZW4sIHN0YXJ0T2ZzLCA8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdLCByZXMsIHRydWUpO1xyXG4gICAgICAgICAgICAgIHZhbHVlU3RyID0gcmVzLlRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbm9uIHNwYW5uZWQgcGFyYW1zXHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGVuZE9mcyA9IHN0YXJ0T2ZzICsgbkxlbjtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSB2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgobkxlbiAmIDB4ODAwMCkgPiAwKVxyXG4gICAgICAgICAgICAvLyBwYXJzZSBzcGFubmVkIHJlY29yZCBlbmNvZGVkIHRvIEhleFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuIG9mIHRoZSBwYXJhbWV0ZXIgZGF0YVxyXG4gICAgICAgICAgICAgIG5MZW4gPSAobkxlbiAmIDB4N0ZGRik7XHJcbiAgICAgICAgICAgICAgbkxlbiA9IE1hdGguZmxvb3IoKG5MZW4gKyAyKSAvIDMpICogNDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gcGFyc2UgdGhlIFN0cmluZ1xyXG4gICAgICAgICAgICAgIGxldCByZXM6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgICAgICAgIGVuZE9mcyArPSBSZWNvcmRVdGlscy5nZXRTcGFubmVkRmllbGQodmFsdWVTdHIsIG5MZW4sIHN0YXJ0T2ZzLCA8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdLCByZXMsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSByZXMuVG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIE1hdGguZmxvb3IoKG5MZW4gKyAyKSAvIDMpICogNDtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSBCYXNlNjQuZGVjb2RlKHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgICAvLyBRQ1IgMTY5OSBkZWNvZGUgdGhlIHBhcmFtZXRlciBmcm9tIGJhc2U2NCBpZiBuZWVkZWRcclxuICAgICAgICAgIGlmIChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0RGVidWdMZXZlbCgpID4gMSkge1xyXG4gICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSAqIDI7XHJcbiAgICAgICAgICAgIHNWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVuZE9mcyA9IHN0YXJ0T2ZzICsgKE1hdGguZmxvb3IoKEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSArIDIpIC8gMykgKiA0KTtcclxuICAgICAgICAgICAgc1ZhbHVlID0gQmFzZTY0LmRlY29kZVRvSGV4KHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46XHJcbiAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIDE7XHJcbiAgICAgICAgICBzVmFsdWUgPSB2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9wYXJhbVZhbHNbal0gPSBzVmFsdWU7XHJcbiAgICAgIHN0YXJ0T2ZzID0gZW5kT2ZzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVuZE9mcztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCB0aGUgbnVtYmVyIG9mIHBhcmFtc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBudW1iZXIgb2YgcGFyYW1zIDwvcmV0dXJucz5cclxuICBnZXRQYXJhbU51bSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNDb250cm9sSGVhZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZSgpID09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwgJiZcclxuICAgICAgKHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfUFJFRklYIHx8XHJcbiAgICAgICAgdGhpcy5nZXRJbnRlcm5hbENvZGUoKSA9PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9TVUZGSVggfHxcclxuICAgICAgICB0aGlzLmdldEludGVybmFsQ29kZSgpID09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTik7XHJcbiAgfVxyXG5cclxuICBpc1ZhcmlhYmxlSGVhZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZSgpID09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwgJiZcclxuICAgICAgdGhpcy5nZXRJbnRlcm5hbENvZGUoKSA9PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkFSSUFCTEU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEFwcGVuZHMgdGhlIGV2ZW50J3MgZGVzY3JpcHRpb24gdG8gdGhlIGdpdmVuIFN0cmluZ0J1aWxkZXIuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImJ1ZmZlclwiPlRoZSBidWZmZXIgdG8gd2hpY2ggdGhlIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBhcHBlbmRlZC48L3BhcmFtPlxyXG4gIHB1YmxpYyBBcHBlbmREZXNjcmlwdGlvbihidWZmZXI6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZChFdmVudC5nZXRJbnRlcm5hbEV2dERlc2NyaXB0aW9uKHRoaXMuSW50ZXJuYWxFdmVudCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTTpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKHRoaXMuZ2V0S2V5Ym9hcmRJdGVtU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVI6XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLmdldFVzckV2bnREZXNjKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVJfRlVOQzpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQodGhpcy5zZWNvbmRzMlN0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoJ0lEICcgKyB0aGlzLkV4cC5nZXRJZCgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKCd1bmtub3duIGV2ZW50IHR5cGUgJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJucyB3aGV0aGVyIHRoZSBpbnRlcm5hbCBldmVudCBjb2RlIGlzIGJldHdlZW4gMTAwMSAmIDEwMDhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBpc05ld0ludGVybmFsRXZlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5JbnRlcm5hbEV2ZW50ID49IDEwMDEgJiYgdGhpcy5JbnRlcm5hbEV2ZW50IDw9IDEwMDg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgZGVzY3JpcHRpb24gZm9yIG5ldyBpbnRlcm5hbCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldE5ld0ludGVybmFsRXZlbnREZXNjcmlwdGlvbigpOiBzdHJpbmcge1xyXG4gICAgbGV0IGV2ZW50RGVzYzogc3RyaW5nID0gTlN0cmluZy5FbXB0eTtcclxuICAgIHN3aXRjaCAodGhpcy5JbnRlcm5hbEV2ZW50KSB7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfUFJFRklYOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1BSRUZJWF9GTTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfU1VGRklYOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1NVRkZJWF9GTTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVg6XHJcbiAgICAgICAgZXZlbnREZXNjID0gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1JFQ19QUkVGSVhfRk07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfU1VGRklYOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfU1VGRklYX0ZNO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9QUkVGSVg6XHJcbiAgICAgICAgZXZlbnREZXNjID0gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfUFJFRklYX0ZNO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9TVUZGSVg6XHJcbiAgICAgICAgZXZlbnREZXNjID0gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfU1VGRklYX0ZNO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT046XHJcbiAgICAgICAgZXZlbnREZXNjID0gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfVkVSSUZJQ0FUSU9OX0ZNO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkFSSUFCTEU6XHJcbiAgICAgICAgZXZlbnREZXNjID0gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1ZBUklBQkxFX0ZNO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBldmVudERlc2M7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm4gdGhlIGRlc2NyaXB0aW9uIGZvciBuZXcgaW50ZXJuYWwgZXZlbnRzIG9yIHJldHVybiB0aGUgdHlwZSBpbiBzdHJpbmcgZm9ybWF0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgZ2V0RXZlbnRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICAvLyBGb3IgdGhlIG5ldyBpbnRlcm5hbCBldmVudHMsIHRoZXJlIGlzIG5vIHR5cGUgc28gaW5zdGVhZCBnZXQgdGhlIGRlc2NyaXB0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5pc05ld0ludGVybmFsRXZlbnQoKVxyXG4gICAgICA/IE5TdHJpbmcuVHJpbUVuZCh0aGlzLmdldE5ld0ludGVybmFsRXZlbnREZXNjcmlwdGlvbigpKVxyXG4gICAgICA6IHRoaXMuZ2V0RXZlbnRUeXBlU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybiB0aGUgdHlwZSBvZiBldmVudCBpbiBzdHJpbmcgZm9ybWF0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgZ2V0RXZlbnRUeXBlU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZXZlbnRUeXBlOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHRoaXMuZ2V0VHlwZSgpKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTDpcclxuICAgICAgICBldmVudFR5cGUgPSAnSW50ZXJuYWwgRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTTpcclxuICAgICAgICBldmVudFR5cGUgPSAnU3lzdGVtIEV2ZW50Oic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OOlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICdFeHByZXNzaW9uIEV2ZW50Oic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICBldmVudFR5cGUgPSAnVGltZXIgRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVI6XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJ1VzZXIgRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGV2ZW50VHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyBuYW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRVc2VyRGVmaW5lZEZ1bmNOYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZSA9IG5hbWU7XHJcbiAgICBsZXQgZnVuY3Rpb25OYW1lVXBwZXI6IHN0cmluZyA9IHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWUudG9VcHBlckNhc2UoKTtcclxuICAgIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWVIYXNoQ29kZSA9IEhhc2hVdGlscy5HZXRIYXNoQ29kZShmdW5jdGlvbk5hbWVVcHBlcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdXNlciBkZWZpbmVkIGZ1bmN0aW9uJ3MgbmFtZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VXNlckRlZmluZWRGdW5jTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWU7XHJcbiAgfVxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyBuYW1lJ3MgaGFzaCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHVzZXIgZGVmaW5lZCBmdW5jdGlvbidzIHJldHVybiBleHByZXNzaW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRVc2VyRGVmaW5lZEZ1bmNSZXRFeHAoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXR1cm5FeHA7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzZXRUaW1lc3RhbXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl90aW1lc3RhbXAgPSBFdmVudC5fbGFzdFRpbWVzdGFtcCsrO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGltZXN0YW1wKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZXN0YW1wO1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdCgne3tFdmVudDogezB9fX0nLCB0aGlzLmdldEJya0xldmVsKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=