tnx-shared 5.1.78 → 5.1.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/bundles/tnx-shared.umd.js +994 -321
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/base/data-form-base.d.ts +1 -0
  6. package/classes/base/data-form-base.d.ts.map +1 -1
  7. package/classes/base/data-list-base.d.ts +2 -1
  8. package/classes/base/data-list-base.d.ts.map +1 -1
  9. package/classes/form-schema.d.ts +3 -0
  10. package/classes/form-schema.d.ts.map +1 -1
  11. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  12. package/components/crud/crud-list/crud-list.component.d.ts +1 -0
  13. package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
  14. package/components/entity-permission/services.cs/entity-permission.service.d.ts +1 -0
  15. package/components/entity-permission/services.cs/entity-permission.service.d.ts.map +1 -1
  16. package/components/file-explorer/file-manager/file-manager.component.d.ts +1 -0
  17. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  18. package/components/file-explorer/services/file-data.service.d.ts +1 -0
  19. package/components/file-explorer/services/file-data.service.d.ts.map +1 -1
  20. package/components/query-builders/query-builder/query-builder.component.d.ts.map +1 -1
  21. package/components/query-builders/query-builder-group/query-builder-group.component.d.ts +1 -0
  22. package/components/query-builders/query-builder-group/query-builder-group.component.d.ts.map +1 -1
  23. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
  24. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
  25. package/components/statemachines/models/constants.d.ts +5 -1
  26. package/components/statemachines/models/constants.d.ts.map +1 -1
  27. package/components/statemachines/models/enums.d.ts +4 -0
  28. package/components/statemachines/models/enums.d.ts.map +1 -1
  29. package/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.d.ts.map +1 -1
  30. package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts +3 -0
  31. package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts.map +1 -1
  32. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts +28 -0
  33. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts.map +1 -0
  34. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.ngfactory.d.ts.map +1 -0
  35. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.scss.shim.ngstyle.d.ts.map +1 -0
  36. package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts +3 -1
  37. package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts.map +1 -1
  38. package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts +3 -1
  39. package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts.map +1 -1
  40. package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts +6 -4
  41. package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts.map +1 -1
  42. package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts +3 -3
  43. package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts.map +1 -1
  44. package/components/user-picker/user-picker.component.d.ts +8 -2
  45. package/components/user-picker/user-picker.component.d.ts.map +1 -1
  46. package/components/workflow/models/models.d.ts +8 -8
  47. package/components/workflow/models/models.d.ts.map +1 -1
  48. package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts +1 -1
  49. package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts.map +1 -1
  50. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +3 -6
  51. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
  52. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts +3 -3
  53. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts.map +1 -1
  54. package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts +1 -0
  55. package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts.map +1 -1
  56. package/configs/component-context.constant.d.ts +1 -0
  57. package/configs/component-context.constant.d.ts.map +1 -1
  58. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +8 -3
  59. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
  60. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +2 -0
  61. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  62. package/congviec/congviec/congviec.component.d.ts.map +1 -1
  63. package/congviec/congviec/services/congviec-dinhkem.service.d.ts +8 -0
  64. package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
  65. package/congviec/congviec/services/congviec.service.d.ts.map +1 -1
  66. package/esm2015/classes/base/data-form-base.js +6 -3
  67. package/esm2015/classes/base/data-list-base.js +13 -3
  68. package/esm2015/classes/form-schema.js +1 -1
  69. package/esm2015/components/crud/crud-form/crud-form.component.js +2 -1
  70. package/esm2015/components/crud/crud-list/crud-list.component.js +6 -2
  71. package/esm2015/components/entity-permission/services.cs/entity-permission.service.js +8 -5
  72. package/esm2015/components/file-explorer/file-manager/file-manager.component.js +17 -10
  73. package/esm2015/components/file-explorer/services/file-data.service.js +15 -15
  74. package/esm2015/components/query-builders/query-builder/query-builder.component.js +24 -7
  75. package/esm2015/components/query-builders/query-builder-group/query-builder-group.component.js +6 -2
  76. package/esm2015/components/query-builders/query-builder-rule/query-builder-rule.component.js +39 -3
  77. package/esm2015/components/share-link-by-permission/share-link-by-permission.component.js +2 -2
  78. package/esm2015/components/statemachines/models/constants.js +9 -4
  79. package/esm2015/components/statemachines/models/enums.js +6 -1
  80. package/esm2015/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.js +9 -5
  81. package/esm2015/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.js +19 -6
  82. package/esm2015/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.js +179 -0
  83. package/esm2015/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.js +32 -1
  84. package/esm2015/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.js +32 -1
  85. package/esm2015/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.js +39 -8
  86. package/esm2015/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.js +19 -7
  87. package/esm2015/components/statemachines/statemachines-designer/statemachines-designer.component.js +1 -1
  88. package/esm2015/components/statemachines/utils/utils.js +6 -6
  89. package/esm2015/components/tn-app-help/tn-app-help.component.js +1 -1
  90. package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
  91. package/esm2015/components/user-picker/user-picker.component.js +47 -6
  92. package/esm2015/components/workflow/models/models.js +1 -7
  93. package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js +39 -42
  94. package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +7 -40
  95. package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +10 -12
  96. package/esm2015/components/workflow/workflow-setting-new/workflow-setting-new.component.js +67 -10
  97. package/esm2015/configs/component-context.constant.js +3 -2
  98. package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +50 -14
  99. package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +24 -12
  100. package/esm2015/congviec/congviec/congviec.component.js +7 -6
  101. package/esm2015/congviec/congviec/services/congviec-dinhkem.service.js +57 -1
  102. package/esm2015/congviec/congviec/services/congviec.service.js +3 -3
  103. package/esm2015/services/base.service.js +4 -1
  104. package/esm2015/services/dm-chucvu.service.js +28 -0
  105. package/esm2015/services/role.service.js +1 -1
  106. package/esm2015/tnx-shared.js +69 -67
  107. package/esm2015/tnx-shared.module.js +3 -1
  108. package/fesm2015/tnx-shared.js +776 -220
  109. package/fesm2015/tnx-shared.js.map +1 -1
  110. package/package.json +2 -2
  111. package/services/base.service.d.ts +1 -0
  112. package/services/base.service.d.ts.map +1 -1
  113. package/services/dm-chucvu.service.d.ts +12 -0
  114. package/services/dm-chucvu.service.d.ts.map +1 -0
  115. package/services/dm-chucvu.service.ngfactory.d.ts.map +1 -0
  116. package/tnx-shared.d.ts +68 -66
  117. package/tnx-shared.d.ts.map +1 -1
  118. package/tnx-shared.metadata.json +1 -1
  119. package/tnx-shared.module.d.ts +2 -1
  120. package/tnx-shared.module.d.ts.map +1 -1
  121. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -81,7 +81,8 @@ export class BaseCongViecComponent extends DataListBase {
81
81
  this.setting.cols = [
82
82
  new ColumnSchemaBase({
83
83
  field: 'ten',
84
- dataType: 'congViecInfo'
84
+ dataType: 'congViecInfo',
85
+ width: '18rem'
85
86
  }),
86
87
  new ColumnSchemaBase({
87
88
  field: 'ngayBatDau',
@@ -93,7 +94,7 @@ export class BaseCongViecComponent extends DataListBase {
93
94
  }),
94
95
  new ColumnSchemaBase({
95
96
  field: 'idLoaiCongViec',
96
- width: '10%',
97
+ width: '100px',
97
98
  baseService: this._dmLoaiCongViecService,
98
99
  isTree: true,
99
100
  fieldTree: 'idParent',
@@ -101,14 +102,14 @@ export class BaseCongViecComponent extends DataListBase {
101
102
  }),
102
103
  new ColumnSchemaBase({
103
104
  field: 'idLinhVuc',
104
- width: '10%',
105
+ width: '100px',
105
106
  baseService: this._dmLinhVucCongViecService
106
107
  }),
107
108
  new ColumnSchemaBase({
108
109
  field: 'idPriority',
109
110
  dataType: 'idPriority',
110
111
  dataTypeRefField: 'idPriority',
111
- width: '10%',
112
+ width: '80px',
112
113
  baseService: this._dmPriorityService,
113
114
  fieldPlus: 'background,color',
114
115
  funcSetValueRow: (rowItem, data) => {
@@ -345,7 +346,7 @@ export class BaseCongViecComponent extends DataListBase {
345
346
  BaseCongViecComponent.decorators = [
346
347
  { type: Component, args: [{
347
348
  selector: 'base-congviec',
348
- template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n (onCopyLink)=\"_copyLink($event)\" (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\"\r\n (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <base-congviec-form #formBase [parentModel]=\"model\" [parentSetting]=\"setting\" [parentContext]=\"context\"\r\n [model]=\"formModel\" [crudList]=\"crudList\" (onSaved)=\"showDetailForm = false;crudList.reload()\"\r\n (onCancel)=\"_handleCancel($event)\" (onAfterSaved)=\"onAfterSaved($event)\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showPickerForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"'Ch\u1ECDn c\u00F4ng vi\u1EC7c' | translate\" [popupSize]=\"setting.popupSize\" [showFooter]=\"true\"\r\n [useDefaultScrollBar]=\"true\" (onHide)=\"showPickerForm = false\">\r\n <base-congviec #congViecPicker [isPicker]=\"true\" [loaiDanhSach]=\"loaiDanhSach\" [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn' | translate\"\r\n (click)=\"onSelectCongViec()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"showPickerForm=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
349
+ template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n [showScrollHorizontal]=\"true\" (onCopyLink)=\"_copyLink($event)\" (onCopyLinkMultiple)=\"_copyLinkMultiple()\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\"\r\n (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <base-congviec-form #formBase [parentModel]=\"model\" [parentSetting]=\"setting\" [parentContext]=\"context\"\r\n [model]=\"formModel\" [crudList]=\"crudList\" (onSaved)=\"showDetailForm = false;crudList.reload()\"\r\n (onCancel)=\"_handleCancel($event)\" (onAfterSaved)=\"onAfterSaved($event)\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showPickerForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"'Ch\u1ECDn c\u00F4ng vi\u1EC7c' | translate\" [popupSize]=\"setting.popupSize\" [showFooter]=\"true\"\r\n [useDefaultScrollBar]=\"true\" (onHide)=\"showPickerForm = false\">\r\n <base-congviec #congViecPicker [isPicker]=\"true\" [loaiDanhSach]=\"loaiDanhSach\" [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn' | translate\"\r\n (click)=\"onSelectCongViec()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"showPickerForm=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
349
350
  providers: [ComponentContextService],
350
351
  styles: [".container-task-info .percent-done{background-color:#f0f0f0;border-radius:2px;height:5px;margin-top:5px;overflow:hidden;position:relative}.container-task-info .percent-done .detail{background:#3eb839;border-radius:2px;font-size:13px;height:5px;left:0;position:absolute;text-align:center;top:0}.priority{text-align:center}.priority>span{border-radius:3px;font-size:.8em;padding:3px 7px}"]
351
352
  },] }
@@ -370,4 +371,4 @@ BaseCongViecComponent.propDecorators = {
370
371
  formState: [{ type: Input }],
371
372
  isChildView: [{ type: Input }]
372
373
  };
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL2Nvbmd2aWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTzlFLE1BQU0sT0FBTyxx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QUMsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6SCxDQUFDOzs7WUE3V0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixxdEdBQXdDO2dCQUV4QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQXBCa0MsUUFBUTtZQWFsQyxlQUFlO1lBSmYscUJBQXFCO1lBRHJCLHdCQUF3QjtZQUV4QixpQkFBaUI7WUFIakIsc0JBQXNCO1lBT3RCLHVCQUF1Qjs7OzJCQVEzQixTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs2QkFDdkMsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt3QkFDN0MsS0FBSzt1QkFDTCxLQUFLOzJCQUNMLEtBQUs7eUJBQ0wsS0FBSzs4QkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgRGlhbG9nTW9kZWwsIE1vZGVsU2NoZW1hLCBPcGVyYXRvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBLZXlGaWx0ZXJTdGF0ZUJ5TWVudUNvbmdWaWVjLCBUb3BpY1JlbG9hZENvbmdWaWVjVjUgfSBmcm9tICcuLi8uLi9jb25zdC9jb21tb24nO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi4vY2F1aGluaC13b3JrZmxvdy9zZXJ2aWNlcy9jYXVoaW5oLXdvcmtmbG93LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxpbmhWdWNDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi9kbS1saW5odnVjLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxpbmh2dWMtY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtTG9haUNvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL2RtLWxvYWktY29uZ3ZpZWMvc2VydmljZXMvZG0tbG9haS1jb25ndmllYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG1Qcmlvcml0eVNlcnZpY2UgfSBmcm9tICcuLi9kbS1wcmlvcml0eS9zZXJ2aWNlcy9kbS1wcmlvcml0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLCBFbnVtU3RhdGVCeU1lbnVDb25nVmllYyB9IGZyb20gJy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IEJhc2VDb25nVmllY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL2Nvbmd2aWVjLWZvcm0vY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25nVmllY0xpZW5RdWFuU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZ3ZpZWNsaWVucXVhbi5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jhc2UtY29uZ3ZpZWMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvbmd2aWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nvbmd2aWVjLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQ29uZ1ZpZWNDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdmb3JtQmFzZScsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25nVmllY0Zvcm06IEJhc2VDb25nVmllY0Zvcm1Db21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjb25nVmllY1BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25nVmllY1BpY2tlcjogQmFzZUNvbmdWaWVjQ29tcG9uZW50O1xyXG4gICAgQElucHV0KCkgc3RhdGVDb2RlOiBFbnVtU3RhdGVCeU1lbnVDb25nVmllYztcclxuICAgIEBJbnB1dCgpIGlzUGlja2VyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbG9haURhbmhTYWNoOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpZENvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0Zyb21EYXNoYm9hcmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5WSUVXO1xyXG4gICAgQElucHV0KCkgaXNDaGlsZFZpZXcgPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hTY2hlbWE6IGFueSA9IHt9O1xyXG4gICAgc2VhcmNoRGF0YTogYW55ID0ge307XHJcbiAgICBkaWNXb3JrZmxvd0J5TG9haUNvbmdWaWVjID0ge307XHJcbiAgICBkaWNMb2FpQ29uZ1ZpZWMgPSB7fTtcclxuICAgIGNvbmdWaWVjVmlld01vZGVsID0gbmV3IERpYWxvZ01vZGVsKHtcclxuICAgICAgICBoZWFkZXI6ICdYZW0gY2hpIHRp4bq/dCBjw7RuZyB2aeG7h2MnXHJcbiAgICB9KTtcclxuICAgIHNob3dQaWNrZXJGb3JtOiBib29sZWFuO1xyXG4gICAgaGlkZGVuQWRkOiBib29sZWFuO1xyXG4gICAgaGlkZGVuRWRpdDogYm9vbGVhbjtcclxuICAgIGhpZGRlbkRlbGV0ZTogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcm90ZWN0ZWQgX2NvbmdWaWVjU2VydmljZTogQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbUxpbmhWdWNDb25nVmllY1NlcnZpY2U6IERtTGluaFZ1Y0NvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RtUHJpb3JpdHlTZXJ2aWNlOiBEbVByaW9yaXR5U2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2NhdUhpbmhXb3JrZmxvd1NlcnZpY2U6IENhdUhpbmhXb3JrZmxvd1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2U6IENvbmdWaWVjTGllblF1YW5TZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDb2RlID0gdGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YS5zdGF0ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnBvcHVwU2l6ZS53aWR0aCA9IDEzNjA7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnBvcHVwU2l6ZS5oZWlnaHQgPSA3NjA7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy51c2VXb3JrZmxvd05ldyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmlzV29ya2Zsb3dUcmVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuZGlzcGxheUZpZWxkID0gKGl0ZW0pID0+IGl0ZW0udGVuO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRnJvbURhc2hib2FyZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuUGFnZVRpdGxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLndvcmtmbG93Q29uZmlnQWR2YW5jZSA9IHtcclxuICAgICAgICAgICAgZ2V0V29ya2Zsb3dTZXR0aW5nOiB0aGlzLmdldFdvcmtmbG93Q29uZmlnLmJpbmQodGhpcylcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UudXNlV29ya2Zsb3cgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuRWRpdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5IZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRkZW5BZGQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BZHZhbmNlU2VhcmNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5WSUVXICYmIHRoaXMuaXNDaGlsZFZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblRvb2xiYXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0ZW4nLCBuYW1lOiAnVMOqbicsIGZ1bGxOYW1lOiAnVMOqbicsIGRlc2NyaXB0aW9uOiAnVMOqbicgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbW9UYScsIG5hbWU6ICdNw7QgdOG6oycsIGZ1bGxOYW1lOiAnTcO0IHThuqMnLCBkZXNjcmlwdGlvbjogJ03DtCB04bqjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5QmF0RGF1JywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IGLhuq90IMSR4bqndScsIGZ1bGxOYW1lOiAnTmfDoHkgYuG6r3QgxJHhuqd1JywgZGVzY3JpcHRpb246ICdOZ8OgeSBi4bqvdCDEkeG6p3UnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ25nYXlLZXRUaHVjJywgZGF0YVR5cGU6ICdkYXRlJywgbmFtZTogJ05nw6B5IGvhur90IHRow7pjJywgZnVsbE5hbWU6ICdOZ8OgeSBr4bq/dCB0aMO6YycsIGRlc2NyaXB0aW9uOiAnTmfDoHkga+G6v3QgdGjDumMnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkUHJpb3JpdHknLCBuYW1lOiAnxJDhu5kgxrB1IHRpw6puJywgZnVsbE5hbWU6ICfEkOG7mSDGsHUgdGnDqm4nLCBkZXNjcmlwdGlvbjogJ8SQ4buZIMawdSB0acOqbicgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLCBuYW1lOiAnTG/huqFpIGPDtG5nIHZp4buHYycsIGZ1bGxOYW1lOiAnTG/huqFpIGPDtG5nIHZp4buHYycsIGRlc2NyaXB0aW9uOiAnTG/huqFpIGPDtG5nIHZp4buHYycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnaWRMaW5oVnVjJywgbmFtZTogJ0zEqW5oIHbhu7FjJywgZnVsbE5hbWU6ICdMxKluaCB24buxYycsIGRlc2NyaXB0aW9uOiAnTMSpbmggduG7sWMnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3BoYW5UcmFtJywgZGF0YVR5cGU6ICdpbnQnLCBuYW1lOiAnUGjhuqduIHRyxINtJywgZnVsbE5hbWU6ICdQaOG6p24gdHLEg20nLCBkZXNjcmlwdGlvbjogJ1Bo4bqnbiB0csSDbScgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3RlbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2NvbmdWaWVjSW5mbydcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4JyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTVweCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFRyZWU6ICdpZFBhcmVudCcsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3REZXNjZW5kYW50OiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTGluaFZ1YycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkUHJpb3JpdHknLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlUmVmRmllbGQ6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbVByaW9yaXR5U2VydmljZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ2JhY2tncm91bmQsY29sb3InLFxyXG4gICAgICAgICAgICAgICAgZnVuY1NldFZhbHVlUm93OiAocm93SXRlbSwgZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0l0ZW0ucHJpb3JpdHlDb2xvciA9IGRhdGEuY29sb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93SXRlbS5wcmlvcml0eUJhY2tncm91bmQgPSBkYXRhLmJhY2tncm91bmQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnN1YnNjcmliZShUb3BpY1JlbG9hZENvbmdWaWVjVjUsIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5maWVsZFNlYXJjaFRleHQgPSBbJ3RlbicsICdtb1RhJ107XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm9iamVjdE5hbWUgPSAnIGPDtG5nIHZp4buHYyc7XHJcblxyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC51blN1YnNjcmliZShUb3BpY1JlbG9hZENvbmdWaWVjVjUpO1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW9kaWZ5R3JpZEluZm8oZ3JpZEluZm8/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGlmICghZ3JpZEluZm8uc29ydHMgfHwgIWdyaWRJbmZvLnNvcnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cyA9IFt7IGZpZWxkOiAnY3JlYXRlZCcsIGRpcjogLTEgfV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNGcm9tRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlQ29kZSkge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKEtleUZpbHRlclN0YXRlQnlNZW51Q29uZ1ZpZWMsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnN0YXRlQ29kZSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICAvLyBDw7RuZyB2aeG7h2MgbGnDqm4gcXVhblxyXG4gICAgICAgICAgICBjb25zdCBpZHNDb25nVmllY0xpZW5RdWFuID0gYXdhaXQgdGhpcy5nZXRJZHNDb25nVmllY0xpZW5RdWFuKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90RXF1YWwsIHRoaXMuaWRDb25nVmllYykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlkc0NvbmdWaWVjTGllblF1YW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RJbiwgaWRzQ29uZ1ZpZWNMaWVuUXVhbikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlkc0NvbmdWaWVjTGllblF1YW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgaWRzQ29uZ1ZpZWNMaWVuUXVhbikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0Nvbikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1BpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWRDaGEnLCBPcGVyYXRvci5pc051bGwsIHRydWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcnMgPSBhd2FpdCB0aGlzLl9jb25nVmllY1NlcnZpY2UuZ2V0RGV0YWlsKHRoaXMuaWRDb25nVmllYyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcnMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5kYXRhLmlkQ2hhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RFcXVhbCwgcnMuZGF0YS5pZENoYSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCguLi5maWx0ZXJzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWRDaGEnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pZENvbmdWaWVjKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0ucGhhblRyYW0pIGl0ZW0ucGhhblRyYW0gPSA1O1xyXG4gICAgICAgICAgICBpdGVtLnBlcmNlbnRXaWR0aCA9IGAke2l0ZW0ucGhhblRyYW19JWA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvbWlzZUdldERhdGEoZ3JpZEluZm86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGcm9tRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5maWx0ZXIsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZUNvZGU6IHRoaXMucGFyZW50TW9kZWwuc2VsZWN0ZWRJdGVtLnN0YXRlQ29kZSxcclxuICAgICAgICAgICAgICAgIHN0YXRlQ29kZUJ5Vmlld0RvblZpOiB0aGlzLnBhcmVudE1vZGVsLnNlbGVjdGVkSXRlbS5zdGF0ZUNvZGVCeVZpZXdEb25WaSxcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25nVmllY1NlcnZpY2UuZ2V0TGlzdFRhc2tzRGFzaGJvYXJkKGZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZS5nZXRCeUdyaWRSZXF1ZXN0KGdyaWRJbmZvLCB0aGlzLnBsdXNVcmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGFzeW5jIGdldERhdGFTb3VyY2VUcmFuZ1RoYWlXb3JrZmxvdygpIHtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLmdldERhdGFzb3VyY2VXb3JrZmxvd0NvbmdWaWVjKCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBvdmVycmlkZSBmcm9tIGRhdGEtbGlzdC1iYXNlXHJcbiAgICAgKiBAcGFyYW0gcm93RGF0YSBC4bqjbiBnaGkgY2xpY2tcclxuICAgICAqIEByZXR1cm5zIEPhuqV1IGjDrG5oIHdvcmtmbG93IHRoZW8gaWQgbG/huqFpIGPDtG5nIHZp4buHYyBj4bunYSBi4bqjbiBnaGlcclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0V29ya2Zsb3dDb25maWcocm93RGF0YSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UuZ2V0V29ya2Zsb3dTZXR0aW5nQnlJZExvYWlDb25nVmllYyhyb3dEYXRhLmlkTG9haUNvbmdWaWVjKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRJZHNDb25nVmllY0xpZW5RdWFuKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbdGhpcy5uZXdGaWx0ZXJDb250YWluZXIoJ29yJyxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ29uZ1ZpZWMnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pZENvbmdWaWVjKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkQ29uZ1ZpZWNMaWVuUXVhbicsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKV07XHJcbiAgICAgICAgY29uc3QgcnMgPSBhd2FpdCB0aGlzLl9jb25nVmllY0xpZW5RdWFuU2VydmljZS5nZXRBbGwoZmlsdGVycywgJ2lkQ29uZ1ZpZWMsaWRDb25nVmllY0xpZW5RdWFuJyk7XHJcbiAgICAgICAgY29uc3QgaWRzQ29uZ1ZpZWNMaWVuUXVhbiA9IFtdO1xyXG4gICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHJzLmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlkQ29uZ1ZpZWMgPT0gZWxlbWVudC5pZENvbmdWaWVjKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWNMaWVuUXVhbi5wdXNoKGVsZW1lbnQuaWRDb25nVmllY0xpZW5RdWFuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaWRDb25nVmllYyA9PSBlbGVtZW50LmlkQ29uZ1ZpZWNMaWVuUXVhbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjTGllblF1YW4ucHVzaChlbGVtZW50LmlkQ29uZ1ZpZWMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlkc0NvbmdWaWVjTGllblF1YW47XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2hhbmdlZFN0YXR1c1dvcmtmbG93KGl0ZW1JZCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmdWaWVjRm9ybVxyXG4gICAgICAgICAgICAmJiB0aGlzLmZvcm1Nb2RlbC5kYXRhXHJcbiAgICAgICAgICAgICYmIHRoaXMuZm9ybU1vZGVsLmRhdGEuaWQgPT0gaXRlbUlkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZ1ZpZWNGb3JtLmNsZWFyV29ya2Zsb3dCdXR0b25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZ1ZpZWNGb3JtLl90cmlnZ2VyR2V0RGV0YWlsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hvbkNvbmdWaWVjKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1BpY2tlckZvcm0gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWZ0ZXJTYXZlZChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW3tcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKSxcclxuICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWNMaWVuUXVhbjogaWRcclxuICAgICAgICAgICAgfV07XHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0Nvbikge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgIGlkQ2hhOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICBpZHNDb25nVmllYzogW2lkXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjQ29uKG1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2RlbGV0ZShyb3dEYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZUNvbmZpcm0oKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NEZWxldGUoW3Jvd0RhdGEuaWRdKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzdXBlci5fZGVsZXRlKHJvd0RhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfZGVsZXRlTXVsdGlwbGUoaXRlbXMpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSBpdGVtcy5tYXAoeCA9PiB4LmlkKTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NEZWxldGUoaWRzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzRGVsZXRlKGlkcyA9IFtdKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllYzogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWM6IGlkc1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9jb25nVmllY0xpZW5RdWFuU2VydmljZS5kZWxldGVCdWxrQ29uZ1ZpZWNMaWVuUXVhbihtb2RlbClcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZURhdGFTdWNjZXNzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmdCeVJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLmRlbGV0ZUJ1bGtDb25nVmllY0NvbihpZHMpXHJcbiAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhU3VjY2VzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nQnlSZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YUVycm9yKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RDb25nVmllYygpIHtcclxuICAgICAgICBpZiAodGhpcy5jb25nVmllY1BpY2tlci5tb2RlbC5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY29uZ1ZpZWNQaWNrZXIubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWM6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbmdWaWVjTGllblF1YW46IGl0ZW0uaWRcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpZENoYTogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiB0aGlzLmNvbmdWaWVjUGlja2VyLm1vZGVsLnNlbGVjdGVkSXRlbXMubWFwKHggPT4geC5pZClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENvbmdWaWVjQ29uKG1vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dQaWNrZXJGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q29uZ1ZpZWNMaWVuUXVhbihpdGVtcyA9IFtdKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UuaW5zZXJ0QnVsa0FzeW5jKGl0ZW1zKS50aGVuKHJlc3BvbnNlID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UsICcnLCBmID0+IHRoaXMucmVsb2FkKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRDb25nVmllY0Nvbihtb2RlbCkge1xyXG4gICAgICAgIHRoaXMuX2NvbmdWaWVjU2VydmljZS51cGRhdGVCdWxrSWRDaGEobW9kZWwpLnRoZW4ocmVzcG9uc2UgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSwgJycsIGYgPT4gdGhpcy5yZWxvYWQoKSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL2Nvbmd2aWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTzlFLE1BQU0sT0FBTyxx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SUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBSztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQzs7O1lBOVdKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZUFBZTtnQkFDekIscXZHQUF3QztnQkFFeEMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFwQmtDLFFBQVE7WUFhbEMsZUFBZTtZQUpmLHFCQUFxQjtZQURyQix3QkFBd0I7WUFFeEIsaUJBQWlCO1lBSGpCLHNCQUFzQjtZQU90Qix1QkFBdUI7OzsyQkFRM0IsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBQ3ZDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7d0JBQzdDLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIERpYWxvZ01vZGVsLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgS2V5RmlsdGVyU3RhdGVCeU1lbnVDb25nVmllYywgVG9waWNSZWxvYWRDb25nVmllY1Y1IH0gZnJvbSAnLi4vLi4vY29uc3QvY29tbW9uJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQ2F1SGluaFdvcmtmbG93U2VydmljZSB9IGZyb20gJy4uL2NhdWhpbmgtd29ya2Zsb3cvc2VydmljZXMvY2F1aGluaC13b3JrZmxvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYywgRW51bVN0YXRlQnlNZW51Q29uZ1ZpZWMgfSBmcm9tICcuLi9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZ1ZpZWNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb25ndmllYy1mb3JtL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25ndmllYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZ1ZpZWNMaWVuUXVhblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbmd2aWVjbGllbnF1YW4uc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYXNlLWNvbmd2aWVjJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25ndmllYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb25ndmllYy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmdWaWVjQ29tcG9uZW50IGV4dGVuZHMgRGF0YUxpc3RCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnZm9ybUJhc2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgY29uZ1ZpZWNGb3JtOiBCYXNlQ29uZ1ZpZWNGb3JtQ29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnY29uZ1ZpZWNQaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29uZ1ZpZWNQaWNrZXI6IEJhc2VDb25nVmllY0NvbXBvbmVudDtcclxuICAgIEBJbnB1dCgpIHN0YXRlQ29kZTogRW51bVN0YXRlQnlNZW51Q29uZ1ZpZWM7XHJcbiAgICBASW5wdXQoKSBpc1BpY2tlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGxvYWlEYW5oU2FjaDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgaWRDb25nVmllYzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaXNGcm9tRGFzaGJvYXJkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBmb3JtU3RhdGUgPSBGb3JtU3RhdGUuVklFVztcclxuICAgIEBJbnB1dCgpIGlzQ2hpbGRWaWV3ID0gZmFsc2U7XHJcblxyXG4gICAgc2VhcmNoU2NoZW1hOiBhbnkgPSB7fTtcclxuICAgIHNlYXJjaERhdGE6IGFueSA9IHt9O1xyXG4gICAgZGljV29ya2Zsb3dCeUxvYWlDb25nVmllYyA9IHt9O1xyXG4gICAgZGljTG9haUNvbmdWaWVjID0ge307XHJcbiAgICBjb25nVmllY1ZpZXdNb2RlbCA9IG5ldyBEaWFsb2dNb2RlbCh7XHJcbiAgICAgICAgaGVhZGVyOiAnWGVtIGNoaSB0aeG6v3QgY8O0bmcgdmnhu4djJ1xyXG4gICAgfSk7XHJcbiAgICBzaG93UGlja2VyRm9ybTogYm9vbGVhbjtcclxuICAgIGhpZGRlbkFkZDogYm9vbGVhbjtcclxuICAgIGhpZGRlbkVkaXQ6IGJvb2xlYW47XHJcbiAgICBoaWRkZW5EZWxldGU6IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb25nVmllY1NlcnZpY2U6IENvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RtTG9haUNvbmdWaWVjU2VydmljZTogRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlOiBEbUxpbmhWdWNDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jYXVIaW5oV29ya2Zsb3dTZXJ2aWNlOiBDYXVIaW5oV29ya2Zsb3dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlOiBDb25nVmllY0xpZW5RdWFuU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlQ29kZSA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGEuc3RhdGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUud2lkdGggPSAxMzYwO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5wb3B1cFNpemUuaGVpZ2h0ID0gNzYwO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjU2VydmljZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93TmV3ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcudXNlV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5pc1dvcmtmbG93VHJlZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmRpc3BsYXlGaWVsZCA9IChpdGVtKSA9PiBpdGVtLnRlbjtcclxuICAgICAgICBpZiAodGhpcy5pc0Zyb21EYXNoYm9hcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblBhZ2VUaXRsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dGluZy53b3JrZmxvd0NvbmZpZ0FkdmFuY2UgPSB7XHJcbiAgICAgICAgICAgIGdldFdvcmtmbG93U2V0dGluZzogdGhpcy5nZXRXb3JrZmxvd0NvbmZpZy5iaW5kKHRoaXMpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlLnVzZVdvcmtmbG93ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGRlbkVkaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZGVuQWRkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GdW5jdGlvbkNvbHVtbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQWR2YW5jZVNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuVklFVyAmJiB0aGlzLmlzQ2hpbGRWaWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5Ub29sYmFyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndGVuJywgbmFtZTogJ1TDqm4nLCBmdWxsTmFtZTogJ1TDqm4nLCBkZXNjcmlwdGlvbjogJ1TDqm4nIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ21vVGEnLCBuYW1lOiAnTcO0IHThuqMnLCBmdWxsTmFtZTogJ03DtCB04bqjJywgZGVzY3JpcHRpb246ICdNw7QgdOG6oycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbmdheUJhdERhdScsIGRhdGFUeXBlOiAnZGF0ZScsIG5hbWU6ICdOZ8OgeSBi4bqvdCDEkeG6p3UnLCBmdWxsTmFtZTogJ05nw6B5IGLhuq90IMSR4bqndScsIGRlc2NyaXB0aW9uOiAnTmfDoHkgYuG6r3QgxJHhuqd1JyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICduZ2F5S2V0VGh1YycsIGRhdGFUeXBlOiAnZGF0ZScsIG5hbWU6ICdOZ8OgeSBr4bq/dCB0aMO6YycsIGZ1bGxOYW1lOiAnTmfDoHkga+G6v3QgdGjDumMnLCBkZXNjcmlwdGlvbjogJ05nw6B5IGvhur90IHRow7pjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdpZFByaW9yaXR5JywgbmFtZTogJ8SQ4buZIMawdSB0acOqbicsIGZ1bGxOYW1lOiAnxJDhu5kgxrB1IHRpw6puJywgZGVzY3JpcHRpb246ICfEkOG7mSDGsHUgdGnDqm4nIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJywgbmFtZTogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnLCBmdWxsTmFtZTogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnLCBkZXNjcmlwdGlvbjogJ0xv4bqhaSBjw7RuZyB2aeG7h2MnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2lkTGluaFZ1YycsIG5hbWU6ICdMxKluaCB24buxYycsIGZ1bGxOYW1lOiAnTMSpbmggduG7sWMnLCBkZXNjcmlwdGlvbjogJ0zEqW5oIHbhu7FjJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdwaGFuVHJhbScsIGRhdGFUeXBlOiAnaW50JywgbmFtZTogJ1Bo4bqnbiB0csSDbScsIGZ1bGxOYW1lOiAnUGjhuqduIHRyxINtJywgZGVzY3JpcHRpb246ICdQaOG6p24gdHLEg20nIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuY29scyA9IFtcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdjb25nVmllY0luZm8nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxOHJlbSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4JyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTVweCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGlzVHJlZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkVHJlZTogJ2lkUGFyZW50JyxcclxuICAgICAgICAgICAgICAgIHNlbGVjdERlc2NlbmRhbnQ6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMaW5oVnVjJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZFByaW9yaXR5JyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZVJlZkZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtUHJpb3JpdHlTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAnYmFja2dyb3VuZCxjb2xvcicsXHJcbiAgICAgICAgICAgICAgICBmdW5jU2V0VmFsdWVSb3c6IChyb3dJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93SXRlbS5wcmlvcml0eUNvbG9yID0gZGF0YS5jb2xvcjtcclxuICAgICAgICAgICAgICAgICAgICByb3dJdGVtLnByaW9yaXR5QmFja2dyb3VuZCA9IGRhdGEuYmFja2dyb3VuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuc3Vic2NyaWJlKFRvcGljUmVsb2FkQ29uZ1ZpZWNWNSwgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmZpZWxkU2VhcmNoVGV4dCA9IFsndGVuJywgJ21vVGEnXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcub2JqZWN0TmFtZSA9ICcgY8O0bmcgdmnhu4djJztcclxuXHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnVuU3Vic2NyaWJlKFRvcGljUmVsb2FkQ29uZ1ZpZWNWNSk7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlHcmlkSW5mbyhncmlkSW5mbz86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgaWYgKCFncmlkSW5mby5zb3J0cyB8fCAhZ3JpZEluZm8uc29ydHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzID0gW3sgZmllbGQ6ICdjcmVhdGVkJywgZGlyOiAtMSB9XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0Zyb21EYXNoYm9hcmQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGVDb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBncmlkSW5mby5maWx0ZXJzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoS2V5RmlsdGVyU3RhdGVCeU1lbnVDb25nVmllYywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuc3RhdGVDb2RlKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgIC8vIEPDtG5nIHZp4buHYyBsacOqbiBxdWFuXHJcbiAgICAgICAgICAgIGNvbnN0IGlkc0NvbmdWaWVjTGllblF1YW4gPSBhd2FpdCB0aGlzLmdldElkc0NvbmdWaWVjTGllblF1YW4oKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgIGdyaWRJbmZvLmZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5ub3RFcXVhbCwgdGhpcy5pZENvbmdWaWVjKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWRzQ29uZ1ZpZWNMaWVuUXVhbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEluLCBpZHNDb25nVmllY0xpZW5RdWFuKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWRzQ29uZ1ZpZWNMaWVuUXVhbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBpZHNDb25nVmllY0xpZW5RdWFuKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENoYScsIE9wZXJhdG9yLmlzTnVsbCwgdHJ1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3Iubm90RXF1YWwsIHRoaXMuaWRDb25nVmllYylcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBycyA9IGF3YWl0IHRoaXMuX2NvbmdWaWVjU2VydmljZS5nZXREZXRhaWwodGhpcy5pZENvbmdWaWVjKTtcclxuICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFycy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLmRhdGEuaWRDaGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLm5vdEVxdWFsLCBycy5kYXRhLmlkQ2hhKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKC4uLmZpbHRlcnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm8uZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZENoYScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBiZWZvcmVSZW5kZXJEYXRhU291cmNlKGRhdGFTb3VyY2UpIHtcclxuICAgICAgICBkYXRhU291cmNlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5waGFuVHJhbSkgaXRlbS5waGFuVHJhbSA9IDU7XHJcbiAgICAgICAgICAgIGl0ZW0ucGVyY2VudFdpZHRoID0gYCR7aXRlbS5waGFuVHJhbX0lYDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9taXNlR2V0RGF0YShncmlkSW5mbzogR3JpZEluZm8pIHtcclxuICAgICAgICBpZiAodGhpcy5pc0Zyb21EYXNoYm9hcmQpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucGFyZW50TW9kZWwuc2VsZWN0ZWRJdGVtLmZpbHRlcixcclxuICAgICAgICAgICAgICAgIHN0YXRlQ29kZTogdGhpcy5wYXJlbnRNb2RlbC5zZWxlY3RlZEl0ZW0uc3RhdGVDb2RlLFxyXG4gICAgICAgICAgICAgICAgc3RhdGVDb2RlQnlWaWV3RG9uVmk6IHRoaXMucGFyZW50TW9kZWwuc2VsZWN0ZWRJdGVtLnN0YXRlQ29kZUJ5Vmlld0RvblZpLFxyXG4gICAgICAgICAgICAgICAgZ3JpZEluZm9cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmdWaWVjU2VydmljZS5nZXRMaXN0VGFza3NEYXNoYm9hcmQoZmlsdGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlLmdldEJ5R3JpZFJlcXVlc3QoZ3JpZEluZm8sIHRoaXMucGx1c1VybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gYXN5bmMgZ2V0RGF0YVNvdXJjZVRyYW5nVGhhaVdvcmtmbG93KCkge1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UuZ2V0RGF0YXNvdXJjZVdvcmtmbG93Q29uZ1ZpZWMoKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIG92ZXJyaWRlIGZyb20gZGF0YS1saXN0LWJhc2VcclxuICAgICAqIEBwYXJhbSByb3dEYXRhIELhuqNuIGdoaSBjbGlja1xyXG4gICAgICogQHJldHVybnMgQ+G6pXUgaMOsbmggd29ya2Zsb3cgdGhlbyBpZCBsb+G6oWkgY8O0bmcgdmnhu4djIGPhu6dhIGLhuqNuIGdoaVxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRXb3JrZmxvd0NvbmZpZyhyb3dEYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZS5nZXRXb3JrZmxvd1NldHRpbmdCeUlkTG9haUNvbmdWaWVjKHJvd0RhdGEuaWRMb2FpQ29uZ1ZpZWMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldElkc0NvbmdWaWVjTGllblF1YW4oKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFt0aGlzLm5ld0ZpbHRlckNvbnRhaW5lcignb3InLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWRDb25nVmllYycsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLmlkQ29uZ1ZpZWMpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignaWRDb25nVmllY0xpZW5RdWFuJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaWRDb25nVmllYykpXTtcclxuICAgICAgICBjb25zdCBycyA9IGF3YWl0IHRoaXMuX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlLmdldEFsbChmaWx0ZXJzLCAnaWRDb25nVmllYyxpZENvbmdWaWVjTGllblF1YW4nKTtcclxuICAgICAgICBjb25zdCBpZHNDb25nVmllY0xpZW5RdWFuID0gW107XHJcbiAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgcnMuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaWRDb25nVmllYyA9PSBlbGVtZW50LmlkQ29uZ1ZpZWMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZHNDb25nVmllY0xpZW5RdWFuLnB1c2goZWxlbWVudC5pZENvbmdWaWVjTGllblF1YW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pZENvbmdWaWVjID09IGVsZW1lbnQuaWRDb25nVmllY0xpZW5RdWFuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWNMaWVuUXVhbi5wdXNoKGVsZW1lbnQuaWRDb25nVmllYyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaWRzQ29uZ1ZpZWNMaWVuUXVhbjtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDaGFuZ2VkU3RhdHVzV29ya2Zsb3coaXRlbUlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZ1ZpZWNGb3JtXHJcbiAgICAgICAgICAgICYmIHRoaXMuZm9ybU1vZGVsLmRhdGFcclxuICAgICAgICAgICAgJiYgdGhpcy5mb3JtTW9kZWwuZGF0YS5pZCA9PSBpdGVtSWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5jb25nVmllY0Zvcm0uY2xlYXJXb3JrZmxvd0J1dHRvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25nVmllY0Zvcm0uX3RyaWdnZXJHZXREZXRhaWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DaG9uQ29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UGlja2VyRm9ybSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmVkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllYzogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgaWRDb25nVmllY0xpZW5RdWFuOiBpZFxyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjQ29uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICAgICAgaWRDaGE6IHRoaXMuaWRDb25nVmllYyxcclxuICAgICAgICAgICAgICAgIGlkc0NvbmdWaWVjOiBbaWRdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNDb24obW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfZGVsZXRlKHJvd0RhdGEpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlQ29uZmlybSgpLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFycykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RlbGV0ZShbcm93RGF0YS5pZF0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN1cGVyLl9kZWxldGUocm93RGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9kZWxldGVNdWx0aXBsZShpdGVtcykge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9IGl0ZW1zLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlbGV0ZShpZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2Nlc3NEZWxldGUoaWRzID0gW10pIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB7XHJcbiAgICAgICAgICAgICAgICBpZENvbmdWaWVjOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICBpZHNDb25nVmllYzogaWRzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmdWaWVjTGllblF1YW5TZXJ2aWNlLmRlbGV0ZUJ1bGtDb25nVmllY0xpZW5RdWFuKG1vZGVsKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93RGVsZXRlRGF0YVN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZ0J5UmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZURhdGFFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMubG9haURhbmhTYWNoID09IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYy5Db25nVmllY0Nvbikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb25nVmllY1NlcnZpY2UuZGVsZXRlQnVsa0NvbmdWaWVjQ29uKGlkcylcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0RlbGV0ZURhdGFTdWNjZXNzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmdCeVJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dEZWxldGVEYXRhRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblNlbGVjdENvbmdWaWVjKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmdWaWVjUGlja2VyLm1vZGVsLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2FpRGFuaFNhY2ggPT0gRW51bUxvYWlEYW5oU2FjaENvbmdWaWVjLkNvbmdWaWVjTGllblF1YW4pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5jb25nVmllY1BpY2tlci5tb2RlbC5zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb25nVmllYzogdGhpcy5pZENvbmdWaWVjLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29uZ1ZpZWNMaWVuUXVhbjogaXRlbS5pZFxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmxvYWlEYW5oU2FjaCA9PSBFbnVtTG9haURhbmhTYWNoQ29uZ1ZpZWMuQ29uZ1ZpZWNDb24pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkQ2hhOiB0aGlzLmlkQ29uZ1ZpZWMsXHJcbiAgICAgICAgICAgICAgICAgICAgaWRzQ29uZ1ZpZWM6IHRoaXMuY29uZ1ZpZWNQaWNrZXIubW9kZWwuc2VsZWN0ZWRJdGVtcy5tYXAoeCA9PiB4LmlkKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29uZ1ZpZWNDb24obW9kZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd1BpY2tlckZvcm0gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRDb25nVmllY0xpZW5RdWFuKGl0ZW1zID0gW10pIHtcclxuICAgICAgICB0aGlzLl9jb25nVmllY0xpZW5RdWFuU2VydmljZS5pbnNlcnRCdWxrQXN5bmMoaXRlbXMpLnRoZW4ocmVzcG9uc2UgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXNwb25zZSwgJycsIGYgPT4gdGhpcy5yZWxvYWQoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydENvbmdWaWVjQ29uKG1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZ1ZpZWNTZXJ2aWNlLnVwZGF0ZUJ1bGtJZENoYShtb2RlbCkudGhlbihyZXNwb25zZSA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlLCAnJywgZiA9PiB0aGlzLnJlbG9hZCgpKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,9 +1,11 @@
1
+ import { __awaiter } from "tslib";
1
2
  import { HttpClient } from '@angular/common/http';
2
3
  import { Injectable, Injector } from '@angular/core';
3
4
  import { Operator } from '../../../classes/form-schema';
4
5
  import { GridInfo } from '../../../models/grid-info';
5
6
  import { BaseService } from '../../../services/base.service';
6
7
  import { ModuleConfigService } from '../../../services/module-config.service';
8
+ import { NotifierService } from '../../../services/notifier.service';
7
9
  import * as i0 from "@angular/core";
8
10
  import * as i1 from "@angular/common/http";
9
11
  import * as i2 from "../../../services/module-config.service";
@@ -23,6 +25,11 @@ export class CongviecDinhkemService extends BaseService {
23
25
  }
24
26
  getDetailItem(serviceCode, entity, entityKey, fieldDisplay) {
25
27
  const serviceCodeEndpoint = this.env.apiDomain[`${serviceCode}Endpoint`];
28
+ if (!serviceCodeEndpoint) {
29
+ const notifierService = this._injector.get(NotifierService);
30
+ notifierService.showWarning(`Không lấy được thông tin endpoint của dịch vụ ${serviceCode}`);
31
+ return new Promise((res, rej) => res({ success: true, data: [] }));
32
+ }
26
33
  const uri = `${serviceCodeEndpoint}/${this._moduleConfigService.getConfig().environment.apiVersion}/${entity}/GetData`;
27
34
  const gridInfo = new GridInfo({
28
35
  fields: fieldDisplay,
@@ -32,6 +39,55 @@ export class CongviecDinhkemService extends BaseService {
32
39
  });
33
40
  return this._http.post(uri, gridInfo).toPromise();
34
41
  }
42
+ getDetailItems(dicGrouped) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const result = {};
45
+ const serviceCodes = Object.keys(dicGrouped);
46
+ for (const serviceCode of serviceCodes) {
47
+ result[serviceCode] = {};
48
+ const entitys = Object.keys(dicGrouped[serviceCode]);
49
+ for (const entity of entitys) {
50
+ result[serviceCode][entity] = {};
51
+ dicGrouped[serviceCode][entity].lstId.forEach(entityKey => {
52
+ result[serviceCode][entity][entityKey] = 'Không tìm thấy bản ghi';
53
+ });
54
+ }
55
+ const serviceCodeEndpoint = this.env.apiDomain[`${serviceCode}Endpoint`];
56
+ if (!serviceCodeEndpoint) {
57
+ return;
58
+ }
59
+ for (const entity of entitys) {
60
+ const dataByEntity = dicGrouped[serviceCode][entity];
61
+ const uri = `${serviceCodeEndpoint}/${this._moduleConfigService.getConfig().environment.apiVersion}/${entity}/GetAllByFilter`;
62
+ const filters = [];
63
+ if (dataByEntity.lstId.length == 1) {
64
+ filters.push(this.newFilter('id', Operator.equal, dataByEntity.lstId[0]));
65
+ }
66
+ else {
67
+ filters.push(this.newFilter('id', Operator.in, dataByEntity.lstId));
68
+ }
69
+ const gridInfo = new GridInfo({
70
+ fields: `id,${dataByEntity.fieldHienThi}`,
71
+ pageInfo: { page: 1, pageSize: dataByEntity.lstId.length },
72
+ filters,
73
+ sorts: []
74
+ });
75
+ try {
76
+ const data = yield (this._http.post(uri, gridInfo).toPromise());
77
+ if (data.success && data.data && data.data.length) {
78
+ data.data.forEach(itemDetail => {
79
+ result[serviceCode][entity][itemDetail.id] = itemDetail[dataByEntity.fieldHienThi];
80
+ });
81
+ }
82
+ }
83
+ catch (err) {
84
+ console.log(err);
85
+ }
86
+ }
87
+ }
88
+ return result;
89
+ });
90
+ }
35
91
  }
36
92
  CongviecDinhkemService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CongviecDinhkemService_Factory() { return new CongviecDinhkemService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.ModuleConfigService)); }, token: CongviecDinhkemService, providedIn: "root" });
37
93
  CongviecDinhkemService.decorators = [
@@ -44,4 +100,4 @@ CongviecDinhkemService.ctorParameters = () => [
44
100
  { type: Injector },
45
101
  { type: ModuleConfigService }
46
102
  ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL3NlcnZpY2VzL2Nvbmd2aWVjLWRpbmhrZW0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFLOUUsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQVc7SUFNckQsWUFDRSxJQUFnQixFQUFFLFFBQWtCLEVBQzVCLG9CQUF5QztRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsa0JBQWtCLENBQUMsQ0FBQztRQUZ2Syx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBUG5ELGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQztRQUN2QyxlQUFVLEdBQUcsV0FBVyxDQUFDO1FBUXZCLElBQUksQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDdEQsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQWMsRUFBRSxJQUFTO1FBQzNDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQW1CLEVBQUUsTUFBYyxFQUFFLFNBQWlCLEVBQUUsWUFBb0I7UUFDeEYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsVUFBVSxDQUFDLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUcsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFNLFVBQVUsQ0FBQztRQUN2SCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUM1QixNQUFNLEVBQUUsWUFBWTtZQUNwQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwRSxDQUFDOzs7O1lBakNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBVlEsVUFBVTtZQUNFLFFBQVE7WUFLcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmd2aWVjRGluaGtlbVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgc2VydmljZUNvZGUgPSAnY29uZ3ZpZWMnO1xyXG4gIGVudGl0eU5hbWUgPSAnQ29uZ1ZpZWNEaW5oS2VtTmdoaWVwVnUnO1xyXG4gIG9iamVjdE5hbWUgPSAnY8O0bmcgdmnhu4djJztcclxuICBlbnY6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNvbmd2aWVjRW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vRGluaEtlbU5naGllcFZ1YCk7XHJcbiAgICB0aGlzLmVudiA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgdGhpcy5lbmRQb2ludCA9IHRoaXMuZW52LmFwaURvbWFpbi5jb25ndmllY0VuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgdGhlbURpbmhLZW1OZ2hpZXBWdSh0YXNrSWQ6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UaGVtRGluaEtlbS8ke3Rhc2tJZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4odXJsLCBkYXRhKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGdldERldGFpbEl0ZW0oc2VydmljZUNvZGU6IHN0cmluZywgZW50aXR5OiBzdHJpbmcsIGVudGl0eUtleTogc3RyaW5nLCBmaWVsZERpc3BsYXk6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgIGNvbnN0IHNlcnZpY2VDb2RlRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW5bYCR7c2VydmljZUNvZGV9RW5kcG9pbnRgXTtcclxuICAgIGNvbnN0IHVyaSA9IGAke3NlcnZpY2VDb2RlRW5kcG9pbnR9LyR7dGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS8ke2VudGl0eX0vR2V0RGF0YWA7XHJcbiAgICBjb25zdCBncmlkSW5mbyA9IG5ldyBHcmlkSW5mbyh7XHJcbiAgICAgIGZpZWxkczogZmllbGREaXNwbGF5LFxyXG4gICAgICBwYWdlSW5mbzogeyBwYWdlOiAxLCBwYWdlU2l6ZTogMSB9LFxyXG4gICAgICBmaWx0ZXJzOiBbdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuZXF1YWwsIGVudGl0eUtleSldLFxyXG4gICAgICBzb3J0czogW11cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZGluaGtlbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbmd2aWVjL2Nvbmd2aWVjL3NlcnZpY2VzL2Nvbmd2aWVjLWRpbmhrZW0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUtyRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsV0FBVztJQU1uRCxZQUNJLElBQWdCLEVBQUUsUUFBa0IsRUFDNUIsb0JBQXlDO1FBRWpELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxrQkFBa0IsQ0FBQyxDQUFDO1FBRnZLLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFQckQsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsZUFBVSxHQUFHLHlCQUF5QixDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxXQUFXLENBQUM7UUFRckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxTQUFT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TyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7NEJBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dDQUMzQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ3ZGLENBQUMsQ0FBQyxDQUFDO3lCQUNOO3FCQUNKO29CQUNELE9BQU8sR0FBRyxFQUFFO3dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3BCO2lCQUNKO2FBQ0o7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO0tBQUE7Ozs7WUFoR0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFYUSxVQUFVO1lBQ0UsUUFBUTtZQUtwQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBHcmlkSW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZ3ZpZWNEaW5oa2VtU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIHNlcnZpY2VDb2RlID0gJ2Nvbmd2aWVjJztcclxuICAgIGVudGl0eU5hbWUgPSAnQ29uZ1ZpZWNEaW5oS2VtTmdoaWVwVnUnO1xyXG4gICAgb2JqZWN0TmFtZSA9ICdjw7RuZyB2aeG7h2MnO1xyXG4gICAgZW52OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY29uZ3ZpZWNFbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9EaW5oS2VtTmdoaWVwVnVgKTtcclxuICAgICAgICB0aGlzLmVudiA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW4uY29uZ3ZpZWNFbmRwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICB0aGVtRGluaEtlbU5naGllcFZ1KHRhc2tJZDogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UaGVtRGluaEtlbS8ke3Rhc2tJZH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVybCwgZGF0YSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGV0YWlsSXRlbShzZXJ2aWNlQ29kZTogc3RyaW5nLCBlbnRpdHk6IHN0cmluZywgZW50aXR5S2V5OiBzdHJpbmcsIGZpZWxkRGlzcGxheTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VDb2RlRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW5bYCR7c2VydmljZUNvZGV9RW5kcG9pbnRgXTtcclxuICAgICAgICBpZiAoIXNlcnZpY2VDb2RlRW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm90aWZpZXJTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSk7XHJcbiAgICAgICAgICAgIG5vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhgS2jDtG5nIGzhuqV5IMSRxrDhu6NjIHRow7RuZyB0aW4gZW5kcG9pbnQgY+G7p2EgZOG7i2NoIHbhu6UgJHtzZXJ2aWNlQ29kZX1gKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4gcmVzKDxhbnk+eyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBbXSB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVyaSA9IGAke3NlcnZpY2VDb2RlRW5kcG9pbnR9LyR7dGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS8ke2VudGl0eX0vR2V0RGF0YWA7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSBuZXcgR3JpZEluZm8oe1xyXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkRGlzcGxheSxcclxuICAgICAgICAgICAgcGFnZUluZm86IHsgcGFnZTogMSwgcGFnZVNpemU6IDEgfSxcclxuICAgICAgICAgICAgZmlsdGVyczogW3RoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmVxdWFsLCBlbnRpdHlLZXkpXSxcclxuICAgICAgICAgICAgc29ydHM6IFtdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGV0YWlsSXRlbXMoXHJcbiAgICAgICAgZGljR3JvdXBlZDoge1xyXG4gICAgICAgICAgICBbc2VydmljZUNvZGU6IHN0cmluZ106IHtcclxuICAgICAgICAgICAgICAgIFtlbnRpdHk6IHN0cmluZ106IHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZEhpZW5UaGk6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICBsc3RJZDogc3RyaW5nW11cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VDb2RlcyA9IE9iamVjdC5rZXlzKGRpY0dyb3VwZWQpO1xyXG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZUNvZGUgb2Ygc2VydmljZUNvZGVzKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFtzZXJ2aWNlQ29kZV0gPSB7fTtcclxuICAgICAgICAgICAgY29uc3QgZW50aXR5cyA9IE9iamVjdC5rZXlzKGRpY0dyb3VwZWRbc2VydmljZUNvZGVdKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXR5cykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3NlcnZpY2VDb2RlXVtlbnRpdHldID0ge307XHJcbiAgICAgICAgICAgICAgICBkaWNHcm91cGVkW3NlcnZpY2VDb2RlXVtlbnRpdHldLmxzdElkLmZvckVhY2goZW50aXR5S2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRbc2VydmljZUNvZGVdW2VudGl0eV1bZW50aXR5S2V5XSA9ICdLaMO0bmcgdMOsbSB0aOG6pXkgYuG6o24gZ2hpJztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VDb2RlRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW5bYCR7c2VydmljZUNvZGV9RW5kcG9pbnRgXTtcclxuICAgICAgICAgICAgaWYgKCFzZXJ2aWNlQ29kZUVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50aXR5IG9mIGVudGl0eXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFCeUVudGl0eSA9IGRpY0dyb3VwZWRbc2VydmljZUNvZGVdW2VudGl0eV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cmkgPSBgJHtzZXJ2aWNlQ29kZUVuZHBvaW50fS8ke3RoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vJHtlbnRpdHl9L0dldEFsbEJ5RmlsdGVyYDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhQnlFbnRpdHkubHN0SWQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuZXF1YWwsIGRhdGFCeUVudGl0eS5sc3RJZFswXSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpZCcsIE9wZXJhdG9yLmluLCBkYXRhQnlFbnRpdHkubHN0SWQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGBpZCwke2RhdGFCeUVudGl0eS5maWVsZEhpZW5UaGl9YCxcclxuICAgICAgICAgICAgICAgICAgICBwYWdlSW5mbzogeyBwYWdlOiAxLCBwYWdlU2l6ZTogZGF0YUJ5RW50aXR5LmxzdElkLmxlbmd0aCB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydHM6IFtdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0ICh0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVyaSwgZ3JpZEluZm8pLnRvUHJvbWlzZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdWNjZXNzICYmIGRhdGEuZGF0YSAmJiBkYXRhLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0YS5mb3JFYWNoKGl0ZW1EZXRhaWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3NlcnZpY2VDb2RlXVtlbnRpdHldW2l0ZW1EZXRhaWwuaWRdID0gaXRlbURldGFpbFtkYXRhQnlFbnRpdHkuZmllbGRIaWVuVGhpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -7,10 +7,10 @@ import * as i1 from "@angular/common/http";
7
7
  import * as i2 from "../../../services/module-config.service";
8
8
  export class CongViecService extends BaseService {
9
9
  constructor(http, injector, _moduleConfigService) {
10
- super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.congviecEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/CongViec`);
10
+ super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.congviecEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/CongViec_Chinh`);
11
11
  this._moduleConfigService = _moduleConfigService;
12
12
  this.serviceCode = 'congviec';
13
- this.entityName = 'CongViec';
13
+ this.entityName = 'CongViec_Chinh';
14
14
  this.objectName = 'công việc';
15
15
  this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.congviecEndpoint;
16
16
  }
@@ -52,4 +52,4 @@ CongViecService.ctorParameters = () => [
52
52
  { type: Injector },
53
53
  { type: ModuleConfigService }
54
54
  ];
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb25ndmllYy9jb25ndmllYy9zZXJ2aWNlcy9jb25ndmllYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFLOUUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQUk1QyxZQUFZLElBQWdCLEVBQUUsUUFBa0IsRUFDcEMsb0JBQXlDO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxXQUFXLENBQUMsQ0FBQztRQURoSyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBSnJELGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQUlyQixJQUFJLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDNUYsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWM7UUFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsa0JBQWtCLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBRztRQUNyQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLFNBQWM7UUFDakMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx5QkFBeUIsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUFjO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsMEJBQTBCLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsVUFBZTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7OztZQTVDSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVBRLFVBQVU7WUFDRSxRQUFRO1lBRXBCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmdWaWVjU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcclxuICAgIHNlcnZpY2VDb2RlID0gJ2Nvbmd2aWVjJztcclxuICAgIGVudGl0eU5hbWUgPSAnQ29uZ1ZpZWMnO1xyXG4gICAgb2JqZWN0TmFtZSA9ICdjw7RuZyB2aeG7h2MnO1xyXG4gICAgY29uc3RydWN0b3IoaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNvbmd2aWVjRW5kcG9pbnR9LyR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn0vQ29uZ1ZpZWNgKTtcclxuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmNvbmd2aWVjRW5kcG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY291bnRCeU1lbnVTdGF0ZShkYXRhOiBudW1iZXJbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vQ291bnRCeU1lbnVTdGF0ZWAsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERpY0lkQnlNZW51U3RhdGUoZGF0YTogbnVtYmVyW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0dldERpY0lkQnlNZW51U3RhdGVgLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVCdWxrSWRDaGEobW9kZWwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZUJ1bGtJZENoYWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQnVsa0NvbmdWaWVjQ29uKGlkcykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vRGVsZXRlQnVsa0NvbmdWaWVjQ29uYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YURhc2hib2FyZENhTmhhbihpbnB1dERhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YURhc2hib2FyZENhTmhhbmA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBpbnB1dERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGFEYXNoYm9hcmRCeURvblZpKGlucHV0RGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREYXRhRGFzaGJvYXJkQnlEb25WaWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBpbnB1dERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExpc3RUYXNrc0Rhc2hib2FyZChkYXRhRmlsdGVyOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L2dldExpc3RUYXNrc0Rhc2hib2FyZGA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBkYXRhRmlsdGVyKTtcclxuICAgIH1cclxufVxyXG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb25ndmllYy9jb25ndmllYy9zZXJ2aWNlcy9jb25ndmllYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFLOUUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQUk1QyxZQUFZLElBQWdCLEVBQUUsUUFBa0IsRUFDcEMsb0JBQXlDO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxpQkFBaUIsQ0FBQyxDQUFDO1FBRHRLLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFKckQsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsZUFBVSxHQUFHLGdCQUFnQixDQUFDO1FBQzlCLGVBQVUsR0FBRyxXQUFXLENBQUM7UUFJckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO0lBQzVGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFjO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFjO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSztRQUNqQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLGtCQUFrQixDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQUc7UUFDckIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx3QkFBd0IsQ0FBQztRQUN2RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxTQUFjO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUseUJBQXlCLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsU0FBYztRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLDBCQUEwQixDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELHFCQUFxQixDQUFDLFVBQWU7UUFDakMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx3QkFBd0IsQ0FBQztRQUN2RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Ozs7WUE1Q0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFQUSxVQUFVO1lBQ0UsUUFBUTtZQUVwQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25nVmllY1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBzZXJ2aWNlQ29kZSA9ICdjb25ndmllYyc7XHJcbiAgICBlbnRpdHlOYW1lID0gJ0NvbmdWaWVjX0NoaW5oJztcclxuICAgIG9iamVjdE5hbWUgPSAnY8O0bmcgdmnhu4djJztcclxuICAgIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBDbGllbnQsIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IsIGAke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5jb25ndmllY0VuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0NvbmdWaWVjX0NoaW5oYCk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5jb25ndmllY0VuZHBvaW50O1xyXG4gICAgfVxyXG5cclxuICAgIGNvdW50QnlNZW51U3RhdGUoZGF0YTogbnVtYmVyW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0NvdW50QnlNZW51U3RhdGVgLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREaWNJZEJ5TWVudVN0YXRlKGRhdGE6IG51bWJlcltdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREaWNJZEJ5TWVudVN0YXRlYCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQnVsa0lkQ2hhKG1vZGVsKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVCdWxrSWRDaGFgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgbW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUJ1bGtDb25nVmllY0NvbihpZHMpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0RlbGV0ZUJ1bGtDb25nVmllY0NvbmA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBpZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGFEYXNoYm9hcmRDYU5oYW4oaW5wdXREYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERhdGFEYXNoYm9hcmRDYU5oYW5gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgaW5wdXREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhRGFzaGJvYXJkQnlEb25WaShpbnB1dERhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YURhc2hib2FyZEJ5RG9uVmlgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgaW5wdXREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMaXN0VGFza3NEYXNoYm9hcmQoZGF0YUZpbHRlcjogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9nZXRMaXN0VGFza3NEYXNoYm9hcmRgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZGF0YUZpbHRlcik7XHJcbiAgICB9XHJcbn1cclxuIl19