qms-angular 1.1.41 → 1.1.43

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. package/bundles/qms-angular.umd.js +1569 -441
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/enum/data-type.enum.js +2 -1
  4. package/esm2015/lib/common/enum/process-classification.enum.js +6 -0
  5. package/esm2015/lib/common/qms-icon.const.js +116 -111
  6. package/esm2015/lib/common/themes.const.js +2 -2
  7. package/esm2015/lib/components/app-icon/icon-registry.service.js +5 -2
  8. package/esm2015/lib/components/related/common/video.const.js +3 -1
  9. package/esm2015/lib/components/related/content/related-content.component.js +2 -2
  10. package/esm2015/lib/components/related/list-other-related/list-related.component.js +5 -2
  11. package/esm2015/lib/components/related/model/popup-data.model.js +3 -1
  12. package/esm2015/lib/components/related/model/related-data.model.js +1 -1
  13. package/esm2015/lib/components/related/popup/related-popup.component.js +48 -32
  14. package/esm2015/lib/components/related/related.module.js +3 -2
  15. package/esm2015/lib/components/related/risk/analysis/analysis.component.js +2 -2
  16. package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +24 -4
  17. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +5 -4
  18. package/esm2015/lib/components/select-one/select-one.component.js +2 -2
  19. package/esm2015/lib/components/select-process-document/select-process-document.component.js +15 -11
  20. package/esm2015/lib/components/tree/model/tree-config.model.js +1 -1
  21. package/esm2015/lib/components/tree/tree.component.js +12 -4
  22. package/esm2015/lib/components/treeNew/model/tree-node.model.js +1 -1
  23. package/esm2015/lib/components/treeNew/model/tree.model.js +1 -1
  24. package/esm2015/lib/components/treeNew/tree.component.js +8 -4
  25. package/esm2015/lib/components/treeNew/tree.function.js +8 -4
  26. package/esm2015/lib/model/en.js +86 -2
  27. package/esm2015/lib/model/no.js +87 -3
  28. package/esm2015/lib/model/sv.js +437 -0
  29. package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +15 -14
  30. package/esm2015/lib/qms-ckeditor-components/common/functions/resource.function.js +207 -0
  31. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
  32. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-url.model.js +1 -1
  33. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +262 -29
  34. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +102 -36
  35. package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-imagemap.model.js +1 -1
  36. package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-video.model.js +16 -0
  37. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +39 -118
  38. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +10 -3
  39. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.js +7 -3
  40. package/esm2015/lib/services/translation-registry.service.js +7 -5
  41. package/fesm2015/qms-angular.js +1603 -503
  42. package/fesm2015/qms-angular.js.map +1 -1
  43. package/lib/common/enum/data-type.enum.d.ts +2 -1
  44. package/lib/common/enum/process-classification.enum.d.ts +4 -0
  45. package/lib/common/qms-icon.const.d.ts +1 -0
  46. package/lib/components/app-icon/icon-registry.service.d.ts +1 -0
  47. package/lib/components/related/common/video.const.d.ts +2 -0
  48. package/lib/components/related/content/related-content.component.d.ts +1 -1
  49. package/lib/components/related/list-other-related/list-related.component.d.ts +2 -2
  50. package/lib/components/related/model/popup-data.model.d.ts +3 -0
  51. package/lib/components/related/model/related-data.model.d.ts +1 -0
  52. package/lib/components/related/popup/related-popup.component.d.ts +7 -3
  53. package/lib/components/select-access-dialog/select-access-dialog.component.d.ts +3 -2
  54. package/lib/components/select-one/select-one.component.d.ts +1 -1
  55. package/lib/components/select-process-document/select-process-document.component.d.ts +5 -6
  56. package/lib/components/tree/model/tree-config.model.d.ts +1 -1
  57. package/lib/components/tree/tree.component.d.ts +1 -1
  58. package/lib/components/treeNew/model/tree-node.model.d.ts +1 -0
  59. package/lib/components/treeNew/model/tree.model.d.ts +1 -0
  60. package/lib/components/treeNew/tree.component.d.ts +5 -2
  61. package/lib/model/en.d.ts +84 -0
  62. package/lib/model/no.d.ts +84 -0
  63. package/lib/model/sv.d.ts +436 -0
  64. package/lib/qms-ckeditor-components/common/functions/common.function.d.ts +29 -10
  65. package/lib/qms-ckeditor-components/common/functions/resource.function.d.ts +194 -0
  66. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +3 -0
  67. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-url.model.d.ts +2 -0
  68. package/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.d.ts +13 -2
  69. package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +1 -0
  70. package/lib/qms-ckeditor-components/models/qms-ckeditor-imagemap.model.d.ts +1 -0
  71. package/lib/qms-ckeditor-components/models/qms-ckeditor-video.model.d.ts +10 -0
  72. package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +1 -2
  73. package/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.d.ts +2 -1
  74. package/lib/services/translation-registry.service.d.ts +1 -0
  75. package/package.json +1 -1
  76. package/qms-angular.metadata.json +1 -1
  77. package/src/assets/jointjs/scss/bpmn.scss +914 -906
  78. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  79. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  80. package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -1
  81. package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-find-and-replace/src/findandreplaceui.js +223 -223
  82. package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/no.po +21 -0
  83. package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/qmsCKEditorFullscreenPlugin.js +52 -50
  84. package/src/assets/qms-ckeditor-plugin/src/plugins/heading/headingui.js +115 -115
  85. package/src/assets/qms-ckeditor-plugin/src/plugins/heading/utils.js +42 -42
  86. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkcommand.js +1 -1
  87. package/src/assets/qms-ckeditor-plugin/src/plugins/media/mediaembedediting.js +281 -283
  88. package/src/assets/qms-ckeditor-plugin/src/plugins/media/theme/mediaembed.css +30 -30
  89. package/src/assets/qms-ckeditor-plugin/src/plugins/media/theme/mediaembedediting.css +57 -57
  90. package/src/assets/qms-ckeditor-plugin/src/plugins/table/theme/snippet.css +3877 -3876
  91. package/src/assets/qms-ckeditor-plugin/src/plugins/video/theme/video.css +17 -17
  92. package/src/assets/qms-ckeditor-plugin/src/plugins/video/theme/videoresize.css +33 -32
  93. package/src/assets/qms-ckeditor-plugin/src/plugins/video/video/videoediting.js +81 -75
  94. package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoresize/resizevideocommand.js +35 -35
  95. package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoresize/videoresizeediting.js +104 -92
  96. package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/browsevideodialogcommand.js +69 -25
  97. package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/uploadvideocommand.js +21 -21
  98. package/src/lib/components/related/popup/related-popup.component.scss +374 -350
  99. package/esm2015/lib/components/related/common/data-type.enum.js +0 -14
  100. package/esm2015/lib/components/select-one/common/data-type.enum.js +0 -14
  101. package/lib/components/related/common/data-type.enum.d.ts +0 -12
  102. package/lib/components/select-one/common/data-type.enum.d.ts +0 -12
@@ -25,6 +25,7 @@ import { QMSCKEditorTreeService } from "../../services/qms-ckeditor-tree.service
25
25
  import guidHelper from "../../common/helper/guidHelper";
26
26
  import { DocumentNodeType } from "../../../common/enum/document-node-type.enum";
27
27
  import { forkJoin } from "rxjs";
28
+ import { ProcessClassification } from "../../../common/enum/process-classification.enum";
28
29
  export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
29
30
  constructor(cdr, dialog, translate, linkService, commonService, treeService, selectProcessDocumentGlobalService, dialogRef, data) {
30
31
  super();
@@ -52,6 +53,7 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
52
53
  emailBody: new FormControl("", [Validators.required]),
53
54
  });
54
55
  this.anchorDocFormGroup = new FormGroup({
56
+ targetList: new FormControl(),
55
57
  anchorTitle: new FormControl("", [Validators.required]),
56
58
  anchorByName: new FormControl("", [Validators.required]),
57
59
  });
@@ -81,13 +83,29 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
81
83
  DocumentNodeType.LinkDocument,
82
84
  DocumentNodeType.ShortcutDocument
83
85
  ];
86
+ this.selectedTargetAnchorDocument = 0;
84
87
  this.selectedLinkType = data.typeId;
85
- this.selectedTarget = data.targetId;
86
88
  this.selectedProtocol = data.protocolId;
87
89
  this.url = data.url;
88
90
  this.advisoryTitle = data.title;
89
91
  this.edit = data.edit;
90
92
  this.editorContent = data.editorContent;
93
+ if (this.url.length && data.typeId == LinkType.url) {
94
+ this.selectedTarget = data.targetId;
95
+ this.selectedTargetAnchorDocument = data.defaultTargetNewWindow ? TargetType.new : TargetType.same;
96
+ }
97
+ else if (this.url.length && data.typeId == LinkType.anchorDocument) {
98
+ this.selectedTargetAnchorDocument = data.targetId;
99
+ this.selectedTarget = data.defaultTargetNewWindow ? TargetType.new : TargetType.same;
100
+ }
101
+ else if (data.defaultTargetNewWindow) {
102
+ this.selectedTarget = TargetType.new;
103
+ this.selectedTargetAnchorDocument = TargetType.new;
104
+ }
105
+ else {
106
+ this.selectedTarget = TargetType.same;
107
+ this.selectedTargetAnchorDocument = TargetType.same;
108
+ }
91
109
  }
92
110
  ngOnInit() {
93
111
  this.translate.getLanguageSubject$
@@ -291,39 +309,84 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
291
309
  dialogRef.componentInstance.onSearch.subscribe((keyword) => {
292
310
  if (!keyword || keyword.trim() === '')
293
311
  return;
294
- forkJoin([this.treeService.searchProcess(keyword), this.treeService.searchDocument(keyword)])
295
- .toPromise()
296
- .then(([process, document]) => {
297
- if (process && document) {
298
- const resultProcessSearch = process.map((x) => {
299
- return {
300
- id: x.entityId,
301
- itemNumberId: x.processNumber.toString(),
302
- itemName: x.name,
303
- itemType: DataType.process,
304
- status: x.status,
305
- statusName: x.approvalStatus,
306
- location: x.location,
307
- };
308
- });
309
- const resultDocumentSearch = document.documents.map((x) => {
310
- return {
311
- id: x.id.toString(),
312
- itemNumberId: x.id.toString(),
313
- itemName: x.name,
314
- itemType: DataType.document,
315
- status: 0,
316
- statusName: x.approvalStatus,
317
- location: x.location,
318
- };
319
- });
320
- const resulSearch = [...resultProcessSearch, ...resultDocumentSearch];
321
- this.selectProcessDocumentGlobalService.setSearchRelated(resulSearch);
322
- }
323
- });
312
+ if (this.data.enabledInterconnected) {
313
+ forkJoin([this.treeService.searchProcess(keyword), this.treeService.searchDocument(keyword), this.treeService.searchProcessInterconnected(keyword)])
314
+ .toPromise()
315
+ .then(([process, document, interconnected]) => {
316
+ if (process && document && interconnected) {
317
+ const resultProcessSearch = process.map((x) => {
318
+ return {
319
+ id: x.entityId,
320
+ itemNumberId: x.processNumber.toString(),
321
+ itemName: x.name,
322
+ itemType: DataType.process,
323
+ status: x.status,
324
+ statusName: x.approvalStatus,
325
+ location: x.location,
326
+ };
327
+ });
328
+ const resultDocumentSearch = document.documents.map((x) => {
329
+ return {
330
+ id: x.id.toString(),
331
+ itemNumberId: x.id.toString(),
332
+ itemName: x.name,
333
+ itemType: DataType.document,
334
+ status: 0,
335
+ statusName: x.approvalStatus,
336
+ location: x.location,
337
+ };
338
+ });
339
+ const resultInterconnectedSearch = interconnected.map((x) => {
340
+ return {
341
+ id: x.processInterconnectedEntityId,
342
+ itemNumberId: x.processInterconnectedNumber.toString(),
343
+ itemName: x.name,
344
+ itemType: DataType.processInterconnected,
345
+ status: x.status,
346
+ statusName: x.approvalStatus,
347
+ location: x.location,
348
+ };
349
+ });
350
+ const resulSearch = [...resultProcessSearch, ...resultDocumentSearch, ...resultInterconnectedSearch];
351
+ this.selectProcessDocumentGlobalService.setSearchRelated(resulSearch);
352
+ }
353
+ });
354
+ }
355
+ else {
356
+ forkJoin([this.treeService.searchProcess(keyword), this.treeService.searchDocument(keyword)])
357
+ .toPromise()
358
+ .then(([process, document]) => {
359
+ if (process && document) {
360
+ const resultProcessSearch = process.map((x) => {
361
+ return {
362
+ id: x.entityId,
363
+ itemNumberId: x.processNumber.toString(),
364
+ itemName: x.name,
365
+ itemType: DataType.process,
366
+ status: x.status,
367
+ statusName: x.approvalStatus,
368
+ location: x.location,
369
+ };
370
+ });
371
+ const resultDocumentSearch = document.documents.map((x) => {
372
+ return {
373
+ id: x.id.toString(),
374
+ itemNumberId: x.id.toString(),
375
+ itemName: x.name,
376
+ itemType: DataType.document,
377
+ status: 0,
378
+ statusName: x.approvalStatus,
379
+ location: x.location,
380
+ };
381
+ });
382
+ const resulSearch = [...resultProcessSearch, ...resultDocumentSearch];
383
+ this.selectProcessDocumentGlobalService.setSearchRelated(resulSearch);
384
+ }
385
+ });
386
+ }
324
387
  });
325
388
  dialogRef.componentInstance.onExpandProcessArea.subscribe((area) => {
326
- this.treeService.getProcessAreaContents(area.id).toPromise().then(res => {
389
+ this.treeService.getProcessAreaContents(area.id, true, this.data.enabledInterconnected).toPromise().then(res => {
327
390
  if (res) {
328
391
  const areas = res.areas.map((x) => {
329
392
  return {
@@ -344,7 +407,8 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
344
407
  expandable: false,
345
408
  statusId: x.status,
346
409
  statusName: x.approvalStatus,
347
- displayId: x.processNumber
410
+ displayId: x.processNumber,
411
+ itemType: x.processClassification === ProcessClassification.InterconnectedProcess ? DataType.processInterconnected : DataType.process
348
412
  };
349
413
  }) || [];
350
414
  this.selectProcessDocumentGlobalService.setProcessAreaChildren([...areas, ...processes]);
@@ -412,6 +476,8 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
412
476
  case DataType.folder:
413
477
  url = `/folder/${data.id}`;
414
478
  break;
479
+ case DataType.processInterconnected:
480
+ url = `/process-interconnected/${data.displayId}`;
415
481
  default:
416
482
  break;
417
483
  }
@@ -576,7 +642,7 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
576
642
  case LinkType.anchorDocument:
577
643
  link.url = `${this.selectedLinkType}${0}/document/${this.documentId}#${this.anchorByName}`;
578
644
  link.title = this.anchorTitle;
579
- link.targetId = TargetType.topmost;
645
+ link.targetId = this.selectedTargetAnchorDocument;
580
646
  break;
581
647
  }
582
648
  this.dialogRef.close(link);
@@ -633,7 +699,7 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
633
699
  QMSCKEditorLinkComponent.decorators = [
634
700
  { type: Component, args: [{
635
701
  selector: "qms-ckeditor-link",
636
- template: "<div id=\"qmsckeditor_link\" class=\"qmsckeditor qmsckeditor__link__container\">\r\n <div id=\"qmsckeditor_link_header\">\r\n <span id=\"qmsckeditor_link_header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor_link_header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor_link_header_001\">\r\n {{ LANG.QMSCKEDITOR.LINK }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_type\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select disableOptionCentering name=\"linkTypeList\" [(ngModel)]=\"selectedLinkType\"\r\n (ngModelChange)=\"onSelectedLinkType()\">\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_content\">\r\n <form [formGroup]=\"linkFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.url\">\r\n <div id=\"qmsckeditor_link_url\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_url_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.URL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_url_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_002\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"getUrlToSetProtocol()\" (keydown.enter)=\"setLinkUrlType($event)\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('url').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_004\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input matInput [(ngModel)]=\"advisoryTitle\" formControlName=\"advisoryTitle\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('advisoryTitle').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_005\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorTextFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorText\">\r\n <div id=\"qmsckeditor_link_anchor_text\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_anchor_text_panel\" [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\" (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.ANCHOR_TEXT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_text_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorText\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\" [value]=\"editorAnchor.anchorValue\"\r\n disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorTextFormGroup.get('anchorText').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"emailFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.email\">\r\n <div id=\"qmsckeditor_link_email\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.EMAIL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_email_001\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_ADDRESS }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailAddress\" formControlName=\"emailAddress\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailAddress').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_002\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_SUBJECT }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailSubject\" formControlName=\"emailSubject\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailSubject').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_BODY }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"emailBody\" formControlName=\"emailBody\"></textarea>\r\n <mat-error *ngIf=\"emailFormGroup.get('emailBody').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorDocFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorDocument\">\r\n <div id=\"qmsckeditor_link_anchor_doc\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_doc_001\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"eHandbook(true, true)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_002\" class=\"row mt-4\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DOCUMENT }}</mat-label>\r\n <input matInput [(ngModel)]=\"anchorTitle\" formControlName=\"anchorTitle\" />\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorTitle').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_003\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" formControlName=\"anchorByName\" disableOptionCentering>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorByName').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_footer\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-12 mt-3 pl-3 pr-3 ps-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"setLink()\" [disabled]=\"disableOkButton()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>",
702
+ template: "<div id=\"qmsckeditor_link\" class=\"qmsckeditor qmsckeditor__link__container\">\n <div id=\"qmsckeditor_link_header\">\n <span id=\"qmsckeditor_link_header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\n <mat-icon>close</mat-icon>\n </span>\n <div id=\"qmsckeditor_link_header_002\" mat-dialog-content>\n <h2 id=\"qmsckeditor_link_header_001\">\n {{ LANG.QMSCKEDITOR.LINK }}\n </h2>\n </div>\n </div>\n <div id=\"qmsckeditor_link_type\" class=\"row\">\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\n <mat-select disableOptionCentering name=\"linkTypeList\" [(ngModel)]=\"selectedLinkType\"\n (ngModelChange)=\"onSelectedLinkType()\">\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\n {{ link.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div id=\"qmsckeditor_link_content\">\n <form [formGroup]=\"linkFormGroup\" class=\"qmsckeditor link__content height row\"\n *ngIf=\"selectedLinkType == LinkType.url\">\n <div id=\"qmsckeditor_link_url\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\n <mat-expansion-panel id=\"qmsckeditor_link_url_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\n (closed)=\"isExpanded = false\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ LANG.QMSCKEDITOR.URL_HEADER }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div id=\"qmsckeditor_link_url_001\" class=\"row mt-2\">\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\" disableOptionCentering>\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\n {{ target.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_url_002\" class=\"row\">\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\" disableOptionCentering>\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\n {{ protocol.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_url_003\" class=\"row\">\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\n (ngModelChange)=\"getUrlToSetProtocol()\" (keydown.enter)=\"setLinkUrlType($event)\" />\n <mat-error *ngIf=\"linkFormGroup.get('url').hasError('required')\" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_url_004\" class=\"row\">\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\n <input matInput [(ngModel)]=\"advisoryTitle\" formControlName=\"advisoryTitle\" />\n <mat-error *ngIf=\"linkFormGroup.get('advisoryTitle').hasError('required')\" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_url_005\" class=\"qmsckeditor button__groups row\">\n <div class=\"col-6 pl-3 ps-3\">\n <button class=\"save\" mat-flat-button (click)=\"eHandbook(false, false)\">\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\n </button>\n </div>\n <div class=\"col-6 pr-3 pe-3\">\n <button class=\"save\" mat-flat-button (click)=\"attachment()\">\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\n </button>\n </div>\n </div>\n </mat-expansion-panel>\n </div>\n </form>\n\n <form [formGroup]=\"anchorTextFormGroup\" class=\"qmsckeditor link__content height row\"\n *ngIf=\"selectedLinkType == LinkType.anchorText\">\n <div id=\"qmsckeditor_link_anchor_text\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\n <mat-expansion-panel id=\"qmsckeditor_link_anchor_text_panel\" [expanded]=\"isExpanded\"\n (opened)=\"isExpanded = true\" (closed)=\"isExpanded = false\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ LANG.QMSCKEDITOR.ANCHOR_TEXT_HEADER }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div id=\"qmsckeditor_link_anchor_text_001\" class=\"row mt-2\">\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorText\">\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\" [value]=\"editorAnchor.anchorValue\"\n disableOptionCentering>\n {{ editorAnchor.viewValue }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"\n anchorTextFormGroup.get('anchorText').hasError('required')\n \" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n </mat-expansion-panel>\n </div>\n </form>\n\n <form [formGroup]=\"emailFormGroup\" class=\"qmsckeditor link__content height row\"\n *ngIf=\"selectedLinkType == LinkType.email\">\n <div id=\"qmsckeditor_link_email\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\n (closed)=\"isExpanded = false\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ LANG.QMSCKEDITOR.EMAIL_HEADER }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div id=\"qmsckeditor_link_email_001\" class=\"row\">\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_ADDRESS }}</mat-label>\n <input matInput [(ngModel)]=\"emailAddress\" formControlName=\"emailAddress\" />\n <mat-error *ngIf=\"emailFormGroup.get('emailAddress').hasError('required')\" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_email_002\" class=\"row\">\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_SUBJECT }}</mat-label>\n <input matInput [(ngModel)]=\"emailSubject\" formControlName=\"emailSubject\" />\n <mat-error *ngIf=\"emailFormGroup.get('emailSubject').hasError('required')\" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_email_003\" class=\"row\">\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_BODY }}</mat-label>\n <textarea matInput [(ngModel)]=\"emailBody\" formControlName=\"emailBody\"></textarea>\n <mat-error *ngIf=\"emailFormGroup.get('emailBody').hasError('required')\" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n </mat-expansion-panel>\n </div>\n </form>\n\n <form [formGroup]=\"anchorDocFormGroup\" class=\"qmsckeditor link__content height row\"\n *ngIf=\"selectedLinkType == LinkType.anchorDocument\">\n <div id=\"qmsckeditor_link_anchor_doc\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\n (closed)=\"isExpanded = false\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ LANG.QMSCKEDITOR.DOCUMENT_HEADER }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div id=\"qmsckeditor_link_anchor_doc_001\" class=\"qmsckeditor button__groups row\">\n <div class=\"col-6 pl-3 ps-3\">\n <button class=\"cancel\" mat-flat-button (click)=\"eHandbook(true, true)\">\n {{ LANG.QMSCKEDITOR.DOCUMENT }}\n </button>\n </div>\n </div>\n <div id=\"qmsckeditor_link_anchor_doc_002\" class=\"row mt-4\">\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\n <mat-label>{{ LANG.QMSCKEDITOR.DOCUMENT }}</mat-label>\n <input matInput [(ngModel)]=\"anchorTitle\" formControlName=\"anchorTitle\" />\n <mat-error *ngIf=\"\n anchorDocFormGroup.get('anchorTitle').hasError('required')\n \" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_anchor_doc_003\" class=\"row mt-2\">\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\n <mat-select [(ngModel)]=\"selectedTargetAnchorDocument\" formControlName=\"targetList\" disableOptionCentering>\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\n {{ target.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div id=\"qmsckeditor_link_anchor_doc_004\" class=\"row mt-2\">\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\n <mat-select [(ngModel)]=\"anchorByName\" formControlName=\"anchorByName\" disableOptionCentering>\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\n {{ docAnchor.viewValue }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"\n anchorDocFormGroup.get('anchorByName').hasError('required')\n \" class=\"mt5\">\n </mat-error>\n </mat-form-field>\n </div>\n </mat-expansion-panel>\n </div>\n </form>\n </div>\n\n <div id=\"qmsckeditor_link_footer\" class=\"qmsckeditor button__groups row\">\n <div class=\"col-12 mt-3 pl-3 pr-3 ps-3 pe-3\">\n <button class=\"save\" mat-flat-button (click)=\"setLink()\" [disabled]=\"disableOkButton()\">\n {{ LANG.QMSCKEDITOR.OK }}\n </button>\n </div>\n </div>\n</div>",
637
703
  styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__link__container textarea.mat-input-element{min-height:130px}"]
638
704
  },] }
639
705
  ];
@@ -651,4 +717,4 @@ QMSCKEditorLinkComponent.ctorParameters = () => [
651
717
  QMSCKEditorLinkComponent.propDecorators = {
652
718
  ckEditor: [{ type: Input }]
653
719
  };
654
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEdBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFakUsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdC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RSxtQkFBbUI7Z0JBQzdCLG0vVkFBaUQ7O2FBRWxEOzs7WUEvREMsaUJBQWlCO1lBVWpCLFNBQVM7WUFNRix1QkFBdUI7WUFVdkIsc0JBQXNCO1lBRHRCLHdCQUF3QjtZQU94QixzQkFBc0I7WUFGdEIscUNBQXFDO1lBbkI1QyxZQUFZO1lBWVAsZUFBZSx1QkEwR2pCLE1BQU0sU0FBQyxlQUFlOzs7dUJBN0R4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHtcclxuICBNYXREaWFsb2csXHJcbiAgTWF0RGlhbG9nUmVmLFxyXG4gIE1BVF9ESUFMT0dfREFUQSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW0nO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFByb3RvY29sVHlwZSwgUHJvdG9jb2xUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9wcm90b2NvbC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBUYXJnZXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWxpbmstYW5jaG9yLWRvY3VtZW50Lm1vZGVsJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yUGFyYW10ZXIgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGFyYW1ldGVyLm1vZGVsJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yTGluayBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci11cmwubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWNvbW1vbi5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRhY2htZW50cy9saW5rLWF0dGFjaG1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vZGF0YS10eXBlLmVudW1cIjtcclxuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3RyZWVcIjtcclxuaW1wb3J0IHsgUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSwgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3NlbGVjdC1wcm9jZXNzLWRvY3VtZW50XCI7XHJcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vbW9kdWxlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xyXG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RvY3VtZW50LW5vZGUtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSVJlbGF0ZWQgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9yZWxhdGVkL21vZGVsL3JlbGF0ZWQtZGF0YS5tb2RlbFwiO1xyXG5cclxuaW50ZXJmYWNlIElMaW5rVHlwZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJVGFyZ2V0IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElQcm90b2NvbCB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQW5jaG9yIHtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIHZpZXdWYWx1ZTogc3RyaW5nO1xyXG4gIGFuY2hvclZhbHVlOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInFtcy1ja2VkaXRvci1saW5rXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudFxyXG4gIGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICBASW5wdXQoKSBja0VkaXRvcjogYW55O1xyXG5cclxuICBMQU5HOiBhbnk7XHJcbiAgbGlua0Zvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB0YXJnZXRMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgIHByb3RvY29sTGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICB1cmw6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgYWR2aXNvcnlUaXRsZTogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgfSk7XHJcbiAgYW5jaG9yVGV4dEZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBhbmNob3JUZXh0OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICB9KTtcclxuICBlbWFpbEZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBlbWFpbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgZW1haWxTdWJqZWN0OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGVtYWlsQm9keTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgfSk7XHJcbiAgYW5jaG9yRG9jRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGFuY2hvclRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGFuY2hvckJ5TmFtZTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgfSk7XHJcbiAgaXNFeHBhbmRlZCA9IHRydWU7XHJcbiAgbGlua1R5cGVzOiBJTGlua1R5cGVbXSA9IFtdO1xyXG4gIHRhcmdldHM6IElUYXJnZXRbXSA9IFtdO1xyXG4gIHByb3RvY29sczogSVByb3RvY29sW10gPSBbXTtcclxuICBhbmNob3JEb2N1bWVudHM6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10gPSBbXTtcclxuICBhbmNob3JzOiBJQW5jaG9yW107XHJcbiAgZWRpdG9yQW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGRvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGVkaXRvckNvbnRlbnQgPSAnJztcclxuICBzZWxlY3RlZExpbmtUeXBlID0gMDtcclxuICBzZWxlY3RlZFRhcmdldCA9IDA7XHJcbiAgc2VsZWN0ZWRQcm90b2NvbCA9IDA7XHJcbiAgdXJsID0gXCJcIjtcclxuICBhZHZpc29yeVRpdGxlID0gXCJcIjtcclxuICBlZGl0ID0gZmFsc2U7XHJcbiAgYW5jaG9yVGV4dCA9IFwiXCI7XHJcbiAgZW1haWxBZGRyZXNzID0gXCJcIjtcclxuICBlbWFpbFN1YmplY3QgPSBcIlwiO1xyXG4gIGVtYWlsQm9keSA9IFwiXCI7XHJcbiAgZG9jdW1lbnRJZCA9IDA7XHJcbiAgYW5jaG9yVGl0bGUgPSBcIlwiO1xyXG4gIGFuY2hvckJ5TmFtZSA9IFwiXCI7XHJcbiAgTGlua1R5cGUgPSBMaW5rVHlwZTtcclxuICBwcm9jZXNzQ29uZmlnOiBUcmVlQ29uZmlnO1xyXG4gIGRvY3VtZW50Q29uZmlnOiBUcmVlQ29uZmlnO1xyXG4gIGRvY3VtZW50VHlwZXMgPSBbXHJcbiAgICBEb2N1bWVudE5vZGVUeXBlLkRvY3VtZW50LFxyXG4gICAgRG9jdW1lbnROb2RlVHlwZS5GaWxlRG9jdW1lbnQsXHJcbiAgICBEb2N1bWVudE5vZGVUeXBlLkxpbmtEb2N1bWVudCxcclxuICAgIERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudFxyXG4gIF07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmVlU2VydmljZTogUU1TQ0tFZGl0b3JUcmVlU2VydmljZSxcclxuICAgIHByaXZhdGUgc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZTogUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckxpbmtDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckxpbmtcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBkYXRhLnR5cGVJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBkYXRhLnRhcmdldElkO1xyXG4gICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gZGF0YS5wcm90b2NvbElkO1xyXG4gICAgdGhpcy51cmwgPSBkYXRhLnVybDtcclxuICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB0aGlzLmVkaXQgPSBkYXRhLmVkaXQ7XHJcbiAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSBkYXRhLmVkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmluaXRMaW5rVHlwZSgpO1xyXG4gICAgdGhpcy5pbml0VGFyZ2V0KCk7XHJcbiAgICB0aGlzLmluaXRQcm90b2NvbCgpO1xyXG4gICAgdGhpcy5pbml0QW5jaG9yKCk7XHJcbiAgICBpZiAodGhpcy5kYXRhLmVkaXQpIHtcclxuICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy5zZWxlY3RlZExpbmtUeXBlLCB0aGlzLnVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XHJcbiAgfVxyXG5cclxuICBpbml0TGlua1R5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5saW5rVHlwZXMpIHtcclxuICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XHJcbiAgICAgICAgaWQ6IExpbmtUeXBlLnVybCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19VUkwsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yVGV4dCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfSU5fVEVYVCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS5lbWFpbCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19FTUFJTCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfRE9DVU1FTlQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFRhcmdldCgpIHtcclxuICAgIGlmICh0aGlzLnRhcmdldHMpIHtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLm5ldyxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSVEdFVF9ORVcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUudG9wbW9zdCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1RPUE1PU1QsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUuc2FtZSxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUucGFyZW50LFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJHRVRfUEFSRU5ULFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRQcm90b2NvbCgpIHtcclxuICAgIGlmICh0aGlzLnByb3RvY29scykge1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmh0dHAsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0hUVFAsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmh0dHBzLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQUyxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goe1xyXG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUuZnRwLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9GVFAsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLm5ld3MsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX05FVyxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goe1xyXG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUub3RoZXIsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX09USEVSLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRBbmNob3IoKSB7XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbXTtcclxuICAgIHRoaXMuYW5jaG9ycyA9IFt7IHZhbHVlOiAwLCB2aWV3VmFsdWU6IFwiXCIsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VMaW5rVXJsKHR5cGVJZDogbnVtYmVyLCB1cmw6IHN0cmluZykge1xyXG4gICAgc3dpdGNoICh0eXBlSWQpIHtcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JUZXh0OlxyXG4gICAgICAgIHRoaXMuZ2V0RWRpdG9yQW5jaG9yKCk7XHJcbiAgICAgICAgdGhpcy5hbmNob3JUZXh0ID0gdXJsLnN1YnN0cigxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBjb25zdCBwMSA9IHVybC5pbmRleE9mKCdtYWlsdG86Jyk7XHJcbiAgICAgICAgY29uc3QgcDIgPSB1cmwuaW5kZXhPZignP3N1YmplY3Q9Jyk7XHJcbiAgICAgICAgY29uc3QgcDMgPSB1cmwuaW5kZXhPZignJmJvZHk9Jyk7XHJcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSB1cmwuc3Vic3RyKHAxICsgNywgcDIgLSA3KTtcclxuICAgICAgICB0aGlzLmVtYWlsU3ViamVjdCA9IHVybC5zdWJzdHIocDIgKyA5LCBwMyAtIHAyIC0gOSk7XHJcbiAgICAgICAgdGhpcy5lbWFpbEJvZHkgPSB1cmwuc3Vic3RyKHAzICsgNiwgdXJsLmxlbmd0aCAtIHAzIC0gNik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQ6XHJcbiAgICAgICAgY29uc3QgZmxhc2hJbmRleCA9IHVybC5sYXN0SW5kZXhPZignLycpO1xyXG4gICAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XHJcbiAgICAgICAgY29uc3Qgc0lkID0gdXJsLnN1YnN0cihmbGFzaEluZGV4ICsgMSwgaGFzaEluZGV4IC0gMSAtIGZsYXNoSW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SWQgPSBwYXJzZUludChzSWQsIDEwKTtcclxuICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQpO1xyXG4gICAgICAgIHRoaXMuYW5jaG9yQnlOYW1lID0gdXJsLnN1YnN0cihoYXNoSW5kZXggKyAxLCB1cmwubGVuZ3RoIC0gaGFzaEluZGV4KTtcclxuICAgICAgICB0aGlzLmFuY2hvclRpdGxlID0gdGhpcy5kYXRhLnRpdGxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZExpbmtUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xyXG4gICAgICB0aGlzLmdldEVkaXRvckFuY2hvcigpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudEFuY2hvcnMpIHtcclxuICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBlSGFuZGJvb2soaXNPbmx5RG9jdW1lbnQ6IGJvb2xlYW4sIGlzQW5jaG9yRG9jdW1lbnQ6IGJvb2xlYW4pIHtcclxuXHJcbiAgICB0aGlzLnByb2Nlc3NDb25maWcgPSB7XHJcbiAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiB0cnVlLFxyXG4gICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXHJcbiAgICAgIHNob3dDaGVja0JveDogZmFsc2UsXHJcbiAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXHJcbiAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcclxuICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLnByb2Nlc3MsXHJcbiAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgY2xvc2VJY29uQ29sb3I6ICcjYTRiMGRlJyxcclxuICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxyXG4gICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcclxuICAgICAgc2VsZWN0T25lOiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZG9jdW1lbnRDb25maWcgPSB7XHJcbiAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiAhaXNPbmx5RG9jdW1lbnQsXHJcbiAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcclxuICAgICAgc2hvd0NoZWNrQm94OiBmYWxzZSxcclxuICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IGZhbHNlLFxyXG4gICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXHJcbiAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgY2xvc2VJY29uQ29sb3I6ICcjNGFjYWZmJyxcclxuICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxyXG4gICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcclxuICAgICAgc2VsZWN0T25lOiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGRhdGE6IFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSA9IG5ldyBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEoKTtcclxuICAgIGRhdGEubW9kdWxlSWQgPSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzcztcclxuICAgIGRhdGEubW9kdWxlTmFtZSA9IHRoaXMuTEFORy5RTVNDS0VESVRPUi5ET0NVTUVOVF9QUk9DRVNTO1xyXG4gICAgaWYgKCFpc09ubHlEb2N1bWVudCkge1xyXG4gICAgICBjb25zdCB0cmVlUHJvY2Vzc0RhdGEgPSBhd2FpdCB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoKS50b1Byb21pc2UoKTtcclxuICAgICAgZGF0YS50cmVlRGF0YTEgPSB0cmVlUHJvY2Vzc0RhdGE/LmFyZWFzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpZDogeC5pZCxcclxuICAgICAgICAgIG5hbWU6IHgubmFtZSxcclxuICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkID09PSBndWlkSGVscGVyLmVtcHR5ID8gJycgOiB4LnBhcmVudElkLFxyXG4gICAgICAgICAgc3RhdHVzSWQ6IDAsXHJcbiAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcclxuICAgICAgICAgIGRpc3BsYXlJZDogMCxcclxuICAgICAgICAgIGV4cGFuZGFibGU6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICB9KSB8fCBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0cmVlRG9jdW1lbnREYXRhID0gYXdhaXQgdGhpcy50cmVlU2VydmljZS5nZXRGb2xkZXJDaGlsZHJlbnMoKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICBkYXRhLnRyZWVEYXRhMiA9IHRyZWVEb2N1bWVudERhdGE/Lm1hcCgoeCkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgbmFtZTogeC5uYW1lLnRvU3RyaW5nKCksXHJcbiAgICAgICAgcGFyZW50SWQ6ICF4LnBhcmVudEhhbmRib29rSWQgPyAnJyA6IHgucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpLFxyXG4gICAgICAgIHN0YXR1c0lkOiAwLFxyXG4gICAgICAgIHN0YXR1c05hbWU6ICcnLFxyXG4gICAgICAgIGRpc3BsYXlJZDogMCxcclxuICAgICAgICBleHBhbmRhYmxlOiB4LnR5cGUgPiBEb2N1bWVudE5vZGVUeXBlLlNob3J0Y3V0RG9jdW1lbnQsXHJcbiAgICAgICAgbGV2ZWxUeXBlOiB4LnR5cGVcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgZGF0YS50cmVlQ29uZmlnMSA9IHRoaXMucHJvY2Vzc0NvbmZpZztcclxuICAgIGRhdGEudHJlZUNvbmZpZzIgPSB0aGlzLmRvY3VtZW50Q29uZmlnO1xyXG4gICAgZGF0YS5zcGxpdFZpZXcgPSBmYWxzZTtcclxuICAgIGRhdGEuaXNTZWxlY3RPbmUgPSB0cnVlO1xyXG4gICAgZGF0YS50b29sdGlwTG9jYXRpb25TZWFyY2hSZXN1bHQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc3NjhweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzY5MHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgcGFuZWxDbGFzczogWydyZWxhdGVkLXByb2Nlc3NfX3BvcHVwJywgJ2N1c3RvbS1tYXQtZGlhbG9nLWNvbnRhaW5lciddLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25TZWFyY2guc3Vic2NyaWJlKChrZXl3b3JkOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCFrZXl3b3JkIHx8IGtleXdvcmQudHJpbSgpID09PSAnJylcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBmb3JrSm9pbihbdGhpcy50cmVlU2VydmljZS5zZWFyY2hQcm9jZXNzKGtleXdvcmQpLCB0aGlzLnRyZWVTZXJ2aWNlLnNlYXJjaERvY3VtZW50KGtleXdvcmQpXSlcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbigoW3Byb2Nlc3MsIGRvY3VtZW50XTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocHJvY2VzcyAmJiBkb2N1bWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9jZXNzU2VhcmNoOiBJUmVsYXRlZFtdID0gcHJvY2Vzcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHguZW50aXR5SWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHgucHJvY2Vzc051bWJlci50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IHgubmFtZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiBEYXRhVHlwZS5wcm9jZXNzLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiB4LnN0YXR1cyxcclxuICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogeC5sb2NhdGlvbixcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdERvY3VtZW50U2VhcmNoOiBJUmVsYXRlZFtdID0gZG9jdW1lbnQuZG9jdW1lbnRzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogeC5pZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB4LmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGU6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAwLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5hcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB4LmxvY2F0aW9uLFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWxTZWFyY2ggPSBbLi4ucmVzdWx0UHJvY2Vzc1NlYXJjaCwgLi4ucmVzdWx0RG9jdW1lbnRTZWFyY2hdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0U2VhcmNoUmVsYXRlZChyZXN1bFNlYXJjaCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25FeHBhbmRQcm9jZXNzQXJlYS5zdWJzY3JpYmUoKGFyZWEpID0+IHtcclxuICAgICAgdGhpcy50cmVlU2VydmljZS5nZXRQcm9jZXNzQXJlYUNvbnRlbnRzKGFyZWEuaWQpLnRvUHJvbWlzZSgpLnRoZW4ocmVzID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBjb25zdCBhcmVhcyA9IHJlcy5hcmVhcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBpZDogeC5pZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogeC5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHN0YXR1c0lkOiB4LnN0YXR1cyxcclxuICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LnN0YXR1c05hbWUsXHJcbiAgICAgICAgICAgICAgZGlzcGxheUlkOiAwXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KSB8fCBbXTtcclxuXHJcbiAgICAgICAgICBjb25zdCBwcm9jZXNzZXMgPSByZXMucHJvY2Vzc2VzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiB4LnByb2Nlc3NBcmVhSWQsXHJcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxyXG4gICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXHJcbiAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnByb2Nlc3NOdW1iZXJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFByb2Nlc3NBcmVhQ2hpbGRyZW4oWy4uLmFyZWFzLCAuLi5wcm9jZXNzZXNdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRXhwYW5kRm9sZGVyLnN1YnNjcmliZSgoZm9sZGVyKSA9PiB7XHJcbiAgICAgIHRoaXMudHJlZVNlcnZpY2VcclxuICAgICAgICAuZ2V0Rm9sZGVyQ2hpbGRyZW5zKGZvbGRlci5pZClcclxuICAgICAgICAudG9Qcm9taXNlKCkudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcyA9IHJlcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IHRoaXMuZ2V0UGFyZW50SWQoeCksXHJcbiAgICAgICAgICAgICAgICBzdGF0dXNJZDogMCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IHguaWQsXHJcbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiAhdGhpcy5kb2N1bWVudFR5cGVzLmluY2x1ZGVzKHgudHlwZSksXHJcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldEZvbGRlckNoaWxkcmVuKGNoaWxkcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHREYXRhID0gcmVzdWx0WzBdO1xyXG4gICAgICAgIGlmICghaXNBbmNob3JEb2N1bWVudCkge1xyXG4gICAgICAgICAgdGhpcy51cmwgPSB0aGlzLmdldExpbmtVUkwocmVzdWx0RGF0YSk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuYWR2aXNvcnlUaXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHREYXRhLml0ZW1OYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlLm90aGVyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IGAke3Jlc3VsdERhdGEuaXRlbU5hbWV9KCR7cmVzdWx0RGF0YS5pZH0pYDtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQocmVzdWx0RGF0YS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFBhcmVudElkKGl0ZW0pIHtcclxuICAgIGlmICghdGhpcy5kb2N1bWVudFR5cGVzLmluY2x1ZGVzKGl0ZW0udHlwZSkpIHtcclxuICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICFpdGVtLnBhcmVudEZvbGRlcklkID8gJycgOiBpdGVtLnBhcmVudEZvbGRlcklkLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRMaW5rVVJMKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IHVybCA9ICcnO1xyXG4gICAgc3dpdGNoIChkYXRhPy5pdGVtVHlwZSkge1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHVybCA9IGAvZG9jdW1lbnQvJHtkYXRhLmlkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICB1cmwgPSBgL3Byb2Nlc3MtZGV0YWlsLyR7ZGF0YS5kaXNwbGF5SWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxyXG4gICAgICAgIHVybCA9IGAvYXJlYS9kZXRhaWwvJHtkYXRhLmlkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOlxyXG4gICAgICAgIHVybCA9IGAvZm9sZGVyLyR7ZGF0YS5pZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG5cclxuICBhdHRhY2htZW50KCkge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclBhcmFtdGVyKCk7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMuZGF0YS5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5kYXRhLmVudGl0eUlkO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKExpbmtBdHRhY2htZW50Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjY1MHB4XCIsXHJcbiAgICAgIGhlaWdodDogXCI2NTBweFwiLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMudXJsID0gcmVzdWx0LnVybDtcclxuICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZS5vdGhlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdG9yQW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmVkaXRvckNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgZW50aXR5SWQ6IDAsXHJcbiAgICAgICAgZG9jdW1lbnRJZDogMCxcclxuICAgICAgICBkb2N1bWVudFR5cGVJZDogMCxcclxuICAgICAgICByaWNoVGV4dDogdGhpcy5lZGl0b3JDb250ZW50LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgdGhpcy5lZGl0b3JBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0QW5jaG9yRG9jdW1lbnQoYW5jaG9yRG9jdW1lbnQ6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10pIHtcclxuICAgIHRoaXMuaW5pdEFuY2hvcigpO1xyXG4gICAgbGV0IGlkID0gMztcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrQ29udGVudEZpZWxkcyAmJlxyXG4gICAgICB0aGlzLmRhdGEucW1zY2tDb250ZW50RmllbGRzLmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLmRhdGEucW1zY2tJc0dldEFuY2hvck1vcmVDb250ZW50ICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yVGV4dFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yKGZpZWxkLCBpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCAmJiBhbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBhbmNob3JEb2N1bWVudC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yKGUsIGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDEsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9BVFRBQ0hNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAyLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfUkVMQVRFRF9ET0NVTUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yKGUsIGlkKSB7XHJcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgZGl2LmlubmVySFRNTCA9IGUucmljaFRleHQ7XHJcbiAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xyXG4gICAgY29uc3QgYVRhZ3MgPSBkb21Db250ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKTtcclxuICAgIGlmIChhVGFncykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgdGFnID0gYVRhZ3NbaV07XHJcbiAgICAgICAgaWYgKHRhZy5uYW1lKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5jaG9ycy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHguYW5jaG9yVmFsdWUgPT09IHRhZy5uYW1lO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICB2YWx1ZTogaWQsXHJcbiAgICAgICAgICAgICAgdmlld1ZhbHVlOiB0YWcubmFtZSxcclxuICAgICAgICAgICAgICBhbmNob3JWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZCArPSAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZU9rQnV0dG9uKCkge1xyXG4gICAgbGV0IGlzRGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkTGlua1R5cGUpIHtcclxuICAgICAgY2FzZSBMaW5rVHlwZS51cmw6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5saW5rRm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcclxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmFuY2hvclRleHRGb3JtR3JvdXAuaW52YWxpZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmVtYWlsRm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQ6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5hbmNob3JEb2NGb3JtR3JvdXAuaW52YWxpZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc0Rpc2FibGU7XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBRTVNDS0VkaXRvckxpbmsoKTtcclxuICAgIGxpbmsudHlwZUlkID0gdGhpcy5zZWxlY3RlZExpbmtUeXBlO1xyXG4gICAgbGluay50YXJnZXRJZCA9IHRoaXMuc2VsZWN0ZWRUYXJnZXQ7XHJcbiAgICBsaW5rLnByb3RvY29sSWQgPSB0aGlzLnNlbGVjdGVkUHJvdG9jb2w7XHJcbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSkge1xyXG4gICAgICBjYXNlIExpbmtUeXBlLnVybDpcclxuICAgICAgICBpZiAoIXRoaXMuYWR2aXNvcnlUaXRsZS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxpbmsudGl0bGUgPSBgJHt0aGlzLmdldFByb3RvY29sTmFtZSgpfSR7dGhpcy5saW5rRm9ybUdyb3VwLnZhbHVlLnVybH1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5hZHZpc29yeVRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0ke3RoaXMuc2VsZWN0ZWRQcm90b2NvbH0ke3RoaXMuZ2V0UHJvdG9jb2xOYW1lKCl9JHt0aGlzLnVybH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvclRleHQ6XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHswfSMke3RoaXMuYW5jaG9yVGV4dH1gO1xyXG4gICAgICAgIGxpbmsudGl0bGUgPSBgIyR7dGhpcy5hbmNob3JUZXh0fWA7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9bWFpbHRvOiR7dGhpcy5lbWFpbEFkZHJlc3N9P3N1YmplY3Q9JHt0aGlzLmVtYWlsU3ViamVjdH0mYm9keT0ke3RoaXMuZW1haWxCb2R5XHJcbiAgICAgICAgICB9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5lbWFpbEFkZHJlc3M7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9L2RvY3VtZW50LyR7dGhpcy5kb2N1bWVudElkfSMke3RoaXMuYW5jaG9yQnlOYW1lfWA7XHJcbiAgICAgICAgbGluay50aXRsZSA9IHRoaXMuYW5jaG9yVGl0bGU7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGxpbmspO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXJsVG9TZXRQcm90b2NvbCgpIHtcclxuICAgIGlmICghdGhpcy51cmwubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGxpc3RQcm90b2NvbE5hbWUgPSBPYmplY3QudmFsdWVzKFByb3RvY29sVHlwZU5hbWUpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggaW4gbGlzdFByb3RvY29sTmFtZSkge1xyXG4gICAgICBpZiAobGlzdFByb3RvY29sTmFtZVtpbmRleF0ubGVuZ3RoICYmIHRoaXMudXJsLmluZGV4T2YobGlzdFByb3RvY29sTmFtZVtpbmRleF0udG9TdHJpbmcoKSkgPT09IDApIHtcclxuICAgICAgICBzd2l0Y2ggKGxpc3RQcm90b2NvbE5hbWVbaW5kZXhdKSB7XHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuaHR0cDpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5odHRwLCBQcm90b2NvbFR5cGVOYW1lLmh0dHApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuaHR0cHM6XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUuaHR0cHMsIFByb3RvY29sVHlwZU5hbWUuaHR0cHMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuZnRwOlxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLmZ0cCwgUHJvdG9jb2xUeXBlTmFtZS5mdHApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUubmV3czpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5uZXdzLCBQcm90b2NvbFR5cGVOYW1lLm5ld3MpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudXJsLmluZGV4T2YoJzovLycpICE9PSAtMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGUub3RoZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKHByb3RvY29sVHlwZTogbnVtYmVyLCBwcm90b2NvbE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm90b2NvbCAhPT0gcHJvdG9jb2xUeXBlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IHByb3RvY29sVHlwZTtcclxuICAgIH1cclxuICAgIHRoaXMudXJsID0gdGhpcy51cmwuc2xpY2UocHJvdG9jb2xOYW1lLmxlbmd0aCk7XHJcbiAgICB0aGlzLmxpbmtGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7IHVybDogdGhpcy51cmwgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm90b2NvbE5hbWUoKSB7XHJcbiAgICByZXR1cm4gUHJvdG9jb2xUeXBlTmFtZVtQcm90b2NvbFR5cGVbdGhpcy5zZWxlY3RlZFByb3RvY29sXV07XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rVXJsVHlwZSgkZXZlbnQ/OiBFdmVudCkge1xyXG4gICAgaWYgKCRldmVudClcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMubGlua0Zvcm1Hcm91cC5pbnZhbGlkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5zZXRMaW5rKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
720
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEdBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFakUsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdC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O1lBRnRCLHFDQUFxQztZQW5CNUMsWUFBWTtZQVlQLGVBQWUsdUJBOEdqQixNQUFNLFNBQUMsZUFBZTs7O3VCQWhFeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7XG4gIE1hdERpYWxvZyxcbiAgTWF0RGlhbG9nUmVmLFxuICBNQVRfRElBTE9HX0RBVEEsXG59IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW0nO1xuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xuaW1wb3J0IHsgUHJvdG9jb2xUeXBlLCBQcm90b2NvbFR5cGVOYW1lIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3Byb3RvY29sLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUYXJnZXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbCc7XG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWwnO1xuaW1wb3J0IFFNU0NLRWRpdG9yTGluayBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci11cmwubW9kZWwnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItY29tbW9uLnNlcnZpY2VzXCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bVwiO1xuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3RyZWVcIjtcbmltcG9ydCB7IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2UsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwQ29tcG9uZW50LCBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9zZWxlY3QtcHJvY2Vzcy1kb2N1bWVudFwiO1xuaW1wb3J0IHsgTW9kdWxlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9tb2R1bGUtdHlwZS5lbnVtXCI7XG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2VcIjtcbmltcG9ydCBndWlkSGVscGVyIGZyb20gXCIuLi8uLi9jb21tb24vaGVscGVyL2d1aWRIZWxwZXJcIjtcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vZG9jdW1lbnQtbm9kZS10eXBlLmVudW1cIjtcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IElSZWxhdGVkIH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvcmVsYXRlZC9tb2RlbC9yZWxhdGVkLWRhdGEubW9kZWxcIjtcbmltcG9ydCB7IFByb2Nlc3NDbGFzc2lmaWNhdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9wcm9jZXNzLWNsYXNzaWZpY2F0aW9uLmVudW1cIjtcblxuaW50ZXJmYWNlIElMaW5rVHlwZSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElUYXJnZXQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJUHJvdG9jb2wge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJQW5jaG9yIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgdmlld1ZhbHVlOiBzdHJpbmc7XG4gIGFuY2hvclZhbHVlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJxbXMtY2tlZGl0b3ItbGlua1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50XG4gIGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBASW5wdXQoKSBja0VkaXRvcjogYW55O1xuXG4gIExBTkc6IGFueTtcbiAgbGlua0Zvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgdGFyZ2V0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgcHJvdG9jb2xMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICB1cmw6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIGFkdmlzb3J5VGl0bGU6IG5ldyBGb3JtQ29udHJvbCgpLFxuICB9KTtcbiAgYW5jaG9yVGV4dEZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgYW5jaG9yVGV4dDogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIH0pO1xuICBlbWFpbEZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgZW1haWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBlbWFpbFN1YmplY3Q6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIGVtYWlsQm9keTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gIH0pO1xuICBhbmNob3JEb2NGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHRhcmdldExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIGFuY2hvclRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBhbmNob3JCeU5hbWU6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICB9KTtcbiAgaXNFeHBhbmRlZCA9IHRydWU7XG4gIGxpbmtUeXBlczogSUxpbmtUeXBlW10gPSBbXTtcbiAgdGFyZ2V0czogSVRhcmdldFtdID0gW107XG4gIHByb3RvY29sczogSVByb3RvY29sW10gPSBbXTtcbiAgYW5jaG9yRG9jdW1lbnRzOiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdID0gW107XG4gIGFuY2hvcnM6IElBbmNob3JbXTtcbiAgZWRpdG9yQW5jaG9yczogSUFuY2hvcltdO1xuICBkb2N1bWVudEFuY2hvcnM6IElBbmNob3JbXTtcbiAgZWRpdG9yQ29udGVudCA9ICcnO1xuICBzZWxlY3RlZExpbmtUeXBlID0gMDtcbiAgc2VsZWN0ZWRUYXJnZXQgPSAwO1xuICBzZWxlY3RlZFByb3RvY29sID0gMDtcbiAgdXJsID0gXCJcIjtcbiAgYWR2aXNvcnlUaXRsZSA9IFwiXCI7XG4gIGVkaXQgPSBmYWxzZTtcbiAgYW5jaG9yVGV4dCA9IFwiXCI7XG4gIGVtYWlsQWRkcmVzcyA9IFwiXCI7XG4gIGVtYWlsU3ViamVjdCA9IFwiXCI7XG4gIGVtYWlsQm9keSA9IFwiXCI7XG4gIGRvY3VtZW50SWQgPSAwO1xuICBhbmNob3JUaXRsZSA9IFwiXCI7XG4gIGFuY2hvckJ5TmFtZSA9IFwiXCI7XG4gIExpbmtUeXBlID0gTGlua1R5cGU7XG4gIHByb2Nlc3NDb25maWc6IFRyZWVDb25maWc7XG4gIGRvY3VtZW50Q29uZmlnOiBUcmVlQ29uZmlnO1xuICBkb2N1bWVudFR5cGVzID0gW1xuICAgIERvY3VtZW50Tm9kZVR5cGUuRG9jdW1lbnQsXG4gICAgRG9jdW1lbnROb2RlVHlwZS5GaWxlRG9jdW1lbnQsXG4gICAgRG9jdW1lbnROb2RlVHlwZS5MaW5rRG9jdW1lbnQsXG4gICAgRG9jdW1lbnROb2RlVHlwZS5TaG9ydGN1dERvY3VtZW50XG4gIF07XG4gIHNlbGVjdGVkVGFyZ2V0QW5jaG9yRG9jdW1lbnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIGxpbmtTZXJ2aWNlOiBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlOiBRTVNTZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckxpbmtDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JMaW5rXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gZGF0YS50eXBlSWQ7XG4gICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gZGF0YS5wcm90b2NvbElkO1xuICAgIHRoaXMudXJsID0gZGF0YS51cmw7XG4gICAgdGhpcy5hZHZpc29yeVRpdGxlID0gZGF0YS50aXRsZTtcbiAgICB0aGlzLmVkaXQgPSBkYXRhLmVkaXQ7XG4gICAgdGhpcy5lZGl0b3JDb250ZW50ID0gZGF0YS5lZGl0b3JDb250ZW50O1xuXG4gICAgaWYgKHRoaXMudXJsLmxlbmd0aCAmJiBkYXRhLnR5cGVJZCA9PSBMaW5rVHlwZS51cmwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBkYXRhLnRhcmdldElkO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldEFuY2hvckRvY3VtZW50ID0gZGF0YS5kZWZhdWx0VGFyZ2V0TmV3V2luZG93ID8gVGFyZ2V0VHlwZS5uZXcgOiBUYXJnZXRUeXBlLnNhbWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnVybC5sZW5ndGggJiYgZGF0YS50eXBlSWQgPT0gTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXRBbmNob3JEb2N1bWVudCA9IGRhdGEudGFyZ2V0SWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gZGF0YS5kZWZhdWx0VGFyZ2V0TmV3V2luZG93ID8gVGFyZ2V0VHlwZS5uZXcgOiBUYXJnZXRUeXBlLnNhbWU7XG4gICAgfSBlbHNlIGlmIChkYXRhLmRlZmF1bHRUYXJnZXROZXdXaW5kb3cpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBUYXJnZXRUeXBlLm5ldztcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXRBbmNob3JEb2N1bWVudCA9IFRhcmdldFR5cGUubmV3O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZS5zYW1lO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldEFuY2hvckRvY3VtZW50ID0gVGFyZ2V0VHlwZS5zYW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5pbml0TGlua1R5cGUoKTtcbiAgICB0aGlzLmluaXRUYXJnZXQoKTtcbiAgICB0aGlzLmluaXRQcm90b2NvbCgpO1xuICAgIHRoaXMuaW5pdEFuY2hvcigpO1xuICAgIGlmICh0aGlzLmRhdGEuZWRpdCkge1xuICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy5zZWxlY3RlZExpbmtUeXBlLCB0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uQ2xvc2VEaWFsb2coKSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGluaXRMaW5rVHlwZSgpIHtcbiAgICBpZiAodGhpcy5saW5rVHlwZXMpIHtcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xuICAgICAgICBpZDogTGlua1R5cGUudXJsLFxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19VUkwsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yVGV4dCxcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0lOX1RFWFQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xuICAgICAgICBpZDogTGlua1R5cGUuZW1haWwsXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5MSU5LX0VNQUlMLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcbiAgICAgICAgaWQ6IExpbmtUeXBlLmFuY2hvckRvY3VtZW50LFxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfRE9DVU1FTlQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbml0VGFyZ2V0KCkge1xuICAgIGlmICh0aGlzLnRhcmdldHMpIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUubmV3LFxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSVEdFVF9ORVcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUudG9wbW9zdCxcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9UT1BNT1NULFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnNhbWUsXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJHRVRfU0FNRSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xuICAgICAgICBpZDogVGFyZ2V0VHlwZS5wYXJlbnQsXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJHRVRfUEFSRU5ULFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaW5pdFByb3RvY29sKCkge1xuICAgIGlmICh0aGlzLnByb3RvY29scykge1xuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUuaHR0cCxcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0hUVFAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goe1xuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmh0dHBzLFxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUFMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goe1xuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmZ0cCxcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0ZUUCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUubmV3cyxcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX05FVyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUub3RoZXIsXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9PVEhFUixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGluaXRBbmNob3IoKSB7XG4gICAgdGhpcy5hbmNob3JzID0gW107XG4gICAgdGhpcy5hbmNob3JzID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogXCJcIiwgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQmxhbmsgfV07XG4gIH1cblxuICBwYXJzZUxpbmtVcmwodHlwZUlkOiBudW1iZXIsIHVybDogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlSWQpIHtcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcbiAgICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcbiAgICAgICAgdGhpcy5hbmNob3JUZXh0ID0gdXJsLnN1YnN0cigxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExpbmtUeXBlLmVtYWlsOlxuICAgICAgICBjb25zdCBwMSA9IHVybC5pbmRleE9mKCdtYWlsdG86Jyk7XG4gICAgICAgIGNvbnN0IHAyID0gdXJsLmluZGV4T2YoJz9zdWJqZWN0PScpO1xuICAgICAgICBjb25zdCBwMyA9IHVybC5pbmRleE9mKCcmYm9keT0nKTtcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSB1cmwuc3Vic3RyKHAxICsgNywgcDIgLSA3KTtcbiAgICAgICAgdGhpcy5lbWFpbFN1YmplY3QgPSB1cmwuc3Vic3RyKHAyICsgOSwgcDMgLSBwMiAtIDkpO1xuICAgICAgICB0aGlzLmVtYWlsQm9keSA9IHVybC5zdWJzdHIocDMgKyA2LCB1cmwubGVuZ3RoIC0gcDMgLSA2KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxuICAgICAgICBjb25zdCBmbGFzaEluZGV4ID0gdXJsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gICAgICAgIGNvbnN0IHNJZCA9IHVybC5zdWJzdHIoZmxhc2hJbmRleCArIDEsIGhhc2hJbmRleCAtIDEgLSBmbGFzaEluZGV4KTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRJZCA9IHBhcnNlSW50KHNJZCwgMTApO1xuICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQpO1xuICAgICAgICB0aGlzLmFuY2hvckJ5TmFtZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XG4gICAgICAgIHRoaXMuYW5jaG9yVGl0bGUgPSB0aGlzLmRhdGEudGl0bGU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0ZWRMaW5rVHlwZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JUZXh0KSB7XG4gICAgICB0aGlzLmdldEVkaXRvckFuY2hvcigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCkge1xuICAgICAgaWYgKCF0aGlzLmRvY3VtZW50QW5jaG9ycykge1xuICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xuICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZUhhbmRib29rKGlzT25seURvY3VtZW50OiBib29sZWFuLCBpc0FuY2hvckRvY3VtZW50OiBib29sZWFuKSB7XG5cbiAgICB0aGlzLnByb2Nlc3NDb25maWcgPSB7XG4gICAgICBhbGxvd1NlbGVjdEZvbGRlcjogdHJ1ZSxcbiAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcbiAgICAgIHNob3dDaGVja0JveDogZmFsc2UsXG4gICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IGZhbHNlLFxuICAgICAgb25seUNoZWNrQm94Rm9yQ2hpbGQ6IGZhbHNlLFxuICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLnByb2Nlc3MsXG4gICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXG4gICAgICBjbG9zZUljb25Db2xvcjogJyNhNGIwZGUnLFxuICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxuICAgICAgb25seUZvbGRlcjogZmFsc2UsXG4gICAgICBzZWxlY3RPbmU6IHRydWVcbiAgICB9O1xuXG4gICAgdGhpcy5kb2N1bWVudENvbmZpZyA9IHtcbiAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiAhaXNPbmx5RG9jdW1lbnQsXG4gICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXG4gICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxuICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxuICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiBmYWxzZSxcbiAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcbiAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcbiAgICAgIGNsb3NlSWNvbkNvbG9yOiAnIzRhY2FmZicsXG4gICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXG4gICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcbiAgICAgIHNlbGVjdE9uZTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBkYXRhOiBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgPSBuZXcgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhKCk7XG4gICAgZGF0YS5tb2R1bGVJZCA9IE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzO1xuICAgIGRhdGEubW9kdWxlTmFtZSA9IHRoaXMuTEFORy5RTVNDS0VESVRPUi5ET0NVTUVOVF9QUk9DRVNTO1xuICAgIGlmICghaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgIGNvbnN0IHRyZWVQcm9jZXNzRGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0UHJvY2Vzc0FyZWFDb250ZW50cygpLnRvUHJvbWlzZSgpO1xuICAgICAgZGF0YS50cmVlRGF0YTEgPSB0cmVlUHJvY2Vzc0RhdGE/LmFyZWFzLm1hcCgoeCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICBwYXJlbnRJZDogeC5wYXJlbnRJZCA9PT0gZ3VpZEhlbHBlci5lbXB0eSA/ICcnIDogeC5wYXJlbnRJZCxcbiAgICAgICAgICBzdGF0dXNJZDogMCxcbiAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcbiAgICAgICAgICBkaXNwbGF5SWQ6IDAsXG4gICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfSkgfHwgW107XG4gICAgfVxuXG4gICAgY29uc3QgdHJlZURvY3VtZW50RGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0Rm9sZGVyQ2hpbGRyZW5zKCkudG9Qcm9taXNlKCk7XG5cbiAgICBkYXRhLnRyZWVEYXRhMiA9IHRyZWVEb2N1bWVudERhdGE/Lm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogeC5uYW1lLnRvU3RyaW5nKCksXG4gICAgICAgIHBhcmVudElkOiAheC5wYXJlbnRIYW5kYm9va0lkID8gJycgOiB4LnBhcmVudEhhbmRib29rSWQudG9TdHJpbmcoKSxcbiAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgIHN0YXR1c05hbWU6ICcnLFxuICAgICAgICBkaXNwbGF5SWQ6IDAsXG4gICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA+IERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudCxcbiAgICAgICAgbGV2ZWxUeXBlOiB4LnR5cGVcbiAgICAgIH07XG4gICAgfSk7XG4gICAgZGF0YS50cmVlQ29uZmlnMSA9IHRoaXMucHJvY2Vzc0NvbmZpZztcbiAgICBkYXRhLnRyZWVDb25maWcyID0gdGhpcy5kb2N1bWVudENvbmZpZztcbiAgICBkYXRhLnNwbGl0VmlldyA9IGZhbHNlO1xuICAgIGRhdGEuaXNTZWxlY3RPbmUgPSB0cnVlO1xuICAgIGRhdGEudG9vbHRpcExvY2F0aW9uU2VhcmNoUmVzdWx0ID0gdHJ1ZTtcblxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNzY4cHgnLFxuICAgICAgbWluSGVpZ2h0OiAnNjkwcHgnLFxuICAgICAgZGF0YSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsncmVsYXRlZC1wcm9jZXNzX19wb3B1cCcsICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInXSxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vblNlYXJjaC5zdWJzY3JpYmUoKGtleXdvcmQ6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFrZXl3b3JkIHx8IGtleXdvcmQudHJpbSgpID09PSAnJylcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkge1xuICAgICAgICBmb3JrSm9pbihbdGhpcy50cmVlU2VydmljZS5zZWFyY2hQcm9jZXNzKGtleXdvcmQpLCB0aGlzLnRyZWVTZXJ2aWNlLnNlYXJjaERvY3VtZW50KGtleXdvcmQpLCB0aGlzLnRyZWVTZXJ2aWNlLnNlYXJjaFByb2Nlc3NJbnRlcmNvbm5lY3RlZChrZXl3b3JkKV0pXG4gICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgLnRoZW4oKFtwcm9jZXNzLCBkb2N1bWVudCwgaW50ZXJjb25uZWN0ZWRdOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzICYmIGRvY3VtZW50ICYmIGludGVyY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdFByb2Nlc3NTZWFyY2g6IElSZWxhdGVkW10gPSBwcm9jZXNzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpZDogeC5lbnRpdHlJZCxcbiAgICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogeC5wcm9jZXNzTnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBpdGVtTmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IERhdGFUeXBlLnByb2Nlc3MsXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5hcHByb3ZhbFN0YXR1cyxcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB4LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RG9jdW1lbnRTZWFyY2g6IElSZWxhdGVkW10gPSBkb2N1bWVudC5kb2N1bWVudHMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogRGF0YVR5cGUuZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IDAsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246IHgubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0SW50ZXJjb25uZWN0ZWRTZWFyY2g6IElSZWxhdGVkW10gPSBpbnRlcmNvbm5lY3RlZC5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgaWQ6IHgucHJvY2Vzc0ludGVyY29ubmVjdGVkRW50aXR5SWQsXG4gICAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHgucHJvY2Vzc0ludGVyY29ubmVjdGVkTnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBpdGVtTmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogeC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246IHgubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgcmVzdWxTZWFyY2ggPSBbLi4ucmVzdWx0UHJvY2Vzc1NlYXJjaCwgLi4ucmVzdWx0RG9jdW1lbnRTZWFyY2gsIC4uLnJlc3VsdEludGVyY29ubmVjdGVkU2VhcmNoXTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQocmVzdWxTZWFyY2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ya0pvaW4oW3RoaXMudHJlZVNlcnZpY2Uuc2VhcmNoUHJvY2VzcyhrZXl3b3JkKSwgdGhpcy50cmVlU2VydmljZS5zZWFyY2hEb2N1bWVudChrZXl3b3JkKV0pXG4gICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgLnRoZW4oKFtwcm9jZXNzLCBkb2N1bWVudF06IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MgJiYgZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0UHJvY2Vzc1NlYXJjaDogSVJlbGF0ZWRbXSA9IHByb2Nlc3MubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB4LnByb2Nlc3NOdW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogRGF0YVR5cGUucHJvY2VzcyxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogeC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246IHgubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RG9jdW1lbnRTZWFyY2g6IElSZWxhdGVkW10gPSBkb2N1bWVudC5kb2N1bWVudHMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogRGF0YVR5cGUuZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IDAsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgICAgICAgICAgICAgbG9jYXRpb246IHgubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWxTZWFyY2ggPSBbLi4ucmVzdWx0UHJvY2Vzc1NlYXJjaCwgLi4ucmVzdWx0RG9jdW1lbnRTZWFyY2hdO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0U2VhcmNoUmVsYXRlZChyZXN1bFNlYXJjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25FeHBhbmRQcm9jZXNzQXJlYS5zdWJzY3JpYmUoKGFyZWEpID0+IHtcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UuZ2V0UHJvY2Vzc0FyZWFDb250ZW50cyhhcmVhLmlkLCB0cnVlLCB0aGlzLmRhdGEuZW5hYmxlZEludGVyY29ubmVjdGVkKS50b1Byb21pc2UoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICBjb25zdCBhcmVhcyA9IHJlcy5hcmVhcy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIHN0YXR1c0lkOiB4LnN0YXR1cyxcbiAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5zdGF0dXNOYW1lLFxuICAgICAgICAgICAgICBkaXNwbGF5SWQ6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgICBjb25zdCBwcm9jZXNzZXMgPSByZXMucHJvY2Vzc2VzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IHguZW50aXR5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogeC5wcm9jZXNzQXJlYUlkLFxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgICAgICAgICBkaXNwbGF5SWQ6IHgucHJvY2Vzc051bWJlcixcbiAgICAgICAgICAgICAgaXRlbVR5cGU6IHgucHJvY2Vzc0NsYXNzaWZpY2F0aW9uID09PSBQcm9jZXNzQ2xhc3NpZmljYXRpb24uSW50ZXJjb25uZWN0ZWRQcm9jZXNzID8gRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkIDogRGF0YVR5cGUucHJvY2Vzc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSB8fCBbXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0UHJvY2Vzc0FyZWFDaGlsZHJlbihbLi4uYXJlYXMsIC4uLnByb2Nlc3Nlc10pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZEZvbGRlci5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgdGhpcy50cmVlU2VydmljZVxuICAgICAgICAuZ2V0Rm9sZGVyQ2hpbGRyZW5zKGZvbGRlci5pZClcbiAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcyA9IHJlcy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogeC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLmdldFBhcmVudElkKHgpLFxuICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LmlkLFxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldEZvbGRlckNoaWxkcmVuKGNoaWxkcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0YSA9IHJlc3VsdFswXTtcbiAgICAgICAgaWYgKCFpc0FuY2hvckRvY3VtZW50KSB7XG4gICAgICAgICAgdGhpcy51cmwgPSB0aGlzLmdldExpbmtVUkwocmVzdWx0RGF0YSk7XG4gICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdERhdGEuaXRlbU5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZS5vdGhlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xuICAgICAgICAgIHRoaXMuYW5jaG9yVGl0bGUgPSBgJHtyZXN1bHREYXRhLml0ZW1OYW1lfSgke3Jlc3VsdERhdGEuaWR9KWA7XG4gICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHREYXRhLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGFyZW50SWQoaXRlbSkge1xuICAgIGlmICghdGhpcy5kb2N1bWVudFR5cGVzLmluY2x1ZGVzKGl0ZW0udHlwZSkpIHtcbiAgICAgIHJldHVybiAhaXRlbS5wYXJlbnRIYW5kYm9va0lkID8gJycgOiBpdGVtLnBhcmVudEhhbmRib29rSWQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuICFpdGVtLnBhcmVudEZvbGRlcklkID8gJycgOiBpdGVtLnBhcmVudEZvbGRlcklkLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXRMaW5rVVJMKGRhdGE6IGFueSkge1xuICAgIGxldCB1cmwgPSAnJztcbiAgICBzd2l0Y2ggKGRhdGE/Lml0ZW1UeXBlKSB7XG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxuICAgICAgICB1cmwgPSBgL2RvY3VtZW50LyR7ZGF0YS5pZH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgdXJsID0gYC9wcm9jZXNzLWRldGFpbC8ke2RhdGEuZGlzcGxheUlkfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICB1cmwgPSBgL2FyZWEvZGV0YWlsLyR7ZGF0YS5pZH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOlxuICAgICAgICB1cmwgPSBgL2ZvbGRlci8ke2RhdGEuaWR9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3NJbnRlcmNvbm5lY3RlZDpcbiAgICAgICAgdXJsID0gYC9wcm9jZXNzLWludGVyY29ubmVjdGVkLyR7ZGF0YS5kaXNwbGF5SWR9YFxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgYXR0YWNobWVudCgpIHtcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUGFyYW10ZXIoKTtcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMuZGF0YS5tb2R1bGU7XG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuZGF0YS5lbnRpdHlJZDtcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiBcIjY1MHB4XCIsXG4gICAgICBoZWlnaHQ6IFwiNjUwcHhcIixcbiAgICAgIGRhdGEsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgfSk7XG4gICAgZGlhbG9nVGVtcGxhdGVcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLnVybCA9IHJlc3VsdC51cmw7XG4gICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlLm90aGVyO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldEVkaXRvckFuY2hvcigpIHtcbiAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xuICAgIGlmICh0aGlzLmVkaXRvckNvbnRlbnQpIHtcbiAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzLnB1c2goe1xuICAgICAgICBpZDogMCxcbiAgICAgICAgZW50aXR5SWQ6IDAsXG4gICAgICAgIGRvY3VtZW50SWQ6IDAsXG4gICAgICAgIGRvY3VtZW50VHlwZUlkOiAwLFxuICAgICAgICByaWNoVGV4dDogdGhpcy5lZGl0b3JDb250ZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcbiAgfVxuXG4gIGdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcikge1xuICAgIHRoaXMubGlua1NlcnZpY2VcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gcmVzO1xuICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0QW5jaG9yRG9jdW1lbnQoYW5jaG9yRG9jdW1lbnQ6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10pIHtcbiAgICB0aGlzLmluaXRBbmNob3IoKTtcbiAgICBsZXQgaWQgPSAzO1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMgJiZcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMubGVuZ3RoICYmXG4gICAgICB0aGlzLmRhdGEucW1zY2tJc0dldEFuY2hvck1vcmVDb250ZW50ICYmXG4gICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHRcbiAgICApIHtcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgdGhpcy5nZXRBbmNob3IoZmllbGQsIGlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQgJiYgYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLmdldEFuY2hvcihlLCBpZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcbiAgICAgIHZhbHVlOiAxLFxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50LFxuICAgIH0pO1xuICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcbiAgICAgIHZhbHVlOiAyLFxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX1JFTEFURURfRE9DVU1FTlQsXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5SZWxhdGVkLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QW5jaG9yKGUsIGlkKSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcbiAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xuICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIik7XG4gICAgaWYgKGFUYWdzKSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhVGFncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcbiAgICAgICAgaWYgKHRhZy5uYW1lKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3JzLnB1c2goe1xuICAgICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXG4gICAgICAgICAgICAgIGFuY2hvclZhbHVlOiB0YWcubmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWQgKz0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkaXNhYmxlT2tCdXR0b24oKSB7XG4gICAgbGV0IGlzRGlzYWJsZSA9IGZhbHNlO1xuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZExpbmtUeXBlKSB7XG4gICAgICBjYXNlIExpbmtUeXBlLnVybDpcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5saW5rRm9ybUdyb3VwLmludmFsaWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JUZXh0OlxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmFuY2hvclRleHRGb3JtR3JvdXAuaW52YWxpZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExpbmtUeXBlLmVtYWlsOlxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmVtYWlsRm9ybUdyb3VwLmludmFsaWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudDpcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5hbmNob3JEb2NGb3JtR3JvdXAuaW52YWxpZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGlzRGlzYWJsZTtcbiAgfVxuXG4gIHNldExpbmsoKSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xuICAgIGNvbnN0IGxpbmsgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XG4gICAgbGluay50eXBlSWQgPSB0aGlzLnNlbGVjdGVkTGlua1R5cGU7XG4gICAgbGluay50YXJnZXRJZCA9IHRoaXMuc2VsZWN0ZWRUYXJnZXQ7XG4gICAgbGluay5wcm90b2NvbElkID0gdGhpcy5zZWxlY3RlZFByb3RvY29sO1xuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZExpbmtUeXBlKSB7XG4gICAgICBjYXNlIExpbmtUeXBlLnVybDpcbiAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUubGVuZ3RoKSB7XG4gICAgICAgICAgbGluay50aXRsZSA9IGAke3RoaXMuZ2V0UHJvdG9jb2xOYW1lKCl9JHt0aGlzLmxpbmtGb3JtR3JvdXAudmFsdWUudXJsfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluay50aXRsZSA9IHRoaXMuYWR2aXNvcnlUaXRsZTtcbiAgICAgICAgfVxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0ke3RoaXMuc2VsZWN0ZWRQcm90b2NvbH0ke3RoaXMuZ2V0UHJvdG9jb2xOYW1lKCl9JHt0aGlzLnVybH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHswfSMke3RoaXMuYW5jaG9yVGV4dH1gO1xuICAgICAgICBsaW5rLnRpdGxlID0gYCMke3RoaXMuYW5jaG9yVGV4dH1gO1xuICAgICAgICBsaW5rLnRhcmdldElkID0gVGFyZ2V0VHlwZS50b3Btb3N0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XG4gICAgICAgIGxpbmsudXJsID0gYCR7dGhpcy5zZWxlY3RlZExpbmtUeXBlfSR7MH1tYWlsdG86JHt0aGlzLmVtYWlsQWRkcmVzc30/c3ViamVjdD0ke3RoaXMuZW1haWxTdWJqZWN0fSZib2R5PSR7dGhpcy5lbWFpbEJvZHlcbiAgICAgICAgICB9YDtcbiAgICAgICAgbGluay50aXRsZSA9IHRoaXMuZW1haWxBZGRyZXNzO1xuICAgICAgICBsaW5rLnRhcmdldElkID0gVGFyZ2V0VHlwZS50b3Btb3N0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQ6XG4gICAgICAgIGxpbmsudXJsID0gYCR7dGhpcy5zZWxlY3RlZExpbmtUeXBlfSR7MH0vZG9jdW1lbnQvJHt0aGlzLmRvY3VtZW50SWR9IyR7dGhpcy5hbmNob3JCeU5hbWV9YDtcbiAgICAgICAgbGluay50aXRsZSA9IHRoaXMuYW5jaG9yVGl0bGU7XG4gICAgICAgIGxpbmsudGFyZ2V0SWQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0QW5jaG9yRG9jdW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShsaW5rKTtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gIH1cblxuICBnZXRVcmxUb1NldFByb3RvY29sKCkge1xuICAgIGlmICghdGhpcy51cmwubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxpc3RQcm90b2NvbE5hbWUgPSBPYmplY3QudmFsdWVzKFByb3RvY29sVHlwZU5hbWUpO1xuICAgIGZvciAobGV0IGluZGV4IGluIGxpc3RQcm90b2NvbE5hbWUpIHtcbiAgICAgIGlmIChsaXN0UHJvdG9jb2xOYW1lW2luZGV4XS5sZW5ndGggJiYgdGhpcy51cmwuaW5kZXhPZihsaXN0UHJvdG9jb2xOYW1lW2luZGV4XS50b1N0cmluZygpKSA9PT0gMCkge1xuICAgICAgICBzd2l0Y2ggKGxpc3RQcm90b2NvbE5hbWVbaW5kZXhdKSB7XG4gICAgICAgICAgY2FzZSBQcm90b2NvbFR5cGVOYW1lLmh0dHA6XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLmh0dHAsIFByb3RvY29sVHlwZU5hbWUuaHR0cCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgUHJvdG9jb2xUeXBlTmFtZS5odHRwczpcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUuaHR0cHMsIFByb3RvY29sVHlwZU5hbWUuaHR0cHMpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuZnRwOlxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5mdHAsIFByb3RvY29sVHlwZU5hbWUuZnRwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBQcm90b2NvbFR5cGVOYW1lLm5ld3M6XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLm5ld3MsIFByb3RvY29sVHlwZU5hbWUubmV3cyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXJsLmluZGV4T2YoJzovLycpICE9PSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlLm90aGVyO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2wocHJvdG9jb2xUeXBlOiBudW1iZXIsIHByb3RvY29sTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm90b2NvbCAhPT0gcHJvdG9jb2xUeXBlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBwcm90b2NvbFR5cGU7XG4gICAgfVxuICAgIHRoaXMudXJsID0gdGhpcy51cmwuc2xpY2UocHJvdG9jb2xOYW1lLmxlbmd0aCk7XG4gICAgdGhpcy5saW5rRm9ybUdyb3VwLnBhdGNoVmFsdWUoeyB1cmw6IHRoaXMudXJsIH0pO1xuICB9XG5cbiAgZ2V0UHJvdG9jb2xOYW1lKCkge1xuICAgIHJldHVybiBQcm90b2NvbFR5cGVOYW1lW1Byb3RvY29sVHlwZVt0aGlzLnNlbGVjdGVkUHJvdG9jb2xdXTtcbiAgfVxuXG4gIHNldExpbmtVcmxUeXBlKCRldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKCRldmVudClcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgaWYgKHRoaXMubGlua0Zvcm1Hcm91cC5pbnZhbGlkKVxuICAgICAgcmV0dXJuO1xuXG4gICAgdGhpcy5zZXRMaW5rKCk7XG4gIH1cbn1cbiJdfQ==
@@ -19,4 +19,4 @@ export class QMSCKEditorImageArea {
19
19
  this.target = '';
20
20
  }
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9tb2RlbHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxtQkFBbUI7SUFXNUI7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtJQU83QjtRQUNJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JJbWFnZU1hcCB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBpbWFnZVVybDogc3RyaW5nO1xyXG4gICAgYXJlYXM6IFFNU0NLRWRpdG9ySW1hZ2VBcmVhW107XHJcbiAgICBtb2R1bGU6IG51bWJlcjtcclxuICAgIGVudGl0eUlkOiBzdHJpbmc7XHJcbiAgICBlZGl0b3JDb250ZW50OiBzdHJpbmc7XHJcbiAgICBsaW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZDogYm9vbGVhbjtcclxuICAgIGltYWdlSGVpZ2h0OiBudW1iZXI7XHJcbiAgICBpbWFnZVdpZHRoOiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJyc7XHJcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9ICcnO1xyXG4gICAgICAgIHRoaXMuYXJlYXMgPSBbXTtcclxuICAgICAgICB0aGlzLmVudGl0eUlkID0gJyc7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JDb250ZW50ID0gJyc7XHJcbiAgICAgICAgdGhpcy5pbWFnZUhlaWdodCA9IDA7XHJcbiAgICAgICAgdGhpcy5pbWFnZVdpZHRoID0gMDtcclxuICAgICAgICB0aGlzLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdHJ1ZTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9ySW1hZ2VBcmVhIHtcclxuICAgIHNoYXBlOiBcInJlY3RcIiB8IFwiY2lyY2xlXCIgfCBcInBvbHlcIiB8IFwiXCI7XHJcbiAgICBjb29yZHM6IHN0cmluZztcclxuICAgIGhyZWY6IHN0cmluZztcclxuICAgIHRhcmdldDogc3RyaW5nO1xyXG4gICAgYWx0OiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5zaGFwZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuY29vcmRzID0gJyc7XHJcbiAgICAgICAgdGhpcy5hbHQgPSAnJztcclxuICAgICAgICB0aGlzLmhyZWYgPSAnJztcclxuICAgICAgICB0aGlzLnRhcmdldCA9ICcnO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9tb2RlbHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxtQkFBbUI7SUFZNUI7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtJQU83QjtRQUNJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JJbWFnZU1hcCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgYXJlYXM6IFFNU0NLRWRpdG9ySW1hZ2VBcmVhW107XG4gICAgbW9kdWxlOiBudW1iZXI7XG4gICAgZW50aXR5SWQ6IHN0cmluZztcbiAgICBlZGl0b3JDb250ZW50OiBzdHJpbmc7XG4gICAgbGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQ6IGJvb2xlYW47XG4gICAgaW1hZ2VIZWlnaHQ6IG51bWJlcjtcbiAgICBpbWFnZVdpZHRoOiBudW1iZXI7XG4gICAgZW5hYmxlZEludGVyY29ubmVjdGVkPzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm5hbWUgPSAnJztcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9ICcnO1xuICAgICAgICB0aGlzLmFyZWFzID0gW107XG4gICAgICAgIHRoaXMuZW50aXR5SWQgPSAnJztcbiAgICAgICAgdGhpcy5lZGl0b3JDb250ZW50ID0gJyc7XG4gICAgICAgIHRoaXMuaW1hZ2VIZWlnaHQgPSAwO1xuICAgICAgICB0aGlzLmltYWdlV2lkdGggPSAwO1xuICAgICAgICB0aGlzLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckltYWdlQXJlYSB7XG4gICAgc2hhcGU6IFwicmVjdFwiIHwgXCJjaXJjbGVcIiB8IFwicG9seVwiIHwgXCJcIjtcbiAgICBjb29yZHM6IHN0cmluZztcbiAgICBocmVmOiBzdHJpbmc7XG4gICAgdGFyZ2V0OiBzdHJpbmc7XG4gICAgYWx0OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zaGFwZSA9ICcnO1xuICAgICAgICB0aGlzLmNvb3JkcyA9ICcnO1xuICAgICAgICB0aGlzLmFsdCA9ICcnO1xuICAgICAgICB0aGlzLmhyZWYgPSAnJztcbiAgICAgICAgdGhpcy50YXJnZXQgPSAnJztcbiAgICB9XG59XG4iXX0=