geonetwork-ui 2.8.0-dev.6ea037ab6 → 2.8.0-dev.6f988469c

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 (183) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +25 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
  8. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +1 -2
  9. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  10. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  11. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +2 -1
  12. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  13. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  14. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +26 -8
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
  16. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  17. package/esm2022/libs/feature/record/src/index.mjs +2 -1
  18. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  19. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  20. package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +138 -0
  21. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
  22. package/esm2022/libs/feature/search/src/lib/constants.mjs +1 -2
  23. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  24. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
  25. package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
  26. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
  27. package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
  28. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
  29. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  30. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
  31. package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
  32. package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
  33. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
  34. package/esm2022/libs/util/i18n/src/lib/date-locales.mjs +33 -0
  35. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  36. package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
  37. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +3 -1
  38. package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
  39. package/esm2022/translations/de.json +15 -4
  40. package/esm2022/translations/en.json +15 -4
  41. package/esm2022/translations/es.json +11 -0
  42. package/esm2022/translations/fr.json +15 -4
  43. package/esm2022/translations/it.json +16 -5
  44. package/esm2022/translations/nl.json +11 -0
  45. package/esm2022/translations/pt.json +11 -0
  46. package/esm2022/translations/sk.json +12 -1
  47. package/fesm2022/geonetwork-ui-date-locales-MYnkDJ5h.mjs +35 -0
  48. package/fesm2022/geonetwork-ui-date-locales-MYnkDJ5h.mjs.map +1 -0
  49. package/fesm2022/geonetwork-ui.mjs +538 -151
  50. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  51. package/index.d.ts +1 -0
  52. package/index.d.ts.map +1 -1
  53. package/index.ts +1 -0
  54. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  55. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  56. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  57. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
  58. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  59. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  60. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  61. package/libs/common/domain/src/index.d.ts +3 -0
  62. package/libs/common/domain/src/index.d.ts.map +1 -0
  63. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  64. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  65. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +7 -2
  66. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  67. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  68. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  69. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  70. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
  71. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  72. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
  73. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  74. package/libs/feature/record/src/index.d.ts +1 -0
  75. package/libs/feature/record/src/index.d.ts.map +1 -1
  76. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  77. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  78. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  79. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  80. package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +35 -0
  81. package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  82. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
  83. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  84. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  85. package/libs/ui/elements/src/index.d.ts +2 -0
  86. package/libs/ui/elements/src/index.d.ts.map +1 -1
  87. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
  88. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
  89. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
  90. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  91. package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
  92. package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
  93. package/libs/ui/inputs/src/index.d.ts +1 -0
  94. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  95. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
  96. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
  97. package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
  98. package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
  99. package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
  100. package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
  101. package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
  102. package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
  103. package/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
  104. package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
  105. package/libs/util/shared/src/index.d.ts +1 -0
  106. package/libs/util/shared/src/index.d.ts.map +1 -1
  107. package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
  108. package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
  109. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  110. package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
  111. package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
  112. package/package.json +1 -1
  113. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  114. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
  115. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
  116. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
  117. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
  118. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  119. package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
  120. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  121. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
  122. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
  123. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +27 -0
  124. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
  125. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
  126. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
  127. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +0 -1
  128. package/src/libs/common/domain/src/index.ts +2 -0
  129. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  130. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +10 -1
  131. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  132. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  133. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +10 -0
  134. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  135. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
  136. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  137. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
  138. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  139. package/src/libs/feature/record/src/index.ts +1 -0
  140. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  141. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  142. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +3 -0
  143. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +68 -0
  144. package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +190 -0
  145. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
  146. package/src/libs/feature/search/src/lib/constants.ts +0 -1
  147. package/src/libs/ui/elements/src/index.ts +2 -0
  148. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
  149. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
  150. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
  151. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +67 -21
  152. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
  153. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -0
  154. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
  155. package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
  156. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
  157. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  158. package/src/libs/ui/inputs/src/index.ts +1 -0
  159. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
  160. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
  161. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
  162. package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
  163. package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
  164. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
  165. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
  166. package/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
  167. package/src/libs/util/shared/src/index.ts +1 -0
  168. package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
  169. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +2 -0
  170. package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
  171. package/translations/de.json +15 -4
  172. package/translations/en.json +15 -4
  173. package/translations/es.json +11 -0
  174. package/translations/fr.json +15 -4
  175. package/translations/it.json +16 -5
  176. package/translations/nl.json +11 -0
  177. package/translations/pt.json +11 -0
  178. package/translations/sk.json +12 -1
  179. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
  180. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
  181. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
  182. package/src/libs/common/domain/src/lib/index.ts +0 -2
  183. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
@@ -46,6 +46,8 @@ export class ChartViewComponent {
46
46
  this.chartType$.next(value);
47
47
  }
48
48
  set userChartConfig(config) {
49
+ if (!config)
50
+ return;
49
51
  this.aggregation$.next(config.aggregation);
50
52
  this.xProperty$.next(config.xProperty);
51
53
  this.yProperty$.next(config.yProperty);
@@ -242,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
242
244
  }], chartConfig$: [{
243
245
  type: Output
244
246
  }] } });
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL2NoYXJ0LXZpZXcvY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL2NoYXJ0LXZpZXcvY2hhcnQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDaEUsT0FBTyxFQUVMLFVBQVUsRUFFVixxQkFBcUIsR0FFdEIsTUFBTSw4Q0FBOEMsQ0FBQTtBQUNyRCxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQ3hFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFTckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixtQkFBbUIsR0FDcEIs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QUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNyQyxDQUFDOytHQTNPVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1VkN6RS9CLDh4RUFrRUEseURERkksWUFBWSx3TEFDWix5QkFBeUIscU5BQ3pCLGNBQWMsNkpBQ2Qsb0JBQW9CLG9GQUNwQixtQkFBbUIsK0ZBQ25CLGFBQWE7OzRGQUlKLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLHlCQUF5Qjt3QkFDekIsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsYUFBYTtxQkFDZCxjQUNXLElBQUk7K0lBTUgsY0FBYztzQkFBMUIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNPLElBQUk7c0JBQWhCLEtBQUs7Z0JBUU8sV0FBVztzQkFBdkIsS0FBSztnQkFLTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sU0FBUztzQkFBckIsS0FBSztnQkFLTyxlQUFlO3NCQUEzQixLQUFLO2dCQU1JLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7XG4gIEJhc2VSZWFkZXIsXG4gIEZldGNoRXJyb3IsXG4gIEZpZWxkQWdncmVnYXRpb24sXG4gIGdldEpzb25EYXRhSXRlbXNQcm94eSxcbiAgUHJvcGVydHlJbmZvLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7XG4gIERyb3Bkb3duQ2hvaWNlLFxuICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJ1xuaW1wb3J0IHtcbiAgRGF0YXZpekNoYXJ0Q29uZmlnTW9kZWwsXG4gIElucHV0Q2hhcnRUeXBlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9kYXRhdml6L2RhdGF2aXotY29uZmlndXJhdGlvbi5tb2RlbCdcbmltcG9ydCB7XG4gIERhdGFzZXRGZWF0dXJlQ2F0YWxvZyxcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IENoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9kYXRhdml6L3NyYydcbmltcG9ydCB7XG4gIExvYWRpbmdNYXNrQ29tcG9uZW50LFxuICBQb3B1cEFsZXJ0Q29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuXG5tYXJrZXIoJ2NoYXJ0LnR5cGUuYmFyJylcbm1hcmtlcignY2hhcnQudHlwZS5iYXJIb3Jpem9udGFsJylcbm1hcmtlcignY2hhcnQudHlwZS5saW5lJylcbm1hcmtlcignY2hhcnQudHlwZS5saW5lU21vb3RoJylcbm1hcmtlcignY2hhcnQudHlwZS5waWUnKVxuXG5tYXJrZXIoJ2NoYXJ0LmFnZ3JlZ2F0aW9uLnN1bScpXG5tYXJrZXIoJ2NoYXJ0LmFnZ3JlZ2F0aW9uLm1heCcpXG5tYXJrZXIoJ2NoYXJ0LmFnZ3JlZ2F0aW9uLm1pbicpXG5tYXJrZXIoJ2NoYXJ0LmFnZ3JlZ2F0aW9uLmF2ZXJhZ2UnKVxubWFya2VyKCdjaGFydC5hZ2dyZWdhdGlvbi5jb3VudCcpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWNoYXJ0LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIExvYWRpbmdNYXNrQ29tcG9uZW50LFxuICAgIFBvcHVwQWxlcnRDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRWaWV3Q29tcG9uZW50IHtcbiAgcHVibGljIGZlYXR1cmVDYXRhbG9nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YXNldEZlYXR1cmVDYXRhbG9nIHwgbnVsbD4oXG4gICAgbnVsbFxuICApXG4gIEBJbnB1dCgpIHNldCBmZWF0dXJlQ2F0YWxvZyh2YWx1ZTogRGF0YXNldEZlYXR1cmVDYXRhbG9nKSB7XG4gICAgdGhpcy5mZWF0dXJlQ2F0YWxvZyQubmV4dCh2YWx1ZSlcbiAgfVxuICBASW5wdXQoKSBjYWNoZUFjdGl2ZSA9IHRydWVcbiAgQElucHV0KCkgc2V0IGxpbmsodmFsdWU6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSkge1xuICAgIHRoaXMuY3VycmVudExpbmskLm5leHQodmFsdWUpXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9uJC5uZXh0KCdzdW0nKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGN1cnJlbnRMaW5rJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YXNldE9ubGluZVJlc291cmNlPihudWxsKVxuXG4gIEBJbnB1dCgpIHNldCBhZ2dyZWdhdGlvbih2YWx1ZTogRmllbGRBZ2dyZWdhdGlvblswXSkge1xuICAgIHRoaXMuYWdncmVnYXRpb24kLm5leHQodmFsdWUpXG4gIH1cbiAgYWdncmVnYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWVsZEFnZ3JlZ2F0aW9uWzBdPignc3VtJylcblxuICBASW5wdXQoKSBzZXQgeFByb3BlcnR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnhQcm9wZXJ0eSQubmV4dCh2YWx1ZSlcbiAgfVxuICB4UHJvcGVydHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZClcblxuICBASW5wdXQoKSBzZXQgeVByb3BlcnR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnlQcm9wZXJ0eSQubmV4dCh2YWx1ZSlcbiAgfVxuICB5UHJvcGVydHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZClcblxuICBASW5wdXQoKSBzZXQgY2hhcnRUeXBlKHZhbHVlOiBJbnB1dENoYXJ0VHlwZSkge1xuICAgIHRoaXMuY2hhcnRUeXBlJC5uZXh0KHZhbHVlKVxuICB9XG4gIGNoYXJ0VHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElucHV0Q2hhcnRUeXBlPignYmFyJylcblxuICBASW5wdXQoKSBzZXQgdXNlckNoYXJ0Q29uZmlnKGNvbmZpZzogRGF0YXZpekNoYXJ0Q29uZmlnTW9kZWwpIHtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uJC5uZXh0KGNvbmZpZy5hZ2dyZWdhdGlvbilcbiAgICB0aGlzLnhQcm9wZXJ0eSQubmV4dChjb25maWcueFByb3BlcnR5KVxuICAgIHRoaXMueVByb3BlcnR5JC5uZXh0KGNvbmZpZy55UHJvcGVydHkpXG4gICAgdGhpcy5jaGFydFR5cGUkLm5leHQoY29uZmlnLmNoYXJ0VHlwZSlcbiAgfVxuICBAT3V0cHV0KCkgY2hhcnRDb25maWckID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy54UHJvcGVydHkkLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpLFxuICAgIHRoaXMueVByb3BlcnR5JC5waXBlKGZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKSxcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uJCxcbiAgICB0aGlzLmNoYXJ0VHlwZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbeFByb3BlcnR5LCB5UHJvcGVydHksIGFnZ3JlZ2F0aW9uLCBjaGFydFR5cGVdKSA9PiAoe1xuICAgICAgYWdncmVnYXRpb24sXG4gICAgICB4UHJvcGVydHksXG4gICAgICB5UHJvcGVydHksXG4gICAgICBjaGFydFR5cGUsXG4gICAgfSkpXG4gIClcblxuICBsb2FkaW5nID0gZmFsc2VcbiAgZXJyb3IgPSBudWxsXG4gIGVycm9ySW5mbyA9IG51bGxcblxuICB0eXBlQ2hvaWNlczogRHJvcGRvd25DaG9pY2VbXSA9IFtcbiAgICB7IGxhYmVsOiAnY2hhcnQudHlwZS5iYXInLCB2YWx1ZTogJ2JhcicgfSxcbiAgICB7IGxhYmVsOiAnY2hhcnQudHlwZS5iYXJIb3Jpem9udGFsJywgdmFsdWU6ICdiYXItaG9yaXpvbnRhbCcgfSxcbiAgICB7IGxhYmVsOiAnY2hhcnQudHlwZS5saW5lJywgdmFsdWU6ICdsaW5lJyB9LFxuICAgIHsgbGFiZWw6ICdjaGFydC50eXBlLmxpbmVTbW9vdGgnLCB2YWx1ZTogJ2xpbmUtaW50ZXJwb2xhdGVkJyB9LFxuICAgIHsgbGFiZWw6ICdjaGFydC50eXBlLnBpZScsIHZhbHVlOiAncGllJyB9LFxuICBdXG5cbiAgZ2V0IGFnZ3JlZ2F0aW9uQ2hvaWNlcygpIHtcbiAgICBpZiAoIXRoaXMueVByb3BlcnR5JC52YWx1ZSkge1xuICAgICAgcmV0dXJuIFt7IGxhYmVsOiAnY2hhcnQuYWdncmVnYXRpb24uY291bnQnLCB2YWx1ZTogJ2NvdW50JyB9XVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgeyBsYWJlbDogJ2NoYXJ0LmFnZ3JlZ2F0aW9uLnN1bScsIHZhbHVlOiAnc3VtJyB9LFxuICAgICAgeyBsYWJlbDogJ2NoYXJ0LmFnZ3JlZ2F0aW9uLm1heCcsIHZhbHVlOiAnbWF4JyB9LFxuICAgICAgeyBsYWJlbDogJ2NoYXJ0LmFnZ3JlZ2F0aW9uLm1pbicsIHZhbHVlOiAnbWluJyB9LFxuICAgICAgeyBsYWJlbDogJ2NoYXJ0LmFnZ3JlZ2F0aW9uLmF2ZXJhZ2UnLCB2YWx1ZTogJ2F2ZXJhZ2UnIH0sXG4gICAgICB7IGxhYmVsOiAnY2hhcnQuYWdncmVnYXRpb24uY291bnQnLCB2YWx1ZTogJ2NvdW50JyB9LFxuICAgIF0gYXMgRHJvcGRvd25DaG9pY2VbXVxuICB9XG5cbiAgZGF0YXNldCQ6IE9ic2VydmFibGU8QmFzZVJlYWRlcj4gPSB0aGlzLmN1cnJlbnRMaW5rJC5waXBlKFxuICAgIGZpbHRlcigobGluaykgPT4gISFsaW5rKSxcbiAgICBzd2l0Y2hNYXAoKGxpbmspID0+IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICBpZiAobGluay5hY2Nlc3NSZXN0cmljdGVkKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ2RhdGFzZXQuZXJyb3IucmVzdHJpY3RlZEFjY2VzcycpXG4gICAgICAgIHJldHVybiBFTVBUWVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0RGF0YXNldChsaW5rLCB0aGlzLmNhY2hlQWN0aXZlKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgICAgcmV0dXJuIEVNUFRZXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuICBwcm9wZXJ0aWVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0YXNldCQsIHRoaXMuZmVhdHVyZUNhdGFsb2ckXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtkYXRhc2V0LCBjYXRhbG9nXSkgPT4gdGhpcy5zZXRQcm9wZXJ0aWVzKGRhdGFzZXQsIGNhdGFsb2cpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG4gIHlDaG9pY2VzJCA9IHRoaXMucHJvcGVydGllcyQucGlwZShcbiAgICBtYXAoKHByb3BlcnRpZXMpID0+XG4gICAgICBwcm9wZXJ0aWVzXG4gICAgICAgIC5maWx0ZXIoKHByb3ApID0+IHByb3AudHlwZSA9PT0gJ251bWJlcicgfHwgcHJvcC50eXBlID09PSAnZGF0ZScpXG4gICAgICAgIC5tYXAoKHByb3ApID0+ICh7IHZhbHVlOiBwcm9wLm5hbWUsIGxhYmVsOiBwcm9wLmxhYmVsIHx8IHByb3AubmFtZSB9KSlcbiAgICApLFxuICAgIHRhcCgoY2hvaWNlcykgPT4ge1xuICAgICAgaWYgKCFjaG9pY2VzLmZpbmQoKGNob2ljZSkgPT4gY2hvaWNlLnZhbHVlID09PSB0aGlzLnlQcm9wZXJ0eSQudmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG5ld1Byb3AgPSBjaG9pY2VzWzBdPy52YWx1ZSB8fCAnJ1xuICAgICAgICBpZiAoIW5ld1Byb3AgJiYgdGhpcy5hZ2dyZWdhdGlvbiQudmFsdWUgIT09ICdjb3VudCcpIHtcbiAgICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9uJC5uZXh0KCdjb3VudCcpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55UHJvcGVydHkkLm5leHQobmV3UHJvcClcbiAgICAgIH1cbiAgICB9KVxuICApXG4gIHhDaG9pY2VzJCA9IHRoaXMucHJvcGVydGllcyQucGlwZShcbiAgICBtYXAoKHByb3BlcnRpZXMpID0+XG4gICAgICBwcm9wZXJ0aWVzXG4gICAgICAgIC5maWx0ZXIoKHByb3ApID0+IHByb3AudHlwZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIC5tYXAoKHByb3ApID0+ICh7XG4gICAgICAgICAgdmFsdWU6IHByb3AubmFtZSxcbiAgICAgICAgICBsYWJlbDogcHJvcC5sYWJlbCB8fCBwcm9wLm5hbWUsXG4gICAgICAgIH0pKVxuICAgICksXG4gICAgdGFwKChjaG9pY2VzKSA9PiB7XG4gICAgICBpZiAoIWNob2ljZXMuZmluZCgoY2hvaWNlKSA9PiBjaG9pY2UudmFsdWUgPT09IHRoaXMueFByb3BlcnR5JC52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy54UHJvcGVydHkkLm5leHQoY2hvaWNlc1swXT8udmFsdWUgfHwgJycpXG4gICAgICB9XG4gICAgfSlcbiAgKVxuXG4gIGNoYXJ0RGF0YSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRhdGFzZXQkLFxuICAgIHRoaXMueFByb3BlcnR5JC5waXBlKGZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKSxcbiAgICB0aGlzLnlQcm9wZXJ0eSQucGlwZShmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSksXG4gICAgdGhpcy5hZ2dyZWdhdGlvbiQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbXywgeCwgeV0pID0+ICEheCB8fCAhIXkpLFxuICAgIHN3aXRjaE1hcCgoW2RhdGFzZXQsIHhQcm9wLCB5UHJvcCwgYWdncmVnYXRpb25dKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZEFnZzogRmllbGRBZ2dyZWdhdGlvbiA9XG4gICAgICAgIGFnZ3JlZ2F0aW9uID09PSAnY291bnQnID8gWydjb3VudCddIDogW2FnZ3JlZ2F0aW9uLCB5UHJvcF1cbiAgICAgIHJldHVybiBkYXRhc2V0XG4gICAgICAgIC5ncm91cEJ5KFsnZGlzdGluY3QnLCB4UHJvcF0pXG4gICAgICAgIC5hZ2dyZWdhdGUoZmllbGRBZ2cpXG4gICAgICAgIC5yZWFkKClcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB9KVxuICAgIH0pLFxuICAgIG1hcChnZXRKc29uRGF0YUl0ZW1zUHJveHkpLFxuICAgIHN0YXJ0V2l0aChbXSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIHByZXR0eUxhYmVsJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWdncmVnYXRpb24kLFxuICAgIHRoaXMucHJvcGVydGllcyQsXG4gICAgdGhpcy55UHJvcGVydHkkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2FnZ3JlZ2F0aW9uLCBwcm9wZXJ0aWVzLCB5UHJvcGVydHldKSA9PiB7XG4gICAgICBpZiAoYWdncmVnYXRpb24gPT09ICdjb3VudCcpIHJldHVybiAnY291bnQoKSdcbiAgICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0aWVzLmZpbmQoKHApID0+IHAubmFtZSA9PT0geVByb3BlcnR5KVxuICAgICAgcmV0dXJuIHByb3AgPyBgJHthZ2dyZWdhdGlvbn0oJHtwcm9wLmxhYmVsfSlgIDogJydcbiAgICB9KVxuICApXG5cbiAgZ2V0IGxhYmVsUHJvcGVydHkoKSB7XG4gICAgaWYgKCF0aGlzLnhQcm9wZXJ0eSQudmFsdWUpIHJldHVybiAnJ1xuICAgIHJldHVybiBgZGlzdGluY3QoJHt0aGlzLnhQcm9wZXJ0eSQudmFsdWV9KWBcbiAgfVxuICBnZXQgdmFsdWVQcm9wZXJ0eSgpIHtcbiAgICBpZiAodGhpcy5pc0NvdW50QWdncmVnYXRpb24pIHJldHVybiAnY291bnQoKSdcbiAgICByZXR1cm4gYCR7dGhpcy5hZ2dyZWdhdGlvbiQudmFsdWV9KCR7dGhpcy55UHJvcGVydHkkLnZhbHVlfSlgXG4gIH1cbiAgZ2V0IGlzQ291bnRBZ2dyZWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5hZ2dyZWdhdGlvbiQudmFsdWUgPT09ICdjb3VudCdcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgc2V0UHJvcGVydGllcyhcbiAgICBkYXRhc2V0OiBCYXNlUmVhZGVyLFxuICAgIGNhdGFsb2c6IERhdGFzZXRGZWF0dXJlQ2F0YWxvZ1xuICApOiBQcm9taXNlPFByb3BlcnR5SW5mb1tdPiB7XG4gICAgcmV0dXJuIGRhdGFzZXQucHJvcGVydGllc1xuICAgICAgLnRoZW4oKHByb3BlcnRpZXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMubWFwKChwKSA9PiB7XG4gICAgICAgICAgaWYgKGNhdGFsb2cpIHtcbiAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVBdHRyaWJ1dGVzID0gY2F0YWxvZz8uZmVhdHVyZVR5cGVzWzBdPy5hdHRyaWJ1dGVzID8/IFtdXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0F0dHJpYnV0ZSA9IGZlYXR1cmVBdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICAgIChhdHRyKSA9PiBhdHRyLm5hbWUgPT09IHAubGFiZWxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0F0dHJpYnV0ZT8uY29kZSkge1xuICAgICAgICAgICAgICByZXR1cm4geyAuLi5wLCBsYWJlbDogbWF0Y2hpbmdBdHRyaWJ1dGUuY29kZSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9KVxuICB9XG4gIGhhbmRsZUVycm9yKGVycm9yOiBGZXRjaEVycm9yIHwgRXJyb3IgfCBzdHJpbmcpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBGZXRjaEVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGBkYXRhc2V0LmVycm9yLiR7ZXJyb3IudHlwZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgaW5mbzogZXJyb3IuaW5mbyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yLm1lc3NhZ2UpXG4gICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IubWVzc2FnZSlcbiAgICAgIGNvbnNvbGUud2FybihlcnJvci5zdGFjayB8fCBlcnJvcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGVycm9yKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yKVxuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2xcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgc206ZmxleC1yb3cgc206c3BhY2UteS0wIHNtOnNwYWNlLXgtMiBqdXN0aWZ5LWJldHdlZW4gdGV4dC1bMTNweF1cIlxuICA+XG4gICAgPGduLXVpLWRyb3Bkb3duLXNlbGVjdG9yXG4gICAgICBjbGFzcz1cImJhc2lzLTEvNFwiXG4gICAgICBbY2hvaWNlc109XCJ0eXBlQ2hvaWNlc1wiXG4gICAgICBbZXh0cmFCdG5DbGFzc109XCInc2Vjb25kYXJ5IG1pbi13LWZ1bGwnXCJcbiAgICAgIChzZWxlY3RWYWx1ZSk9XCJjaGFydFR5cGUkLm5leHQoJGV2ZW50KVwiXG4gICAgICBbc2VsZWN0ZWRdPVwiY2hhcnRUeXBlJC52YWx1ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2NoYXJ0LmRyb3Bkb3duLnR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC9nbi11aS1kcm9wZG93bi1zZWxlY3Rvcj5cbiAgICA8Z24tdWktZHJvcGRvd24tc2VsZWN0b3JcbiAgICAgIGNsYXNzPVwiYmFzaXMtMS80XCJcbiAgICAgIFtjaG9pY2VzXT1cInhDaG9pY2VzJCB8IGFzeW5jXCJcbiAgICAgIFtleHRyYUJ0bkNsYXNzXT1cIidzZWNvbmRhcnkgbWluLXctZnVsbCdcIlxuICAgICAgKHNlbGVjdFZhbHVlKT1cInhQcm9wZXJ0eSQubmV4dCgkZXZlbnQpXCJcbiAgICAgIFtzZWxlY3RlZF09XCJ4UHJvcGVydHkkLnZhbHVlXCJcbiAgICAgIFt0aXRsZV09XCInY2hhcnQuZHJvcGRvd24ueFByb3BlcnR5JyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInlDaG9pY2VzJCB8IGFzeW5jIGFzIHlDaG9pY2VzXCI+XG4gICAgICA8Z24tdWktZHJvcGRvd24tc2VsZWN0b3JcbiAgICAgICAgY2xhc3M9XCJiYXNpcy0xLzRcIlxuICAgICAgICAqbmdJZj1cIiFpc0NvdW50QWdncmVnYXRpb25cIlxuICAgICAgICBbY2hvaWNlc109XCJ5Q2hvaWNlc1wiXG4gICAgICAgIChzZWxlY3RWYWx1ZSk9XCJ5UHJvcGVydHkkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJ5UHJvcGVydHkkLnZhbHVlXCJcbiAgICAgICAgW3RpdGxlXT1cIidjaGFydC5kcm9wZG93bi55UHJvcGVydHknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3QteS1wcm9wXCJcbiAgICAgID48L2duLXVpLWRyb3Bkb3duLXNlbGVjdG9yPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICAgY2xhc3M9XCJiYXNpcy0xLzRcIlxuICAgICAgW2Nob2ljZXNdPVwiYWdncmVnYXRpb25DaG9pY2VzXCJcbiAgICAgIGNsYXNzPVwiYWdncmVnYXRpb24tY2hvaWNlc1wiXG4gICAgICAoc2VsZWN0VmFsdWUpPVwiYWdncmVnYXRpb24kLm5leHQoJGV2ZW50KVwiXG4gICAgICBbc2VsZWN0ZWRdPVwiYWdncmVnYXRpb24kLnZhbHVlXCJcbiAgICAgIFt0aXRsZV09XCInY2hhcnQuZHJvcGRvd24uYWdncmVnYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICA+PC9nbi11aS1kcm9wZG93bi1zZWxlY3Rvcj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJlbGF0aXZlIGgtZnVsbCBtdC0yIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW5cIlxuICA+XG4gICAgPGduLXVpLWNoYXJ0XG4gICAgICAqbmdJZj1cIiFlcnJvclwiXG4gICAgICBbZGF0YV09XCJjaGFydERhdGEkIHwgYXN5bmNcIlxuICAgICAgW3R5cGVdPVwiY2hhcnRUeXBlJC52YWx1ZVwiXG4gICAgICBbcHJldHR5TGFiZWxdPVwicHJldHR5TGFiZWwkIHwgYXN5bmNcIlxuICAgICAgW2xhYmVsUHJvcGVydHldPVwibGFiZWxQcm9wZXJ0eVwiXG4gICAgICBbdmFsdWVQcm9wZXJ0eV09XCJ2YWx1ZVByb3BlcnR5XCJcbiAgICA+PC9nbi11aS1jaGFydD5cbiAgICA8Z24tdWktbG9hZGluZy1tYXNrXG4gICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wXCJcbiAgICAgIFttZXNzYWdlXT1cIidjaGFydC5sb2FkaW5nLmRhdGEnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC9nbi11aS1sb2FkaW5nLW1hc2s+XG4gICAgPGduLXVpLXBvcHVwLWFsZXJ0XG4gICAgICAqbmdJZj1cImVycm9yXCJcbiAgICAgIHR5cGU9XCJ3YXJuaW5nXCJcbiAgICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbS0yIGluc2V0LTBcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGVycm9yIH19PC9zcGFuPlxuICAgIDwvZ24tdWktcG9wdXAtYWxlcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL2NoYXJ0LXZpZXcvY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL2NoYXJ0LXZpZXcvY2hhcnQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDaEUsT0FBTyxFQUVMLFVBQVUsRUFFVixxQkFBcUIsR0FFdEIsTUFBTSw4Q0FBOEMsQ0FBQTtBQUNyRCxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQ3hFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFTckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixtQkFBbUIsR0FDcEIs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QUFBO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDckMsQ0FBQzsrR0E1T1Usa0JBQWtCO21HQUFsQixrQkFBa0IsdVZDekUvQiw4eEVBa0VBLHlEREZJLFlBQVksd0xBQ1oseUJBQXlCLHFOQUN6QixjQUFjLDZKQUNkLG9CQUFvQixvRkFDcEIsbUJBQW1CLCtGQUNuQixhQUFhOzs0RkFJSixrQkFBa0I7a0JBZjlCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGFBQWE7cUJBQ2QsY0FDVyxJQUFJOytJQU1ILGNBQWM7c0JBQTFCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFDTyxJQUFJO3NCQUFoQixLQUFLO2dCQVFPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBS08sU0FBUztzQkFBckIsS0FBSztnQkFLTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sZUFBZTtzQkFBM0IsS0FBSztnQkFPSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQge1xuICBCYXNlUmVhZGVyLFxuICBGZXRjaEVycm9yLFxuICBGaWVsZEFnZ3JlZ2F0aW9uLFxuICBnZXRKc29uRGF0YUl0ZW1zUHJveHksXG4gIFByb3BlcnR5SW5mbyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMnXG5pbXBvcnQge1xuICBEcm9wZG93bkNob2ljZSxcbiAgRHJvcGRvd25TZWxlY3RvckNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2RhdGEuc2VydmljZSdcbmltcG9ydCB7XG4gIERhdGF2aXpDaGFydENvbmZpZ01vZGVsLFxuICBJbnB1dENoYXJ0VHlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5pbXBvcnQge1xuICBEYXRhc2V0RmVhdHVyZUNhdGFsb2csXG4gIERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBDaGFydENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZGF0YXZpei9zcmMnXG5pbXBvcnQge1xuICBMb2FkaW5nTWFza0NvbXBvbmVudCxcbiAgUG9wdXBBbGVydENvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcblxubWFya2VyKCdjaGFydC50eXBlLmJhcicpXG5tYXJrZXIoJ2NoYXJ0LnR5cGUuYmFySG9yaXpvbnRhbCcpXG5tYXJrZXIoJ2NoYXJ0LnR5cGUubGluZScpXG5tYXJrZXIoJ2NoYXJ0LnR5cGUubGluZVNtb290aCcpXG5tYXJrZXIoJ2NoYXJ0LnR5cGUucGllJylcblxubWFya2VyKCdjaGFydC5hZ2dyZWdhdGlvbi5zdW0nKVxubWFya2VyKCdjaGFydC5hZ2dyZWdhdGlvbi5tYXgnKVxubWFya2VyKCdjaGFydC5hZ2dyZWdhdGlvbi5taW4nKVxubWFya2VyKCdjaGFydC5hZ2dyZWdhdGlvbi5hdmVyYWdlJylcbm1hcmtlcignY2hhcnQuYWdncmVnYXRpb24uY291bnQnKVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1jaGFydC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcGRvd25TZWxlY3RvckNvbXBvbmVudCxcbiAgICBDaGFydENvbXBvbmVudCxcbiAgICBMb2FkaW5nTWFza0NvbXBvbmVudCxcbiAgICBQb3B1cEFsZXJ0Q29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Vmlld0NvbXBvbmVudCB7XG4gIHB1YmxpYyBmZWF0dXJlQ2F0YWxvZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFzZXRGZWF0dXJlQ2F0YWxvZyB8IG51bGw+KFxuICAgIG51bGxcbiAgKVxuICBASW5wdXQoKSBzZXQgZmVhdHVyZUNhdGFsb2codmFsdWU6IERhdGFzZXRGZWF0dXJlQ2F0YWxvZykge1xuICAgIHRoaXMuZmVhdHVyZUNhdGFsb2ckLm5leHQodmFsdWUpXG4gIH1cbiAgQElucHV0KCkgY2FjaGVBY3RpdmUgPSB0cnVlXG4gIEBJbnB1dCgpIHNldCBsaW5rKHZhbHVlOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpIHtcbiAgICB0aGlzLmN1cnJlbnRMaW5rJC5uZXh0KHZhbHVlKVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGlvbiQubmV4dCgnc3VtJylcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBjdXJyZW50TGluayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFzZXRPbmxpbmVSZXNvdXJjZT4obnVsbClcblxuICBASW5wdXQoKSBzZXQgYWdncmVnYXRpb24odmFsdWU6IEZpZWxkQWdncmVnYXRpb25bMF0pIHtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uJC5uZXh0KHZhbHVlKVxuICB9XG4gIGFnZ3JlZ2F0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmllbGRBZ2dyZWdhdGlvblswXT4oJ3N1bScpXG5cbiAgQElucHV0KCkgc2V0IHhQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy54UHJvcGVydHkkLm5leHQodmFsdWUpXG4gIH1cbiAgeFByb3BlcnR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpXG5cbiAgQElucHV0KCkgc2V0IHlQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy55UHJvcGVydHkkLm5leHQodmFsdWUpXG4gIH1cbiAgeVByb3BlcnR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpXG5cbiAgQElucHV0KCkgc2V0IGNoYXJ0VHlwZSh2YWx1ZTogSW5wdXRDaGFydFR5cGUpIHtcbiAgICB0aGlzLmNoYXJ0VHlwZSQubmV4dCh2YWx1ZSlcbiAgfVxuICBjaGFydFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnB1dENoYXJ0VHlwZT4oJ2JhcicpXG5cbiAgQElucHV0KCkgc2V0IHVzZXJDaGFydENvbmZpZyhjb25maWc6IERhdGF2aXpDaGFydENvbmZpZ01vZGVsKSB7XG4gICAgaWYgKCFjb25maWcpIHJldHVyblxuICAgIHRoaXMuYWdncmVnYXRpb24kLm5leHQoY29uZmlnLmFnZ3JlZ2F0aW9uKVxuICAgIHRoaXMueFByb3BlcnR5JC5uZXh0KGNvbmZpZy54UHJvcGVydHkpXG4gICAgdGhpcy55UHJvcGVydHkkLm5leHQoY29uZmlnLnlQcm9wZXJ0eSlcbiAgICB0aGlzLmNoYXJ0VHlwZSQubmV4dChjb25maWcuY2hhcnRUeXBlKVxuICB9XG4gIEBPdXRwdXQoKSBjaGFydENvbmZpZyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnhQcm9wZXJ0eSQucGlwZShmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSksXG4gICAgdGhpcy55UHJvcGVydHkkLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpLFxuICAgIHRoaXMuYWdncmVnYXRpb24kLFxuICAgIHRoaXMuY2hhcnRUeXBlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt4UHJvcGVydHksIHlQcm9wZXJ0eSwgYWdncmVnYXRpb24sIGNoYXJ0VHlwZV0pID0+ICh7XG4gICAgICBhZ2dyZWdhdGlvbixcbiAgICAgIHhQcm9wZXJ0eSxcbiAgICAgIHlQcm9wZXJ0eSxcbiAgICAgIGNoYXJ0VHlwZSxcbiAgICB9KSlcbiAgKVxuXG4gIGxvYWRpbmcgPSBmYWxzZVxuICBlcnJvciA9IG51bGxcbiAgZXJyb3JJbmZvID0gbnVsbFxuXG4gIHR5cGVDaG9pY2VzOiBEcm9wZG93bkNob2ljZVtdID0gW1xuICAgIHsgbGFiZWw6ICdjaGFydC50eXBlLmJhcicsIHZhbHVlOiAnYmFyJyB9LFxuICAgIHsgbGFiZWw6ICdjaGFydC50eXBlLmJhckhvcml6b250YWwnLCB2YWx1ZTogJ2Jhci1ob3Jpem9udGFsJyB9LFxuICAgIHsgbGFiZWw6ICdjaGFydC50eXBlLmxpbmUnLCB2YWx1ZTogJ2xpbmUnIH0sXG4gICAgeyBsYWJlbDogJ2NoYXJ0LnR5cGUubGluZVNtb290aCcsIHZhbHVlOiAnbGluZS1pbnRlcnBvbGF0ZWQnIH0sXG4gICAgeyBsYWJlbDogJ2NoYXJ0LnR5cGUucGllJywgdmFsdWU6ICdwaWUnIH0sXG4gIF1cblxuICBnZXQgYWdncmVnYXRpb25DaG9pY2VzKCkge1xuICAgIGlmICghdGhpcy55UHJvcGVydHkkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gW3sgbGFiZWw6ICdjaGFydC5hZ2dyZWdhdGlvbi5jb3VudCcsIHZhbHVlOiAnY291bnQnIH1dXG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB7IGxhYmVsOiAnY2hhcnQuYWdncmVnYXRpb24uc3VtJywgdmFsdWU6ICdzdW0nIH0sXG4gICAgICB7IGxhYmVsOiAnY2hhcnQuYWdncmVnYXRpb24ubWF4JywgdmFsdWU6ICdtYXgnIH0sXG4gICAgICB7IGxhYmVsOiAnY2hhcnQuYWdncmVnYXRpb24ubWluJywgdmFsdWU6ICdtaW4nIH0sXG4gICAgICB7IGxhYmVsOiAnY2hhcnQuYWdncmVnYXRpb24uYXZlcmFnZScsIHZhbHVlOiAnYXZlcmFnZScgfSxcbiAgICAgIHsgbGFiZWw6ICdjaGFydC5hZ2dyZWdhdGlvbi5jb3VudCcsIHZhbHVlOiAnY291bnQnIH0sXG4gICAgXSBhcyBEcm9wZG93bkNob2ljZVtdXG4gIH1cblxuICBkYXRhc2V0JDogT2JzZXJ2YWJsZTxCYXNlUmVhZGVyPiA9IHRoaXMuY3VycmVudExpbmskLnBpcGUoXG4gICAgZmlsdGVyKChsaW5rKSA9PiAhIWxpbmspLFxuICAgIHN3aXRjaE1hcCgobGluaykgPT4ge1xuICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIGlmIChsaW5rLmFjY2Vzc1Jlc3RyaWN0ZWQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignZGF0YXNldC5lcnJvci5yZXN0cmljdGVkQWNjZXNzJylcbiAgICAgICAgcmV0dXJuIEVNUFRZXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5nZXREYXRhc2V0KGxpbmssIHRoaXMuY2FjaGVBY3RpdmUpLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG4gIHByb3BlcnRpZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXRhc2V0JCwgdGhpcy5mZWF0dXJlQ2F0YWxvZyRdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2RhdGFzZXQsIGNhdGFsb2ddKSA9PiB0aGlzLnNldFByb3BlcnRpZXMoZGF0YXNldCwgY2F0YWxvZykpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcbiAgeUNob2ljZXMkID0gdGhpcy5wcm9wZXJ0aWVzJC5waXBlKFxuICAgIG1hcCgocHJvcGVydGllcykgPT5cbiAgICAgIHByb3BlcnRpZXNcbiAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC50eXBlID09PSAnbnVtYmVyJyB8fCBwcm9wLnR5cGUgPT09ICdkYXRlJylcbiAgICAgICAgLm1hcCgocHJvcCkgPT4gKHsgdmFsdWU6IHByb3AubmFtZSwgbGFiZWw6IHByb3AubGFiZWwgfHwgcHJvcC5uYW1lIH0pKVxuICAgICksXG4gICAgdGFwKChjaG9pY2VzKSA9PiB7XG4gICAgICBpZiAoIWNob2ljZXMuZmluZCgoY2hvaWNlKSA9PiBjaG9pY2UudmFsdWUgPT09IHRoaXMueVByb3BlcnR5JC52YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbmV3UHJvcCA9IGNob2ljZXNbMF0/LnZhbHVlIHx8ICcnXG4gICAgICAgIGlmICghbmV3UHJvcCAmJiB0aGlzLmFnZ3JlZ2F0aW9uJC52YWx1ZSAhPT0gJ2NvdW50Jykge1xuICAgICAgICAgIHRoaXMuYWdncmVnYXRpb24kLm5leHQoJ2NvdW50JylcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnlQcm9wZXJ0eSQubmV4dChuZXdQcm9wKVxuICAgICAgfVxuICAgIH0pXG4gIClcbiAgeENob2ljZXMkID0gdGhpcy5wcm9wZXJ0aWVzJC5waXBlKFxuICAgIG1hcCgocHJvcGVydGllcykgPT5cbiAgICAgIHByb3BlcnRpZXNcbiAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC50eXBlID09PSAnc3RyaW5nJylcbiAgICAgICAgLm1hcCgocHJvcCkgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogcHJvcC5uYW1lLFxuICAgICAgICAgIGxhYmVsOiBwcm9wLmxhYmVsIHx8IHByb3AubmFtZSxcbiAgICAgICAgfSkpXG4gICAgKSxcbiAgICB0YXAoKGNob2ljZXMpID0+IHtcbiAgICAgIGlmICghY2hvaWNlcy5maW5kKChjaG9pY2UpID0+IGNob2ljZS52YWx1ZSA9PT0gdGhpcy54UHJvcGVydHkkLnZhbHVlKSkge1xuICAgICAgICB0aGlzLnhQcm9wZXJ0eSQubmV4dChjaG9pY2VzWzBdPy52YWx1ZSB8fCAnJylcbiAgICAgIH1cbiAgICB9KVxuICApXG5cbiAgY2hhcnREYXRhJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZGF0YXNldCQsXG4gICAgdGhpcy54UHJvcGVydHkkLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpLFxuICAgIHRoaXMueVByb3BlcnR5JC5waXBlKGZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKSxcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uJCxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtfLCB4LCB5XSkgPT4gISF4IHx8ICEheSksXG4gICAgc3dpdGNoTWFwKChbZGF0YXNldCwgeFByb3AsIHlQcm9wLCBhZ2dyZWdhdGlvbl0pID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkQWdnOiBGaWVsZEFnZ3JlZ2F0aW9uID1cbiAgICAgICAgYWdncmVnYXRpb24gPT09ICdjb3VudCcgPyBbJ2NvdW50J10gOiBbYWdncmVnYXRpb24sIHlQcm9wXVxuICAgICAgcmV0dXJuIGRhdGFzZXRcbiAgICAgICAgLmdyb3VwQnkoWydkaXN0aW5jdCcsIHhQcm9wXSlcbiAgICAgICAgLmFnZ3JlZ2F0ZShmaWVsZEFnZylcbiAgICAgICAgLnJlYWQoKVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgIH0pXG4gICAgfSksXG4gICAgbWFwKGdldEpzb25EYXRhSXRlbXNQcm94eSksXG4gICAgc3RhcnRXaXRoKFtdKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgcHJldHR5TGFiZWwkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hZ2dyZWdhdGlvbiQsXG4gICAgdGhpcy5wcm9wZXJ0aWVzJCxcbiAgICB0aGlzLnlQcm9wZXJ0eSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbYWdncmVnYXRpb24sIHByb3BlcnRpZXMsIHlQcm9wZXJ0eV0pID0+IHtcbiAgICAgIGlmIChhZ2dyZWdhdGlvbiA9PT0gJ2NvdW50JykgcmV0dXJuICdjb3VudCgpJ1xuICAgICAgY29uc3QgcHJvcCA9IHByb3BlcnRpZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSB5UHJvcGVydHkpXG4gICAgICByZXR1cm4gcHJvcCA/IGAke2FnZ3JlZ2F0aW9ufSgke3Byb3AubGFiZWx9KWAgOiAnJ1xuICAgIH0pXG4gIClcblxuICBnZXQgbGFiZWxQcm9wZXJ0eSgpIHtcbiAgICBpZiAoIXRoaXMueFByb3BlcnR5JC52YWx1ZSkgcmV0dXJuICcnXG4gICAgcmV0dXJuIGBkaXN0aW5jdCgke3RoaXMueFByb3BlcnR5JC52YWx1ZX0pYFxuICB9XG4gIGdldCB2YWx1ZVByb3BlcnR5KCkge1xuICAgIGlmICh0aGlzLmlzQ291bnRBZ2dyZWdhdGlvbikgcmV0dXJuICdjb3VudCgpJ1xuICAgIHJldHVybiBgJHt0aGlzLmFnZ3JlZ2F0aW9uJC52YWx1ZX0oJHt0aGlzLnlQcm9wZXJ0eSQudmFsdWV9KWBcbiAgfVxuICBnZXQgaXNDb3VudEFnZ3JlZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmFnZ3JlZ2F0aW9uJC52YWx1ZSA9PT0gJ2NvdW50J1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBzZXRQcm9wZXJ0aWVzKFxuICAgIGRhdGFzZXQ6IEJhc2VSZWFkZXIsXG4gICAgY2F0YWxvZzogRGF0YXNldEZlYXR1cmVDYXRhbG9nXG4gICk6IFByb21pc2U8UHJvcGVydHlJbmZvW10+IHtcbiAgICByZXR1cm4gZGF0YXNldC5wcm9wZXJ0aWVzXG4gICAgICAudGhlbigocHJvcGVydGllcykgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5tYXAoKHApID0+IHtcbiAgICAgICAgICBpZiAoY2F0YWxvZykge1xuICAgICAgICAgICAgY29uc3QgZmVhdHVyZUF0dHJpYnV0ZXMgPSBjYXRhbG9nPy5mZWF0dXJlVHlwZXNbMF0/LmF0dHJpYnV0ZXMgPz8gW11cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQXR0cmlidXRlID0gZmVhdHVyZUF0dHJpYnV0ZXMuZmluZChcbiAgICAgICAgICAgICAgKGF0dHIpID0+IGF0dHIubmFtZSA9PT0gcC5sYWJlbFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQXR0cmlidXRlPy5jb2RlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLnAsIGxhYmVsOiBtYXRjaGluZ0F0dHJpYnV0ZS5jb2RlIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgICByZXR1cm4gW11cbiAgICAgIH0pXG4gIH1cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IEZldGNoRXJyb3IgfCBFcnJvciB8IHN0cmluZykge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEZldGNoRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgYGRhdGFzZXQuZXJyb3IuJHtlcnJvci50eXBlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmZvOiBlcnJvci5pbmZvLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IubWVzc2FnZSlcbiAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlcnJvci5tZXNzYWdlKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yLnN0YWNrIHx8IGVycm9yKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IpXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpXG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMiBzbTpmbGV4LXJvdyBzbTpzcGFjZS15LTAgc206c3BhY2UteC0yIGp1c3RpZnktYmV0d2VlbiB0ZXh0LVsxM3B4XVwiXG4gID5cbiAgICA8Z24tdWktZHJvcGRvd24tc2VsZWN0b3JcbiAgICAgIGNsYXNzPVwiYmFzaXMtMS80XCJcbiAgICAgIFtjaG9pY2VzXT1cInR5cGVDaG9pY2VzXCJcbiAgICAgIFtleHRyYUJ0bkNsYXNzXT1cIidzZWNvbmRhcnkgbWluLXctZnVsbCdcIlxuICAgICAgKHNlbGVjdFZhbHVlKT1cImNoYXJ0VHlwZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgIFtzZWxlY3RlZF09XCJjaGFydFR5cGUkLnZhbHVlXCJcbiAgICAgIFt0aXRsZV09XCInY2hhcnQuZHJvcGRvd24udHlwZScgfCB0cmFuc2xhdGVcIlxuICAgID48L2duLXVpLWRyb3Bkb3duLXNlbGVjdG9yPlxuICAgIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICAgY2xhc3M9XCJiYXNpcy0xLzRcIlxuICAgICAgW2Nob2ljZXNdPVwieENob2ljZXMkIHwgYXN5bmNcIlxuICAgICAgW2V4dHJhQnRuQ2xhc3NdPVwiJ3NlY29uZGFyeSBtaW4tdy1mdWxsJ1wiXG4gICAgICAoc2VsZWN0VmFsdWUpPVwieFByb3BlcnR5JC5uZXh0KCRldmVudClcIlxuICAgICAgW3NlbGVjdGVkXT1cInhQcm9wZXJ0eSQudmFsdWVcIlxuICAgICAgW3RpdGxlXT1cIidjaGFydC5kcm9wZG93bi54UHJvcGVydHknIHwgdHJhbnNsYXRlXCJcbiAgICA+PC9nbi11aS1kcm9wZG93bi1zZWxlY3Rvcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwieUNob2ljZXMkIHwgYXN5bmMgYXMgeUNob2ljZXNcIj5cbiAgICAgIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICAgICBjbGFzcz1cImJhc2lzLTEvNFwiXG4gICAgICAgICpuZ0lmPVwiIWlzQ291bnRBZ2dyZWdhdGlvblwiXG4gICAgICAgIFtjaG9pY2VzXT1cInlDaG9pY2VzXCJcbiAgICAgICAgKHNlbGVjdFZhbHVlKT1cInlQcm9wZXJ0eSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cInlQcm9wZXJ0eSQudmFsdWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2NoYXJ0LmRyb3Bkb3duLnlQcm9wZXJ0eScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBjbGFzcz1cInNlbGVjdC15LXByb3BcIlxuICAgICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGduLXVpLWRyb3Bkb3duLXNlbGVjdG9yXG4gICAgICBjbGFzcz1cImJhc2lzLTEvNFwiXG4gICAgICBbY2hvaWNlc109XCJhZ2dyZWdhdGlvbkNob2ljZXNcIlxuICAgICAgY2xhc3M9XCJhZ2dyZWdhdGlvbi1jaG9pY2VzXCJcbiAgICAgIChzZWxlY3RWYWx1ZSk9XCJhZ2dyZWdhdGlvbiQubmV4dCgkZXZlbnQpXCJcbiAgICAgIFtzZWxlY3RlZF09XCJhZ2dyZWdhdGlvbiQudmFsdWVcIlxuICAgICAgW3RpdGxlXT1cIidjaGFydC5kcm9wZG93bi5hZ2dyZWdhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgID48L2duLXVpLWRyb3Bkb3duLXNlbGVjdG9yPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicmVsYXRpdmUgaC1mdWxsIG10LTIgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlblwiXG4gID5cbiAgICA8Z24tdWktY2hhcnRcbiAgICAgICpuZ0lmPVwiIWVycm9yXCJcbiAgICAgIFtkYXRhXT1cImNoYXJ0RGF0YSQgfCBhc3luY1wiXG4gICAgICBbdHlwZV09XCJjaGFydFR5cGUkLnZhbHVlXCJcbiAgICAgIFtwcmV0dHlMYWJlbF09XCJwcmV0dHlMYWJlbCQgfCBhc3luY1wiXG4gICAgICBbbGFiZWxQcm9wZXJ0eV09XCJsYWJlbFByb3BlcnR5XCJcbiAgICAgIFt2YWx1ZVByb3BlcnR5XT1cInZhbHVlUHJvcGVydHlcIlxuICAgID48L2duLXVpLWNoYXJ0PlxuICAgIDxnbi11aS1sb2FkaW5nLW1hc2tcbiAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICBjbGFzcz1cImFic29sdXRlIGluc2V0LTBcIlxuICAgICAgW21lc3NhZ2VdPVwiJ2NoYXJ0LmxvYWRpbmcuZGF0YScgfCB0cmFuc2xhdGVcIlxuICAgID48L2duLXVpLWxvYWRpbmctbWFzaz5cbiAgICA8Z24tdWktcG9wdXAtYWxlcnRcbiAgICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgICAgdHlwZT1cIndhcm5pbmdcIlxuICAgICAgaWNvbj1cIm1hdEVycm9yT3V0bGluZU91dGxpbmVcIlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBtLTIgaW5zZXQtMFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgPC9nbi11aS1wb3B1cC1hbGVydD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
3
- import { OgcApiEndpoint, WfsEndpoint, TmsEndpoint, } from '@camptocamp/ogc-client';
3
+ import { OgcApiEndpoint, WfsEndpoint, TmsEndpoint, StacEndpoint, } from '@camptocamp/ogc-client';
4
4
  import { openDataset, SupportedTypes, } from '../../../../../../libs/util/data-fetcher/src';
5
5
  import { getFileFormat, getFileFormatFromServiceOutput, getMimeTypeForFormat, ProxyService, } from '../../../../../../libs/util/shared/src';
6
6
  import { from, throwError } from 'rxjs';
@@ -56,13 +56,24 @@ export class DataService {
56
56
  if (!featureType) {
57
57
  throw new Error('wfs.featuretype.notfound');
58
58
  }
59
+ const wfsVersion = endpoint.getVersion();
60
+ const addSrsName = wfsVersion === '1.1.0' || wfsVersion === '2.0.0';
61
+ const defaultCrs = featureType.defaultCrs;
62
+ const shouldAddOutputCrs = addSrsName && defaultCrs;
59
63
  return {
60
- all: featureType.outputFormats.reduce((prev, curr) => ({
61
- ...prev,
62
- [curr]: endpoint.getFeatureUrl(featureType.name, {
63
- outputFormat: curr,
64
- }),
65
- }), {}),
64
+ all: featureType.outputFormats.reduce((prev, curr) => {
65
+ const isJsonFormat = curr.toLowerCase().includes('json');
66
+ return {
67
+ ...prev,
68
+ [curr]: endpoint.getFeatureUrl(featureType.name, {
69
+ outputFormat: curr,
70
+ ...(shouldAddOutputCrs &&
71
+ !isJsonFormat && {
72
+ outputCrs: defaultCrs,
73
+ }),
74
+ }),
75
+ };
76
+ }, {}),
66
77
  geojson: endpoint.supportsJson(featureType.name)
67
78
  ? endpoint.getFeatureUrl(featureType.name, {
68
79
  asJson: true,
@@ -147,6 +158,13 @@ export class DataService {
147
158
  throw new Error(`ogc.unreachable.unknown`);
148
159
  });
149
160
  }
161
+ async getItemsFromStacApi(url, options) {
162
+ return await StacEndpoint.getItemsFromUrl(url, options)
163
+ .then((response) => response)
164
+ .catch(() => {
165
+ throw new Error(`ogc.unreachable.unknown`);
166
+ });
167
+ }
150
168
  async getGeodataLinksFromTms(tmsLink, keepOriginalLink = false) {
151
169
  const endpoint = new TmsEndpoint(tmsLink.url.toString().replace(/\/?$/, `/${tmsLink.name}`));
152
170
  const tileMaps = await endpoint.allTileMaps.catch(() => {
@@ -241,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
241
259
  providedIn: 'root',
242
260
  }]
243
261
  }], ctorParameters: () => [{ type: i1.ProxyService }] });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjL2xpYi9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsRUFFWCxXQUFXLEdBQ1osTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQixPQUFPLEVBR0wsV0FBVyxFQUVYLGNBQWMsR0FDZixNQUFNLDhDQUE4QyxDQUFBO0FBQ3JELE9BQU8sRUFDTCxhQUFhLEVBQ2IsOEJBQThCLEVBQzlCLG9CQUFvQixFQUNwQixZQUFZLEdBQ2IsTUFBTSx3Q0FBd0MsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQU9oRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtBQUNyQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtBQUMvQixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUM1QixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FB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QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdELFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUMzQixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUE7Z0JBQ2xELE9BQU8sV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ25FLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNWLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7Z0JBQ2hELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDbkQsQ0FBQzsrR0FsVFUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7XG4gIE9nY0FwaUNvbGxlY3Rpb25JbmZvLFxuICBPZ2NBcGlFbmRwb2ludCxcbiAgT2djQXBpUmVjb3JkLFxuICBXZnNFbmRwb2ludCxcbiAgV2ZzVmVyc2lvbixcbiAgVG1zRW5kcG9pbnQsXG59IGZyb20gJ0BjYW1wdG9jYW1wL29nYy1jbGllbnQnXG5pbXBvcnQge1xuICBCYXNlUmVhZGVyLFxuICBGZXRjaEVycm9yLFxuICBvcGVuRGF0YXNldCxcbiAgU3VwcG9ydGVkVHlwZSxcbiAgU3VwcG9ydGVkVHlwZXMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjJ1xuaW1wb3J0IHtcbiAgZ2V0RmlsZUZvcm1hdCxcbiAgZ2V0RmlsZUZvcm1hdEZyb21TZXJ2aWNlT3V0cHV0LFxuICBnZXRNaW1lVHlwZUZvckZvcm1hdCxcbiAgUHJveHlTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQge1xuICBEYXRhc2V0T25saW5lUmVzb3VyY2UsXG4gIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBEYXRhdml6Q29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9kYXRhdml6L2RhdGF2aXotY29uZmlndXJhdGlvbi5tb2RlbCdcblxubWFya2VyKCd3ZnMudW5yZWFjaGFibGUuY29ycycpXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS5odHRwJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5mb3JiaWRkZW4nKVxubWFya2VyKCd3ZnMudW5yZWFjaGFibGUudW5rbm93bicpXG5tYXJrZXIoJ3dmcy5mZWF0dXJldHlwZS5ub3Rmb3VuZCcpXG5tYXJrZXIoJ3dmcy5nZW9qc29uZ21sLm5vdHN1cHBvcnRlZCcpXG5tYXJrZXIoJ29nYy51bnJlYWNoYWJsZS51bmtub3duJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5uZXR3b3JrJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5odHRwJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5wYXJzZScpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IudW5zdXBwb3J0ZWRUeXBlJylcbm1hcmtlcignZGF0YXNldC5lcnJvci51bmtub3duJylcblxuaW50ZXJmYWNlIFdmc0Rvd25sb2FkVXJscyB7XG4gIGFsbDogeyBbZm9ybWF0OiBzdHJpbmddOiBzdHJpbmcgfVxuICBnZW9qc29uOiBzdHJpbmdcbiAgZ21sOiB7IGZlYXR1cmVVcmw6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmc7IHdmc1ZlcnNpb246IFdmc1ZlcnNpb24gfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb3h5OiBQcm94eVNlcnZpY2UpIHt9XG5cbiAgZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdmc0VuZHBvaW50PiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBuZXcgV2ZzRW5kcG9pbnQodGhpcy5wcm94eS5nZXRQcm94aWVkVXJsKHdmc1VybCkpLmlzUmVhZHkoKVxuICAgICkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBGZXRjaEVycm9yIHwgRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ25ldHdvcmsnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5jb3JzYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdodHRwJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUuaHR0cGApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAncGFyc2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5wYXJzZWApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAndW5zdXBwb3J0ZWRUeXBlJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5zdXBwb3J0ZWRUeXBlYClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkVXJsc0Zyb21XZnMoXG4gICAgd2ZzVXJsOiBzdHJpbmcsXG4gICAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxXZnNEb3dubG9hZFVybHM+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZnNFbmRwb2ludCh3ZnNVcmwpLnBpcGUoXG4gICAgICBtYXAoKGVuZHBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGVuZHBvaW50LmdldEZlYXR1cmVUeXBlcygpXG4gICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlID0gZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVTdW1tYXJ5KFxuICAgICAgICAgIGZlYXR1cmVUeXBlcy5sZW5ndGggPT09IDEgJiYgIWZlYXR1cmVUeXBlTmFtZVxuICAgICAgICAgICAgPyBmZWF0dXJlVHlwZXNbMF0ubmFtZVxuICAgICAgICAgICAgOiBmZWF0dXJlVHlwZU5hbWVcbiAgICAgICAgKVxuICAgICAgICBpZiAoIWZlYXR1cmVUeXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWxsOiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBbY3Vycl06IGVuZHBvaW50LmdldEZlYXR1cmVVcmwoZmVhdHVyZVR5cGUubmFtZSwge1xuICAgICAgICAgICAgICAgIG91dHB1dEZvcm1hdDogY3VycixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBnZW9qc29uOiBlbmRwb2ludC5zdXBwb3J0c0pzb24oZmVhdHVyZVR5cGUubmFtZSlcbiAgICAgICAgICAgID8gZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICAgICAgYXNKc29uOiB0cnVlLFxuICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZ21sOlxuICAgICAgICAgICAgZmVhdHVyZVR5cGUub3V0cHV0Rm9ybWF0cy5maW5kKChmKSA9PlxuICAgICAgICAgICAgICBmLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2dtbCcpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICAoZmVhdHVyZVR5cGUuZGVmYXVsdENycyA9PT0gJ0VQU0c6NDMyNicgfHxcbiAgICAgICAgICAgICAgZmVhdHVyZVR5cGUub3RoZXJDcnM/LmluY2x1ZGVzKCdFUFNHOjQzMjYnKSlcbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBmZWF0dXJlVXJsOiBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0OiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6ICdFUFNHOjQzMjYnLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IGZlYXR1cmVUeXBlLm5hbWUsXG4gICAgICAgICAgICAgICAgICB3ZnNWZXJzaW9uOiBlbmRwb2ludC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0V2ZzRmVhdHVyZUNvdW50KFxuICAgIHdmc1VybDogc3RyaW5nLFxuICAgIGZlYXR1cmVUeXBlTmFtZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChlbmRwb2ludCkgPT5cbiAgICAgICAgZnJvbShlbmRwb2ludC5nZXRGZWF0dXJlVHlwZUZ1bGwoZmVhdHVyZVR5cGVOYW1lKSkucGlwZShcbiAgICAgICAgICBtYXAoKGZlYXR1cmVUeXBlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZlYXR1cmVUeXBlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVHlwZS5vYmplY3RDb3VudFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZFVybEZyb21Fc3JpUmVzdChhcGlVcmw6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwoXG4gICAgICBgJHthcGlVcmx9L3F1ZXJ5P2Y9JHtmb3JtYXR9JndoZXJlPTE9MSZvdXRGaWVsZHM9KmBcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZExpbmtzRnJvbVdmcyhcbiAgICB3ZnNMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBPYnNlcnZhYmxlPERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdPiB7XG4gICAgLy8gUG91ciBETCB0b3V0ZXMgbGVzIGRvbm7DqWVzXG4gICAgcmV0dXJuIHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbVdmcyhcbiAgICAgIHdmc0xpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICB3ZnNMaW5rLm5hbWVcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHVybHMpID0+IHtcbiAgICAgICAgaWYgKHVybHMuZ2VvanNvbikge1xuICAgICAgICAgIHVybHMuYWxsWydhcHBsaWNhdGlvbi9qc29uJ10gPSB1cmxzLmdlb2pzb25cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsc1xuICAgICAgfSksXG4gICAgICBtYXAoKHVybHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VzOiBEYXRhc2V0T25saW5lUmVzb3VyY2VbXSA9IE9iamVjdC5rZXlzKHVybHMuYWxsKS5tYXAoXG4gICAgICAgICAgKGZvcm1hdCkgPT4gKHtcbiAgICAgICAgICAgIC4uLndmc0xpbmssXG4gICAgICAgICAgICBuYW1lOiB3ZnNMaW5rLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiAnZG93bmxvYWQnIGFzIGNvbnN0LFxuICAgICAgICAgICAgdXJsOiBuZXcgVVJMKHVybHMuYWxsW2Zvcm1hdF0pLFxuICAgICAgICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KFxuICAgICAgICAgICAgICBnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoZm9ybWF0KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIHJldHVybiByZXNvdXJjZXNcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgZ2V0RG93bmxvYWRMaW5rc0Zyb21PZ2NBcGlGZWF0dXJlcyhcbiAgICBvZ2NBcGlMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBQcm9taXNlPERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdPiB7XG4gICAgY29uc3QgY29sbGVjdGlvbkluZm8gPSBhd2FpdCB0aGlzLmdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkoXG4gICAgICBvZ2NBcGlMaW5rLnVybC5ocmVmXG4gICAgKVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhjb2xsZWN0aW9uSW5mby5idWxrRG93bmxvYWRMaW5rcykubWFwKChkb3dubG9hZExpbmspID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9nY0FwaUxpbmssXG4gICAgICAgIG5hbWU6IGNvbGxlY3Rpb25JbmZvLmlkLFxuICAgICAgICB0eXBlOiAnZG93bmxvYWQnLFxuICAgICAgICB1cmw6IG5ldyBVUkwoY29sbGVjdGlvbkluZm8uYnVsa0Rvd25sb2FkTGlua3NbZG93bmxvYWRMaW5rXSksXG4gICAgICAgIG1pbWVUeXBlOiBnZXRNaW1lVHlwZUZvckZvcm1hdChcbiAgICAgICAgICBnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoZG93bmxvYWRMaW5rKVxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXREb3dubG9hZFVybHNGcm9tT2djQXBpKHVybDogc3RyaW5nKTogUHJvbWlzZTxPZ2NBcGlDb2xsZWN0aW9uSW5mbz4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IE9nY0FwaUVuZHBvaW50KHVybClcbiAgICByZXR1cm4gYXdhaXQgZW5kcG9pbnQuZmVhdHVyZUNvbGxlY3Rpb25zXG4gICAgICAudGhlbigoY29sbGVjdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIGVuZHBvaW50LmdldENvbGxlY3Rpb25JbmZvKGNvbGxlY3Rpb25zWzBdKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvZ2MudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SXRlbXNGcm9tT2djQXBpKHVybDogc3RyaW5nKTogUHJvbWlzZTxPZ2NBcGlSZWNvcmRbXT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IE9nY0FwaUVuZHBvaW50KHVybClcbiAgICByZXR1cm4gYXdhaXQgZW5kcG9pbnQuZmVhdHVyZUNvbGxlY3Rpb25zXG4gICAgICAudGhlbigoY29sbGVjdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLmxlbmd0aFxuICAgICAgICAgID8gZW5kcG9pbnQuZ2V0Q29sbGVjdGlvbkl0ZW1zKGNvbGxlY3Rpb25zWzBdKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgb2djLnVucmVhY2hhYmxlLnVua25vd25gKVxuICAgICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldEdlb2RhdGFMaW5rc0Zyb21UbXMoXG4gICAgdG1zTGluazogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24sXG4gICAga2VlcE9yaWdpbmFsTGluayA9IGZhbHNlXG4gICk6IFByb21pc2U8RGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25bXT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IFRtc0VuZHBvaW50KFxuICAgICAgdG1zTGluay51cmwudG9TdHJpbmcoKS5yZXBsYWNlKC9cXC8/JC8sIGAvJHt0bXNMaW5rLm5hbWV9YClcbiAgICApXG4gICAgY29uc3QgdGlsZU1hcHMgPSBhd2FpdCBlbmRwb2ludC5hbGxUaWxlTWFwcy5jYXRjaCgoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG9nYy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICB9KVxuICAgIGlmICghdGlsZU1hcHM/Lmxlbmd0aCkgcmV0dXJuIG51bGxcblxuICAgIC8vIFRPRE86IGF0IHNvbWUgcG9pbnQgdXNlIHRoZSBpZGVudGlmaWVySW5TZXJ2aWNlIGZpZWxkIGlmIG1vcmUgdGhhdCBvbmUgbGF5ZXJzIGluIHRoZSBUTVMgc2VydmljZVxuICAgIGNvbnN0IHRpbGVNYXBJbmZvID0gYXdhaXQgZW5kcG9pbnQuZ2V0VGlsZU1hcEluZm8odGlsZU1hcHNbMF0uaHJlZilcblxuICAgIC8vIGNhc2UgMTogbm8gc3R5bGVzOyByZXR1cm4gYSBwbGFpbiBUTVMgbGlua1xuICAgIGlmICghdGlsZU1hcEluZm8/Lm1ldGFkYXRhPy5sZW5ndGgpIHJldHVybiBbdG1zTGlua11cblxuICAgIC8vIGNhc2UgMjogc3R5bGVzIHByZXNlbnQ7IHJldHVybiBlYWNoIGFzIGEgc2VwYXJhdGUgbGlua1xuICAgIGNvbnN0IHN0eWxlTGlua3MgPSB0aWxlTWFwSW5mby5tZXRhZGF0YVxuICAgICAgLmZpbHRlcigobWV0YSkgPT4gbWV0YS5ocmVmKVxuICAgICAgLm1hcCgobWV0YSkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG1ldGEuaHJlZi5zcGxpdCgnLycpLnBvcCgpIHx8ICcnXG4gICAgICAgIGNvbnN0IGxpbmtOYW1lID1cbiAgICAgICAgICB0bXNMaW5rLmRlc2NyaXB0aW9uIHx8ICgnbmFtZScgaW4gdG1zTGluayA/IHRtc0xpbmsubmFtZSA6ICcnKVxuICAgICAgICBjb25zdCBzdHlsZU5hbWUgPSBmaWxlTmFtZS5zcGxpdCgnLicpWzBdXG4gICAgICAgIGNvbnN0IG5hbWUgPSBgJHtsaW5rTmFtZX0gLSAke3N0eWxlTmFtZX1gXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICAgIHVybDogbmV3IFVSTChtZXRhLmhyZWYpLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sOiAnbWFwbGlicmUtc3R5bGUnLFxuICAgICAgICB9IGFzIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICAgICB9KVxuICAgIGlmIChrZWVwT3JpZ2luYWxMaW5rKSB7XG4gICAgICBzdHlsZUxpbmtzLnVuc2hpZnQodG1zTGluaylcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlTGlua3NcbiAgfVxuXG4gIGdldERvd25sb2FkTGlua3NGcm9tRXNyaVJlc3QoXG4gICAgZXNyaVJlc3RMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBEYXRhc2V0T25saW5lUmVzb3VyY2VbXSB7XG4gICAgcmV0dXJuIFsnanNvbicsICdnZW9qc29uJ10ubWFwKChmb3JtYXQpID0+ICh7XG4gICAgICAuLi5lc3JpUmVzdExpbmssXG4gICAgICB1cmw6IG5ldyBVUkwoXG4gICAgICAgIHRoaXMuZ2V0RG93bmxvYWRVcmxGcm9tRXNyaVJlc3QoZXNyaVJlc3RMaW5rLnVybC50b1N0cmluZygpLCBmb3JtYXQpXG4gICAgICApLFxuICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChmb3JtYXQpKSxcbiAgICB9KSlcbiAgfVxuXG4gIHJlYWRBc0dlb0pzb24oXG4gICAgbGluazogRGF0YXNldE9ubGluZVJlc291cmNlLFxuICAgIGNhY2hlQWN0aXZlOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRhc2V0KGxpbmssIGNhY2hlQWN0aXZlKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChkYXRhc2V0KSA9PiBkYXRhc2V0LnNlbGVjdEFsbCgpLnJlYWQoKSksXG4gICAgICBtYXAoKGZlYXR1cmVzKSA9PiAoe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICBmZWF0dXJlcyxcbiAgICAgIH0pKVxuICAgIClcbiAgfVxuXG4gIHdyaXRlQ29uZmlnQXNKU09OKGNvbmZpZzogRGF0YXZpekNvbmZpZ01vZGVsKTogRmlsZSB7XG4gICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uQ29udGVudF0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgJ2RhdGF2aXpDb25maWcuanNvbicsIHtcbiAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9KVxuICB9XG5cbiAgZ2V0RGF0YXNldChcbiAgICBsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UsXG4gICAgY2FjaGVBY3RpdmU6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxCYXNlUmVhZGVyPiB7XG4gICAgaWYgKGxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnICYmIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnd2ZzJykge1xuICAgICAgY29uc3Qgd2ZzVXJsRW5kcG9pbnQgPSB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwobGluay51cmwudG9TdHJpbmcoKSlcbiAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICBvcGVuRGF0YXNldChcbiAgICAgICAgICB3ZnNVcmxFbmRwb2ludCxcbiAgICAgICAgICAnd2ZzJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3ZnNGZWF0dXJlVHlwZTogbGluay5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2FjaGVBY3RpdmVcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAobGluay50eXBlID09PSAnZG93bmxvYWQnKSB7XG4gICAgICBjb25zdCBsaW5rUHJveGlmaWVkVXJsID0gdGhpcy5wcm94eS5nZXRQcm94aWVkVXJsKGxpbmsudXJsLnRvU3RyaW5nKCkpXG4gICAgICBjb25zdCBmb3JtYXQgPSBnZXRGaWxlRm9ybWF0KGxpbmspXG4gICAgICBjb25zdCBzdXBwb3J0ZWRUeXBlID1cbiAgICAgICAgU3VwcG9ydGVkVHlwZXMuaW5kZXhPZihmb3JtYXQgYXMgYW55KSA+IC0xXG4gICAgICAgICAgPyAoZm9ybWF0IGFzIFN1cHBvcnRlZFR5cGUpXG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICBvcGVuRGF0YXNldChsaW5rUHJveGlmaWVkVXJsLCBzdXBwb3J0ZWRUeXBlLCB1bmRlZmluZWQsIGNhY2hlQWN0aXZlKVxuICAgICAgKS5waXBlKClcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGluay50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnZXNyaVJlc3QnXG4gICAgKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KFxuICAgICAgICBsaW5rLnVybC50b1N0cmluZygpLFxuICAgICAgICAnZ2VvanNvbidcbiAgICAgIClcbiAgICAgIHJldHVybiBmcm9tKG9wZW5EYXRhc2V0KHVybCwgJ2dlb2pzb24nLCB1bmRlZmluZWQsIGNhY2hlQWN0aXZlKSkucGlwZSgpXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnICYmXG4gICAgICBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ29nY0ZlYXR1cmVzJ1xuICAgICkge1xuICAgICAgcmV0dXJuIGZyb20odGhpcy5nZXREb3dubG9hZFVybHNGcm9tT2djQXBpKGxpbmsudXJsLmhyZWYpKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGNvbGxlY3Rpb25JbmZvKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2VvanNvblVybCA9IGNvbGxlY3Rpb25JbmZvLmpzb25Eb3dubG9hZExpbmtcbiAgICAgICAgICByZXR1cm4gb3BlbkRhdGFzZXQoZ2VvanNvblVybCwgJ2dlb2pzb24nLCB1bmRlZmluZWQsIGNhY2hlQWN0aXZlKVxuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCh1cmwpID0+IHtcbiAgICAgICAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dmcy5nZW9qc29uZ21sLm5vdHN1cHBvcnRlZCcpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAncHJvdG9jb2wgbm90IHN1cHBvcnRlZCcpXG4gIH1cbn1cbiJdfQ==
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjL2xpYi9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsRUFFWCxXQUFXLEVBQ1gsWUFBWSxHQUdiLE1BQU0sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxFQUdMLFdBQVcsRUFFWCxjQUFjLEdBQ2YsTUFBTSw4Q0FBOEMsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDcEIsWUFBWSxHQUNiLE1BQU0sd0NBQXdDLENBQUE7QUFFL0MsT0FBTyxFQUFFLElBQUksRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7QUFPaEUsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7QUFDOUIsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7QUFDOUIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUE7QUFDakMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUE7QUFDakMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUE7QUFDckMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUE7QUFDakMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFDL0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7QUFDNUIsTUFBTSxDQUFDLHFCQUFx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LEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBQ25ELENBQUM7K0dBeFVVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQge1xuICBPZ2NBcGlDb2xsZWN0aW9uSW5mbyxcbiAgT2djQXBpRW5kcG9pbnQsXG4gIE9nY0FwaVJlY29yZCxcbiAgV2ZzRW5kcG9pbnQsXG4gIFdmc1ZlcnNpb24sXG4gIFRtc0VuZHBvaW50LFxuICBTdGFjRW5kcG9pbnQsXG4gIEdldENvbGxlY3Rpb25JdGVtc09wdGlvbnMsXG4gIFN0YWNJdGVtc0RvY3VtZW50LFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHtcbiAgQmFzZVJlYWRlcixcbiAgRmV0Y2hFcnJvcixcbiAgb3BlbkRhdGFzZXQsXG4gIFN1cHBvcnRlZFR5cGUsXG4gIFN1cHBvcnRlZFR5cGVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7XG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dCxcbiAgZ2V0TWltZVR5cGVGb3JGb3JtYXQsXG4gIFByb3h5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgRGF0YXZpekNvbmZpZ01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5cbm1hcmtlcignd2ZzLnVucmVhY2hhYmxlLmNvcnMnKVxubWFya2VyKCd3ZnMudW5yZWFjaGFibGUuaHR0cCcpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IuZm9yYmlkZGVuJylcbm1hcmtlcignd2ZzLnVucmVhY2hhYmxlLnVua25vd24nKVxubWFya2VyKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxubWFya2VyKCd3ZnMuZ2VvanNvbmdtbC5ub3RzdXBwb3J0ZWQnKVxubWFya2VyKCdvZ2MudW5yZWFjaGFibGUudW5rbm93bicpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IubmV0d29yaycpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IuaHR0cCcpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IucGFyc2UnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLnVuc3VwcG9ydGVkVHlwZScpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IudW5rbm93bicpXG5cbmludGVyZmFjZSBXZnNEb3dubG9hZFVybHMge1xuICBhbGw6IHsgW2Zvcm1hdDogc3RyaW5nXTogc3RyaW5nIH1cbiAgZ2VvanNvbjogc3RyaW5nXG4gIGdtbDogeyBmZWF0dXJlVXJsOiBzdHJpbmc7IG5hbWVzcGFjZTogc3RyaW5nOyB3ZnNWZXJzaW9uOiBXZnNWZXJzaW9uIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm94eTogUHJveHlTZXJ2aWNlKSB7fVxuXG4gIGdldFdmc0VuZHBvaW50KHdmc1VybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxXZnNFbmRwb2ludD4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgbmV3IFdmc0VuZHBvaW50KHRoaXMucHJveHkuZ2V0UHJveGllZFVybCh3ZnNVcmwpKS5pc1JlYWR5KClcbiAgICApLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogRmV0Y2hFcnJvciB8IEVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICduZXR3b3JrJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUuY29yc2ApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLmh0dHBgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ3BhcnNlJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUucGFyc2VgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ3Vuc3VwcG9ydGVkVHlwZScpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLnVuc3VwcG9ydGVkVHlwZWApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLnVua25vd25gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZFVybHNGcm9tV2ZzKFxuICAgIHdmc1VybDogc3RyaW5nLFxuICAgIGZlYXR1cmVUeXBlTmFtZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8V2ZzRG93bmxvYWRVcmxzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsKS5waXBlKFxuICAgICAgbWFwKChlbmRwb2ludCkgPT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlVHlwZXMgPSBlbmRwb2ludC5nZXRGZWF0dXJlVHlwZXMoKVxuICAgICAgICBjb25zdCBmZWF0dXJlVHlwZSA9IGVuZHBvaW50LmdldEZlYXR1cmVUeXBlU3VtbWFyeShcbiAgICAgICAgICBmZWF0dXJlVHlwZXMubGVuZ3RoID09PSAxICYmICFmZWF0dXJlVHlwZU5hbWVcbiAgICAgICAgICAgID8gZmVhdHVyZVR5cGVzWzBdLm5hbWVcbiAgICAgICAgICAgIDogZmVhdHVyZVR5cGVOYW1lXG4gICAgICAgIClcbiAgICAgICAgaWYgKCFmZWF0dXJlVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdmc1ZlcnNpb24gPSBlbmRwb2ludC5nZXRWZXJzaW9uKClcbiAgICAgICAgY29uc3QgYWRkU3JzTmFtZSA9IHdmc1ZlcnNpb24gPT09ICcxLjEuMCcgfHwgd2ZzVmVyc2lvbiA9PT0gJzIuMC4wJ1xuICAgICAgICBjb25zdCBkZWZhdWx0Q3JzID0gZmVhdHVyZVR5cGUuZGVmYXVsdENyc1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEFkZE91dHB1dENycyA9IGFkZFNyc05hbWUgJiYgZGVmYXVsdENyc1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWxsOiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNKc29uRm9ybWF0ID0gY3Vyci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdqc29uJylcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyXTogZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0OiBjdXJyLFxuICAgICAgICAgICAgICAgIC4uLihzaG91bGRBZGRPdXRwdXRDcnMgJiZcbiAgICAgICAgICAgICAgICAgICFpc0pzb25Gb3JtYXQgJiYge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6IGRlZmF1bHRDcnMsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwge30pLFxuICAgICAgICAgIGdlb2pzb246IGVuZHBvaW50LnN1cHBvcnRzSnNvbihmZWF0dXJlVHlwZS5uYW1lKVxuICAgICAgICAgICAgPyBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgICAgICAgb3V0cHV0Q3JzOiAnRVBTRzo0MzI2JyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBnbWw6XG4gICAgICAgICAgICBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgICAgIGYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZ21sJylcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIChmZWF0dXJlVHlwZS5kZWZhdWx0Q3JzID09PSAnRVBTRzo0MzI2JyB8fFxuICAgICAgICAgICAgICBmZWF0dXJlVHlwZS5vdGhlckNycz8uaW5jbHVkZXMoJ0VQU0c6NDMyNicpKVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVVcmw6IGVuZHBvaW50LmdldEZlYXR1cmVVcmwoZmVhdHVyZVR5cGUubmFtZSwge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRGb3JtYXQ6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMuZmluZCgoZikgPT5cbiAgICAgICAgICAgICAgICAgICAgICBmLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2dtbCcpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogZmVhdHVyZVR5cGUubmFtZSxcbiAgICAgICAgICAgICAgICAgIHdmc1ZlcnNpb246IGVuZHBvaW50LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRXZnNGZWF0dXJlQ291bnQoXG4gICAgd2ZzVXJsOiBzdHJpbmcsXG4gICAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZnNFbmRwb2ludCh3ZnNVcmwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGVuZHBvaW50KSA9PlxuICAgICAgICBmcm9tKGVuZHBvaW50LmdldEZlYXR1cmVUeXBlRnVsbChmZWF0dXJlVHlwZU5hbWUpKS5waXBlKFxuICAgICAgICAgIG1hcCgoZmVhdHVyZVR5cGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVUeXBlLm9iamVjdENvdW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KGFwaVVybDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0UHJveGllZFVybChcbiAgICAgIGAke2FwaVVybH0vcXVlcnk/Zj0ke2Zvcm1hdH0md2hlcmU9MT0xJm91dEZpZWxkcz0qYFxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkTGlua3NGcm9tV2ZzKFxuICAgIHdmc0xpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IE9ic2VydmFibGU8RGF0YXNldE9ubGluZVJlc291cmNlW10+IHtcbiAgICAvLyBQb3VyIERMIHRvdXRlcyBsZXMgZG9ubsOpZXNcbiAgICByZXR1cm4gdGhpcy5nZXREb3dubG9hZFVybHNGcm9tV2ZzKFxuICAgICAgd2ZzTGluay51cmwudG9TdHJpbmcoKSxcbiAgICAgIHdmc0xpbmsubmFtZVxuICAgICkucGlwZShcbiAgICAgIG1hcCgodXJscykgPT4ge1xuICAgICAgICBpZiAodXJscy5nZW9qc29uKSB7XG4gICAgICAgICAgdXJscy5hbGxbJ2FwcGxpY2F0aW9uL2pzb24nXSA9IHVybHMuZ2VvanNvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmxzXG4gICAgICB9KSxcbiAgICAgIG1hcCgodXJscykgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZXM6IERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdID0gT2JqZWN0LmtleXModXJscy5hbGwpLm1hcChcbiAgICAgICAgICAoZm9ybWF0KSA9PiAoe1xuICAgICAgICAgICAgLi4ud2ZzTGluayxcbiAgICAgICAgICAgIG5hbWU6IHdmc0xpbmsubmFtZSxcbiAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCcgYXMgY29uc3QsXG4gICAgICAgICAgICB1cmw6IG5ldyBVUkwodXJscy5hbGxbZm9ybWF0XSksXG4gICAgICAgICAgICBtaW1lVHlwZTogZ2V0TWltZVR5cGVGb3JGb3JtYXQoXG4gICAgICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChmb3JtYXQpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHJlc291cmNlc1xuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBhc3luYyBnZXREb3dubG9hZExpbmtzRnJvbU9nY0FwaUZlYXR1cmVzKFxuICAgIG9nY0FwaUxpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IFByb21pc2U8RGF0YXNldE9ubGluZVJlc291cmNlW10+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uSW5mbyA9IGF3YWl0IHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbU9nY0FwaShcbiAgICAgIG9nY0FwaUxpbmsudXJsLmhyZWZcbiAgICApXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JbmZvLmJ1bGtEb3dubG9hZExpbmtzKS5tYXAoKGRvd25sb2FkTGluaykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2djQXBpTGluayxcbiAgICAgICAgbmFtZTogY29sbGVjdGlvbkluZm8uaWQsXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIHVybDogbmV3IFVSTChjb2xsZWN0aW9uSW5mby5idWxrRG93bmxvYWRMaW5rc1tkb3dubG9hZExpbmtdKSxcbiAgICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KFxuICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChkb3dubG9hZExpbmspXG4gICAgICAgICksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkodXJsOiBzdHJpbmcpOiBQcm9taXNlPE9nY0FwaUNvbGxlY3Rpb25JbmZvPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgT2djQXBpRW5kcG9pbnQodXJsKVxuICAgIHJldHVybiBhd2FpdCBlbmRwb2ludC5mZWF0dXJlQ29sbGVjdGlvbnNcbiAgICAgIC50aGVuKChjb2xsZWN0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gZW5kcG9pbnQuZ2V0Q29sbGVjdGlvbkluZm8oY29sbGVjdGlvbnNbMF0pXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG9nYy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRJdGVtc0Zyb21PZ2NBcGkodXJsOiBzdHJpbmcpOiBQcm9taXNlPE9nY0FwaVJlY29yZFtdPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgT2djQXBpRW5kcG9pbnQodXJsKVxuICAgIHJldHVybiBhd2FpdCBlbmRwb2ludC5mZWF0dXJlQ29sbGVjdGlvbnNcbiAgICAgIC50aGVuKChjb2xsZWN0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMubGVuZ3RoXG4gICAgICAgICAgPyBlbmRwb2ludC5nZXRDb2xsZWN0aW9uSXRlbXMoY29sbGVjdGlvbnNbMF0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvZ2MudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SXRlbXNGcm9tU3RhY0FwaShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiBHZXRDb2xsZWN0aW9uSXRlbXNPcHRpb25zXG4gICk6IFByb21pc2U8U3RhY0l0ZW1zRG9jdW1lbnQ+IHtcbiAgICByZXR1cm4gYXdhaXQgU3RhY0VuZHBvaW50LmdldEl0ZW1zRnJvbVVybCh1cmwsIG9wdGlvbnMpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvZ2MudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0R2VvZGF0YUxpbmtzRnJvbVRtcyhcbiAgICB0bXNMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgICBrZWVwT3JpZ2luYWxMaW5rID0gZmFsc2VcbiAgKTogUHJvbWlzZTxEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbltdPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgVG1zRW5kcG9pbnQoXG4gICAgICB0bXNMaW5rLnVybC50b1N0cmluZygpLnJlcGxhY2UoL1xcLz8kLywgYC8ke3Rtc0xpbmsubmFtZX1gKVxuICAgIClcbiAgICBjb25zdCB0aWxlTWFwcyA9IGF3YWl0IGVuZHBvaW50LmFsbFRpbGVNYXBzLmNhdGNoKCgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgb2djLnVucmVhY2hhYmxlLnVua25vd25gKVxuICAgIH0pXG4gICAgaWYgKCF0aWxlTWFwcz8ubGVuZ3RoKSByZXR1cm4gbnVsbFxuXG4gICAgLy8gVE9ETzogYXQgc29tZSBwb2ludCB1c2UgdGhlIGlkZW50aWZpZXJJblNlcnZpY2UgZmllbGQgaWYgbW9yZSB0aGF0IG9uZSBsYXllcnMgaW4gdGhlIFRNUyBzZXJ2aWNlXG4gICAgY29uc3QgdGlsZU1hcEluZm8gPSBhd2FpdCBlbmRwb2ludC5nZXRUaWxlTWFwSW5mbyh0aWxlTWFwc1swXS5ocmVmKVxuXG4gICAgLy8gY2FzZSAxOiBubyBzdHlsZXM7IHJldHVybiBhIHBsYWluIFRNUyBsaW5rXG4gICAgaWYgKCF0aWxlTWFwSW5mbz8ubWV0YWRhdGE/Lmxlbmd0aCkgcmV0dXJuIFt0bXNMaW5rXVxuXG4gICAgLy8gY2FzZSAyOiBzdHlsZXMgcHJlc2VudDsgcmV0dXJuIGVhY2ggYXMgYSBzZXBhcmF0ZSBsaW5rXG4gICAgY29uc3Qgc3R5bGVMaW5rcyA9IHRpbGVNYXBJbmZvLm1ldGFkYXRhXG4gICAgICAuZmlsdGVyKChtZXRhKSA9PiBtZXRhLmhyZWYpXG4gICAgICAubWFwKChtZXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gbWV0YS5ocmVmLnNwbGl0KCcvJykucG9wKCkgfHwgJydcbiAgICAgICAgY29uc3QgbGlua05hbWUgPVxuICAgICAgICAgIHRtc0xpbmsuZGVzY3JpcHRpb24gfHwgKCduYW1lJyBpbiB0bXNMaW5rID8gdG1zTGluay5uYW1lIDogJycpXG4gICAgICAgIGNvbnN0IHN0eWxlTmFtZSA9IGZpbGVOYW1lLnNwbGl0KCcuJylbMF1cbiAgICAgICAgY29uc3QgbmFtZSA9IGAke2xpbmtOYW1lfSAtICR7c3R5bGVOYW1lfWBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnc2VydmljZScsXG4gICAgICAgICAgdXJsOiBuZXcgVVJMKG1ldGEuaHJlZiksXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6ICdtYXBsaWJyZS1zdHlsZScsXG4gICAgICAgIH0gYXMgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgICAgIH0pXG4gICAgaWYgKGtlZXBPcmlnaW5hbExpbmspIHtcbiAgICAgIHN0eWxlTGlua3MudW5zaGlmdCh0bXNMaW5rKVxuICAgIH1cbiAgICByZXR1cm4gc3R5bGVMaW5rc1xuICB9XG5cbiAgZ2V0RG93bmxvYWRMaW5rc0Zyb21Fc3JpUmVzdChcbiAgICBlc3JpUmVzdExpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdIHtcbiAgICByZXR1cm4gWydqc29uJywgJ2dlb2pzb24nXS5tYXAoKGZvcm1hdCkgPT4gKHtcbiAgICAgIC4uLmVzcmlSZXN0TGluayxcbiAgICAgIHVybDogbmV3IFVSTChcbiAgICAgICAgdGhpcy5nZXREb3dubG9hZFVybEZyb21Fc3JpUmVzdChlc3JpUmVzdExpbmsudXJsLnRvU3RyaW5nKCksIGZvcm1hdClcbiAgICAgICksXG4gICAgICBtaW1lVHlwZTogZ2V0TWltZVR5cGVGb3JGb3JtYXQoZ2V0RmlsZUZvcm1hdEZyb21TZXJ2aWNlT3V0cHV0KGZvcm1hdCkpLFxuICAgIH0pKVxuICB9XG5cbiAgcmVhZEFzR2VvSnNvbihcbiAgICBsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UsXG4gICAgY2FjaGVBY3RpdmU6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldERhdGFzZXQobGluaywgY2FjaGVBY3RpdmUpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGRhdGFzZXQpID0+IGRhdGFzZXQuc2VsZWN0QWxsKCkucmVhZCgpKSxcbiAgICAgIG1hcCgoZmVhdHVyZXMpID0+ICh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzLFxuICAgICAgfSkpXG4gICAgKVxuICB9XG5cbiAgd3JpdGVDb25maWdBc0pTT04oY29uZmlnOiBEYXRhdml6Q29uZmlnTW9kZWwpOiBGaWxlIHtcbiAgICBjb25zdCBqc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMilcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2pzb25Db250ZW50XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSlcbiAgICByZXR1cm4gbmV3IEZpbGUoW2Jsb2JdLCAnZGF0YXZpekNvbmZpZy5qc29uJywge1xuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH0pXG4gIH1cblxuICBnZXREYXRhc2V0KFxuICAgIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgICBjYWNoZUFjdGl2ZTogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPEJhc2VSZWFkZXI+IHtcbiAgICBpZiAobGluay50eXBlID09PSAnc2VydmljZScgJiYgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3ZnMnKSB7XG4gICAgICBjb25zdCB3ZnNVcmxFbmRwb2ludCA9IHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsaW5rLnVybC50b1N0cmluZygpKVxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KFxuICAgICAgICAgIHdmc1VybEVuZHBvaW50LFxuICAgICAgICAgICd3ZnMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdmc0ZlYXR1cmVUeXBlOiBsaW5rLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYWNoZUFjdGl2ZVxuICAgICAgICApXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChsaW5rLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICAgIGNvbnN0IGxpbmtQcm94aWZpZWRVcmwgPSB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwobGluay51cmwudG9TdHJpbmcoKSlcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgICAgIGNvbnN0IHN1cHBvcnRlZFR5cGUgPVxuICAgICAgICBTdXBwb3J0ZWRUeXBlcy5pbmRleE9mKGZvcm1hdCBhcyBhbnkpID4gLTFcbiAgICAgICAgICA/IChmb3JtYXQgYXMgU3VwcG9ydGVkVHlwZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KGxpbmtQcm94aWZpZWRVcmwsIHN1cHBvcnRlZFR5cGUsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpXG4gICAgICApLnBpcGUoKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdlc3JpUmVzdCdcbiAgICApIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0RG93bmxvYWRVcmxGcm9tRXNyaVJlc3QoXG4gICAgICAgIGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICAgICdnZW9qc29uJ1xuICAgICAgKVxuICAgICAgcmV0dXJuIGZyb20ob3BlbkRhdGFzZXQodXJsLCAnZ2VvanNvbicsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpKS5waXBlKClcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGluay50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnb2djRmVhdHVyZXMnXG4gICAgKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLmdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkobGluay51cmwuaHJlZikpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbkluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBnZW9qc29uVXJsID0gY29sbGVjdGlvbkluZm8uanNvbkRvd25sb2FkTGlua1xuICAgICAgICAgIHJldHVybiBvcGVuRGF0YXNldChnZW9qc29uVXJsLCAnZ2VvanNvbicsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpXG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHVybCkgPT4ge1xuICAgICAgICAgIGlmICh1cmwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmdlb2pzb25nbWwubm90c3VwcG9ydGVkJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdwcm90b2NvbCBub3Qgc3VwcG9ydGVkJylcbiAgfVxufVxuIl19
@@ -72,8 +72,28 @@ export class FormFieldComponent {
72
72
  get valueAsOnlineResources() {
73
73
  return this.value;
74
74
  }
75
+ get valueAsResourceIdentifierCode() {
76
+ const identifiers = this.value;
77
+ return identifiers?.[0]?.code || '';
78
+ }
79
+ handleResourceIdentifierChange(code) {
80
+ const identifiers = this.value;
81
+ if (!code) {
82
+ this.valueChange.emit(identifiers?.slice(1) || []);
83
+ return;
84
+ }
85
+ if (identifiers?.[0]) {
86
+ this.valueChange.emit([
87
+ { ...identifiers[0], code },
88
+ ...identifiers.slice(1),
89
+ ]);
90
+ }
91
+ else {
92
+ this.valueChange.emit([{ code }]);
93
+ }
94
+ }
75
95
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i3.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i3.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
97
  }
78
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
79
99
  type: Component,
@@ -100,7 +120,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
100
120
  FormFieldSpatialToggleComponent,
101
121
  FormFieldTopicsComponent,
102
122
  TextFieldModule,
103
- ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
123
+ ], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
104
124
  }], propDecorators: { uniqueIdentifier: [{
105
125
  type: Input
106
126
  }], model: [{
@@ -119,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
119
139
  type: ViewChild,
120
140
  args: ['titleInput']
121
141
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBVzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixpQ0FBaUMsR0FDbEMsTUFBTSxHQUFHLENBQUE7QUFNVixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQTtBQUNySSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQTtBQUNySSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxRUFB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QkFBMEIsbUhBQzFCLDZCQUE2QixpSkFDN0Isc0NBQXNDLG1GQUN0QywrQkFBK0IsNEVBQy9CLHdCQUF3QixnSEFDeEIsZUFBZTs7NEZBR04sa0JBQWtCO2tCQS9COUIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6Qix5QkFBeUI7d0JBQ3pCLHNCQUFzQjt3QkFDdEIsaUNBQWlDO3dCQUNqQyxpQ0FBaUM7d0JBQ2pDLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QiwrQkFBK0I7d0JBQy9CLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3dCQUMzQixxQ0FBcUM7d0JBQ3JDLGlDQUFpQzt3QkFDakMscUNBQXFDO3dCQUNyQywwQkFBMEI7d0JBQzFCLDZCQUE2Qjt3QkFDN0Isc0NBQXNDO3dCQUN0QywrQkFBK0I7d0JBQy9CLHdCQUF3Qjt3QkFDeEIsZUFBZTtxQkFDaEI7OEJBR1EsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXRUZW1wb3JhbEV4dGVudCxcbiAgR3JhcGhpY092ZXJ2aWV3LFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBGb3JtRmllbGRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBGb3JtRmllbGREYXRlQ29tcG9uZW50LFxuICBGb3JtRmllbGRMaWNlbnNlQ29tcG9uZW50LFxuICBGb3JtRmllbGRUZW1wb3JhbEV4dGVudHNDb21wb25lbnQsXG59IGZyb20gJy4nXG5pbXBvcnQge1xuICBGaWVsZE1vZGVsU3BlY2lmaWVyLFxuICBGb3JtRmllbGRDb21wb25lbnROYW1lLFxuICBGb3JtRmllbGRDb25maWcsXG59IGZyb20gJy4uLy4uLy4uL21vZGVscydcbmltcG9ydCB7IEZvcm1GaWVsZENvbnRhY3RzRm9yUmVzb3VyY2VDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnRhY3RzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnRhY3RzL2Zvcm0tZmllbGQtY29udGFjdHMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkS2V5d29yZHNDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQta2V5d29yZHMvZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRPbmxpbmVMaW5rUmVzb3VyY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRPbmxpbmVSZXNvdXJjZXNDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkT3ZlcnZpZXdzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLW92ZXJ2aWV3cy9mb3JtLWZpZWxkLW92ZXJ2aWV3cy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRSaWNoQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXJpY2gvZm9ybS1maWVsZC1yaWNoLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZFNpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1zaW1wbGUvZm9ybS1maWVsZC1zaW1wbGUuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkU3BhdGlhbEV4dGVudENvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1zcGF0aWFsLWV4dGVudC9mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50LmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZFVwZGF0ZUZyZXF1ZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5L2Zvcm0tZmllbGQtdXBkYXRlLWZyZXF1ZW5jeS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRDb25zdHJhaW50c1Nob3J0Y3V0c0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHMvZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHMuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29uc3RyYWludHNDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29uc3RyYWludHMvZm9ybS1maWVsZC1jb25zdHJhaW50cy5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0RmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCdcbmltcG9ydCB7IEZvcm1GaWVsZFNwYXRpYWxUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtc3BhdGlhbC10b2dnbGUvZm9ybS1maWVsZC1zcGF0aWFsLXRvZ2dsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRUb3BpY3NDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtdG9waWNzL2Zvcm0tZmllbGQtdG9waWNzLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBGb3JtRmllbGRXcmFwcGVyQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZExpY2Vuc2VDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkRGF0ZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRVcGRhdGVGcmVxdWVuY3lDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkVGVtcG9yYWxFeHRlbnRzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFNpbXBsZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRSaWNoQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFNwYXRpYWxFeHRlbnRDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkS2V5d29yZHNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT3ZlcnZpZXdzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbnRhY3RzRm9yUmVzb3VyY2VDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT25saW5lUmVzb3VyY2VzQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZE9ubGluZUxpbmtSZXNvdXJjZXNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQ29udGFjdHNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQ29uc3RyYWludHNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQ29uc3RyYWludHNTaG9ydGN1dHNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkU3BhdGlhbFRvZ2dsZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRUb3BpY3NDb21wb25lbnQsXG4gICAgVGV4dEZpZWxkTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb21wb25lbnQge1xuICBASW5wdXQoKSB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgQElucHV0KCkgbW9kZWw6IENhdGFsb2dSZWNvcmRLZXlzXG4gIEBJbnB1dCgpIG1vZGVsU3BlY2lmaWVyOiBGaWVsZE1vZGVsU3BlY2lmaWVyXG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWU6IEZvcm1GaWVsZENvbXBvbmVudE5hbWVcblxuICBASW5wdXQoKSBjb25maWc6IEZvcm1GaWVsZENvbmZpZ1xuICBASW5wdXQoKSB2YWx1ZTogdW5rbm93blxuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgQFZpZXdDaGlsZCgndGl0bGVJbnB1dCcpIHRpdGxlSW5wdXQ6IEVsZW1lbnRSZWZcbiAgaXNPcGVuRGF0YSA9IGZhbHNlXG5cbiAgdG9nZ2xlSXNPcGVuRGF0YShldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNPcGVuRGF0YSA9IGV2ZW50XG4gIH1cblxuICBmb2N1c1RpdGxlSW5wdXQoKSB7XG4gICAgdGhpcy50aXRsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgZ2V0IHdpdGhvdXRXcmFwcGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1vZGVsID09PSAndGl0bGUnIHx8XG4gICAgICB0aGlzLm1vZGVsID09PSAnYWJzdHJhY3QnIHx8XG4gICAgICB0aGlzLm1vZGVsID09PSAnbGVnYWxDb25zdHJhaW50cycgfHxcbiAgICAgIHRoaXMubW9kZWwgPT09ICdzZWN1cml0eUNvbnN0cmFpbnRzJyB8fFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ290aGVyQ29uc3RyYWludHMnIHx8XG4gICAgICB0aGlzLmNvbXBvbmVudE5hbWUgPT09ICdmb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cydcbiAgICApXG4gIH1cblxuICBnZXQgdmFsdWVBc1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBzdHJpbmdcbiAgfVxuICBnZXQgdmFsdWVBc0RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgRGF0ZVxuICB9XG5cbiAgZ2V0IHZhbHVlQXNPdmVydmlld3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8R3JhcGhpY092ZXJ2aWV3PlxuICB9XG4gIGdldCB2YWx1ZUFzVXBkYXRlRnJlcXVlbmN5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIFVwZGF0ZUZyZXF1ZW5jeVxuICB9XG4gIGdldCB2YWx1ZUFzVGVtcG9yYWxFeHRlbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PERhdGFzZXRUZW1wb3JhbEV4dGVudD5cbiAgfVxuICBnZXQgdmFsdWVBc0tleXdvcmRzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PEtleXdvcmQ+XG4gIH1cbiAgZ2V0IHZhbHVlQXNUb3BpY3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8c3RyaW5nPlxuICB9XG4gIGdldCB2YWx1ZUFzQ29uc3RyYWludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8Q29uc3RyYWludD5cbiAgfVxuICBnZXQgdmFsdWVBc0luZGl2aWR1YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIEFycmF5PEluZGl2aWR1YWw+XG4gIH1cbiAgZ2V0IHZhbHVlQXNPbmxpbmVSZXNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8T25saW5lUmVzb3VyY2U+XG4gIH1cbn1cbiIsIjwhLS0gVEVNUE9SQVJZIC0gZGlzYWJsaW5nIHRoZSBvcGVuIGRhdGEgc3dpdGNoIC0tPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwgPT09ICdsaWNlbnNlcydcIj5cbiAgPGduLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhXG4gICAgW3ZhbHVlXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgKG9wZW5EYXRhQ2hhbmdlKT1cInRvZ2dsZUlzT3BlbkRhdGEoJGV2ZW50KVwiXG4gID48L2duLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhPlxuPC9uZy1jb250YWluZXI+IC0tPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aXRob3V0V3JhcHBlcjsgZWxzZSB3aXRoR2VuZXJpY1dyYXBwZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3dpdGhHZW5lcmljV3JhcHBlcj5cbiAgICA8Z24tdWktZm9ybS1maWVsZC13cmFwcGVyXG4gICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaGludF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2duLXVpLWZvcm0tZmllbGQtd3JhcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2ZpZWxkQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGl0bGUnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXN0YXJ0IGl0ZW1zLWNlbnRlciBnYXAtMyBtYi1bMTJweF1cIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgI3RpdGxlSW5wdXRcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiMVwiXG4gICAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkVGl0bGVJbnB1dFwiXG4gICAgICAgICAgY2xhc3M9XCJncm93IGZvbnQtdGl0bGUgdGV4dC0zeGwgZm9udC1ub3JtYWwgb3ZlcmZsb3ctaGlkZGVuIHRleHQtYmxhY2svODBcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC50aXRsZS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgICBcIlxuICAgICAgICAgID57eyB2YWx1ZUFzU3RyaW5nIH19PC90ZXh0YXJlYVxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBzZWxmLXN0YXJ0IG10LTAuNVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZ24tdWktaWNvbi1zbWFsbCBtLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvY3VzVGl0bGVJbnB1dCgpXCJcbiAgICAgICAgICAgID5lZGl0PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5oaW50S2V5XCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBnbi11aS1pY29uLXNtYWxsIG0tMlwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIGhlbHBcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Fic3RyYWN0J1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtcmljaFxuICAgICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtoaW50XT1cImNvbmZpZy5oaW50S2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzU3RyaW5nXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLXJpY2g+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ292ZXJ2aWV3cydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLW92ZXJ2aWV3c1xuICAgICAgICBbbWV0YWRhdGFVdWlkXT1cInVuaXF1ZUlkZW50aWZpZXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc092ZXJ2aWV3c1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1vdmVydmlld3M+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Jlc291cmNlSWRlbnRpZmllcidcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLXNpbXBsZVxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc1N0cmluZ1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1zaW1wbGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Jlc291cmNlQ3JlYXRlZCdcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWRhdGVcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNEYXRlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWRhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Jlc291cmNlVXBkYXRlZCdcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWRhdGVcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNEYXRlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWRhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3VwZGF0ZUZyZXF1ZW5jeSdcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLXVwZGF0ZS1mcmVxdWVuY3lcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNVcGRhdGVGcmVxdWVuY3lcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtdXBkYXRlLWZyZXF1ZW5jeT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGVtcG9yYWxFeHRlbnRzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtdGVtcG9yYWwtZXh0ZW50c1xuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc1RlbXBvcmFsRXh0ZW50c1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC10ZW1wb3JhbC1leHRlbnRzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzcGF0aWFsRXh0ZW50cydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50PjwvZ24tdWktZm9ybS1maWVsZC1zcGF0aWFsLWV4dGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIna2V5d29yZHMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1rZXl3b3Jkc1xuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc0tleXdvcmRzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWtleXdvcmRzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0b3BpY3MnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC10b3BpY3NcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNUb3BpY3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtdG9waWNzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaWNlbnNlcydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWxpY2Vuc2VcbiAgICAgICAgW2xhYmVsXT1cImNvbmZpZy5sYWJlbEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbcmVjb3JkTGljZW5jZXNdPVwidmFsdWVBc0NvbnN0cmFpbnRzXCJcbiAgICAgICAgKHJlY29yZExpY2VuY2VzQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWxpY2Vuc2U+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGVnYWxDb25zdHJhaW50cydcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtRmllbGRDb25zdHJhaW50c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWN1cml0eUNvbnN0cmFpbnRzJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1GaWVsZENvbnN0cmFpbnRzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ290aGVyQ29uc3RyYWludHMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUZpZWxkQ29uc3RyYWludHNcIj48L25nLWNvbnRhaW5lclxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2Zvcm1GaWVsZENvbnN0cmFpbnRzPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtY29uc3RyYWludHNcbiAgICAgICAgW2xhYmVsXT1cImNvbmZpZy5sYWJlbEtleVwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzQ29uc3RyYWludHNcIlxuICAgICAgICBbY29uc3RyYWludFR5cGVdPVwibW9kZWxcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtY29uc3RyYWludHNcbiAgICA+PC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb250YWN0c0ZvclJlc291cmNlJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzSW5kaXZpZHVhbHNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb250YWN0cydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWNvbnRhY3RzXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzSW5kaXZpZHVhbHNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtY29udGFjdHM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ29ubGluZVJlc291cmNlcydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLW9ubGluZS1yZXNvdXJjZXNcbiAgICAgICAgKm5nSWY9XCJtb2RlbFNwZWNpZmllciA9PT0gJ29ubGluZVJlc291cmNlVHlwZTohbGluaydcIlxuICAgICAgICBbbWV0YWRhdGFVdWlkXT1cInVuaXF1ZUlkZW50aWZpZXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc09ubGluZVJlc291cmNlc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidvbmxpbmVSZXNvdXJjZXMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXNcbiAgICAgICAgKm5nSWY9XCJtb2RlbFNwZWNpZmllciA9PT0gJ29ubGluZVJlc291cmNlVHlwZTpsaW5rJ1wiXG4gICAgICAgIFttZXRhZGF0YVV1aWRdPVwidW5pcXVlSWRlbnRpZmllclwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzT25saW5lUmVzb3VyY2VzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2RlbFwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbXBvbmVudE5hbWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cydcIj5cbiAgICAgICAgPGduLXVpLWZvcm0tZmllbGQtY29uc3RyYWludHMtc2hvcnRjdXRzPjwvZ24tdWktZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb3JtLWZpZWxkLXNwYXRpYWwtdG9nZ2xlJ1wiPlxuICAgICAgICA8Z24tdWktZm9ybS1maWVsZC1zcGF0aWFsLXRvZ2dsZT48L2duLXVpLWZvcm0tZmllbGQtc3BhdGlhbC10b2dnbGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBVzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNuRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixpQ0FBaUMsR0FDbEMsTUFBTSxHQUFHLENBQUE7QUFNVixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQTtBQUNySSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQTtBQUNySSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxRUFB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QXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLCtCQUErQjt3QkFDL0IsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLHFDQUFxQzt3QkFDckMsaUNBQWlDO3dCQUNqQyxxQ0FBcUM7d0JBQ3JDLDBCQUEwQjt3QkFDMUIsNkJBQTZCO3dCQUM3QixzQ0FBc0M7d0JBQ3RDLCtCQUErQjt3QkFDL0Isd0JBQXdCO3dCQUN4QixlQUFlO3FCQUNoQjs4QkFHUSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRWtCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgQ29uc3RyYWludCxcbiAgRGF0YXNldFRlbXBvcmFsRXh0ZW50LFxuICBHcmFwaGljT3ZlcnZpZXcsXG4gIEluZGl2aWR1YWwsXG4gIEtleXdvcmQsXG4gIE9ubGluZVJlc291cmNlLFxuICBVcGRhdGVGcmVxdWVuY3ksXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IEZvcm1GaWVsZFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIEZvcm1GaWVsZERhdGVDb21wb25lbnQsXG4gIEZvcm1GaWVsZExpY2Vuc2VDb21wb25lbnQsXG4gIEZvcm1GaWVsZFRlbXBvcmFsRXh0ZW50c0NvbXBvbmVudCxcbn0gZnJvbSAnLidcbmltcG9ydCB7XG4gIEZpZWxkTW9kZWxTcGVjaWZpZXIsXG4gIEZvcm1GaWVsZENvbXBvbmVudE5hbWUsXG4gIEZvcm1GaWVsZENvbmZpZyxcbn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJ1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29udGFjdHNGb3JSZXNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2UvZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2UuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29udGFjdHNDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRLZXl3b3Jkc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1rZXl3b3Jkcy9mb3JtLWZpZWxkLWtleXdvcmRzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZE9ubGluZUxpbmtSZXNvdXJjZXNDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZE9ubGluZVJlc291cmNlc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLXJlc291cmNlcy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRPdmVydmlld3NDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtb3ZlcnZpZXdzL2Zvcm0tZmllbGQtb3ZlcnZpZXdzLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZFJpY2hDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQtcmljaC9mb3JtLWZpZWxkLXJpY2guY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkU2ltcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXNpbXBsZS9mb3JtLWZpZWxkLXNpbXBsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRTcGF0aWFsRXh0ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXNwYXRpYWwtZXh0ZW50L2Zvcm0tZmllbGQtc3BhdGlhbC1leHRlbnQuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUZpZWxkVXBkYXRlRnJlcXVlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLXVwZGF0ZS1mcmVxdWVuY3kvZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5LmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZENvbnN0cmFpbnRzU2hvcnRjdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cy9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cy5jb21wb25lbnQnXG5pbXBvcnQgeyBGb3JtRmllbGRDb25zdHJhaW50c0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1jb25zdHJhaW50cy9mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLmNvbXBvbmVudCdcbmltcG9ydCB7IFRleHRGaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJ1xuaW1wb3J0IHsgRm9ybUZpZWxkU3BhdGlhbFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC1zcGF0aWFsLXRvZ2dsZS9mb3JtLWZpZWxkLXNwYXRpYWwtdG9nZ2xlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1GaWVsZFRvcGljc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1maWVsZC10b3BpY3MvZm9ybS1maWVsZC10b3BpY3MuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIEZvcm1GaWVsZFdyYXBwZXJDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkTGljZW5zZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGREYXRlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFVwZGF0ZUZyZXF1ZW5jeUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRUZW1wb3JhbEV4dGVudHNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkU2ltcGxlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFJpY2hDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkU3BhdGlhbEV4dGVudENvbXBvbmVudCxcbiAgICBGb3JtRmllbGRLZXl3b3Jkc0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPdmVydmlld3NDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQ29udGFjdHNGb3JSZXNvdXJjZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRPbmxpbmVSZXNvdXJjZXNDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT25saW5lTGlua1Jlc291cmNlc0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb250YWN0c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb25zdHJhaW50c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb25zdHJhaW50c1Nob3J0Y3V0c0NvbXBvbmVudCxcbiAgICBGb3JtRmllbGRTcGF0aWFsVG9nZ2xlQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFRvcGljc0NvbXBvbmVudCxcbiAgICBUZXh0RmllbGRNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICBASW5wdXQoKSBtb2RlbDogQ2F0YWxvZ1JlY29yZEtleXNcbiAgQElucHV0KCkgbW9kZWxTcGVjaWZpZXI6IEZpZWxkTW9kZWxTcGVjaWZpZXJcbiAgQElucHV0KCkgY29tcG9uZW50TmFtZTogRm9ybUZpZWxkQ29tcG9uZW50TmFtZVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogRm9ybUZpZWxkQ29uZmlnXG4gIEBJbnB1dCgpIHZhbHVlOiB1bmtub3duXG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBAVmlld0NoaWxkKCd0aXRsZUlucHV0JykgdGl0bGVJbnB1dDogRWxlbWVudFJlZlxuICBpc09wZW5EYXRhID0gZmFsc2VcblxuICB0b2dnbGVJc09wZW5EYXRhKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5pc09wZW5EYXRhID0gZXZlbnRcbiAgfVxuXG4gIGZvY3VzVGl0bGVJbnB1dCgpIHtcbiAgICB0aGlzLnRpdGxlSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICBnZXQgd2l0aG91dFdyYXBwZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubW9kZWwgPT09ICd0aXRsZScgfHxcbiAgICAgIHRoaXMubW9kZWwgPT09ICdhYnN0cmFjdCcgfHxcbiAgICAgIHRoaXMubW9kZWwgPT09ICdsZWdhbENvbnN0cmFpbnRzJyB8fFxuICAgICAgdGhpcy5tb2RlbCA9PT0gJ3NlY3VyaXR5Q29uc3RyYWludHMnIHx8XG4gICAgICB0aGlzLm1vZGVsID09PSAnb3RoZXJDb25zdHJhaW50cycgfHxcbiAgICAgIHRoaXMuY29tcG9uZW50TmFtZSA9PT0gJ2Zvcm0tZmllbGQtY29uc3RyYWludHMtc2hvcnRjdXRzJ1xuICAgIClcbiAgfVxuXG4gIGdldCB2YWx1ZUFzU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIGFzIHN0cmluZ1xuICB9XG4gIGdldCB2YWx1ZUFzRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBEYXRlXG4gIH1cblxuICBnZXQgdmFsdWVBc092ZXJ2aWV3cygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxHcmFwaGljT3ZlcnZpZXc+XG4gIH1cbiAgZ2V0IHZhbHVlQXNVcGRhdGVGcmVxdWVuY3koKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgVXBkYXRlRnJlcXVlbmN5XG4gIH1cbiAgZ2V0IHZhbHVlQXNUZW1wb3JhbEV4dGVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8RGF0YXNldFRlbXBvcmFsRXh0ZW50PlxuICB9XG4gIGdldCB2YWx1ZUFzS2V5d29yZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8S2V5d29yZD5cbiAgfVxuICBnZXQgdmFsdWVBc1RvcGljcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxzdHJpbmc+XG4gIH1cbiAgZ2V0IHZhbHVlQXNDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxDb25zdHJhaW50PlxuICB9XG4gIGdldCB2YWx1ZUFzSW5kaXZpZHVhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgYXMgQXJyYXk8SW5kaXZpZHVhbD5cbiAgfVxuICBnZXQgdmFsdWVBc09ubGluZVJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSBhcyBBcnJheTxPbmxpbmVSZXNvdXJjZT5cbiAgfVxuICBnZXQgdmFsdWVBc1Jlc291cmNlSWRlbnRpZmllckNvZGUoKSB7XG4gICAgY29uc3QgaWRlbnRpZmllcnMgPSB0aGlzLnZhbHVlIGFzIEFycmF5PHtcbiAgICAgIGNvZGU6IHN0cmluZ1xuICAgICAgY29kZVNwYWNlPzogc3RyaW5nXG4gICAgICB1cmw/OiBzdHJpbmdcbiAgICB9PlxuICAgIHJldHVybiBpZGVudGlmaWVycz8uWzBdPy5jb2RlIHx8ICcnXG4gIH1cblxuICBoYW5kbGVSZXNvdXJjZUlkZW50aWZpZXJDaGFuZ2UoY29kZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaWRlbnRpZmllcnMgPSB0aGlzLnZhbHVlIGFzIEFycmF5PHtcbiAgICAgIGNvZGU6IHN0cmluZ1xuICAgICAgY29kZVNwYWNlPzogc3RyaW5nXG4gICAgICB1cmw/OiBzdHJpbmdcbiAgICB9PlxuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoaWRlbnRpZmllcnM/LnNsaWNlKDEpIHx8IFtdKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlkZW50aWZpZXJzPy5bMF0pIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbXG4gICAgICAgIHsgLi4uaWRlbnRpZmllcnNbMF0sIGNvZGUgfSxcbiAgICAgICAgLi4uaWRlbnRpZmllcnMuc2xpY2UoMSksXG4gICAgICBdKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoW3sgY29kZSB9XSlcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gVEVNUE9SQVJZIC0gZGlzYWJsaW5nIHRoZSBvcGVuIGRhdGEgc3dpdGNoIC0tPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwgPT09ICdsaWNlbnNlcydcIj5cbiAgPGduLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhXG4gICAgW3ZhbHVlXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgKG9wZW5EYXRhQ2hhbmdlKT1cInRvZ2dsZUlzT3BlbkRhdGEoJGV2ZW50KVwiXG4gID48L2duLXVpLWZvcm0tZmllbGQtb3Blbi1kYXRhPlxuPC9uZy1jb250YWluZXI+IC0tPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aXRob3V0V3JhcHBlcjsgZWxzZSB3aXRoR2VuZXJpY1dyYXBwZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3dpdGhHZW5lcmljV3JhcHBlcj5cbiAgICA8Z24tdWktZm9ybS1maWVsZC13cmFwcGVyXG4gICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaGludF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2duLXVpLWZvcm0tZmllbGQtd3JhcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2ZpZWxkQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGl0bGUnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXN0YXJ0IGl0ZW1zLWNlbnRlciBnYXAtMyBtYi1bMTJweF1cIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgI3RpdGxlSW5wdXRcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiMVwiXG4gICAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkVGl0bGVJbnB1dFwiXG4gICAgICAgICAgY2xhc3M9XCJncm93IGZvbnQtdGl0bGUgdGV4dC0zeGwgZm9udC1ub3JtYWwgb3ZlcmZsb3ctaGlkZGVuIHRleHQtYmxhY2svODBcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC50aXRsZS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgICBcIlxuICAgICAgICAgID57eyB2YWx1ZUFzU3RyaW5nIH19PC90ZXh0YXJlYVxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBzZWxmLXN0YXJ0IG10LTAuNVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZ24tdWktaWNvbi1zbWFsbCBtLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvY3VzVGl0bGVJbnB1dCgpXCJcbiAgICAgICAgICAgID5lZGl0PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5oaW50S2V5XCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBnbi11aS1pY29uLXNtYWxsIG0tMlwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjb25maWcuaGludEtleSEgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIGhlbHBcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Fic3RyYWN0J1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtcmljaFxuICAgICAgICBbbGFiZWxdPVwiY29uZmlnLmxhYmVsS2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtoaW50XT1cImNvbmZpZy5oaW50S2V5ISB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzU3RyaW5nXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLXJpY2g+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ292ZXJ2aWV3cydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLW92ZXJ2aWV3c1xuICAgICAgICBbbWV0YWRhdGFVdWlkXT1cInVuaXF1ZUlkZW50aWZpZXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc092ZXJ2aWV3c1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1vdmVydmlld3M+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Jlc291cmNlSWRlbnRpZmllcnMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1zaW1wbGVcbiAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNSZXNvdXJjZUlkZW50aWZpZXJDb2RlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZVJlc291cmNlSWRlbnRpZmllckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtc2ltcGxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyZXNvdXJjZUNyZWF0ZWQnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1kYXRlXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzRGF0ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1kYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyZXNvdXJjZVVwZGF0ZWQnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1kYXRlXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzRGF0ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1kYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid1cGRhdGVGcmVxdWVuY3knXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC11cGRhdGUtZnJlcXVlbmN5XG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzVXBkYXRlRnJlcXVlbmN5XCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLXVwZGF0ZS1mcmVxdWVuY3k+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RlbXBvcmFsRXh0ZW50cydcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLXRlbXBvcmFsLWV4dGVudHNcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNUZW1wb3JhbEV4dGVudHNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtdGVtcG9yYWwtZXh0ZW50cz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3BhdGlhbEV4dGVudHMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1zcGF0aWFsLWV4dGVudD48L2duLXVpLWZvcm0tZmllbGQtc3BhdGlhbC1leHRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2tleXdvcmRzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQta2V5d29yZHNcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNLZXl3b3Jkc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1rZXl3b3Jkcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndG9waWNzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtdG9waWNzXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZUFzVG9waWNzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLXRvcGljcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGljZW5zZXMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1saWNlbnNlXG4gICAgICAgIFtsYWJlbF09XCJjb25maWcubGFiZWxLZXkhIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3JlY29yZExpY2VuY2VzXT1cInZhbHVlQXNDb25zdHJhaW50c1wiXG4gICAgICAgIChyZWNvcmRMaWNlbmNlc0NoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1saWNlbnNlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xlZ2FsQ29uc3RyYWludHMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybUZpZWxkQ29uc3RyYWludHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VjdXJpdHlDb25zdHJhaW50cydcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtRmllbGRDb25zdHJhaW50c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidvdGhlckNvbnN0cmFpbnRzJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1GaWVsZENvbnN0cmFpbnRzXCI+PC9uZy1jb250YWluZXJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNmb3JtRmllbGRDb25zdHJhaW50cz5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWNvbnN0cmFpbnRzXG4gICAgICAgIFtsYWJlbF09XCJjb25maWcubGFiZWxLZXlcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc0NvbnN0cmFpbnRzXCJcbiAgICAgICAgW2NvbnN0cmFpbnRUeXBlXT1cIm1vZGVsXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWNvbnN0cmFpbnRzXG4gICAgPjwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29udGFjdHNGb3JSZXNvdXJjZSdcIj5cbiAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZVxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc0luZGl2aWR1YWxzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29udGFjdHMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1jb250YWN0c1xuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc0luZGl2aWR1YWxzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1mb3JtLWZpZWxkLWNvbnRhY3RzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidvbmxpbmVSZXNvdXJjZXMnXCI+XG4gICAgICA8Z24tdWktZm9ybS1maWVsZC1vbmxpbmUtcmVzb3VyY2VzXG4gICAgICAgICpuZ0lmPVwibW9kZWxTcGVjaWZpZXIgPT09ICdvbmxpbmVSZXNvdXJjZVR5cGU6IWxpbmsnXCJcbiAgICAgICAgW21ldGFkYXRhVXVpZF09XCJ1bmlxdWVJZGVudGlmaWVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlQXNPbmxpbmVSZXNvdXJjZXNcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLWZvcm0tZmllbGQtb25saW5lLXJlc291cmNlcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInb25saW5lUmVzb3VyY2VzJ1wiPlxuICAgICAgPGduLXVpLWZvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzXG4gICAgICAgICpuZ0lmPVwibW9kZWxTcGVjaWZpZXIgPT09ICdvbmxpbmVSZXNvdXJjZVR5cGU6bGluaydcIlxuICAgICAgICBbbWV0YWRhdGFVdWlkXT1cInVuaXF1ZUlkZW50aWZpZXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVBc09ubGluZVJlc291cmNlc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9kZWxcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb21wb25lbnROYW1lXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9ybS1maWVsZC1jb25zdHJhaW50cy1zaG9ydGN1dHMnXCI+XG4gICAgICAgIDxnbi11aS1mb3JtLWZpZWxkLWNvbnN0cmFpbnRzLXNob3J0Y3V0cz48L2duLXVpLWZvcm0tZmllbGQtY29uc3RyYWludHMtc2hvcnRjdXRzPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9ybS1maWVsZC1zcGF0aWFsLXRvZ2dsZSdcIj5cbiAgICAgICAgPGduLXVpLWZvcm0tZmllbGQtc3BhdGlhbC10b2dnbGU+PC9nbi11aS1mb3JtLWZpZWxkLXNwYXRpYWwtdG9nZ2xlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==