@mediusinc/mng-commons 5.3.0-rc.2 → 5.3.0-rc.4

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 (95) hide show
  1. package/core/data-list/data-list.model.d.ts +1 -1
  2. package/core/data-providers/lookup.data-provider.d.ts +5 -5
  3. package/core/descriptors/lookup.descriptor.d.ts +3 -3
  4. package/core/descriptors/table.descriptor.d.ts +1 -1
  5. package/esm2022/core/data-list/data-list-params-helpers.mjs +1 -1
  6. package/esm2022/core/data-list/data-list.model.mjs +1 -1
  7. package/esm2022/core/data-providers/lookup.data-provider.mjs +1 -1
  8. package/esm2022/core/descriptors/lookup.descriptor.mjs +1 -1
  9. package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
  10. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +60 -2
  11. package/esm2022/filter/descriptors/filter.descriptor.mjs +118 -8
  12. package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +17 -6
  13. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
  14. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +1 -1
  15. package/esm2022/form/components/dropdown/dropdown.component.mjs +3 -3
  16. package/esm2022/model/helpers/model.mjs +1 -1
  17. package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +16 -7
  18. package/esm2022/table/api/descriptors/column.descriptor.mjs +125 -4
  19. package/esm2022/table/api/descriptors/sort.descriptor.mjs +23 -1
  20. package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +1 -1
  21. package/esm2022/table/api/descriptors/table.descriptor.mjs +435 -44
  22. package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +7 -0
  23. package/esm2022/table/api/index.mjs +3 -1
  24. package/esm2022/table/api/models/row-expandable-component.model.mjs +2 -0
  25. package/esm2022/table/api/models/table-columns.model.mjs +1 -1
  26. package/esm2022/table/components/column-value/column-value.component.mjs +3 -3
  27. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +3 -3
  28. package/esm2022/table/components/table/table.component.mjs +6 -6
  29. package/esm2022/tableview/action/components/action/action.component.mjs +3 -3
  30. package/esm2022/tableview/action/components/table/action-table.component.mjs +3 -3
  31. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +6 -6
  32. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +2 -4
  33. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +1 -1
  34. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +14 -1
  35. package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +2 -0
  36. package/esm2022/tableview/api/index.mjs +3 -1
  37. package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +16 -7
  38. package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +1 -1
  39. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +5 -5
  40. package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +7 -0
  41. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
  42. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +3 -3
  43. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +3 -3
  44. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +9 -3
  45. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +3 -3
  46. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +3 -3
  47. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -3
  48. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  49. package/fesm2022/mediusinc-mng-commons-filter.mjs +176 -8
  50. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  51. package/fesm2022/mediusinc-mng-commons-form-api.mjs +16 -5
  52. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  53. package/fesm2022/mediusinc-mng-commons-form.mjs +2 -2
  54. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  55. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  56. package/fesm2022/mediusinc-mng-commons-table-api.mjs +602 -53
  57. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  58. package/fesm2022/mediusinc-mng-commons-table.mjs +9 -9
  59. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  60. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +45 -19
  61. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  62. package/fesm2022/mediusinc-mng-commons-tableview.mjs +23 -18
  63. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  64. package/filter/descriptors/filter-lookup.descriptor.d.ts +70 -12
  65. package/filter/descriptors/filter.descriptor.d.ts +116 -5
  66. package/form/api/data-providers/lookup-data-provider.factory.d.ts +16 -12
  67. package/form/api/data-providers/lookup.data-provider.d.ts +5 -5
  68. package/form/components/autocomplete/autocomplete.component.d.ts +1 -1
  69. package/form/components/dropdown/dropdown.component.d.ts +1 -1
  70. package/model/helpers/model.d.ts +1 -1
  71. package/package.json +7 -7
  72. package/table/api/data-providers/table-data-provider.factory.d.ts +9 -5
  73. package/table/api/descriptors/column.descriptor.d.ts +126 -5
  74. package/table/api/descriptors/sort.descriptor.d.ts +22 -0
  75. package/table/api/descriptors/table-descriptor.factory.d.ts +8 -4
  76. package/table/api/descriptors/table.descriptor.d.ts +429 -28
  77. package/table/api/helpers/table-data-provider-descriptor-convert.d.ts +20 -0
  78. package/table/api/index.d.ts +2 -0
  79. package/table/api/models/row-expandable-component.model.d.ts +4 -0
  80. package/table/api/models/table-columns.model.d.ts +6 -6
  81. package/table/components/column-filter/column-filter.component.d.ts +1 -1
  82. package/table/components/filter/filter-form/filter-form.component.d.ts +1 -1
  83. package/tableview/action/components/localization/data-language-dropdown.component.d.ts +1 -1
  84. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +11 -11
  85. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +5 -5
  86. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +12 -12
  87. package/tableview/api/editor/descriptors/field.descriptor.d.ts +10 -0
  88. package/tableview/api/editor/models/field-image-preview.model.d.ts +4 -0
  89. package/tableview/api/index.d.ts +2 -0
  90. package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +9 -5
  91. package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +10 -6
  92. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +17 -17
  93. package/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.d.ts +20 -0
  94. package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +1 -0
  95. package/version-info.json +5 -5
@@ -279,7 +279,7 @@ export class TableviewDescriptorInst {
279
279
  }
280
280
  /**
281
281
  * [UNSAFE] Adds lookup field.
282
- * This method is UNSAFE because property is not type-checked.
282
+ * This function is UNSAFE because property is not type-checked.
283
283
  *
284
284
  * @param {string} property Model property name.
285
285
  * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model (defines 2nd generic).
@@ -313,7 +313,7 @@ export class TableviewDescriptorInst {
313
313
  }
314
314
  /**
315
315
  * [UNSAFE] Adds a field lookup with options value property for lookup model.
316
- * This method is UNSAFE because property is not type-checked.
316
+ * This function is UNSAFE because property is not type-checked.
317
317
  *
318
318
  * @param {Property} property - The property key of the editor.
319
319
  * @param {TypeDescriptor<FieldModel>} type - The type descriptor for the lookup model.
@@ -350,7 +350,7 @@ export class TableviewDescriptorInst {
350
350
  }
351
351
  /**
352
352
  * [UNSAFE] Adds a field lookup with a data provider or service to the editor model.
353
- * This method is UNSAFE because property is not type-checked.
353
+ * This function is UNSAFE because property is not type-checked.
354
354
  *
355
355
  * @param {string} property - The property key of the editor.
356
356
  * @param {FieldLookupProviderType<LookupModel, Service>} provider - The lookup provider or service for the field lookup.
@@ -388,7 +388,7 @@ export class TableviewDescriptorInst {
388
388
  }
389
389
  /**
390
390
  * [UNSAFE] Adds a field lookup with data provider or service and options value property for lookup model.
391
- * This method is UNSAFE because property is not type-checked.
391
+ * This function is UNSAFE because property is not type-checked.
392
392
  *
393
393
  * @param {string} property - The property key of the editor.
394
394
  * @param {FieldLookupProviderType<FieldModel, Service>} provider - The lookup provider.
@@ -507,4 +507,4 @@ export class TableviewDynamicDescriptorInt extends TableviewDescriptorInst {
507
507
  return descriptor;
508
508
  }
509
509
  }
510
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFnRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWhLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBT2hGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBR3pFLE1BQU0sT0FBTyx1QkFBdUI7SUFlaEMsWUFBbUIsS0FBc0M7UUFGL0MsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFpQyxLQUFLLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksb0JBQW9CLENBQW9DLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBb0MsS0FBSyxFQUFFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FBb0MsS0FBSyxFQUFFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FB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QUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDYSxtQkFBbUIsQ0FBQyxVQUFzQztRQUN0RSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNhLFlBQVksQ0FBQyxRQUFnQjtRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0seUJBQXlCLENBQUMsV0FBbUI7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDYSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksNkJBQTZCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FycmF5SXRlbVR5cGUsIEVudW1Db25zdGFudFR5cGUsIElMb29rdXBEYXRhUHJvdmlkZXIsIElUYWJsZXZpZXdEZXNjcmlwdG9yLCBJZFR5cGUsIEtleW9mQW5kT2ZUeXBlLCBOdWxsYWJsZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7RmlsdGVyRGVzY3JpcHRvciwgRmlsdGVyRGlzcGxheVR5cGVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2ZpbHRlcic7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3IsIFR5cGVEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2UsIElUYWJsZURhdGFQcm92aWRlciwgVGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGaWVsZExvb2t1cFByb3ZpZGVyVHlwZX0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWxvb2t1cC5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3JUeXBlfSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQuZGVzY3JpcHRvcic7XG5pbXBvcnQge0lGaWVsZHNNYW5hZ2VJbnRlcmZhY2V9IGZyb20gJy4uLy4uL2VkaXRvci9tb2RlbHMvZWRpdG9yLWZpZWxkcy5tb2RlbCc7XG5pbXBvcnQge1RhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi8uLi9lZGl0b3IvbW9kZWxzL2VkaXRvci5tb2RlbCc7XG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9uTWVzc2FnZSwgRm9ybVZhbGlkYXRvcn0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9maWVsZC12YWxpZGF0aW9uLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxldmlld01vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPlxuICAgIGltcGxlbWVudHNcbiAgICAgICAgSVRhYmxldmlld0Rlc2NyaXB0b3I8VGFibGV2aWV3TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIElDb2x1bW5zTWFuYWdlSW50ZXJmYWNlPFRhYmxldmlld01vZGVsLCBTb3J0cywgRmlsdGVycz4sXG4gICAgICAgIElGaWVsZHNNYW5hZ2VJbnRlcmZhY2U8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPlxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGV2aWV3TW9kZWw+O1xuXG4gICAgcHJvdGVjdGVkIF90YWJsZTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuICAgIHByb3RlY3RlZCBfZGV0YWlsc0VkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2FkZEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgX2VkaXRFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG5cbiAgICBwcm90ZWN0ZWQgX2lzTG9jYWxpemVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUYWJsZXZpZXdNb2RlbD4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsKTtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFRpdGxlKGAke3RoaXMuX21vZGVsLmkxOG5CYXNlS2V5fS5uYW1lYCk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbCwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscyk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aERpc2FibGVkKCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG1vZGVsLCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4obW9kZWwsIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRldGFpbHNFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZXRhaWxzRWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWRkRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkRWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yRGVzY3JpcHRvcnMoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlsc0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIG5ldyBjb3B5IG9mIGVkaXRvciBkZXNjcmlwdG9yIGFuZCBtYWtlcyBpdCBkaXNhYmxlZFxuICAgICAqIHVzYWJsZSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoaXM6OndpdGhFZGl0b3JEZXNjcmlwdG9ycywgd2hlcmUgZGV0YWlsc0Rlc2NyaXB0b3IgaXMgbWFkZSBub24tZGlzYWJsZWRcbiAgICAgKiBAcGFyYW0gdHlwZSB3aGljaCBlZGl0b3IgdHlwZSB0byBzZXQgdG8gZGlzYWJsZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkRWRpdG9yRGVzY3JpcHRvcih0eXBlID0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscyk6IHRoaXMge1xuICAgICAgICBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdCkge1xuICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IHRoaXMuX2VkaXRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IHRoaXMuX2FkZEVkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHt0YWJsZS53aXRoVGl0bGV9IGRpcmVjdGx5XG4gICAgICogQHBhcmFtIHRpdGxlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUYWJsZVRpdGxlKHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFRpdGxlKHRpdGxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uPFZhbHVlID0gVGFibGV2aWV3TW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGV4cHJlc3Npb246IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlPGtleW9mIFRhYmxldmlld01vZGVsPlxuICAgICk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoVmFsaWRhdGlvblVuc2FmZShuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzIGFzIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlID0gVGFibGV2aWV3TW9kZWw+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGV4cHJlc3Npb246IEZvcm1WYWxpZGF0b3I8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgbWVzc2FnZT86IEZvcm1WYWxpZGF0aW9uTWVzc2FnZTxWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBvcHRzPzogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlXG4gICAgKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3Iud2l0aFZhbGlkYXRpb25VbnNhZmU8VmFsdWU+KG5hbWUsIGV4cHJlc3Npb24sIG1lc3NhZ2UsIG9wdHMpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3Iud2l0aFZhbGlkYXRpb25VbnNhZmU8VmFsdWU+KG5hbWUsIGV4cHJlc3Npb24sIG1lc3NhZ2UsIG9wdHMpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbihwcm9wZXJ0eToga2V5b2YgVGFibGV2aWV3TW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldENvbHVtbihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5nZXRDb2x1bW5VbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVDb2x1bW4ocHJvcGVydHk6IGtleW9mIFRhYmxldmlld01vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtbihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGV2aWV3TW9kZWwsIENvbHVtblZhbHVlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoQ29sdW1uPENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZT4oY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsPihwcm9wZXJ0eTogUHJvcGVydHkpOiBDb2x1bW5EZXNjcmlwdG9yPE5vbk51bGxhYmxlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4sIFRhYmxldmlld01vZGVsLCBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkVudW08UHJvcGVydHlLZXkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5S2V5XT4+KHByb3BlcnR5OiBQcm9wZXJ0eUtleSwgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5FbnVtKHByb3BlcnR5LCBlbnVtRGVzYyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCA9IGFueT4ocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxldmlld01vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5VbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiAoa2V5b2YgVGFibGV2aWV3TW9kZWwpW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbnMoLi4ucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb3J0KHByb3BlcnR5OiBTb3J0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0U29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVNvcnQocHJvcGVydHk6IFNvcnRzKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZVNvcnQocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNvcnQocHJvcGVydHk6IFNvcnRzLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkU29ydChwcm9wZXJ0eSwgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0KHByb3BlcnR5OiBTb3J0cywgaXNEZWZhdWx0ID0gZmFsc2UsIGFzY2VuZGluZz86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnQocHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0VW5zYWZlKHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQocHJvcGVydHk6IFNvcnRzLCBhc2NlbmRpbmc/OiBib29sZWFuLCBvcmRlcj86IG51bWJlciwgZW5hYmxlZD86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0KHByb3BlcnR5LCBhc2NlbmRpbmcsIG9yZGVyLCBlbmFibGVkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBhc2NlbmRpbmc/OiBib29sZWFuLCBvcmRlcj86IG51bWJlciwgZW5hYmxlZD86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5LCBhc2NlbmRpbmcsIG9yZGVyLCBlbmFibGVkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0cyguLi5wcm9wZXJ0aWVzOiBTb3J0c1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0cyguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0c1Vuc2FmZSguLi5wcm9wZXJ0aWVzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoU29ydHNVbnNhZmUoLi4ucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldEZpbHRlcihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlclVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5nZXRGaWx0ZXJVbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsID8gVGFibGV2aWV3TW9kZWxbRmlsdGVyc10gOiBuZXZlcj4ocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXA8RmlsdGVyTW9kZWwgPSBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwgPyBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtGaWx0ZXJzXT4gOiBuZXZlciwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgICAgIHByb3BlcnR5OiBGaWx0ZXJzLFxuICAgICAgICBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IGtleW9mIEZpbHRlck1vZGVsXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXA8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KHByb3BlcnR5LCBwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBVbnNhZmU8RmlsdGVyTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KHByb3BlcnR5OiBzdHJpbmcsIHByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZT4sIG9wdGlvbnNWYWx1ZVByb3BlcnR5Pzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBVbnNhZmU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KHByb3BlcnR5LCBwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBFbnVtPEVudW0+KHByb3BlcnR5OiBGaWx0ZXJzLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkRmlsdGVyTG9va3VwRW51bTxFbnVtPihwcm9wZXJ0eSwgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0gPSBFbnVtQ29uc3RhbnRUeXBlPihwcm9wZXJ0eTogc3RyaW5nLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkRmlsdGVyTG9va3VwRW51bVVuc2FmZTxFbnVtPihwcm9wZXJ0eSwgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJGcm9tQ29sdW1uKHByb3BlcnR5OiBFeHRyYWN0PEZpbHRlcnMsIGtleW9mIFRhYmxldmlld01vZGVsPiwgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW4ocHJvcGVydHksIGRpc3BsYXlUeXBlLCBmb3JjZVNpbXBsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnMoLi4ucHJvcGVydGllczogRXh0cmFjdDxGaWx0ZXJzLCBrZXlvZiBUYWJsZXZpZXdNb2RlbD5bXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRmlsdGVyc0Zyb21Db2x1bW5zKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcnNGcm9tQ29sdW1uc1Vuc2FmZSguLi5wcm9wZXJ0aWVzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRmlsdGVyc0Zyb21Db2x1bW5zVW5zYWZlKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyRnJvbUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBkaXNwbGF5VHlwZT86IEZpbHRlckRpc3BsYXlUeXBlRW51bSwgZm9yY2VTaW1wbGUgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkRmlsdGVyRnJvbUNvbHVtblVuc2FmZShwcm9wZXJ0eSwgZGlzcGxheVR5cGUsIGZvcmNlU2ltcGxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHk6IEZpbHRlcnMsIGZpbHRlcjogRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGV2aWV3TW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5LCBmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZXZpZXdNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpZWxkKHByb3BlcnR5OiBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgZWRpdG9yVHlwZTogVGFibGV2aWV3RWRpdG9yVHlwZUVudW0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBlZGl0b3JUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgZWRpdG9yVHlwZTogVGFibGV2aWV3RWRpdG9yVHlwZUVudW0pOiBBRmllbGREZXNjcmlwdG9yPGFueSwgVGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPiB8IG51bGwge1xuICAgICAgICBzd2l0Y2ggKGVkaXRvclR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWRpdEVkaXRvci5nZXRGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkFkZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkRWRpdG9yLmdldEZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvci5nZXRGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLk5vbmU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGQocHJvcGVydHk6IGtleW9mIFRhYmxldmlld01vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5yZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgVGFibGV2aWV3TW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsLCBGaWVsZE1vZGVsID0gTm9uTnVsbGFibGU8VGFibGV2aWV3TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4ocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZDxQcm9wZXJ0eSwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsID0gRmllbGRJbnB1dERlc2NyaXB0b3JUeXBlLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZHMoLi4ucHJvcGVydGllczogKGtleW9mIFRhYmxldmlld01vZGVsKVtdKTogdGhpcyB7XG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwID0+IHRoaXMuYWRkRmllbGQocCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nKTogRmllbGRBY3Rpb25EZXNjcmlwdG9yPFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRBY3Rpb24oYWN0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRGaWVsZFRvRWRpdEFuZEFkZDxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgVGFibGV2aWV3TW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPikge1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxGaWVsZE1vZGVsPn0gdHlwZSAtIFRoZSB0eXBlIGRlc2NyaXB0b3IgZm9yIHRoZSBsb29rdXAgbW9kZWwuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIEZpZWxkVmFsdWUgLSBUaGUgdmFsdWUgdHlwZSBvZiBmaWVsZCBvbiBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7RmllbGRMb29rdXBEZXNjcmlwdG9yPExvb2t1cE1vZGVsLCBUYWJsZXZpZXdNb2RlbCwgdW5kZWZpbmVkLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD59IC0gVGhlIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsLCBMb29rdXBNb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHR5cGU/OiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD5cbiAgICApIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwPFByb3BlcnR5LCBMb29rdXBNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHksIHR5cGUpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFtVTlNBRkVdIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIFVOU0FGRSBiZWNhdXNlIHByb3BlcnR5IGlzIG5vdCB0eXBlLWNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPEZpZWxkTW9kZWw+fSB0eXBlIC0gVGhlIHR5cGUgZGVzY3JpcHRvciBmb3IgdGhlIGxvb2t1cCBtb2RlbCAoZGVmaW5lcyAybmQgZ2VuZXJpYykuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBNb2RlbCAtIFRoZSBmaWVsZCBtb2RlbCB0eXBlLCBkZWZhdWx0cyB0byB0aGUgbm9uLW51bGxhYmxlIHR5cGUgb2YgdGhlIGVkaXRvcidzIHByb3BlcnR5LlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIFRhYmxldmlld01vZGVsLCB1bmRlZmluZWQsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlID0gTG9va3VwTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIHR5cGU/OiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGZpZWxkIGxvb2t1cCB3aXRoIG9wdGlvbnMgdmFsdWUgcHJvcGVydHkgZm9yIGxvb2t1cCBtb2RlbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmllbGRNb2RlbD59IHR5cGUgLSBUaGUgdHlwZSBkZXNjcmlwdG9yIGZvciB0aGUgbG9va3VwIG1vZGVsLlxuICAgICAqIEBwYXJhbSB7TG9va3VwVmFsdWVQcm9wZXJ0eX0gbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHkgLSBUaGUgdmFsdWUgcHJvcGVydHkgdXNlZCBhcyB2YWx1ZSBpbiB0aGUgbG9va3VwIG9wdGlvbnMuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cFZhbHVlUHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgbG9va3VwIG1vZGVsIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIHVuZGVmaW5lZCwgRmllbGRWYWx1ZT59IC0gVGhlIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cFdpdGhPcHRpb25zVmFsdWVQcm9wZXJ0eTxcbiAgICAgICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgTG9va3VwTW9kZWwsXG4gICAgICAgIExvb2t1cFZhbHVlUHJvcGVydHkgZXh0ZW5kcyBLZXlvZkFuZE9mVHlwZTxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWxbUHJvcGVydHldPixcbiAgICAgICAgRmllbGRWYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XVxuICAgID4ocHJvcGVydHk6IFByb3BlcnR5LCB0eXBlOiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4sIGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5OiBMb29rdXBWYWx1ZVByb3BlcnR5KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhPcHRpb25zVmFsdWVQcm9wZXJ0eTxQcm9wZXJ0eSwgTG9va3VwTW9kZWwsIExvb2t1cFZhbHVlUHJvcGVydHksIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBbVU5TQUZFXSBBZGRzIGEgZmllbGQgbG9va3VwIHdpdGggb3B0aW9ucyB2YWx1ZSBwcm9wZXJ0eSBmb3IgbG9va3VwIG1vZGVsLlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIFVOU0FGRSBiZWNhdXNlIHByb3BlcnR5IGlzIG5vdCB0eXBlLWNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Byb3BlcnR5fSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPEZpZWxkTW9kZWw+fSB0eXBlIC0gVGhlIHR5cGUgZGVzY3JpcHRvciBmb3IgdGhlIGxvb2t1cCBtb2RlbC5cbiAgICAgKiBAcGFyYW0ge0xvb2t1cFZhbHVlUHJvcGVydHl9IGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5IC0gVGhlIHZhbHVlIHByb3BlcnR5IHVzZWQgYXMgdmFsdWUgaW4gdGhlIGxvb2t1cCBvcHRpb25zLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBWYWx1ZVByb3BlcnR5IC0gVGhlIHByb3BlcnR5IG9mIGxvb2t1cCBtb2RlbCB0eXBlLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIFRhYmxldmlld01vZGVsLCB1bmRlZmluZWQsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBXaXRoT3B0aW9uc1ZhbHVlUHJvcGVydHlVbnNhZmU8TG9va3VwTW9kZWwsIEZpZWxkVmFsdWUgPSBOdWxsYWJsZTxJZFR5cGU+PihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdHlwZTogVHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+LFxuICAgICAgICBsb29rdXBPcHRpb25zVmFsdWVQcm9wZXJ0eTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhPcHRpb25zVmFsdWVQcm9wZXJ0eVVuc2FmZTxMb29rdXBNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHksIHR5cGUsIGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgZmllbGQgbG9va3VwIHdpdGggYSBkYXRhIHByb3ZpZGVyIG9yIHNlcnZpY2UgdG8gdGhlIGVkaXRvciBtb2RlbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB7RmllbGRMb29rdXBQcm92aWRlclR5cGU8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBwcm92aWRlciAtIFRoZSBmaWVsZCBsb29rdXAgZGF0YSBwcm92aWRlciBvciBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+fSBbdHlwZV0gLSBUaGUgdHlwZSBvZiBsb29rdXAgLSBpZiBkYXRhIHByb3ZpZGVyIGlzIHBhc3NlZCBhcyBwcmV2aW91cyBwYXJhbWV0ZXIsIHR5cGUgY2FuIGJlIG9taXR0ZWQuIElmIHNlcnZpY2UgaXMgcHJvdmlkZXIsIHR5cGUgcGFyYW1ldGVyIGlzIHByb3Bvc2VkIGluIGZhdm91ciBvZiBjb3JyZWN0IHR5cGluZy5cbiAgICAgKiBAdHlwZXBhcmFtIFByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgRWRpdG9yTW9kZWwuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gVGhlIGxvb2t1cCBzZXJ2aWNlIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBNb2RlbCAtIFRoZSBmaWVsZCBtb2RlbCB0eXBlLCBkZWZhdWx0cyB0byB0aGUgbm9uLW51bGxhYmxlIHR5cGUgb2YgdGhlIGVkaXRvcidzIHByb3BlcnR5LlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSBmaWVsZCB2YWx1ZSB0eXBlLCBkZWZhdWx0cyB0byB0aGUgZWRpdG9yJ3MgcHJvcGVydHkgdHlwZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gQ3JlYXRlZCBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBXaXRoUHJvdmlkZXI8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgU2VydmljZSwgTG9va3VwTW9kZWwgPSBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gVGFibGV2aWV3TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBwcm92aWRlcjogRmllbGRMb29rdXBQcm92aWRlclR5cGU8TG9va3VwTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICB0eXBlPzogVHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlcjxQcm9wZXJ0eSwgU2VydmljZSwgTG9va3VwTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5LCBwcm92aWRlciwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogW1VOU0FGRV0gQWRkcyBhIGZpZWxkIGxvb2t1cCB3aXRoIGEgZGF0YSBwcm92aWRlciBvciBzZXJ2aWNlIHRvIHRoZSBlZGl0b3IgbW9kZWwuXG4gICAgICogVGhpcyBtZXRob2QgaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPExvb2t1cE1vZGVsLCBTZXJ2aWNlPn0gcHJvdmlkZXIgLSBUaGUgbG9va3VwIHByb3ZpZGVyIG9yIHNlcnZpY2UgZm9yIHRoZSBmaWVsZCBsb29rdXAuXG4gICAgICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4/fSB0eXBlIC0gT3B0aW9uYWwgdHlwZSBkZXNjcmlwdG9yIGZvciB0aGUgZmllbGQgbG9va3VwLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbG9va3VwIG1vZGVsIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gVGhlIGxvb2t1cCBzZXJ2aWNlIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvciBhZGRlZCB0byB0aGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlID0gTG9va3VwTW9kZWw+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBwcm92aWRlcjogRmllbGRMb29rdXBQcm92aWRlclR5cGU8TG9va3VwTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICB0eXBlPzogVHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlclVuc2FmZTxMb29rdXBNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZT4ocHJvcGVydHksIHByb3ZpZGVyLCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgZmllbGQgbG9va3VwIHdpdGggZGF0YSBwcm92aWRlciBvciBzZXJ2aWNlIGFuZCBvcHRpb25zIHZhbHVlIHByb3BlcnR5IGZvciBsb29rdXAgbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Byb3BlcnR5fSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+fSBwcm92aWRlciAtIFRoZSBsb29rdXAgcHJvdmlkZXIuXG4gICAgICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxGaWVsZE1vZGVsPn0gdHlwZSAtIFRoZSB0eXBlIGRlc2NyaXB0b3IgZm9yIHRoZSBsb29rdXAgbW9kZWwuXG4gICAgICogQHBhcmFtIHtMb29rdXBWYWx1ZVByb3BlcnR5fSBsb29rdXBPcHRpb25zVmFsdWVQcm9wZXJ0eSAtIFRoZSB2YWx1ZSBwcm9wZXJ0eSB1c2VkIGFzIHZhbHVlIGluIHRoZSBsb29rdXAgb3B0aW9ucy5cbiAgICAgKiBAdHlwZXBhcmFtIFByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgRWRpdG9yTW9kZWwuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gVGhlIGxvb2t1cCBzZXJ2aWNlIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBNb2RlbCAtIFRoZSBmaWVsZCBtb2RlbCB0eXBlLCBkZWZhdWx0cyB0byB0aGUgbm9uLW51bGxhYmxlIHR5cGUgb2YgdGhlIGVkaXRvcidzIHByb3BlcnR5LlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwVmFsdWVQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBvZiBsb29rdXAgbW9kZWwgdHlwZS5cbiAgICAgKiBAdHlwZXBhcmFtIEZpZWxkVmFsdWUgLSBUaGUgdmFsdWUgdHlwZSBvZiBmaWVsZCBvbiBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7RmllbGRMb29rdXBEZXNjcmlwdG9yPExvb2t1cE1vZGVsLCBUYWJsZXZpZXdNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBhZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlckFuZE9wdGlvbnNWYWx1ZVByb3BlcnR5PFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsLFxuICAgICAgICBTZXJ2aWNlLFxuICAgICAgICBMb29rdXBNb2RlbCxcbiAgICAgICAgTG9va3VwVmFsdWVQcm9wZXJ0eSBleHRlbmRzIEtleW9mQW5kT2ZUeXBlPExvb2t1cE1vZGVsLCBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gVGFibGV2aWV3TW9kZWxbUHJvcGVydHldXG4gICAgPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBwcm92aWRlcjogRmllbGRMb29rdXBQcm92aWRlclR5cGU8TG9va3VwTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICB0eXBlOiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4sXG4gICAgICAgIGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5OiBMb29rdXBWYWx1ZVByb3BlcnR5XG4gICAgKTogRmllbGRMb29rdXBEZXNjcmlwdG9yPExvb2t1cE1vZGVsLCBUYWJsZXZpZXdNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyQW5kT3B0aW9uc1ZhbHVlUHJvcGVydHk8UHJvcGVydHksIFNlcnZpY2UsIExvb2t1cE1vZGVsLCBMb29rdXBWYWx1ZVByb3BlcnR5LCBGaWVsZFZhbHVlPihcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBbVU5TQUZFXSBBZGRzIGEgZmllbGQgbG9va3VwIHdpdGggZGF0YSBwcm92aWRlciBvciBzZXJ2aWNlIGFuZCBvcHRpb25zIHZhbHVlIHByb3BlcnR5IGZvciBsb29rdXAgbW9kZWwuXG4gICAgICogVGhpcyBtZXRob2QgaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+fSBwcm92aWRlciAtIFRoZSBsb29rdXAgcHJvdmlkZXIuXG4gICAgICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxGaWVsZE1vZGVsPn0gdHlwZSAtIFRoZSB0eXBlIGRlc2NyaXB0b3IgZm9yIHRoZSBsb29rdXAgbW9kZWwuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5IC0gVGhlIHZhbHVlIHByb3BlcnR5IHVzZWQgaW4gdGhlIGxvb2t1cCBvcHRpb25zLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBNb2RlbCAtIFRoZSBmaWVsZCBtb2RlbCB0eXBlLCBkZWZhdWx0cyB0byB0aGUgbm9uLW51bGxhYmxlIHR5cGUgb2YgdGhlIGVkaXRvcidzIHByb3BlcnR5LlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD59IC0gVGhlIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIGFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyQW5kT3B0aW9uc1ZhbHVlUHJvcGVydHlVbnNhZmU8U2VydmljZSwgTG9va3VwTW9kZWwsIEZpZWxkVmFsdWUgPSBMb29rdXBNb2RlbD4oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIHByb3ZpZGVyOiBGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxMb29rdXBNb2RlbCwgU2VydmljZT4sXG4gICAgICAgIHR5cGU6IFR5cGVEZXNjcmlwdG9yPExvb2t1cE1vZGVsPixcbiAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHk6IHN0cmluZ1xuICAgICk6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlckFuZE9wdGlvbnNWYWx1ZVByb3BlcnR5VW5zYWZlPFNlcnZpY2UsIExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlPihcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRMb29rdXBFbnVtKHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bVVuc2FmZTxFbnVtID0gRW51bUNvbnN0YW50VHlwZT4ocHJvcGVydHk6IHN0cmluZywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LCBvcHRpb25zPzogQXJyYXk8RW51bT4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwRW51bVVuc2FmZTxFbnVtPihwcm9wZXJ0eSwgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlFZGl0b3I8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8VGFibGV2aWV3TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIFRhYmxldmlld01vZGVsPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5LCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihwcm9wZXJ0eTogc3RyaW5nLCB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPixcbiAgICAgICAgbG9va3VwRGF0YVByb3ZpZGVyOiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZT5cbiAgICApIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvcjxQcm9wZXJ0eSwgU2VydmljZSwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZT4oXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3IsXG4gICAgICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3IsXG4gICAgICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZT4ocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlVGFiR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWVsZEdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlldyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9tb2RlbC5jb3B5KCkpO1xuICAgICAgICB0YWJsZXZpZXcuX3RhYmxlID0gdGhpcy5fdGFibGUuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX2RldGFpbHNFZGl0b3IgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9pc0xvY2FsaXplZCA9IHRoaXMuX2lzTG9jYWxpemVkO1xuICAgICAgICByZXR1cm4gdGFibGV2aWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgTG9jYWxpemF0aW9uTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LFxuICAgICAgICBsb2NhbGVQcm9wZXJ0eToga2V5b2YgTG9jYWxpemF0aW9uTW9kZWxcbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgbW9kZWwsIGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvY2FsaXplZFVuc2FmZTxMb2NhbGl6YXRpb25Nb2RlbD4ocHJvcGVydHk6IHN0cmluZywgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxMb2NhbGl6YXRpb25Nb2RlbD4sIGxvY2FsZVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoTG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkobG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5kZXRhaWxzRWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5hZGRFZGl0b3IubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5LCBtb2RlbCwgbG9jYWxlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLmVkaXRFZGl0b3IubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5LCBtb2RlbCwgbG9jYWxlUHJvcGVydHkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50IGV4dGVuZHMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF90YWJsZTogVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3Q7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKG1vZGVsKTtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY3VzdG9tIHRhYmxlIGRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoVGFibGVEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IGhpZGRlbiBzdGF0ZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eVxuICAgICAqIGVxdWFscyB0byBiZSByZW1vdmluZyBpbiBhdXRvIGFuZCBiYXNlIHRhYmxldmlldyBkZXNjcmlwdG9yXG4gICAgICogKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uJ3MgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uKHByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFbnRpdHlGb3JUcmFuc2xhdGlvbnMoaTE4bkJhc2VLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS5tb2RlbC53aXRoSTE4bkJhc2UoaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLm1vZGVsLndpdGhJMThuQmFzZShpMThuQmFzZUtleSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgZGVlcCBjb3B5IG9mIHRhYmxldmlldyBvYmplY3QgYW5kIGl0cyBjaGlsZHJlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCh0aGlzLm1vZGVsLmNvcHkoKSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhYmxlID0gdGhpcy5fdGFibGUuY29weSgpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy90YWJsZXZpZXcvZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFnRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWhLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBT2hGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBR3pFLE1BQU0sT0FBTyx1QkFBdUI7SUFlaEMsWUFBbUIsS0FBc0M7UUFGL0MsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFpQyxLQUFLLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksb0JBQW9CLENBQW9DLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBb0MsS0FBSyxFQUFFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FBb0MsS0FBSyxFQUFFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FB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Q3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ2EsbUJBQW1CLENBQUMsVUFBc0M7UUFDdEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDYSxZQUFZLENBQUMsUUFBZ0I7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLHlCQUF5QixDQUFDLFdBQW1CO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ2EsSUFBSTtRQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFJLDZCQUE2QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkMsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcnJheUl0ZW1UeXBlLCBFbnVtQ29uc3RhbnRUeXBlLCBJTG9va3VwRGF0YVByb3ZpZGVyLCBJVGFibGV2aWV3RGVzY3JpcHRvciwgSWRUeXBlLCBLZXlvZkFuZE9mVHlwZSwgTnVsbGFibGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3IsIElDb2x1bW5zTWFuYWdlSW50ZXJmYWNlLCBJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGVzY3JpcHRvckluc3QsIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxlL2FwaSc7XG5cbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkQWN0aW9uRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWFjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwRGVzY3JpcHRvciwgRmllbGRMb29rdXBQcm92aWRlclR5cGV9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZX0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZX0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtJRmllbGRzTWFuYWdlSW50ZXJmYWNlfSBmcm9tICcuLi8uLi9lZGl0b3IvbW9kZWxzL2VkaXRvci1maWVsZHMubW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdFZGl0b3JUeXBlRW51bX0gZnJvbSAnLi4vLi4vZWRpdG9yL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtGb3JtVmFsaWRhdGlvbk1lc3NhZ2UsIEZvcm1WYWxpZGF0b3J9IGZyb20gJy4uLy4uL2VkaXRvci9tb2RlbHMvZmllbGQtdmFsaWRhdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD5cbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIElUYWJsZXZpZXdEZXNjcmlwdG9yPFRhYmxldmlld01vZGVsLCBTb3J0cywgRmlsdGVycywgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBJQ29sdW1uc01hbmFnZUludGVyZmFjZTxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgICAgICBJRmllbGRzTWFuYWdlSW50ZXJmYWNlPFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFRhYmxldmlld01vZGVsPjtcblxuICAgIHByb3RlY3RlZCBfdGFibGU6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPjtcbiAgICBwcm90ZWN0ZWQgX2RldGFpbHNFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJvdGVjdGVkIF9hZGRFZGl0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD47XG4gICAgcHJvdGVjdGVkIF9lZGl0RWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJvdGVjdGVkIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGV2aWV3TW9kZWw+KSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihtb2RlbCk7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhUaXRsZShgJHt0aGlzLl9tb2RlbC5pMThuQmFzZUtleX0ubmFtZWApO1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4obW9kZWwsIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpO1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPihtb2RlbCwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KG1vZGVsLCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5FZGl0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXRhaWxzRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc0VkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFkZEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBTb3J0cywgRmlsdGVycz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckRlc2NyaXB0b3JzKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERldGFpbHNEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWRkRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdERlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VGFibGV2aWV3TW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBuZXcgY29weSBvZiBlZGl0b3IgZGVzY3JpcHRvciBhbmQgbWFrZXMgaXQgZGlzYWJsZWRcbiAgICAgKiB1c2FibGUgaW4gY29tYmluYXRpb24gd2l0aCB0aGlzOjp3aXRoRWRpdG9yRGVzY3JpcHRvcnMsIHdoZXJlIGRldGFpbHNEZXNjcmlwdG9yIGlzIG1hZGUgbm9uLWRpc2FibGVkXG4gICAgICogQHBhcmFtIHR5cGUgd2hpY2ggZWRpdG9yIHR5cGUgdG8gc2V0IHRvIGRpc2FibGVkXG4gICAgICovXG4gICAgcHVibGljIHdpdGhEaXNhYmxlZEVkaXRvckRlc2NyaXB0b3IodHlwZSA9IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yID0gdGhpcy5fZGV0YWlsc0VkaXRvci5jb3B5KCkud2l0aERpc2FibGVkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSB7dGFibGUud2l0aFRpdGxlfSBkaXJlY3RseVxuICAgICAqIEBwYXJhbSB0aXRsZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGFibGVUaXRsZSh0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhUaXRsZSh0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbjxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxrZXlvZiBUYWJsZXZpZXdNb2RlbD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFZhbGlkYXRpb25VbnNhZmUobmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyBhcyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZSA9IFRhYmxldmlld01vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBleHByZXNzaW9uOiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZVxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhWYWxpZGF0aW9uVW5zYWZlPFZhbHVlPihuYW1lLCBleHByZXNzaW9uLCBtZXNzYWdlLCBvcHRzKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoVmFsaWRhdGlvblVuc2FmZTxWYWx1ZT4obmFtZSwgZXhwcmVzc2lvbiwgbWVzc2FnZSwgb3B0cyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgQ29sdW1uTW9kZWwgPSBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+LCBDb2x1bW5WYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4ocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5nZXRDb2x1bW48UHJvcGVydHksIENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZT4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb2x1bW5VbnNhZmU8Q29sdW1uTW9kZWwgPSBhbnksIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCwgQ29sdW1uVmFsdWU+KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZXZpZXdNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVDb2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVDb2x1bW5VbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29sdW1uPENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZSA9IENvbHVtbk1vZGVsPihjb2x1bW46IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxldmlld01vZGVsLCBDb2x1bW5WYWx1ZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aENvbHVtbjxDb2x1bW5Nb2RlbCwgQ29sdW1uVmFsdWU+KGNvbHVtbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbD4ocHJvcGVydHk6IFByb3BlcnR5KTogQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+LCBUYWJsZXZpZXdNb2RlbCwgVGFibGV2aWV3TW9kZWxbUHJvcGVydHldPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5FbnVtPFByb3BlcnR5S2V5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eUtleV0+Pihwcm9wZXJ0eTogUHJvcGVydHlLZXksIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRW51bShwcm9wZXJ0eSwgZW51bURlc2MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5VbnNhZmU8Q29sdW1uTW9kZWwgPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZXZpZXdNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbnMoLi4ucHJvcGVydGllczogKGtleW9mIFRhYmxldmlld01vZGVsKVtdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhDb2x1bW5zKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U29ydChwcm9wZXJ0eTogU29ydHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldFNvcnQocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmdldFNvcnRVbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVTb3J0KHByb3BlcnR5OiBTb3J0cykge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVTb3J0KHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlLnJlbW92ZVNvcnRVbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTb3J0KHByb3BlcnR5OiBTb3J0cywgaXNEZWZhdWx0ID0gZmFsc2UsIGFzY2VuZGluZz86IGJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZFNvcnQocHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkU29ydFVuc2FmZShwcm9wZXJ0eSwgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydChwcm9wZXJ0eTogU29ydHMsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0KHByb3BlcnR5LCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoU29ydFVuc2FmZShwcm9wZXJ0eSwgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRTb3J0KHByb3BlcnR5OiBTb3J0cywgYXNjZW5kaW5nPzogYm9vbGVhbiwgb3JkZXI/OiBudW1iZXIsIGVuYWJsZWQ/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhEZWZhdWx0U29ydChwcm9wZXJ0eSwgYXNjZW5kaW5nLCBvcmRlciwgZW5hYmxlZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgYXNjZW5kaW5nPzogYm9vbGVhbiwgb3JkZXI/OiBudW1iZXIsIGVuYWJsZWQ/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhEZWZhdWx0U29ydFVuc2FmZShwcm9wZXJ0eSwgYXNjZW5kaW5nLCBvcmRlciwgZW5hYmxlZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydHMoLi4ucHJvcGVydGllczogU29ydHNbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoU29ydHMoLi4ucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydHNVbnNhZmUoLi4ucHJvcGVydGllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aFNvcnRzVW5zYWZlKC4uLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsID8gTm9uTnVsbGFibGU8VGFibGV2aWV3TW9kZWxbRmlsdGVyc10+IDogYW55Pihwcm9wZXJ0eTogRmlsdGVycykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0RmlsdGVyPEZpbHRlck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbCA9IGFueT4ocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuZ2V0RmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZpbHRlcihwcm9wZXJ0eTogRmlsdGVycykge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVGaWx0ZXIocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWx0ZXJVbnNhZmUocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVGaWx0ZXJVbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXI8RmlsdGVyTW9kZWwgPSBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwgPyBUYWJsZXZpZXdNb2RlbFtGaWx0ZXJzXSA6IG5ldmVyPihwcm9wZXJ0eTogRmlsdGVycykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkRmlsdGVyPEZpbHRlck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4ocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cDxGaWx0ZXJNb2RlbCA9IEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCA/IE5vbk51bGxhYmxlPFRhYmxldmlld01vZGVsW0ZpbHRlcnNdPiA6IG5ldmVyLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICAgICAgcHJvcGVydHk6IEZpbHRlcnMsXG4gICAgICAgIHByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZT4sXG4gICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5Pzoga2V5b2YgRmlsdGVyTW9kZWxcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckxvb2t1cDxGaWx0ZXJNb2RlbCwgU2VydmljZT4ocHJvcGVydHksIHByb3ZpZGVyLCBvcHRpb25zVmFsdWVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cFVuc2FmZTxGaWx0ZXJNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4ocHJvcGVydHk6IHN0cmluZywgcHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpbHRlck1vZGVsLCBTZXJ2aWNlPiwgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckxvb2t1cFVuc2FmZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4ocHJvcGVydHksIHByb3ZpZGVyLCBvcHRpb25zVmFsdWVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW08RW51bT4ocHJvcGVydHk6IEZpbHRlcnMsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckxvb2t1cEVudW1VbnNhZmU8RW51bSA9IEVudW1Db25zdGFudFR5cGU+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxFbnVtPiwgb3B0aW9ucz86IEFycmF5PEVudW0+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW48UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgRmlsdGVyTW9kZWwgPSBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IEV4dHJhY3Q8RmlsdGVycywgUHJvcGVydHk+LFxuICAgICAgICBkaXNwbGF5VHlwZT86IEZpbHRlckRpc3BsYXlUeXBlRW51bSxcbiAgICAgICAgZm9yY2VTaW1wbGUgPSBmYWxzZVxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkRmlsdGVyRnJvbUNvbHVtbjxQcm9wZXJ0eSwgRmlsdGVyTW9kZWw+KHByb3BlcnR5LCBkaXNwbGF5VHlwZSwgZm9yY2VTaW1wbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyc0Zyb21Db2x1bW5zKC4uLnByb3BlcnRpZXM6IEV4dHJhY3Q8RmlsdGVycywga2V5b2YgVGFibGV2aWV3TW9kZWw+W10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnNVbnNhZmUoLi4ucHJvcGVydGllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aEZpbHRlcnNGcm9tQ29sdW1uc1Vuc2FmZSguLi5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW0sIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZEZpbHRlckZyb21Db2x1bW5VbnNhZmUocHJvcGVydHksIGRpc3BsYXlUeXBlLCBmb3JjZVNpbXBsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXI8RmlsdGVyTW9kZWw+KHByb3BlcnR5OiBGaWx0ZXJzLCBmaWx0ZXI6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxldmlld01vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRmlsdGVyPEZpbHRlck1vZGVsPihwcm9wZXJ0eSwgZmlsdGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KGZpbHRlcjogRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGV2aWV3TW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KGZpbHRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWVsZChwcm9wZXJ0eToga2V5b2YgVGFibGV2aWV3TW9kZWwsIGVkaXRvclR5cGU6IFRhYmxldmlld0VkaXRvclR5cGVFbnVtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgZWRpdG9yVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpZWxkVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGVkaXRvclR5cGU6IFRhYmxldmlld0VkaXRvclR5cGVFbnVtKTogQUZpZWxkRGVzY3JpcHRvcjxhbnksIFRhYmxldmlld01vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgc3dpdGNoIChlZGl0b3JUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRFZGl0b3IuZ2V0RmllbGRVbnNhZmUocHJvcGVydHkpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5BZGQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEVkaXRvci5nZXRGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RldGFpbHNFZGl0b3IuZ2V0RmllbGRVbnNhZmUocHJvcGVydHkpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5Ob25lOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZpZWxkKHByb3BlcnR5OiBrZXlvZiBUYWJsZXZpZXdNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5yZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5yZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2RldGFpbHNFZGl0b3IucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIFRhYmxldmlld01vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGQ8UHJvcGVydHksIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCA9IEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBUYWJsZXZpZXdNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2gocCA9PiB0aGlzLmFkZEZpZWxkKHApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZyk6IEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxUYWJsZXZpZXdNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkQWN0aW9uKGFjdGlvbk5hbWUpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRmllbGRUb0VkaXRBbmRBZGQ8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIFRhYmxldmlld01vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pIHtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGxvb2t1cCBmaWVsZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmllbGRNb2RlbD59IHR5cGUgLSBUaGUgdHlwZSBkZXNjcmlwdG9yIGZvciB0aGUgbG9va3VwIG1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIHVuZGVmaW5lZCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+fSAtIFRoZSBmaWVsZCBsb29rdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgTG9va3VwTW9kZWwgPSBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gVGFibGV2aWV3TW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICB0eXBlPzogVHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cDxQcm9wZXJ0eSwgTG9va3VwTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5LCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBbVU5TQUZFXSBBZGRzIGxvb2t1cCBmaWVsZC5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIFVOU0FGRSBiZWNhdXNlIHByb3BlcnR5IGlzIG5vdCB0eXBlLWNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0ge1R5cGVEZXNjcmlwdG9yPEZpZWxkTW9kZWw+fSB0eXBlIC0gVGhlIHR5cGUgZGVzY3JpcHRvciBmb3IgdGhlIGxvb2t1cCBtb2RlbCAoZGVmaW5lcyAybmQgZ2VuZXJpYykuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBNb2RlbCAtIFRoZSBmaWVsZCBtb2RlbCB0eXBlLCBkZWZhdWx0cyB0byB0aGUgbm9uLW51bGxhYmxlIHR5cGUgb2YgdGhlIGVkaXRvcidzIHByb3BlcnR5LlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIFRhYmxldmlld01vZGVsLCB1bmRlZmluZWQsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlID0gTG9va3VwTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcsIHR5cGU/OiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGZpZWxkIGxvb2t1cCB3aXRoIG9wdGlvbnMgdmFsdWUgcHJvcGVydHkgZm9yIGxvb2t1cCBtb2RlbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmllbGRNb2RlbD59IHR5cGUgLSBUaGUgdHlwZSBkZXNjcmlwdG9yIGZvciB0aGUgbG9va3VwIG1vZGVsLlxuICAgICAqIEBwYXJhbSB7TG9va3VwVmFsdWVQcm9wZXJ0eX0gbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHkgLSBUaGUgdmFsdWUgcHJvcGVydHkgdXNlZCBhcyB2YWx1ZSBpbiB0aGUgbG9va3VwIG9wdGlvbnMuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cFZhbHVlUHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgbG9va3VwIG1vZGVsIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIHVuZGVmaW5lZCwgRmllbGRWYWx1ZT59IC0gVGhlIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cFdpdGhPcHRpb25zVmFsdWVQcm9wZXJ0eTxcbiAgICAgICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgTG9va3VwTW9kZWwsXG4gICAgICAgIExvb2t1cFZhbHVlUHJvcGVydHkgZXh0ZW5kcyBLZXlvZkFuZE9mVHlwZTxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWxbUHJvcGVydHldPixcbiAgICAgICAgRmllbGRWYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XVxuICAgID4ocHJvcGVydHk6IFByb3BlcnR5LCB0eXBlOiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4sIGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5OiBMb29rdXBWYWx1ZVByb3BlcnR5KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhPcHRpb25zVmFsdWVQcm9wZXJ0eTxQcm9wZXJ0eSwgTG9va3VwTW9kZWwsIExvb2t1cFZhbHVlUHJvcGVydHksIEZpZWxkVmFsdWU+KFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBbVU5TQUZFXSBBZGRzIGEgZmllbGQgbG9va3VwIHdpdGggb3B0aW9ucyB2YWx1ZSBwcm9wZXJ0eSBmb3IgbG9va3VwIG1vZGVsLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBvZiB0aGUgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmllbGRNb2RlbD59IHR5cGUgLSBUaGUgdHlwZSBkZXNjcmlwdG9yIGZvciB0aGUgbG9va3VwIG1vZGVsLlxuICAgICAqIEBwYXJhbSB7TG9va3VwVmFsdWVQcm9wZXJ0eX0gbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHkgLSBUaGUgdmFsdWUgcHJvcGVydHkgdXNlZCBhcyB2YWx1ZSBpbiB0aGUgbG9va3VwIG9wdGlvbnMuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cFZhbHVlUHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgbG9va3VwIG1vZGVsIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIHVuZGVmaW5lZCwgRmllbGRWYWx1ZT59IC0gVGhlIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cFdpdGhPcHRpb25zVmFsdWVQcm9wZXJ0eVVuc2FmZTxMb29rdXBNb2RlbCwgRmllbGRWYWx1ZSA9IE51bGxhYmxlPElkVHlwZT4+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICB0eXBlOiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD4sXG4gICAgICAgIGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwV2l0aE9wdGlvbnNWYWx1ZVByb3BlcnR5VW5zYWZlPExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgdHlwZSwgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBmaWVsZCBsb29rdXAgd2l0aCBhIGRhdGEgcHJvdmlkZXIgb3Igc2VydmljZSB0byB0aGUgZWRpdG9yIG1vZGVsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxMb29rdXBNb2RlbCwgU2VydmljZT59IHByb3ZpZGVyIC0gVGhlIGZpZWxkIGxvb2t1cCBkYXRhIHByb3ZpZGVyIG9yIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD59IFt0eXBlXSAtIFRoZSB0eXBlIG9mIGxvb2t1cCAtIGlmIGRhdGEgcHJvdmlkZXIgaXMgcGFzc2VkIGFzIHByZXZpb3VzIHBhcmFtZXRlciwgdHlwZSBjYW4gYmUgb21pdHRlZC4gSWYgc2VydmljZSBpcyBwcm92aWRlciwgdHlwZSBwYXJhbWV0ZXIgaXMgcHJvcG9zZWQgaW4gZmF2b3VyIG9mIGNvcnJlY3QgdHlwaW5nLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBUaGUgbG9va3VwIHNlcnZpY2UgdHlwZS5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIGZpZWxkIHZhbHVlIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBlZGl0b3IncyBwcm9wZXJ0eSB0eXBlLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+fSBDcmVhdGVkIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFRhYmxldmlld01vZGVsLCBTZXJ2aWNlLCBMb29rdXBNb2RlbCA9IE5vbk51bGxhYmxlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHByb3ZpZGVyOiBGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxMb29rdXBNb2RlbCwgU2VydmljZT4sXG4gICAgICAgIHR5cGU/OiBUeXBlRGVzY3JpcHRvcjxMb29rdXBNb2RlbD5cbiAgICApIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyPFByb3BlcnR5LCBTZXJ2aWNlLCBMb29rdXBNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHksIHByb3ZpZGVyLCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBbVU5TQUZFXSBBZGRzIGEgZmllbGQgbG9va3VwIHdpdGggYSBkYXRhIHByb3ZpZGVyIG9yIHNlcnZpY2UgdG8gdGhlIGVkaXRvciBtb2RlbC5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIFVOU0FGRSBiZWNhdXNlIHByb3BlcnR5IGlzIG5vdCB0eXBlLWNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxMb29rdXBNb2RlbCwgU2VydmljZT59IHByb3ZpZGVyIC0gVGhlIGxvb2t1cCBwcm92aWRlciBvciBzZXJ2aWNlIGZvciB0aGUgZmllbGQgbG9va3VwLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+P30gdHlwZSAtIE9wdGlvbmFsIHR5cGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpZWxkIGxvb2t1cC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIGxvb2t1cCBtb2RlbCB0eXBlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBsb29rdXAgc2VydmljZSB0eXBlLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIFRhYmxldmlld01vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IgYWRkZWQgdG8gdGhlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlclVuc2FmZTxMb29rdXBNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSA9IExvb2t1cE1vZGVsPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgcHJvdmlkZXI6IEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPExvb2t1cE1vZGVsLCBTZXJ2aWNlPixcbiAgICAgICAgdHlwZT86IFR5cGVEZXNjcmlwdG9yPExvb2t1cE1vZGVsPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRMb29rdXBXaXRoUHJvdmlkZXJVbnNhZmU8TG9va3VwTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+KHByb3BlcnR5LCBwcm92aWRlciwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGZpZWxkIGxvb2t1cCB3aXRoIGRhdGEgcHJvdmlkZXIgb3Igc2VydmljZSBhbmQgb3B0aW9ucyB2YWx1ZSBwcm9wZXJ0eSBmb3IgbG9va3VwIG1vZGVsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPn0gcHJvdmlkZXIgLSBUaGUgbG9va3VwIHByb3ZpZGVyLlxuICAgICAqIEBwYXJhbSB7VHlwZURlc2NyaXB0b3I8RmllbGRNb2RlbD59IHR5cGUgLSBUaGUgdHlwZSBkZXNjcmlwdG9yIGZvciB0aGUgbG9va3VwIG1vZGVsLlxuICAgICAqIEBwYXJhbSB7TG9va3VwVmFsdWVQcm9wZXJ0eX0gbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHkgLSBUaGUgdmFsdWUgcHJvcGVydHkgdXNlZCBhcyB2YWx1ZSBpbiB0aGUgbG9va3VwIG9wdGlvbnMuXG4gICAgICogQHR5cGVwYXJhbSBQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIEVkaXRvck1vZGVsLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBsb29rdXAgc2VydmljZSB0eXBlLlxuICAgICAqIEB0eXBlcGFyYW0gTG9va3VwTW9kZWwgLSBUaGUgZmllbGQgbW9kZWwgdHlwZSwgZGVmYXVsdHMgdG8gdGhlIG5vbi1udWxsYWJsZSB0eXBlIG9mIHRoZSBlZGl0b3IncyBwcm9wZXJ0eS5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cFZhbHVlUHJvcGVydHkgLSBUaGUgcHJvcGVydHkgb2YgbG9va3VwIG1vZGVsIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBGaWVsZFZhbHVlIC0gVGhlIHZhbHVlIHR5cGUgb2YgZmllbGQgb24gZWRpdG9yLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0ZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgYWRkRmllbGRMb29rdXBXaXRoUHJvdmlkZXJBbmRPcHRpb25zVmFsdWVQcm9wZXJ0eTxcbiAgICAgICAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCxcbiAgICAgICAgU2VydmljZSxcbiAgICAgICAgTG9va3VwTW9kZWwsXG4gICAgICAgIExvb2t1cFZhbHVlUHJvcGVydHkgZXh0ZW5kcyBLZXlvZkFuZE9mVHlwZTxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWxbUHJvcGVydHldPixcbiAgICAgICAgRmllbGRWYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XVxuICAgID4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgcHJvdmlkZXI6IEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPExvb2t1cE1vZGVsLCBTZXJ2aWNlPixcbiAgICAgICAgdHlwZTogVHlwZURlc2NyaXB0b3I8TG9va3VwTW9kZWw+LFxuICAgICAgICBsb29rdXBPcHRpb25zVmFsdWVQcm9wZXJ0eTogTG9va3VwVmFsdWVQcm9wZXJ0eVxuICAgICk6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlckFuZE9wdGlvbnNWYWx1ZVByb3BlcnR5PFByb3BlcnR5LCBTZXJ2aWNlLCBMb29rdXBNb2RlbCwgTG9va3VwVmFsdWVQcm9wZXJ0eSwgRmllbGRWYWx1ZT4oXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogW1VOU0FGRV0gQWRkcyBhIGZpZWxkIGxvb2t1cCB3aXRoIGRhdGEgcHJvdmlkZXIgb3Igc2VydmljZSBhbmQgb3B0aW9ucyB2YWx1ZSBwcm9wZXJ0eSBmb3IgbG9va3VwIG1vZGVsLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgb2YgdGhlIGVkaXRvci5cbiAgICAgKiBAcGFyYW0ge0ZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+fSBwcm92aWRlciAtIFRoZSBsb29rdXAgcHJvdmlkZXIuXG4gICAgICogQHBhcmFtIHtUeXBlRGVzY3JpcHRvcjxGaWVsZE1vZGVsPn0gdHlwZSAtIFRoZSB0eXBlIGRlc2NyaXB0b3IgZm9yIHRoZSBsb29rdXAgbW9kZWwuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxvb2t1cE9wdGlvbnNWYWx1ZVByb3BlcnR5IC0gVGhlIHZhbHVlIHByb3BlcnR5IHVzZWQgaW4gdGhlIGxvb2t1cCBvcHRpb25zLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUuXG4gICAgICogQHR5cGVwYXJhbSBMb29rdXBNb2RlbCAtIFRoZSBmaWVsZCBtb2RlbCB0eXBlLCBkZWZhdWx0cyB0byB0aGUgbm9uLW51bGxhYmxlIHR5cGUgb2YgdGhlIGVkaXRvcidzIHByb3BlcnR5LlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD59IC0gVGhlIGZpZWxkIGxvb2t1cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIGFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyQW5kT3B0aW9uc1ZhbHVlUHJvcGVydHlVbnNhZmU8U2VydmljZSwgTG9va3VwTW9kZWwsIEZpZWxkVmFsdWUgPSBMb29rdXBNb2RlbD4oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIHByb3ZpZGVyOiBGaWVsZExvb2t1cFByb3ZpZGVyVHlwZTxMb29rdXBNb2RlbCwgU2VydmljZT4sXG4gICAgICAgIHR5cGU6IFR5cGVEZXNjcmlwdG9yPExvb2t1cE1vZGVsPixcbiAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHk6IHN0cmluZ1xuICAgICk6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxMb29rdXBNb2RlbCwgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlckFuZE9wdGlvbnNWYWx1ZVByb3BlcnR5VW5zYWZlPFNlcnZpY2UsIExvb2t1cE1vZGVsLCBGaWVsZFZhbHVlPihcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbG9va3VwT3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+PihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRMb29rdXBFbnVtKHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bVVuc2FmZTxFbnVtID0gRW51bUNvbnN0YW50VHlwZT4ocHJvcGVydHk6IHN0cmluZywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LCBvcHRpb25zPzogQXJyYXk8RW51bT4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTG9va3VwRW51bVVuc2FmZTxFbnVtPihwcm9wZXJ0eSwgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkVG9FZGl0QW5kQWRkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlFZGl0b3I8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgRmllbGRNb2RlbCA9IEFycmF5SXRlbVR5cGU8VGFibGV2aWV3TW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIFRhYmxldmlld01vZGVsPlxuICAgICkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5LCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSwgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMuYWRkRmllbGRUb0VkaXRBbmRBZGQoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihwcm9wZXJ0eTogc3RyaW5nLCB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX2RldGFpbHNFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgVGFibGV2aWV3TW9kZWwsIFNlcnZpY2UsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBUYWJsZXZpZXdNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPixcbiAgICAgICAgbG9va3VwRGF0YVByb3ZpZGVyOiBJVGFibGVEYXRhUHJvdmlkZXI8RmllbGRNb2RlbCwgU2VydmljZT5cbiAgICApIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvcjxQcm9wZXJ0eSwgU2VydmljZSwgRmllbGRNb2RlbCwgRmllbGRWYWx1ZT4oXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3IsXG4gICAgICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3IsXG4gICAgICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cERhdGFQcm92aWRlcjogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZGV0YWlsc0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3JVbnNhZmU8RmllbGRNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZT4ocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvciwgbG9va3VwRGF0YVByb3ZpZGVyKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZFRvRWRpdEFuZEFkZChmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlVGFiR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWVsZEdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGV0YWlsc0VkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlldyA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUYWJsZXZpZXdNb2RlbCwgU29ydHMsIEZpbHRlcnMsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9tb2RlbC5jb3B5KCkpO1xuICAgICAgICB0YWJsZXZpZXcuX3RhYmxlID0gdGhpcy5fdGFibGUuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX2RldGFpbHNFZGl0b3IgPSB0aGlzLl9kZXRhaWxzRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9pc0xvY2FsaXplZCA9IHRoaXMuX2lzTG9jYWxpemVkO1xuICAgICAgICByZXR1cm4gdGFibGV2aWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBUYWJsZXZpZXdNb2RlbCwgTG9jYWxpemF0aW9uTW9kZWwgPSBBcnJheUl0ZW1UeXBlPFRhYmxldmlld01vZGVsW1Byb3BlcnR5XT4+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LFxuICAgICAgICBsb2NhbGVQcm9wZXJ0eToga2V5b2YgTG9jYWxpemF0aW9uTW9kZWxcbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgbW9kZWwsIGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvY2FsaXplZFVuc2FmZTxMb2NhbGl6YXRpb25Nb2RlbD4ocHJvcGVydHk6IHN0cmluZywgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxMb2NhbGl6YXRpb25Nb2RlbD4sIGxvY2FsZVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoTG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkobG9jYWxlUHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5kZXRhaWxzRWRpdG9yLmxvY2FsaXplZFVuc2FmZShwcm9wZXJ0eSwgbW9kZWwsIGxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5hZGRFZGl0b3IubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5LCBtb2RlbCwgbG9jYWxlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLmVkaXRFZGl0b3IubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5LCBtb2RlbCwgbG9jYWxlUHJvcGVydHkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50IGV4dGVuZHMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF90YWJsZTogVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3Q7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKG1vZGVsKTtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY3VzdG9tIHRhYmxlIGRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoVGFibGVEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IGhpZGRlbiBzdGF0ZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eVxuICAgICAqIGVxdWFscyB0byBiZSByZW1vdmluZyBpbiBhdXRvIGFuZCBiYXNlIHRhYmxldmlldyBkZXNjcmlwdG9yXG4gICAgICogKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uJ3MgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uKHByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFbnRpdHlGb3JUcmFuc2xhdGlvbnMoaTE4bkJhc2VLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS5tb2RlbC53aXRoSTE4bkJhc2UoaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl9kZXRhaWxzRWRpdG9yLm1vZGVsLndpdGhJMThuQmFzZShpMThuQmFzZUtleSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgZGVlcCBjb3B5IG9mIHRhYmxldmlldyBvYmplY3QgYW5kIGl0cyBjaGlsZHJlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IFRhYmxldmlld0R5bmFtaWNEZXNjcmlwdG9ySW50IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvckludCh0aGlzLm1vZGVsLmNvcHkoKSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhYmxlID0gdGhpcy5fdGFibGUuY29weSgpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';
2
+ export function tableviewToDataProvider(descriptor, serviceType) {
3
+ return typeof serviceType !== 'undefined'
4
+ ? new TableviewDataProviderInst(undefined, serviceType)
5
+ : new TableviewDataProviderInst(undefined, undefined);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBeUJwRixNQUFNLFVBQVUsdUJBQXVCLENBQ25DLFVBQTBELEVBQzFELFdBQTBCO0lBRTFCLE9BQU8sT0FBTyxXQUFXLEtBQUssV0FBVztRQUNyQyxDQUFDLENBQUMsSUFBSSx5QkFBeUIsQ0FBdUUsU0FBUyxFQUFFLFdBQXdDLENBQUM7UUFDMUosQ0FBQyxDQUFDLElBQUkseUJBQXlCLENBQXlELFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZnJvbSBkZXNjcmlwdG9yLiBETyBOT1QgdXNlIGlmIHRoZSBtb2RlbCBpcyBjbGFzcywgYmVjYXVzZSB0aGUgdHlwZSAoZnJvbSBtb2RlbCBkZXNjcmlwdG9yKSB3aWxsIG5vdCBiZSBzZXQgaW4gZGF0YSBwcm92aWRlci5cbiAqXG4gKiBAcGFyYW0ge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz59IGRlc2NyaXB0b3IgLSBUaGUgdGFibGUgZGVzY3JpcHRvci5cbiAqXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZD59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdUb0RhdGFQcm92aWRlcjxNb2RlbCwgU29ydHMgPSBrZXlvZiBNb2RlbCwgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+XG4pOiBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZD47XG4vKipcbiAqIENyZWF0ZXMgYSBkYXRhIHByb3ZpZGVyIGZvciBmcm9tIGRlc2NyaXB0b3IuIERPIE5PVCB1c2UgaWYgdGhlIG1vZGVsIGlzIGNsYXNzLCBiZWNhdXNlIHRoZSB0eXBlIChmcm9tIG1vZGVsIGRlc2NyaXB0b3IpIHdpbGwgbm90IGJlIHNldCBpbiBkYXRhIHByb3ZpZGVyLlxuICpcbiAqIEBwYXJhbSB7VGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPn0gZGVzY3JpcHRvciAtIFRoZSB0YWJsZSBkZXNjcmlwdG9yLlxuICogQHBhcmFtIHtTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+fSBzZXJ2aWNlQ2xhc3MgLSBUaGUgc2VydmljZSBjbGFzcyB0eXBlLlxuICpcbiAqIEByZXR1cm4ge1RhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+fSAtIFRoZSBkYXRhIHByb3ZpZGVyIGZvciB0aGUgdGFibGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3VG9EYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2UgPSBhbnksIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICBzZXJ2aWNlQ2xhc3M6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld1RvRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlID0gYW55LCBTb3J0cyA9IGtleW9mIE1vZGVsLCBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgTW9kZWwsIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz4sXG4gICAgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3Ncbikge1xuICAgIHJldHVybiB0eXBlb2Ygc2VydmljZVR5cGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gbmV3IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+KHVuZGVmaW5lZCwgc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPilcbiAgICAgICAgOiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBTb3J0cywgRmlsdGVycywgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn1cbiJdfQ==
@@ -36,10 +36,10 @@ export class FormlyFieldAutocompleteComponent extends ACommonsFormlyFieldType {
36
36
  });
37
37
  }
38
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: FormlyFieldAutocompleteComponent, isStandalone: true, selector: "mng-formly-field-autocomplete", usesInheritance: true, ngImport: i0, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n", dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "optionsTrackProperty", "optionsValueProperty", "optionsLabelProperty", "optionsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName", "showClear", "autoClear", "selectFirst", "searchTrim", "disabled"], outputs: ["valueChange", "blur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: FormlyFieldAutocompleteComponent, isStandalone: true, selector: "mng-formly-field-autocomplete", usesInheritance: true, ngImport: i0, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-autocomplete'\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n", dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "optionsTrackProperty", "optionsValueProperty", "optionsLabelProperty", "optionsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName", "showClear", "autoClear", "selectFirst", "searchTrim", "disabled"], outputs: ["valueChange", "blur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40
40
  }
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldAutocompleteComponent, decorators: [{
42
42
  type: Component,
43
- args: [{ standalone: true, selector: 'mng-formly-field-autocomplete', imports: [AutocompleteComponent, ReactiveFormsModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n" }]
43
+ args: [{ standalone: true, selector: 'mng-formly-field-autocomplete', imports: [AutocompleteComponent, ReactiveFormsModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-autocomplete'\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n" }]
44
44
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuSSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQVNoRixNQUFNLE9BQU8sZ0NBQXdDLFNBQVEsdUJBQTREO0lBQ3JHLFFBQVE7UUFDcEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7WUFDdkUsWUFBWSxFQUFFLDhCQUE4QixDQUFDLE9BQU87U0FDdkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO1lBQ3ZFLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxZQUFZO1NBQzVELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2QsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRTtZQUN4RSxZQUFZLEVBQUUsOEJBQThCLENBQUMsVUFBVTtTQUMxRCxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTdCUSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyxnSENwQjdDLHl0QkFlQSw0Q0RFYyxxQkFBcUIsMlhBQUUsbUJBQW1CLHlUQUFFLFlBQVk7OzJGQUd6RCxnQ0FBZ0M7a0JBUDVDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLCtCQUErQixXQUVoQyxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxtQkFDbEQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Zvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7QXV0b2NvbXBsZXRlQ29tcG9uZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0nO1xuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3IsIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSwgRm9ybUZpZWxkRXZlbnRUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZX0gZnJvbSAnLi4vZm9ybWx5LWZpZWxkLXR5cGUuYWJzdHJhY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybWx5TW9kdWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZEF1dG9jb21wbGV0ZUNvbXBvbmVudDxULCBFVD4gZXh0ZW5kcyBBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZTxULCBFVCwgRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPj4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbC52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZT8uKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9WSUVXX0lOSVRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bW5nLWF1dG9jb21wbGV0ZVxuICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGZvcm1Db250cm9sKVwiXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgIFtkYXRhUHJvdmlkZXJdPVwiZGVzY3JpcHRvci5kYXRhUHJvdmlkZXJcIlxuICAgIFtvcHRpb25zVHJhY2tQcm9wZXJ0eV09XCJkZXNjcmlwdG9yLm9wdGlvbnNUcmFja1Byb3BlcnR5XCJcbiAgICBbb3B0aW9uc0xhYmVsUHJvcGVydHldPVwiZGVzY3JpcHRvci5vcHRpb25zTGFiZWxQcm9wZXJ0eVwiXG4gICAgW29wdGlvbnNWYWx1ZVByb3BlcnR5XT1cImRlc2NyaXB0b3Iub3B0aW9uc1ZhbHVlUHJvcGVydHlcIlxuICAgIFtjbGFzc05hbWVdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiXG4gICAgW3Nob3dDbGVhcl09XCIhcHJvcHMucmVxdWlyZWRcIlxuICAgIFtzZWxlY3RGaXJzdF09XCJkZXNjcmlwdG9yLmF1dG9jb21wbGV0ZVNlbGVjdEZpcnN0ID8/IGZhbHNlXCJcbiAgICBbYXV0b0NsZWFyXT1cImRlc2NyaXB0b3IuYXV0b2NvbXBsZXRlQXV0b0NsZWFyID8/IGZhbHNlXCJcbiAgICBbb3Blbk9uRm9jdXNdPVwiZGVzY3JpcHRvci5hdXRvY29tcGxldGVBdXRvQ2xlYXIgPz8gdHJ1ZVwiXG4gICAgW2lubGluZVNlYXJjaF09XCJkZXNjcmlwdG9yLmF1dG9jb21wbGV0ZUlubGluZVNlYXJjaCA/PyBmYWxzZVwiPlxuPC9tbmctYXV0b2NvbXBsZXRlPlxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuSSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQVNoRixNQUFNLE9BQU8sZ0NBQXdDLFNBQVEsdUJBQTREO0lBQ3JHLFFBQVE7UUFDcEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7WUFDdkUsWUFBWSxFQUFFLDhCQUE4QixDQUFDLE9BQU87U0FDdkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO1lBQ3ZFLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxZQUFZO1NBQzVELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2QsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRTtZQUN4RSxZQUFZLEVBQUUsOEJBQThCLENBQUMsVUFBVTtTQUMxRCxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTdCUSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyxnSENwQjdDLDR2QkFlQSw0Q0RFYyxxQkFBcUIsMlhBQUUsbUJBQW1CLHlUQUFFLFlBQVk7OzJGQUd6RCxnQ0FBZ0M7a0JBUDVDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLCtCQUErQixXQUVoQyxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxtQkFDbEQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Zvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7QXV0b2NvbXBsZXRlQ29tcG9uZW50fSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0nO1xuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3IsIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSwgRm9ybUZpZWxkRXZlbnRUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZX0gZnJvbSAnLi4vZm9ybWx5LWZpZWxkLXR5cGUuYWJzdHJhY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW0F1dG9jb21wbGV0ZUNvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybWx5TW9kdWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZEF1dG9jb21wbGV0ZUNvbXBvbmVudDxULCBFVD4gZXh0ZW5kcyBBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZTxULCBFVCwgRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPj4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbC52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZT8uKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9WSUVXX0lOSVRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bW5nLWF1dG9jb21wbGV0ZVxuICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGZvcm1Db250cm9sKVwiXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgIFtkYXRhUHJvdmlkZXJdPVwiZGVzY3JpcHRvci5kYXRhUHJvdmlkZXJcIlxuICAgIFtvcHRpb25zVHJhY2tQcm9wZXJ0eV09XCJkZXNjcmlwdG9yLm9wdGlvbnNUcmFja1Byb3BlcnR5XCJcbiAgICBbb3B0aW9uc0xhYmVsUHJvcGVydHldPVwiZGVzY3JpcHRvci5vcHRpb25zTGFiZWxQcm9wZXJ0eVwiXG4gICAgW29wdGlvbnNWYWx1ZVByb3BlcnR5XT1cImRlc2NyaXB0b3Iub3B0aW9uc1ZhbHVlUHJvcGVydHlcIlxuICAgIFtjbGFzc05hbWVdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZSA/PyAnbW5nLWZvcm1seS1maWVsZC1hdXRvY29tcGxldGUnXCJcbiAgICBbc2hvd0NsZWFyXT1cIiFwcm9wcy5yZXF1aXJlZFwiXG4gICAgW3NlbGVjdEZpcnN0XT1cImRlc2NyaXB0b3IuYXV0b2NvbXBsZXRlU2VsZWN0Rmlyc3QgPz8gZmFsc2VcIlxuICAgIFthdXRvQ2xlYXJdPVwiZGVzY3JpcHRvci5hdXRvY29tcGxldGVBdXRvQ2xlYXIgPz8gZmFsc2VcIlxuICAgIFtvcGVuT25Gb2N1c109XCJkZXNjcmlwdG9yLmF1dG9jb21wbGV0ZUF1dG9DbGVhciA/PyB0cnVlXCJcbiAgICBbaW5saW5lU2VhcmNoXT1cImRlc2NyaXB0b3IuYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoID8/IGZhbHNlXCI+XG48L21uZy1hdXRvY29tcGxldGU+XG4iXX0=
@@ -134,10 +134,10 @@ export class FormlyFieldDatepickerComponent extends ACommonsFormlyFieldType {
134
134
  });
135
135
  }
136
136
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldDatepickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: FormlyFieldDatepickerComponent, isStandalone: true, selector: "mng-formly-field-datepicker", usesInheritance: true, ngImport: i0, template: "<p-calendar\n appendTo=\"body\"\n [class]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\">\n</p-calendar>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i3.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: FormlyFieldDatepickerComponent, isStandalone: true, selector: "mng-formly-field-datepicker", usesInheritance: true, ngImport: i0, template: "<p-calendar\n appendTo=\"body\"\n [class]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n showIcon=\"true\"\n showButtonBar=\"true\"\n [showClear]=\"!props.required\"\n styleClass=\"mng-formly-field-datepicker\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-datepicker-input'\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\">\n</p-calendar>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i3.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
138
138
  }
139
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldDatepickerComponent, decorators: [{
140
140
  type: Component,
141
- args: [{ standalone: true, selector: 'mng-formly-field-datepicker', imports: [ReactiveFormsModule, FormlyModule, CalendarModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-calendar\n appendTo=\"body\"\n [class]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\">\n</p-calendar>\n" }]
141
+ args: [{ standalone: true, selector: 'mng-formly-field-datepicker', imports: [ReactiveFormsModule, FormlyModule, CalendarModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-calendar\n appendTo=\"body\"\n [class]=\"styleClass()\"\n [formControl]=\"dpFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(minDate())\"\n [maxDate]=\"$any(maxDate())\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n showIcon=\"true\"\n showButtonBar=\"true\"\n [showClear]=\"!props.required\"\n styleClass=\"mng-formly-field-datepicker\"\n [inputStyleClass]=\"descriptor.inputClassName ?? 'mng-formly-field-datepicker-input'\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\">\n</p-calendar>\n" }]
142
142
  }] });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1kYXRlcGlja2VyL2Zvcm1seS1maWVsZC1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZGF0ZXBpY2tlci9mb3JtbHktZmllbGQtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdEYsT0FBTyxFQUF1Qiw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRWxJLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQVNoRixN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O1NBQ3RGLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVDLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQStDLEVBQUUsSUFBK0M7UUFDdkgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO0lBQzlILENBQUM7SUFFRCxXQUFXO1FBQ1Asa0RBQWtEO1FBRWxELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7WUFDeEUsWUFBWSxFQUFFLDhCQUE4QixDQUFDLFVBQVU7U0FDMUQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6SVEsOEJBQThCO2tHQUE5Qiw4QkFBOEIsOEdDckIzQyxraUJBZUEsMkNER2MsbUJBQW1CLHlUQUFFLFlBQVkscUpBQUUsY0FBYzs7MkZBR2xELDhCQUE4QjtrQkFQMUMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sNkJBQTZCLFdBRTlCLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQyxtQkFDM0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHtmaWx0ZXIsIGlzT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0NPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwgZGF0ZVRvSXNvU3RyaW5nfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtGaWVsZElucHV0RGVzY3JpcHRvciwgRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLCBGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge0FDb21tb25zRm9ybWx5RmllbGRUeXBlfSBmcm9tICcuLi9mb3JtbHktZmllbGQtdHlwZS5hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1kYXRlcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtbHlNb2R1bGUsIENhbGVuZGFyTW9kdWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZERhdGVwaWNrZXJDb21wb25lbnQ8RVQ+IGV4dGVuZHMgQUNvbW1vbnNGb3JtbHlGaWVsZFR5cGU8YW55LCBFVCwgRmllbGRJbnB1dERlc2NyaXB0b3I8RVQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgZHBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHB1YmxpYyBzdHlsZUNsYXNzID0gc2lnbmFsKCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZUNvbmZpZyA9IGluamVjdChDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgcHJpdmF0ZSBkYXRlVGltZUluVXRjID0gdGhpcy5tb2R1bGVDb25maWc/LnNlcmlhbGl6YXRpb24/LmRhdGVUaW1lSW5VdGMgPz8gZmFsc2U7XG4gICAgcHJpdmF0ZSBkYXRlVGltZVdpdGhUaW1lem9uZSA9IHRoaXMubW9kdWxlQ29uZmlnPy5zZXJpYWxpemF0aW9uPy5kYXRlVGltZVdpdGhUaW1lem9uZSA/PyB0cnVlO1xuICAgIHByaXZhdGUgZGF0ZVRpbWVXaXRoTWlsbGlzID0gdGhpcy5tb2R1bGVDb25maWc/LnNlcmlhbGl6YXRpb24/LmRhdGVUaW1lV2l0aE1pbGxpcyA/PyB0cnVlO1xuXG4gICAgcHVibGljIG1pbkRhdGUgPSBzaWduYWw8RGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICBwdWJsaWMgbWF4RGF0ZSA9IHNpZ25hbDxEYXRlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaW5pdCBzdGF0dXMgY2hhbmdlc1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSwgc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzKSkuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlQ2xhc3Muc2V0KCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVDbGFzcy5zZXQoJ25nLXZhbGlkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdESVNBQkxFRCcgJiYgdGhpcy5kcEZvcm1Db250cm9sLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRwRm9ybUNvbnRyb2wuZGlzYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgIT09ICdESVNBQkxFRCcgJiYgdGhpcy5kcEZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcEZvcm1Db250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBpbml0IHZhbHVlcyBmcm9tIGZvcm0gdG8gZGF0ZXBpY2tlclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybUNvbnRyb2w/LnZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdGhpcy5mb3JtQ29udHJvbD8udmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLmRwRm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3IERhdGUodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkpO1xuICAgICAgICAgICAgdGhpcy5kcEZvcm1Db250cm9sLm1hcmtBc1ByaXN0aW5lKCk7IC8vIG1hcmsgYXMgcHJpc3RpbmUgb25seSBvbiBjb21wb25lbnQgaW5pdGlhbGl6YXRpb25cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICAgICAgZmlsdGVyKGZvcm1WYWx1ZSA9PiAhdGhpcy5hcmVEYXRlVmFsdWVzRXF1YWwoZm9ybVZhbHVlLCB0aGlzLmRwRm9ybUNvbnRyb2wudmFsdWUpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRwRm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3IERhdGUodiksIHtlbWl0RXZlbnQ6IGZhbHNlfSk7IC8vIGRvIG5vdCBlbWl0IGV2ZW50LCBiZWNhdXNlIGl0IGNhbiB0cmlnZ2VyIGluZmluaXRlIGxvb3BcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGxpc3RlbiBmb3IgY2hhbmdlcyBmcm9tIGRhdGVwaWNrZXIgdG8gZm9ybVxuICAgICAgICB0aGlzLmRwRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIodmFsdWUgPT4gIXRoaXMuYXJlRGF0ZVZhbHVlc0VxdWFsKHZhbHVlLCB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgICAgdiA9IHRoaXMuY29udmVydERhdGVWYWx1ZSh2KTtcbiAgICAgICAgICAgICAgICAodGhpcy5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbCkuc2V0VmFsdWUodik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZT8uKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbml0aWFsaXplTWluTWF4VmFsaWRhdG9ycygpO1xuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplTWluTWF4VmFsaWRhdG9ycygpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyTWluIGluc3RhbmNlb2YgRGF0ZSB8fCAhdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJNaW4pIHtcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZS5zZXQodGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJNaW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbU9yT2JzZXJ2YWJsZSA9IHRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKHRoaXMuZm9ybUNvbnRyb2wsIHRoaXMuZmllbGQpO1xuICAgICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShpdGVtT3JPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1Pck9ic2VydmFibGUucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlPy5nZXRUaW1lKCkgIT09IHRoaXMubWluRGF0ZSgpPy5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluRGF0ZS5zZXQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5taW5EYXRlID0gdmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubWluRGF0ZS5zZXQoaXRlbU9yT2JzZXJ2YWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXggaW5zdGFuY2VvZiBEYXRlIHx8ICF0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlck1heCkge1xuICAgICAgICAgICAgdGhpcy5tYXhEYXRlLnNldCh0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlck1heCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtT3JPYnNlcnZhYmxlID0gdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgodGhpcy5mb3JtQ29udHJvbCwgdGhpcy5maWVsZCk7XG4gICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGl0ZW1Pck9ic2VydmFibGUpKSB7XG4gICAgICAgICAgICAgICAgaXRlbU9yT2JzZXJ2YWJsZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWU/LmdldFRpbWUoKSAhPT0gdGhpcy5tYXhEYXRlKCk/LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhEYXRlLnNldCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm1heERhdGUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXhEYXRlLnNldChpdGVtT3JPYnNlcnZhYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydERhdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29udmVydERhdGVUeXBlID0gdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJWYWx1ZU5vVGltZSB8fCAhdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93VGltZSA/ICdkYXRlJyA6ICdkYXRlLXRpbWUnO1xuICAgICAgICBjb25zdCBjb252ZXJ0RGF0ZVRpbWVPcHRzID0ge1xuICAgICAgICAgICAgdXRjOiB0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlclZhbHVlVXRjID8/IHRoaXMuZGF0ZVRpbWVJblV0YyxcbiAgICAgICAgICAgIG5vTWlsbGlzOiAhdGhpcy5kYXRlVGltZVdpdGhNaWxsaXMsXG4gICAgICAgICAgICBub1RpbWV6b25lOiB0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA/PyAhdGhpcy5kYXRlVGltZVdpdGhUaW1lem9uZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoIXRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVBc0RhdGVPYmopIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlVG9Jc29TdHJpbmcodmFsdWUsIGNvbnZlcnREYXRlVHlwZSwgY29udmVydERhdGVUaW1lT3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXJlRGF0ZVZhbHVlc0VxdWFsKHZhbDE6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCB2YWwyOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRlMSA9IHRoaXMuY29udmVydERhdGVWYWx1ZSh2YWwxKTtcbiAgICAgICAgY29uc3QgZGF0ZTIgPSB0aGlzLmNvbnZlcnREYXRlVmFsdWUodmFsMik7XG4gICAgICAgIHJldHVybiAoZGF0ZTEgaW5zdGFuY2VvZiBEYXRlICYmIGRhdGUyIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlMS50b0lTT1N0cmluZygpID09PSBkYXRlMi50b0lTT1N0cmluZygpKSB8fCBkYXRlMSA9PT0gZGF0ZTI7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIHdhcm5pbmc6IGZvcm1seSBjYWxscyBvbiBkZXN0cm95IGJlZm9yZSBvbiBpbml0XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPHAtY2FsZW5kYXJcbiAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgIFtjbGFzc109XCJzdHlsZUNsYXNzKClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJkcEZvcm1Db250cm9sXCJcbiAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgW2RhdGVGb3JtYXRdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyRm9ybWF0ID8/ICdkZC5tbS55eSdcIlxuICAgIFttaW5EYXRlXT1cIiRhbnkobWluRGF0ZSgpKVwiXG4gICAgW21heERhdGVdPVwiJGFueShtYXhEYXRlKCkpXCJcbiAgICBbc2hvd1RpbWVdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUgPz8gZmFsc2VcIlxuICAgIFtzaG93U2Vjb25kc109XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93U2Vjb25kcyA/PyBmYWxzZVwiXG4gICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiXG4gICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIlxuICAgIChvbkJsdXIpPVwib25CbHVyKClcIj5cbjwvcC1jYWxlbmRhcj5cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1kYXRlcGlja2VyL2Zvcm1seS1maWVsZC1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZGF0ZXBpY2tlci9mb3JtbHktZmllbGQtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdEYsT0FBTyxFQUF1Qiw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRWxJLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQVNoRixN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O1NBQ3RGLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVDLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQStDLEVBQUUsSUFBK0M7UUFDdkgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO0lBQzlILENBQUM7SUFFRCxXQUFXO1FBQ1Asa0RBQWtEO1FBRWxELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7WUFDeEUsWUFBWSxFQUFFLDhCQUE4QixDQUFDLFVBQVU7U0FDMUQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6SVEsOEJBQThCO2tHQUE5Qiw4QkFBOEIsOEdDckIzQyx3ckJBa0JBLDJDREFjLG1CQUFtQix5VEFBRSxZQUFZLHFKQUFFLGNBQWM7OzJGQUdsRCw4QkFBOEI7a0JBUDFDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDZCQUE2QixXQUU5QixDQUFDLG1CQUFtQixFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsbUJBQzNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Zvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge0NhbGVuZGFyTW9kdWxlfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7ZmlsdGVyLCBpc09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIGRhdGVUb0lzb1N0cmluZ30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3IsIEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSwgRm9ybUZpZWxkRXZlbnRUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZX0gZnJvbSAnLi4vZm9ybWx5LWZpZWxkLXR5cGUuYWJzdHJhY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktZmllbGQtZGF0ZXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybWx5TW9kdWxlLCBDYWxlbmRhck1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGREYXRlcGlja2VyQ29tcG9uZW50PEVUPiBleHRlbmRzIEFDb21tb25zRm9ybWx5RmllbGRUeXBlPGFueSwgRVQsIEZpZWxkSW5wdXREZXNjcmlwdG9yPEVUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGRwRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgc3R5bGVDbGFzcyA9IHNpZ25hbCgnJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVDb25maWcgPSBpbmplY3QoQ09NTU9OU19NT0RVTEVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICAgIHByaXZhdGUgZGF0ZVRpbWVJblV0YyA9IHRoaXMubW9kdWxlQ29uZmlnPy5zZXJpYWxpemF0aW9uPy5kYXRlVGltZUluVXRjID8/IGZhbHNlO1xuICAgIHByaXZhdGUgZGF0ZVRpbWVXaXRoVGltZXpvbmUgPSB0aGlzLm1vZHVsZUNvbmZpZz8uc2VyaWFsaXphdGlvbj8uZGF0ZVRpbWVXaXRoVGltZXpvbmUgPz8gdHJ1ZTtcbiAgICBwcml2YXRlIGRhdGVUaW1lV2l0aE1pbGxpcyA9IHRoaXMubW9kdWxlQ29uZmlnPy5zZXJpYWxpemF0aW9uPy5kYXRlVGltZVdpdGhNaWxsaXMgPz8gdHJ1ZTtcblxuICAgIHB1YmxpYyBtaW5EYXRlID0gc2lnbmFsPERhdGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgcHVibGljIG1heERhdGUgPSBzaWduYWw8RGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGluaXQgc3RhdHVzIGNoYW5nZXNcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksIHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sLnN0YXR1cykpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZUNsYXNzLnNldCgnbmctaW52YWxpZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlQ2xhc3Muc2V0KCduZy12YWxpZCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnRElTQUJMRUQnICYmIHRoaXMuZHBGb3JtQ29udHJvbC5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcEZvcm1Db250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzICE9PSAnRElTQUJMRUQnICYmIHRoaXMuZHBGb3JtQ29udHJvbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHBGb3JtQ29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaW5pdCB2YWx1ZXMgZnJvbSBmb3JtIHRvIGRhdGVwaWNrZXJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm1Db250cm9sPy52YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHRoaXMuZm9ybUNvbnRyb2w/LnZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhpcy5kcEZvcm1Db250cm9sLnNldFZhbHVlKG5ldyBEYXRlKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpKTtcbiAgICAgICAgICAgIHRoaXMuZHBGb3JtQ29udHJvbC5tYXJrQXNQcmlzdGluZSgpOyAvLyBtYXJrIGFzIHByaXN0aW5lIG9ubHkgb24gY29tcG9uZW50IGluaXRpYWxpemF0aW9uXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihmb3JtVmFsdWUgPT4gIXRoaXMuYXJlRGF0ZVZhbHVlc0VxdWFsKGZvcm1WYWx1ZSwgdGhpcy5kcEZvcm1Db250cm9sLnZhbHVlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcEZvcm1Db250cm9sLnNldFZhbHVlKG5ldyBEYXRlKHYpLCB7ZW1pdEV2ZW50OiBmYWxzZX0pOyAvLyBkbyBub3QgZW1pdCBldmVudCwgYmVjYXVzZSBpdCBjYW4gdHJpZ2dlciBpbmZpbml0ZSBsb29wXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBsaXN0ZW4gZm9yIGNoYW5nZXMgZnJvbSBkYXRlcGlja2VyIHRvIGZvcm1cbiAgICAgICAgdGhpcy5kcEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICF0aGlzLmFyZURhdGVWYWx1ZXNFcXVhbCh2YWx1ZSwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgICAgIHYgPSB0aGlzLmNvbnZlcnREYXRlVmFsdWUodik7XG4gICAgICAgICAgICAgICAgKHRoaXMuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wpLnNldFZhbHVlKHYpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChGb3JtRmllbGRFdmVudFR5cGVFbnVtLlZhbHVlQ2hhbmdlLCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uVmFsdWVDaGFuZ2U/Lih0aGlzLmZpZWxkLCB2KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1pbk1heFZhbGlkYXRvcnMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZU1pbk1heFZhbGlkYXRvcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbiBpbnN0YW5jZW9mIERhdGUgfHwgIXRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKSB7XG4gICAgICAgICAgICB0aGlzLm1pbkRhdGUuc2V0KHRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1Pck9ic2VydmFibGUgPSB0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbih0aGlzLmZvcm1Db250cm9sLCB0aGlzLmZpZWxkKTtcbiAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUoaXRlbU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgICAgICAgICAgICBpdGVtT3JPYnNlcnZhYmxlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZT8uZ2V0VGltZSgpICE9PSB0aGlzLm1pbkRhdGUoKT8uZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkRhdGUuc2V0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMubWluRGF0ZSA9IHZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbkRhdGUuc2V0KGl0ZW1Pck9ic2VydmFibGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4IGluc3RhbmNlb2YgRGF0ZSB8fCAhdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgpIHtcbiAgICAgICAgICAgIHRoaXMubWF4RGF0ZS5zZXQodGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbU9yT2JzZXJ2YWJsZSA9IHRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4KHRoaXMuZm9ybUNvbnRyb2wsIHRoaXMuZmllbGQpO1xuICAgICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShpdGVtT3JPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1Pck9ic2VydmFibGUucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlPy5nZXRUaW1lKCkgIT09IHRoaXMubWF4RGF0ZSgpPy5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4RGF0ZS5zZXQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5tYXhEYXRlID0gdmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RGF0ZS5zZXQoaXRlbU9yT2JzZXJ2YWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnREYXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnREYXRlVHlwZSA9IHRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyVmFsdWVOb1RpbWUgfHwgIXRoaXMuZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUgPyAnZGF0ZScgOiAnZGF0ZS10aW1lJztcbiAgICAgICAgY29uc3QgY29udmVydERhdGVUaW1lT3B0cyA9IHtcbiAgICAgICAgICAgIHV0YzogdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJWYWx1ZVV0YyA/PyB0aGlzLmRhdGVUaW1lSW5VdGMsXG4gICAgICAgICAgICBub01pbGxpczogIXRoaXMuZGF0ZVRpbWVXaXRoTWlsbGlzLFxuICAgICAgICAgICAgbm9UaW1lem9uZTogdGhpcy5kZXNjcmlwdG9yLmRhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmUgPz8gIXRoaXMuZGF0ZVRpbWVXaXRoVGltZXpvbmVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLmRlc2NyaXB0b3IuZGF0ZVBpY2tlclZhbHVlQXNEYXRlT2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlLCBjb252ZXJ0RGF0ZVR5cGUsIGNvbnZlcnREYXRlVGltZU9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFyZURhdGVWYWx1ZXNFcXVhbCh2YWwxOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgdmFsMjogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF0ZTEgPSB0aGlzLmNvbnZlcnREYXRlVmFsdWUodmFsMSk7XG4gICAgICAgIGNvbnN0IGRhdGUyID0gdGhpcy5jb252ZXJ0RGF0ZVZhbHVlKHZhbDIpO1xuICAgICAgICByZXR1cm4gKGRhdGUxIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlMiBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZTEudG9JU09TdHJpbmcoKSA9PT0gZGF0ZTIudG9JU09TdHJpbmcoKSkgfHwgZGF0ZTEgPT09IGRhdGUyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyB3YXJuaW5nOiBmb3JtbHkgY2FsbHMgb24gZGVzdHJveSBiZWZvcmUgb24gaW5pdFxuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IEZvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9ERVNUUk9ZXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxwLWNhbGVuZGFyXG4gICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICBbY2xhc3NdPVwic3R5bGVDbGFzcygpXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwiZHBGb3JtQ29udHJvbFwiXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgIFtkYXRlRm9ybWF0XT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlckZvcm1hdCA/PyAnZGQubW0ueXknXCJcbiAgICBbbWluRGF0ZV09XCIkYW55KG1pbkRhdGUoKSlcIlxuICAgIFttYXhEYXRlXT1cIiRhbnkobWF4RGF0ZSgpKVwiXG4gICAgW3Nob3dUaW1lXT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lID8/IGZhbHNlXCJcbiAgICBbc2hvd1NlY29uZHNdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1NlY29uZHMgPz8gZmFsc2VcIlxuICAgIHNob3dJY29uPVwidHJ1ZVwiXG4gICAgc2hvd0J1dHRvbkJhcj1cInRydWVcIlxuICAgIFtzaG93Q2xlYXJdPVwiIXByb3BzLnJlcXVpcmVkXCJcbiAgICBzdHlsZUNsYXNzPVwibW5nLWZvcm1seS1maWVsZC1kYXRlcGlja2VyXCJcbiAgICBbaW5wdXRTdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWUgPz8gJ21uZy1mb3JtbHktZmllbGQtZGF0ZXBpY2tlci1pbnB1dCdcIlxuICAgIFtmaXJzdERheU9mV2Vla109XCIxXCJcbiAgICAob25CbHVyKT1cIm9uQmx1cigpXCI+XG48L3AtY2FsZW5kYXI+XG4iXX0=
@@ -31,10 +31,10 @@ export class FormlyFieldDropdownComponent extends ACommonsFormlyFieldType {
31
31
  });
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: FormlyFieldDropdownComponent, isStandalone: true, selector: "mng-formly-field-dropdown", usesInheritance: true, ngImport: i0, template: "<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n", dependencies: [{ kind: "component", type: DropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "options", "optionsTrackProperty", "optionsLabelProperty", "optionsLabelTranslate", "optionsValueProperty", "optionsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur", "loading", "disabled", "appendTo"], outputs: ["valueChange", "blur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: FormlyFieldDropdownComponent, isStandalone: true, selector: "mng-formly-field-dropdown", usesInheritance: true, ngImport: i0, template: "<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-dropdown'\">\n</mng-dropdown>\n", dependencies: [{ kind: "component", type: DropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "options", "optionsTrackProperty", "optionsLabelProperty", "optionsLabelTranslate", "optionsValueProperty", "optionsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur", "loading", "disabled", "appendTo"], outputs: ["valueChange", "blur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FormlyFieldDropdownComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ standalone: true, selector: 'mng-formly-field-dropdown', imports: [DropdownComponent, ReactiveFormsModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n" }]
38
+ args: [{ standalone: true, selector: 'mng-formly-field-dropdown', imports: [DropdownComponent, ReactiveFormsModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"$any(formControl)\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName ?? 'mng-formly-field-dropdown'\">\n</mng-dropdown>\n" }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZHJvcGRvd24vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZHJvcGRvd24vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuSSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQVNoRixNQUFNLE9BQU8sNEJBQW9DLFNBQVEsdUJBQTREO0lBQ2pHLFFBQVE7UUFDcEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7WUFDdkUsWUFBWSxFQUFFLDhCQUE4QixDQUFDLE9BQU87U0FDdkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO1lBQ3hFLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxVQUFVO1NBQzFELENBQUMsQ0FBQztJQUNQLENBQUM7OEdBdkJRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDRHQ3BCekMsZ29CQWNBLDRDREdjLGlCQUFpQixtWkFBRSxtQkFBbUIseVRBQUUsWUFBWTs7MkZBR3JELDRCQUE0QjtrQkFQeEMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMkJBQTJCLFdBRTVCLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLG1CQUM5Qyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIEZvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7QUNvbW1vbnNGb3JtbHlGaWVsZFR5cGV9IGZyb20gJy4uL2Zvcm1seS1maWVsZC10eXBlLmFic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9ybWx5LWZpZWxkLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbRHJvcGRvd25Db21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudDxULCBFVD4gZXh0ZW5kcyBBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZTxULCBFVCwgRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbC52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZT8uKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1uZy1kcm9wZG93blxuICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGZvcm1Db250cm9sKVwiXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyXCJcbiAgICBbZGF0YVByb3ZpZGVyXT1cImRlc2NyaXB0b3IuZGF0YVByb3ZpZGVyXCJcbiAgICBbb3B0aW9uc0xhYmVsUHJvcGVydHldPVwiZGVzY3JpcHRvci5vcHRpb25zTGFiZWxQcm9wZXJ0eVwiXG4gICAgW29wdGlvbnNMYWJlbFRyYW5zbGF0ZV09XCJkZXNjcmlwdG9yLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZVwiXG4gICAgW29wdGlvbnNWYWx1ZVByb3BlcnR5XT1cImRlc2NyaXB0b3Iub3B0aW9uc1ZhbHVlUHJvcGVydHlcIlxuICAgIFtvcHRpb25zRGlzYWJsZWRQcm9wZXJ0eV09XCJkZXNjcmlwdG9yLm9wdGlvbnNEaXNhYmxlZFByb3BlcnR5XCJcbiAgICBbb3B0aW9uc1RyYWNrUHJvcGVydHldPVwiZGVzY3JpcHRvci5vcHRpb25zVHJhY2tQcm9wZXJ0eVwiXG4gICAgW3Nob3dDbGVhcl09XCIhcHJvcHMucmVxdWlyZWRcIlxuICAgIFtjbGFzc05hbWVdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiPlxuPC9tbmctZHJvcGRvd24+XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZHJvcGRvd24vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZHJvcGRvd24vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBd0IsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuSSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQVNoRixNQUFNLE9BQU8sNEJBQW9DLFNBQVEsdUJBQTREO0lBQ2pHLFFBQVE7UUFDcEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7WUFDdkUsWUFBWSxFQUFFLDhCQUE4QixDQUFDLE9BQU87U0FDdkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO1lBQ3hFLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxVQUFVO1NBQzFELENBQUMsQ0FBQztJQUNQLENBQUM7OEdBdkJRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDRHQ3BCekMsK3BCQWNBLDRDREdjLGlCQUFpQixtWkFBRSxtQkFBbUIseVRBQUUsWUFBWTs7MkZBR3JELDRCQUE0QjtrQkFQeEMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMkJBQTJCLFdBRTVCLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLG1CQUM5Qyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIEZvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7QUNvbW1vbnNGb3JtbHlGaWVsZFR5cGV9IGZyb20gJy4uL2Zvcm1seS1maWVsZC10eXBlLmFic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9ybWx5LWZpZWxkLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbRHJvcGRvd25Db21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudDxULCBFVD4gZXh0ZW5kcyBBQ29tbW9uc0Zvcm1seUZpZWxkVHlwZTxULCBFVCwgRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbC52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KEZvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMub25WYWx1ZUNoYW5nZT8uKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1uZy1kcm9wZG93blxuICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGZvcm1Db250cm9sKVwiXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyXCJcbiAgICBbZGF0YVByb3ZpZGVyXT1cImRlc2NyaXB0b3IuZGF0YVByb3ZpZGVyXCJcbiAgICBbb3B0aW9uc0xhYmVsUHJvcGVydHldPVwiZGVzY3JpcHRvci5vcHRpb25zTGFiZWxQcm9wZXJ0eVwiXG4gICAgW29wdGlvbnNMYWJlbFRyYW5zbGF0ZV09XCJkZXNjcmlwdG9yLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZVwiXG4gICAgW29wdGlvbnNWYWx1ZVByb3BlcnR5XT1cImRlc2NyaXB0b3Iub3B0aW9uc1ZhbHVlUHJvcGVydHlcIlxuICAgIFtvcHRpb25zRGlzYWJsZWRQcm9wZXJ0eV09XCJkZXNjcmlwdG9yLm9wdGlvbnNEaXNhYmxlZFByb3BlcnR5XCJcbiAgICBbb3B0aW9uc1RyYWNrUHJvcGVydHldPVwiZGVzY3JpcHRvci5vcHRpb25zVHJhY2tQcm9wZXJ0eVwiXG4gICAgW3Nob3dDbGVhcl09XCIhcHJvcHMucmVxdWlyZWRcIlxuICAgIFtjbGFzc05hbWVdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZSA/PyAnbW5nLWZvcm1seS1maWVsZC1kcm9wZG93bidcIj5cbjwvbW5nLWRyb3Bkb3duPlxuIl19