geonetwork-ui 2.6.0-dev.87d6e6c1b → 2.6.0-dev.913451557

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 (91) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
  4. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  5. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  8. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  9. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  10. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  11. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +7 -6
  12. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -5
  13. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
  14. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  15. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +7 -3
  16. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +8 -4
  17. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +3 -3
  18. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  19. package/esm2022/libs/util/shared/src/lib/record.util.mjs +56 -0
  20. package/esm2022/translations/de.json +1 -0
  21. package/esm2022/translations/en.json +2 -1
  22. package/esm2022/translations/es.json +1 -0
  23. package/esm2022/translations/fr.json +6 -5
  24. package/esm2022/translations/it.json +1 -0
  25. package/esm2022/translations/nl.json +1 -0
  26. package/esm2022/translations/pt.json +1 -0
  27. package/esm2022/translations/sk.json +1 -0
  28. package/fesm2022/geonetwork-ui.mjs +162 -40
  29. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  30. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  31. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  32. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  33. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  34. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  35. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  36. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  37. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -2
  38. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  39. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  40. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  41. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  42. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  43. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  44. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  45. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  46. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  47. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +2 -1
  48. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  49. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  50. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  51. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts +2 -1
  52. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  53. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  54. package/libs/util/shared/src/index.d.ts +1 -0
  55. package/libs/util/shared/src/index.d.ts.map +1 -1
  56. package/libs/util/shared/src/lib/record.util.d.ts +3 -0
  57. package/libs/util/shared/src/lib/record.util.d.ts.map +1 -0
  58. package/package.json +1 -1
  59. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  60. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4196 -0
  61. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  62. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +2 -1
  63. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  64. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -1
  65. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -2
  66. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -0
  67. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  68. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  69. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  70. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  71. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +9 -8
  72. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -0
  73. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
  74. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  75. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  76. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +0 -1
  77. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -1
  78. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +3 -1
  79. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +0 -2
  80. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -3
  81. package/src/libs/util/i18n/src/lib/language-codes.ts +2 -2
  82. package/src/libs/util/shared/src/index.ts +1 -0
  83. package/src/libs/util/shared/src/lib/record.util.ts +114 -0
  84. package/translations/de.json +1 -0
  85. package/translations/en.json +2 -1
  86. package/translations/es.json +1 -0
  87. package/translations/fr.json +6 -5
  88. package/translations/it.json +1 -0
  89. package/translations/nl.json +1 -0
  90. package/translations/pt.json +1 -0
  91. package/translations/sk.json +1 -0
@@ -1,5 +1,6 @@
1
1
  import { BaseConverter, MetadataMapperContext } from '../base.converter';
2
2
  import { isEqual } from '../convert-utils';
3
+ import { isFieldTranslatable } from '../translate-utils';
3
4
  import { readAbstract, readContacts, readContactsForResource, readDefaultLanguage, readKeywords, readLandingPage, readLicenses, readOnlineResources, readOwnerOrganization, readRecordCreated, readRecordUpdated, readResourceCreated, readResourceUpdated, readSpatialExtents, readTitle, readTopics, readUniqueIdentifier, } from './read-parts';
4
5
  import { writeAbstract, writeTitle, writeUniqueIdentifier } from './write-parts';
5
6
  import { graph, sym } from 'rdflib';
@@ -193,12 +194,16 @@ export class DcatApConverter extends BaseConverter {
193
194
  let fieldChanged;
194
195
  if (reference) {
195
196
  const originalRecord = await this.readRecord(reference);
197
+ // eslint-disable-next-line prefer-const
198
+ let languagesChanged;
196
199
  await loadGraph(dataStore, reference, this.contentType, DCAT('CatalogRecord').value);
197
200
  fieldChanged = (name) => {
198
201
  return originalRecord !== null
199
- ? !isEqual(record[name], originalRecord[name])
202
+ ? !isEqual(record[name], originalRecord[name]) ||
203
+ (languagesChanged && isFieldTranslatable(name))
200
204
  : true;
201
205
  };
206
+ languagesChanged = fieldChanged('otherLanguages');
202
207
  }
203
208
  else {
204
209
  fieldChanged = () => true;
@@ -211,6 +216,8 @@ export class DcatApConverter extends BaseConverter {
211
216
  fieldChanged('uniqueIdentifier') &&
212
217
  this.writers['uniqueIdentifier'](record, dataStore, recordNode);
213
218
  fieldChanged('kind') && this.writers['kind'](record, dataStore, recordNode);
219
+ fieldChanged('defaultLanguage') &&
220
+ this.writers['defaultLanguage'](record, dataStore, recordNode);
214
221
  fieldChanged('contacts') &&
215
222
  this.writers['contacts'](record, dataStore, recordNode);
216
223
  fieldChanged('ownerOrganization') &&
@@ -261,10 +268,12 @@ export class DcatApConverter extends BaseConverter {
261
268
  fieldChanged('lineage') &&
262
269
  this.writers['lineage'](record, dataStore, recordNode);
263
270
  }
271
+ fieldChanged('otherLanguages') &&
272
+ this.writers['otherLanguages'](record, dataStore, recordNode);
264
273
  if (this.contentType.includes('xml')) {
265
274
  return exportGraphToXml(dataStore);
266
275
  }
267
276
  return dataStore.serialize(undefined, this.contentType, null, {});
268
277
  }
269
278
  }
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhdC1hcC5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL2RjYXQtYXAuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFVBQVUsRUFDVixvQkFBb0IsR0FDckIsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBK0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTNELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQXFCO0lBd0Z4RCxZQUNVLGNBQTJCLHFCQUFxQixFQUN4RCxNQUE2QixJQUFJLHFCQUFxQixFQUFFO1FBRXhE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S0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3BDLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENhdGFsb2dSZWNvcmRLZXlzLFxuICBEYXRhc2V0UmVjb3JkLFxuICBMYW5ndWFnZUNvZGUsXG4gIFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgU2VydmljZVJlY29yZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgQmFzZUNvbnZlcnRlciwgTWV0YWRhdGFNYXBwZXJDb250ZXh0IH0gZnJvbSAnLi4vYmFzZS5jb252ZXJ0ZXInXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vY29udmVydC11dGlscydcbmltcG9ydCB7XG4gIHJlYWRBYnN0cmFjdCxcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgcmVhZEtleXdvcmRzLFxuICByZWFkTGFuZGluZ1BhZ2UsXG4gIHJlYWRMaWNlbnNlcyxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gIHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gIHJlYWRTcGF0aWFsRXh0ZW50cyxcbiAgcmVhZFRpdGxlLFxuICByZWFkVG9waWNzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgd3JpdGVBYnN0cmFjdCwgd3JpdGVUaXRsZSwgd3JpdGVVbmlxdWVJZGVudGlmaWVyIH0gZnJvbSAnLi93cml0ZS1wYXJ0cydcbmltcG9ydCB7IGdyYXBoLCBOYW1lZE5vZGUsIFN0YXRlbWVudCwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IERDQVQsIFJERiB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7IEJBU0VfVVJJIH0gZnJvbSAnLi91dGlscy91cmknXG5pbXBvcnQgdHlwZSB7IENvbnRlbnRUeXBlIH0gZnJvbSAncmRmbGliL2xpYi90eXBlcydcbmltcG9ydCB7IGxvYWRHcmFwaCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgtdXRpbHMnXG5pbXBvcnQgeyBleHBvcnRHcmFwaFRvWG1sIH0gZnJvbSAnLi91dGlscy9zZXJpYWxpemUtdG8teG1sJ1xuXG5leHBvcnQgY2xhc3MgRGNhdEFwQ29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJlYWRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAoXG4gICAgICBkYXRhU3RvcmU6IFN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZDogTmFtZWROb2RlLFxuICAgICAgdHJhbnNsYXRpb25zOiBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuICAgICkgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIHRpdGxlOiByZWFkVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHJlYWRBYnN0cmFjdCxcbiAgICBjb250YWN0czogcmVhZENvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGxhbmRpbmdQYWdlOiByZWFkTGFuZGluZ1BhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiByZWFkT25saW5lUmVzb3VyY2VzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiByZWFkU3BhdGlhbEV4dGVudHMsXG4gICAga2V5d29yZHM6IHJlYWRLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHJlYWRUb3BpY3MsXG4gICAgcmVzb3VyY2VJZGVudGlmaWVyOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkVXBkYXRlZDogcmVhZFJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogcmVhZFJlY29yZENyZWF0ZWQsXG4gICAgcmVzb3VyY2VVcGRhdGVkOiByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICAgIGxpY2Vuc2VzOiByZWFkTGljZW5zZXMsXG4gICAgZGVmYXVsdExhbmd1YWdlOiByZWFkRGVmYXVsdExhbmd1YWdlLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiAoKSA9PiBbXSwgLy8gbGFuZ3VhZ2VzIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSBmb3VuZCB0cmFuc2xhdGlvbnNcbiAgICAvLyBUT0RPXG4gICAga2luZDogKCkgPT4gJ2RhdGFzZXQnLFxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmV1c2VUeXBlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGVnYWxDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgb3RoZXJDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgc3RhdHVzOiAoKSA9PiAnY29tcGxldGVkJyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6ICgpID0+ICd1bmtub3duJyxcbiAgICBvdmVydmlld3M6ICgpID0+IFtdLFxuICAgIGxpbmVhZ2U6ICgpID0+ICcnLFxuICAgIHRlbXBvcmFsRXh0ZW50czogKCkgPT4gW10sXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZXh0cmFzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIGRhdGFTdG9yZTogU3RvcmUsIGNhdGFsb2dSZWNvcmQ6IE5hbWVkTm9kZSkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICB0aXRsZTogd3JpdGVUaXRsZSxcbiAgICBhYnN0cmFjdDogd3JpdGVBYnN0cmFjdCxcbiAgICAvLyBUT0RPXG4gICAga2luZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG93bmVyT3JnYW5pemF0aW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkVXBkYXRlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZUlkZW50aWZpZXI6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVVwZGF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJldXNlVHlwZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGNvbnRhY3RzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGtleXdvcmRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdG9waWNzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGljZW5zZXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG90aGVyQ29uc3RyYWludHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzdGF0dXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB1cGRhdGVGcmVxdWVuY3k6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246ICgpID0+IHVuZGVmaW5lZCxcbiAgICBvdmVydmlld3M6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsaW5lYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgb25saW5lUmVzb3VyY2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdGVtcG9yYWxFeHRlbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgc3BhdGlhbEV4dGVudHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGRlZmF1bHRMYW5ndWFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRlbnRUeXBlOiBDb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9yZGYreG1sJyxcbiAgICBjdHg6IE1ldGFkYXRhTWFwcGVyQ29udGV4dCA9IG5ldyBNZXRhZGF0YU1hcHBlckNvbnRleHQoKVxuICApIHtcbiAgICBzdXBlcihjdHgpXG4gIH1cblxuICBhc3luYyByZWFkUmVjb3JkKGRvY3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBkYXRhU3RvcmUgPSBncmFwaCgpXG4gICAgYXdhaXQgbG9hZEdyYXBoKGRhdGFTdG9yZSwgZG9jdW1lbnQsIHRoaXMuY29udGVudFR5cGUpXG5cbiAgICBjb25zdCBjYXRhbG9nUmVjb3JkID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgRENBVCgnQ2F0YWxvZ1JlY29yZCcpXG4gICAgKSBhcyBOYW1lZE5vZGVcblxuICAgIGNvbnN0IHRyOiBSZWNvcmRUcmFuc2xhdGlvbnMgPSB7fVxuXG4gICAgLy8gd2UgbmVlZCB0aGUgZGVmYXVsdCBsYW5ndWFnZSBmaXJzdCBmb3IgdGhlIG90aGVyIGZpZWxkc1xuICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMucmVhZGVyc1snZGVmYXVsdExhbmd1YWdlJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBudWxsXG4gICAgKSBhcyBzdHJpbmdcbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qga2luZCA9IHRoaXMucmVhZGVyc1sna2luZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG93bmVyT3JnYW5pemF0aW9uID0gdGhpcy5yZWFkZXJzWydvd25lck9yZ2FuaXphdGlvbiddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZWFkZXJzWyd0aXRsZSddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGFic3RyYWN0ID0gdGhpcy5yZWFkZXJzWydhYnN0cmFjdCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGNvbnRhY3RzID0gdGhpcy5yZWFkZXJzWydjb250YWN0cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGNvbnRhY3RzRm9yUmVzb3VyY2UgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZWNvcmRVcGRhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVjb3JkQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlY29yZFB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2VDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZXNvdXJjZVVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlc291cmNlUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5yZWFkZXJzWydrZXl3b3JkcyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHRvcGljcyA9IHRoaXMucmVhZGVyc1sndG9waWNzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgbGVnYWxDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snbGVnYWxDb25zdHJhaW50cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG90aGVyQ29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ290aGVyQ29uc3RyYWludHMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBzZWN1cml0eUNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLnJlYWRlcnNbJ2xpY2Vuc2VzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qgb3ZlcnZpZXdzID0gdGhpcy5yZWFkZXJzWydvdmVydmlld3MnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBsYW5kaW5nUGFnZSA9IHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBvdGhlckxhbmd1YWdlcyA9IHRoaXMucmVhZGVyc1snb3RoZXJMYW5ndWFnZXMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcblxuICAgIGlmIChraW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucmVhZGVyc1snc3RhdHVzJ10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuICAgICAgY29uc3Qgc3BhdGlhbFJlcHJlc2VudGF0aW9uID0gdGhpcy5yZWFkZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBvbmxpbmVSZXNvdXJjZXMgPSB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IHVwZGF0ZUZyZXF1ZW5jeSA9IHRoaXMucmVhZGVyc1sndXBkYXRlRnJlcXVlbmN5J10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgb3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgIGNvbnRhY3RzLFxuICAgICAgICBjb250YWN0c0ZvclJlc291cmNlLFxuICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgdG9waWNzLFxuICAgICAgICBsaWNlbnNlcyxcbiAgICAgICAgbGVnYWxDb25zdHJhaW50cyxcbiAgICAgICAgc2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICAgICAgb3RoZXJDb25zdHJhaW50cyxcbiAgICAgICAgbGluZWFnZSxcbiAgICAgICAgLi4uKHNwYXRpYWxSZXByZXNlbnRhdGlvbiAmJiB7IHNwYXRpYWxSZXByZXNlbnRhdGlvbiB9KSxcbiAgICAgICAgb3ZlcnZpZXdzLFxuICAgICAgICBzcGF0aWFsRXh0ZW50cyxcbiAgICAgICAgdGVtcG9yYWxFeHRlbnRzLFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgLi4uKGxhbmRpbmdQYWdlICYmIHsgbGFuZGluZ1BhZ2UgfSksXG4gICAgICAgIHRyYW5zbGF0aW9uczogdHIsXG4gICAgICB9IGFzIERhdGFzZXRSZWNvcmRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIH0gYXMgU2VydmljZVJlY29yZFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhU3RvcmUgPSBncmFwaCgpXG4gICAgbGV0IGZpZWxkQ2hhbmdlZDogKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhblxuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsUmVjb3JkID0gYXdhaXQgdGhpcy5yZWFkUmVjb3JkKHJlZmVyZW5jZSlcbiAgICAgIGF3YWl0IGxvYWRHcmFwaChcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIERDQVQoJ0NhdGFsb2dSZWNvcmQnKS52YWx1ZVxuICAgICAgKVxuXG4gICAgICBmaWVsZENoYW5nZWQgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlY29yZCAhPT0gbnVsbFxuICAgICAgICAgID8gIWlzRXF1YWwocmVjb3JkW25hbWVdLCBvcmlnaW5hbFJlY29yZFtuYW1lXSlcbiAgICAgICAgICA6IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRDaGFuZ2VkID0gKCkgPT4gdHJ1ZVxuICAgIH1cblxuICAgIGxldCByZWNvcmROb2RlID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIG51bGwsXG4gICAgICBSREYoJ3R5cGUnKSxcbiAgICAgIERDQVQoJ0NhdGFsb2dSZWNvcmQnKVxuICAgICkgYXMgTmFtZWROb2RlXG4gICAgaWYgKCFyZWNvcmROb2RlKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKFxuICAgICAgICBzeW0oYCR7QkFTRV9VUkl9cmVjb3JkLyR7cmVjb3JkLnVuaXF1ZUlkZW50aWZpZXJ9YCksXG4gICAgICAgIFJERigndHlwZScpLFxuICAgICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJylcbiAgICAgICkgYXMgU3RhdGVtZW50XG4gICAgICByZWNvcmROb2RlID0gc3RhdGVtZW50LnN1YmplY3QgYXMgTmFtZWROb2RlXG4gICAgfVxuXG4gICAgZmllbGRDaGFuZ2VkKCd1bmlxdWVJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgna2luZCcpICYmIHRoaXMud3JpdGVyc1sna2luZCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdvd25lck9yZ2FuaXphdGlvbicpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZFVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRVcGRhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkQ3JlYXRlZCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkUHVibGlzaGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkUHVibGlzaGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3RpdGxlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndGl0bGUnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2Fic3RyYWN0JykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snYWJzdHJhY3QnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVVwZGF0ZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgnY29udGFjdHNGb3JSZXNvdXJjZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgna2V5d29yZHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydrZXl3b3JkcyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgndG9waWNzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndG9waWNzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdsZWdhbENvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnc2VjdXJpdHlDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2xpY2Vuc2VzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGljZW5zZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ290aGVyQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdvbmxpbmVSZXNvdXJjZXMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBmaWVsZENoYW5nZWQoJ3N0YXR1cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3RhdHVzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3VwZGF0ZUZyZXF1ZW5jeScpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxSZXByZXNlbnRhdGlvbicpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ292ZXJ2aWV3cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snb3ZlcnZpZXdzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3RlbXBvcmFsRXh0ZW50cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndGVtcG9yYWxFeHRlbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50VHlwZS5pbmNsdWRlcygneG1sJykpIHtcbiAgICAgIHJldHVybiBleHBvcnRHcmFwaFRvWG1sKGRhdGFTdG9yZSlcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVN0b3JlLnNlcmlhbGl6ZSh1bmRlZmluZWQsIHRoaXMuY29udGVudFR5cGUsIG51bGwsIHt9KVxuICB9XG59XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhdC1hcC5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL2RjYXQtYXAuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFVBQVUsRUFDVixvQkFBb0IsR0FDckIsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBK0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTNELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQXFCO0lBd0Z4RCxZQUNVLGNB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UyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQzFELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDaEUsWUFBWSxDQUFDLFNBQVMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzFELENBQUM7UUFDRCxZQUFZLENBQUMsZ0JBQWdCLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFL0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDcEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIERhdGFzZXRSZWNvcmQsXG4gIExhbmd1YWdlQ29kZSxcbiAgUmVjb3JkVHJhbnNsYXRpb25zLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyLCBNZXRhZGF0YU1hcHBlckNvbnRleHQgfSBmcm9tICcuLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi9jb252ZXJ0LXV0aWxzJ1xuaW1wb3J0IHsgaXNGaWVsZFRyYW5zbGF0YWJsZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS11dGlscydcbmltcG9ydCB7XG4gIHJlYWRBYnN0cmFjdCxcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgcmVhZEtleXdvcmRzLFxuICByZWFkTGFuZGluZ1BhZ2UsXG4gIHJlYWRMaWNlbnNlcyxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gIHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gIHJlYWRTcGF0aWFsRXh0ZW50cyxcbiAgcmVhZFRpdGxlLFxuICByZWFkVG9waWNzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgd3JpdGVBYnN0cmFjdCwgd3JpdGVUaXRsZSwgd3JpdGVVbmlxdWVJZGVudGlmaWVyIH0gZnJvbSAnLi93cml0ZS1wYXJ0cydcbmltcG9ydCB7IGdyYXBoLCBOYW1lZE5vZGUsIFN0YXRlbWVudCwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IERDQVQsIFJERiB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7IEJBU0VfVVJJIH0gZnJvbSAnLi91dGlscy91cmknXG5pbXBvcnQgdHlwZSB7IENvbnRlbnRUeXBlIH0gZnJvbSAncmRmbGliL2xpYi90eXBlcydcbmltcG9ydCB7IGxvYWRHcmFwaCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgtdXRpbHMnXG5pbXBvcnQgeyBleHBvcnRHcmFwaFRvWG1sIH0gZnJvbSAnLi91dGlscy9zZXJpYWxpemUtdG8teG1sJ1xuXG5leHBvcnQgY2xhc3MgRGNhdEFwQ29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJlYWRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAoXG4gICAgICBkYXRhU3RvcmU6IFN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZDogTmFtZWROb2RlLFxuICAgICAgdHJhbnNsYXRpb25zOiBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuICAgICkgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIHRpdGxlOiByZWFkVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHJlYWRBYnN0cmFjdCxcbiAgICBjb250YWN0czogcmVhZENvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGxhbmRpbmdQYWdlOiByZWFkTGFuZGluZ1BhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiByZWFkT25saW5lUmVzb3VyY2VzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiByZWFkU3BhdGlhbEV4dGVudHMsXG4gICAga2V5d29yZHM6IHJlYWRLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHJlYWRUb3BpY3MsXG4gICAgcmVzb3VyY2VJZGVudGlmaWVyOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkVXBkYXRlZDogcmVhZFJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogcmVhZFJlY29yZENyZWF0ZWQsXG4gICAgcmVzb3VyY2VVcGRhdGVkOiByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICAgIGxpY2Vuc2VzOiByZWFkTGljZW5zZXMsXG4gICAgZGVmYXVsdExhbmd1YWdlOiByZWFkRGVmYXVsdExhbmd1YWdlLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiAoKSA9PiBbXSwgLy8gbGFuZ3VhZ2VzIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSBmb3VuZCB0cmFuc2xhdGlvbnNcbiAgICAvLyBUT0RPXG4gICAga2luZDogKCkgPT4gJ2RhdGFzZXQnLFxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmV1c2VUeXBlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGVnYWxDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgb3RoZXJDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgc3RhdHVzOiAoKSA9PiAnY29tcGxldGVkJyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6ICgpID0+ICd1bmtub3duJyxcbiAgICBvdmVydmlld3M6ICgpID0+IFtdLFxuICAgIGxpbmVhZ2U6ICgpID0+ICcnLFxuICAgIHRlbXBvcmFsRXh0ZW50czogKCkgPT4gW10sXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZXh0cmFzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIGRhdGFTdG9yZTogU3RvcmUsIGNhdGFsb2dSZWNvcmQ6IE5hbWVkTm9kZSkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICB0aXRsZTogd3JpdGVUaXRsZSxcbiAgICBhYnN0cmFjdDogd3JpdGVBYnN0cmFjdCxcbiAgICAvLyBUT0RPXG4gICAga2luZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG93bmVyT3JnYW5pemF0aW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkVXBkYXRlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZUlkZW50aWZpZXI6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVVwZGF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJldXNlVHlwZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGNvbnRhY3RzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGtleXdvcmRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdG9waWNzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGljZW5zZXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG90aGVyQ29uc3RyYWludHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzdGF0dXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB1cGRhdGVGcmVxdWVuY3k6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246ICgpID0+IHVuZGVmaW5lZCxcbiAgICBvdmVydmlld3M6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsaW5lYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgb25saW5lUmVzb3VyY2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdGVtcG9yYWxFeHRlbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgc3BhdGlhbEV4dGVudHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGRlZmF1bHRMYW5ndWFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRlbnRUeXBlOiBDb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9yZGYreG1sJyxcbiAgICBjdHg6IE1ldGFkYXRhTWFwcGVyQ29udGV4dCA9IG5ldyBNZXRhZGF0YU1hcHBlckNvbnRleHQoKVxuICApIHtcbiAgICBzdXBlcihjdHgpXG4gIH1cblxuICBhc3luYyByZWFkUmVjb3JkKGRvY3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBkYXRhU3RvcmUgPSBncmFwaCgpXG4gICAgYXdhaXQgbG9hZEdyYXBoKGRhdGFTdG9yZSwgZG9jdW1lbnQsIHRoaXMuY29udGVudFR5cGUpXG5cbiAgICBjb25zdCBjYXRhbG9nUmVjb3JkID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgRENBVCgnQ2F0YWxvZ1JlY29yZCcpXG4gICAgKSBhcyBOYW1lZE5vZGVcblxuICAgIGNvbnN0IHRyOiBSZWNvcmRUcmFuc2xhdGlvbnMgPSB7fVxuXG4gICAgLy8gd2UgbmVlZCB0aGUgZGVmYXVsdCBsYW5ndWFnZSBmaXJzdCBmb3IgdGhlIG90aGVyIGZpZWxkc1xuICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMucmVhZGVyc1snZGVmYXVsdExhbmd1YWdlJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBudWxsXG4gICAgKSBhcyBzdHJpbmdcbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qga2luZCA9IHRoaXMucmVhZGVyc1sna2luZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG93bmVyT3JnYW5pemF0aW9uID0gdGhpcy5yZWFkZXJzWydvd25lck9yZ2FuaXphdGlvbiddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZWFkZXJzWyd0aXRsZSddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGFic3RyYWN0ID0gdGhpcy5yZWFkZXJzWydhYnN0cmFjdCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGNvbnRhY3RzID0gdGhpcy5yZWFkZXJzWydjb250YWN0cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGNvbnRhY3RzRm9yUmVzb3VyY2UgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZWNvcmRVcGRhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVjb3JkQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlY29yZFB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2VDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZXNvdXJjZVVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlc291cmNlUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5yZWFkZXJzWydrZXl3b3JkcyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHRvcGljcyA9IHRoaXMucmVhZGVyc1sndG9waWNzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgbGVnYWxDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snbGVnYWxDb25zdHJhaW50cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG90aGVyQ29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ290aGVyQ29uc3RyYWludHMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBzZWN1cml0eUNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLnJlYWRlcnNbJ2xpY2Vuc2VzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qgb3ZlcnZpZXdzID0gdGhpcy5yZWFkZXJzWydvdmVydmlld3MnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBsYW5kaW5nUGFnZSA9IHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBvdGhlckxhbmd1YWdlcyA9IHRoaXMucmVhZGVyc1snb3RoZXJMYW5ndWFnZXMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcblxuICAgIGlmIChraW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucmVhZGVyc1snc3RhdHVzJ10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuICAgICAgY29uc3Qgc3BhdGlhbFJlcHJlc2VudGF0aW9uID0gdGhpcy5yZWFkZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBvbmxpbmVSZXNvdXJjZXMgPSB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IHVwZGF0ZUZyZXF1ZW5jeSA9IHRoaXMucmVhZGVyc1sndXBkYXRlRnJlcXVlbmN5J10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgb3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgIGNvbnRhY3RzLFxuICAgICAgICBjb250YWN0c0ZvclJlc291cmNlLFxuICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgdG9waWNzLFxuICAgICAgICBsaWNlbnNlcyxcbiAgICAgICAgbGVnYWxDb25zdHJhaW50cyxcbiAgICAgICAgc2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICAgICAgb3RoZXJDb25zdHJhaW50cyxcbiAgICAgICAgbGluZWFnZSxcbiAgICAgICAgLi4uKHNwYXRpYWxSZXByZXNlbnRhdGlvbiAmJiB7IHNwYXRpYWxSZXByZXNlbnRhdGlvbiB9KSxcbiAgICAgICAgb3ZlcnZpZXdzLFxuICAgICAgICBzcGF0aWFsRXh0ZW50cyxcbiAgICAgICAgdGVtcG9yYWxFeHRlbnRzLFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgLi4uKGxhbmRpbmdQYWdlICYmIHsgbGFuZGluZ1BhZ2UgfSksXG4gICAgICAgIHRyYW5zbGF0aW9uczogdHIsXG4gICAgICB9IGFzIERhdGFzZXRSZWNvcmRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIH0gYXMgU2VydmljZVJlY29yZFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhU3RvcmUgPSBncmFwaCgpXG4gICAgbGV0IGZpZWxkQ2hhbmdlZDogKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhblxuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsUmVjb3JkID0gYXdhaXQgdGhpcy5yZWFkUmVjb3JkKHJlZmVyZW5jZSlcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGxldCBsYW5ndWFnZXNDaGFuZ2VkOiBib29sZWFuXG4gICAgICBhd2FpdCBsb2FkR3JhcGgoXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlLFxuICAgICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJykudmFsdWVcbiAgICAgIClcblxuICAgICAgZmllbGRDaGFuZ2VkID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZWNvcmQgIT09IG51bGxcbiAgICAgICAgICA/ICFpc0VxdWFsKHJlY29yZFtuYW1lXSwgb3JpZ2luYWxSZWNvcmRbbmFtZV0pIHx8XG4gICAgICAgICAgICAgIChsYW5ndWFnZXNDaGFuZ2VkICYmIGlzRmllbGRUcmFuc2xhdGFibGUobmFtZSkpXG4gICAgICAgICAgOiB0cnVlXG4gICAgICB9XG4gICAgICBsYW5ndWFnZXNDaGFuZ2VkID0gZmllbGRDaGFuZ2VkKCdvdGhlckxhbmd1YWdlcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkQ2hhbmdlZCA9ICgpID0+IHRydWVcbiAgICB9XG5cbiAgICBsZXQgcmVjb3JkTm9kZSA9IGRhdGFTdG9yZS50aGUoXG4gICAgICBudWxsLFxuICAgICAgUkRGKCd0eXBlJyksXG4gICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJylcbiAgICApIGFzIE5hbWVkTm9kZVxuICAgIGlmICghcmVjb3JkTm9kZSkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGF0YVN0b3JlLmFkZChcbiAgICAgICAgc3ltKGAke0JBU0VfVVJJfXJlY29yZC8ke3JlY29yZC51bmlxdWVJZGVudGlmaWVyfWApLFxuICAgICAgICBSREYoJ3R5cGUnKSxcbiAgICAgICAgRENBVCgnQ2F0YWxvZ1JlY29yZCcpXG4gICAgICApIGFzIFN0YXRlbWVudFxuICAgICAgcmVjb3JkTm9kZSA9IHN0YXRlbWVudC5zdWJqZWN0IGFzIE5hbWVkTm9kZVxuICAgIH1cblxuICAgIGZpZWxkQ2hhbmdlZCgndW5pcXVlSWRlbnRpZmllcicpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3VuaXF1ZUlkZW50aWZpZXInXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2tpbmQnKSAmJiB0aGlzLndyaXRlcnNbJ2tpbmQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2RlZmF1bHRMYW5ndWFnZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2RlZmF1bHRMYW5ndWFnZSddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdvd25lck9yZ2FuaXphdGlvbicpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZFVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRVcGRhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkQ3JlYXRlZCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkUHVibGlzaGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkUHVibGlzaGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3RpdGxlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndGl0bGUnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2Fic3RyYWN0JykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snYWJzdHJhY3QnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVVwZGF0ZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgnY29udGFjdHNGb3JSZXNvdXJjZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgna2V5d29yZHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydrZXl3b3JkcyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgndG9waWNzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndG9waWNzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdsZWdhbENvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnc2VjdXJpdHlDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2xpY2Vuc2VzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGljZW5zZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ290aGVyQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdvbmxpbmVSZXNvdXJjZXMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBmaWVsZENoYW5nZWQoJ3N0YXR1cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3RhdHVzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3VwZGF0ZUZyZXF1ZW5jeScpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxSZXByZXNlbnRhdGlvbicpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ292ZXJ2aWV3cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snb3ZlcnZpZXdzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3RlbXBvcmFsRXh0ZW50cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndGVtcG9yYWxFeHRlbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICB9XG4gICAgZmllbGRDaGFuZ2VkKCdvdGhlckxhbmd1YWdlcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ290aGVyTGFuZ3VhZ2VzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBpZiAodGhpcy5jb250ZW50VHlwZS5pbmNsdWRlcygneG1sJykpIHtcbiAgICAgIHJldHVybiBleHBvcnRHcmFwaFRvWG1sKGRhdGFTdG9yZSlcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVN0b3JlLnNlcmlhbGl6ZSh1bmRlZmluZWQsIHRoaXMuY29udGVudFR5cGUsIG51bGwsIHt9KVxuICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { BaseConverter } from '../base.converter';
2
2
  import { isEqual } from '../convert-utils';
3
+ import { isFieldTranslatable } from '../translate-utils';
3
4
  import { createDocument, createElement, getRootElement, parseXmlString, xmlToString, } from '../xml-utils';
4
5
  import { readAbstract, readContacts, readContactsForResource, readDefaultLanguage, readIsoTopics, readKeywords, readKind, readLegalConstraints, readLicenses, readLineage, readOnlineResources, readOtherConstraints, readOtherLanguages, readOverviews, readOwnerOrganization, readRecordUpdated, readResourceCreated, readResourceIdentifier, readResourcePublished, readResourceUpdated, readReuseType, readSecurityConstraints, readSpatialExtents, readSpatialRepresentation, readStatus, readTemporalExtents, readTitle, readUniqueIdentifier, readUpdateFrequency, } from './read-parts';
5
6
  import { writeAbstract, writeContacts, writeContactsForResource, writeDefaultLanguage, writeGraphicOverviews, writeKeywords, writeKind, writeLanguages, writeLegalConstraints, writeLicenses, writeLineage, writeOnlineResources, writeOtherConstraints, writeRecordUpdated, writeResourceCreated, writeResourceIdentifier, writeResourcePublished, writeResourceUpdated, writeReuseType, writeSecurityConstraints, writeSpatialExtents, writeSpatialRepresentation, writeStatus, writeTemporalExtents, writeTitle, writeTopics, writeUniqueIdentifier, writeUpdateFrequency, } from './write-parts';
@@ -78,7 +79,7 @@ export class Iso19139Converter extends BaseConverter {
78
79
  // TODO
79
80
  extras: () => undefined,
80
81
  landingPage: () => undefined,
81
- translations: () => undefined,
82
+ translations: () => undefined, // NB. translations are handled in properties
82
83
  };
83
84
  }
84
85
  beforeDocumentCreation(rootElement) {
@@ -228,14 +229,18 @@ export class Iso19139Converter extends BaseConverter {
228
229
  let rootEl;
229
230
  let fieldChanged;
230
231
  if (reference) {
232
+ // eslint-disable-next-line prefer-const
233
+ let languagesChanged;
231
234
  const originalDoc = parseXmlString(reference);
232
235
  const originalRecord = await this.readRecord(reference);
233
236
  rootEl = getRootElement(originalDoc);
234
237
  fieldChanged = (name) => {
235
238
  return originalRecord !== null
236
- ? !isEqual(record[name], originalRecord[name])
239
+ ? !isEqual(record[name], originalRecord[name]) ||
240
+ (languagesChanged && isFieldTranslatable(name))
237
241
  : true;
238
242
  };
243
+ languagesChanged = fieldChanged('otherLanguages');
239
244
  }
240
245
  else {
241
246
  rootEl = createElement('gmd:MD_Metadata')();
@@ -256,8 +261,10 @@ export class Iso19139Converter extends BaseConverter {
256
261
  this.writers['recordCreated'](record, rootEl);
257
262
  fieldChanged('recordPublished') &&
258
263
  this.writers['recordPublished'](record, rootEl);
259
- fieldChanged('title') && this.writers['title'](record, rootEl);
260
- fieldChanged('abstract') && this.writers['abstract'](record, rootEl);
264
+ (fieldChanged('title') || fieldChanged('translations')) &&
265
+ this.writers['title'](record, rootEl);
266
+ (fieldChanged('abstract') || fieldChanged('translations')) &&
267
+ this.writers['abstract'](record, rootEl);
261
268
  fieldChanged('resourceCreated') &&
262
269
  this.writers['resourceCreated'](record, rootEl);
263
270
  fieldChanged('resourcePublished') &&
@@ -290,7 +297,8 @@ export class Iso19139Converter extends BaseConverter {
290
297
  this.writers['temporalExtents'](record, rootEl);
291
298
  fieldChanged('spatialExtents') &&
292
299
  this.writers['spatialExtents'](record, rootEl);
293
- fieldChanged('lineage') && this.writers['lineage'](record, rootEl);
300
+ (fieldChanged('lineage') || fieldChanged('translations')) &&
301
+ this.writers['lineage'](record, rootEl);
294
302
  }
295
303
  fieldChanged('otherLanguages') &&
296
304
  this.writers['otherLanguages'](record, rootEl);
@@ -299,4 +307,4 @@ export class Iso19139Converter extends BaseConverter {
299
307
  return xmlToString(newDocument);
300
308
  }
301
309
  }
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMzkuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvaXNvMTkxMzkvaXNvMTkxMzkuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsU0FBUyxFQUNULG9CQUFvQixFQUNwQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixrQkFBa0Is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QUMsQ0FBQTtJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgRGF0YXNldFJlY29yZCxcbiAgTW9kZWxUcmFuc2xhdGlvbnMsXG4gIFJlY29yZEtpbmQsXG4gIFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgUmV1c2VSZWNvcmQsXG4gIFNlcnZpY2VSZWNvcmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFhtbEVsZW1lbnQgfSBmcm9tICdAcmdyb3ZlL3BhcnNlLXhtbCdcbmltcG9ydCB7IEJhc2VDb252ZXJ0ZXIgfSBmcm9tICcuLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi9jb252ZXJ0LXV0aWxzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlRG9jdW1lbnQsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGdldFJvb3RFbGVtZW50LFxuICBwYXJzZVhtbFN0cmluZyxcbiAgeG1sVG9TdHJpbmcsXG59IGZyb20gJy4uL3htbC11dGlscydcbmltcG9ydCB7XG4gIHJlYWRBYnN0cmFjdCxcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgcmVhZElzb1RvcGljcyxcbiAgcmVhZEtleXdvcmRzLFxuICByZWFkS2luZCxcbiAgcmVhZExlZ2FsQ29uc3RyYWludHMsXG4gIHJlYWRMaWNlbnNlcyxcbiAgcmVhZExpbmVhZ2UsXG4gIHJlYWRPbmxpbmVSZXNvdXJjZXMsXG4gIHJlYWRPdGhlckNvbnN0cmFpbnRzLFxuICByZWFkT3RoZXJMYW5ndWFnZXMsXG4gIHJlYWRPdmVydmlld3MsXG4gIHJlYWRPd25lck9yZ2FuaXphdGlvbixcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gIHJlYWRSZXNvdXJjZUlkZW50aWZpZXIsXG4gIHJlYWRSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgcmVhZFJlc291cmNlVXBkYXRlZCxcbiAgcmVhZFJldXNlVHlwZSxcbiAgcmVhZFNlY3VyaXR5Q29uc3RyYWludHMsXG4gIHJlYWRTcGF0aWFsRXh0ZW50cyxcbiAgcmVhZFNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgcmVhZFN0YXR1cyxcbiAgcmVhZFRlbXBvcmFsRXh0ZW50cyxcbiAgcmVhZFRpdGxlLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbiAgcmVhZFVwZGF0ZUZyZXF1ZW5jeSxcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgd3JpdGVBYnN0cmFjdCxcbiAgd3JpdGVDb250YWN0cyxcbiAgd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICB3cml0ZURlZmF1bHRMYW5ndWFnZSxcbiAgd3JpdGVHcmFwaGljT3ZlcnZpZXdzLFxuICB3cml0ZUtleXdvcmRzLFxuICB3cml0ZUtpbmQsXG4gIHdyaXRlTGFuZ3VhZ2VzLFxuICB3cml0ZUxlZ2FsQ29uc3RyYWludHMsXG4gIHdyaXRlTGljZW5zZXMsXG4gIHdyaXRlTGluZWFnZSxcbiAgd3JpdGVPbmxpbmVSZXNvdXJjZXMsXG4gIHdyaXRlT3RoZXJDb25zdHJhaW50cyxcbiAgd3JpdGVSZWNvcmRVcGRhdGVkLFxuICB3cml0ZVJlc291cmNlQ3JlYXRlZCxcbiAgd3JpdGVSZXNvdXJjZUlkZW50aWZpZXIsXG4gIHdyaXRlUmVzb3VyY2VQdWJsaXNoZWQsXG4gIHdyaXRlUmVzb3VyY2VVcGRhdGVkLFxuICB3cml0ZVJldXNlVHlwZSxcbiAgd3JpdGVTZWN1cml0eUNvbnN0cmFpbnRzLFxuICB3cml0ZVNwYXRpYWxFeHRlbnRzLFxuICB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgd3JpdGVTdGF0dXMsXG4gIHdyaXRlVGVtcG9yYWxFeHRlbnRzLFxuICB3cml0ZVRpdGxlLFxuICB3cml0ZVRvcGljcyxcbiAgd3JpdGVVbmlxdWVJZGVudGlmaWVyLFxuICB3cml0ZVVwZGF0ZUZyZXF1ZW5jeSxcbn0gZnJvbSAnLi93cml0ZS1wYXJ0cydcblxuZXhwb3J0IGNsYXNzIElzbzE5MTM5Q29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJlYWRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAocm9vdEVsOiBYbWxFbGVtZW50LCB0cmFuc2xhdGlvbnM6IFJlY29yZFRyYW5zbGF0aW9ucykgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIGtpbmQ6IHJlYWRLaW5kLFxuICAgIG93bmVyT3JnYW5pemF0aW9uOiByZWFkT3duZXJPcmdhbml6YXRpb24sXG4gICAgcmVjb3JkVXBkYXRlZDogcmVhZFJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVjb3JkUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZXNvdXJjZUlkZW50aWZpZXI6IHJlYWRSZXNvdXJjZUlkZW50aWZpZXIsXG4gICAgcmVzb3VyY2VVcGRhdGVkOiByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogcmVhZFJlc291cmNlUHVibGlzaGVkLFxuICAgIHJldXNlVHlwZTogcmVhZFJldXNlVHlwZSxcbiAgICB0aXRsZTogcmVhZFRpdGxlLFxuICAgIGFic3RyYWN0OiByZWFkQWJzdHJhY3QsXG4gICAgY29udGFjdHM6IHJlYWRDb250YWN0cyxcbiAgICBjb250YWN0c0ZvclJlc291cmNlOiByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICBrZXl3b3JkczogcmVhZEtleXdvcmRzLFxuICAgIHRvcGljczogcmVhZElzb1RvcGljcyxcbiAgICBsaWNlbnNlczogcmVhZExpY2Vuc2VzLFxuICAgIGxlZ2FsQ29uc3RyYWludHM6IHJlYWRMZWdhbENvbnN0cmFpbnRzLFxuICAgIHNlY3VyaXR5Q29uc3RyYWludHM6IHJlYWRTZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgIG90aGVyQ29uc3RyYWludHM6IHJlYWRPdGhlckNvbnN0cmFpbnRzLFxuICAgIHN0YXR1czogcmVhZFN0YXR1cyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6IHJlYWRVcGRhdGVGcmVxdWVuY3ksXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiByZWFkU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICAgIG92ZXJ2aWV3czogcmVhZE92ZXJ2aWV3cyxcbiAgICBsaW5lYWdlOiByZWFkTGluZWFnZSxcbiAgICBvbmxpbmVSZXNvdXJjZXM6IHJlYWRPbmxpbmVSZXNvdXJjZXMsXG4gICAgdGVtcG9yYWxFeHRlbnRzOiByZWFkVGVtcG9yYWxFeHRlbnRzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiByZWFkU3BhdGlhbEV4dGVudHMsXG4gICAgb3RoZXJMYW5ndWFnZXM6IHJlYWRPdGhlckxhbmd1YWdlcyxcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHJlYWREZWZhdWx0TGFuZ3VhZ2UsXG4gICAgLy8gVE9ET1xuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmRpbmdQYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICBraW5kOiB3cml0ZUtpbmQsXG4gICAgb3duZXJPcmdhbml6YXRpb246ICgpID0+IHVuZGVmaW5lZCwgLy8gZml4bWU6IGZpbmQgYSB3YXkgdG8gc3RvcmUgdGhpcyB2YWx1ZSBwcm9wZXJseVxuICAgIHJlY29yZFVwZGF0ZWQ6IHdyaXRlUmVjb3JkVXBkYXRlZCxcbiAgICByZWNvcmRDcmVhdGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlc291cmNlSWRlbnRpZmllcjogd3JpdGVSZXNvdXJjZUlkZW50aWZpZXIsXG4gICAgcmVzb3VyY2VVcGRhdGVkOiB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6IHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICAgIHJldXNlVHlwZTogd3JpdGVSZXVzZVR5cGUsXG4gICAgdGl0bGU6IHdyaXRlVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHdyaXRlQWJzdHJhY3QsXG4gICAgY29udGFjdHM6IHdyaXRlQ29udGFjdHMsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGtleXdvcmRzOiB3cml0ZUtleXdvcmRzLFxuICAgIHRvcGljczogd3JpdGVUb3BpY3MsXG4gICAgbGljZW5zZXM6IHdyaXRlTGljZW5zZXMsXG4gICAgbGVnYWxDb25zdHJhaW50czogd3JpdGVMZWdhbENvbnN0cmFpbnRzLFxuICAgIHNlY3VyaXR5Q29uc3RyYWludHM6IHdyaXRlU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICBvdGhlckNvbnN0cmFpbnRzOiB3cml0ZU90aGVyQ29uc3RyYWludHMsXG4gICAgc3RhdHVzOiB3cml0ZVN0YXR1cyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6IHdyaXRlVXBkYXRlRnJlcXVlbmN5LFxuICAgIHNwYXRpYWxSZXByZXNlbnRhdGlvbjogd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gICAgb3ZlcnZpZXdzOiB3cml0ZUdyYXBoaWNPdmVydmlld3MsXG4gICAgbGluZWFnZTogd3JpdGVMaW5lYWdlLFxuICAgIG9ubGluZVJlc291cmNlczogd3JpdGVPbmxpbmVSZXNvdXJjZXMsXG4gICAgdGVtcG9yYWxFeHRlbnRzOiB3cml0ZVRlbXBvcmFsRXh0ZW50cyxcbiAgICBzcGF0aWFsRXh0ZW50czogd3JpdGVTcGF0aWFsRXh0ZW50cyxcbiAgICBvdGhlckxhbmd1YWdlczogd3JpdGVMYW5ndWFnZXMsXG4gICAgZGVmYXVsdExhbmd1YWdlOiB3cml0ZURlZmF1bHRMYW5ndWFnZSxcbiAgICAvLyBUT0RPXG4gICAgZXh0cmFzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGFuZGluZ1BhZ2U6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB0cmFuc2xhdGlvbnM6ICgpID0+IHVuZGVmaW5lZCxcbiAgfVxuXG4gIHByb3RlY3RlZCBiZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbGVtZW50OiBYbWxFbGVtZW50KSB7XG4gICAgLy8gdG8gb3ZlcnJpZGVcbiAgfVxuXG4gIHByb3RlY3RlZCBhZnRlclJlY29yZFJlYWQocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogQ2F0YWxvZ1JlY29yZCB7XG4gICAgZnVuY3Rpb24gZml4TGFuZ3VhZ2VzKHRhcmdldDogeyB0cmFuc2xhdGlvbnM/OiBNb2RlbFRyYW5zbGF0aW9ucyB9KSB7XG4gICAgICBpZiAoISgndHJhbnNsYXRpb25zJyBpbiB0YXJnZXQpKSByZXR1cm5cbiAgICAgIGZvciAoY29uc3QgZmllbGROYW1lIGluIHRhcmdldC50cmFuc2xhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZmllbGRUcmFuc2xhdGlvbnMgPSB0YXJnZXQudHJhbnNsYXRpb25zW2ZpZWxkTmFtZV0gPz8ge31cbiAgICAgICAgLy8gcmVtb3ZlIHJlZHVuZGFudCB0cmFuc2xhdGlvbnNcbiAgICAgICAgaWYgKHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UgaW4gZmllbGRUcmFuc2xhdGlvbnMpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGRUcmFuc2xhdGlvbnNbcmVjb3JkLmRlZmF1bHRMYW5ndWFnZV1cbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgdHJhbnNsYXRlZCB2YWx1ZXMgaWYgdGhleSBoYXZlIG5vIHRyYW5zbGF0aW9uc1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmllbGRUcmFuc2xhdGlvbnMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRlbGV0ZSB0YXJnZXQudHJhbnNsYXRpb25zW2ZpZWxkTmFtZV1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIC8vIGFkZCBsYW5ndWFnZXMgdGhhdCBoYXZlIHRyYW5zbGF0aW9ucyB0byB0aGUgcm9vdCBsYW5ndWFnZSBsaXN0XG4gICAgICAgIGZvciAoY29uc3QgbGFuZyBpbiBmaWVsZFRyYW5zbGF0aW9ucykge1xuICAgICAgICAgIGlmICghcmVjb3JkLm90aGVyTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpKSB7XG4gICAgICAgICAgICByZWNvcmQub3RoZXJMYW5ndWFnZXMucHVzaChsYW5nKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmaXhMYW5ndWFnZXMocmVjb3JkKVxuICAgIHJlY29yZC5rZXl3b3Jkcy5tYXAoZml4TGFuZ3VhZ2VzKVxuICAgIHJlY29yZC5vbmxpbmVSZXNvdXJjZXMubWFwKGZpeExhbmd1YWdlcylcbiAgICByZWNvcmQubGljZW5zZXMubWFwKGZpeExhbmd1YWdlcylcbiAgICByZWNvcmQubGVnYWxDb25zdHJhaW50cy5tYXAoZml4TGFuZ3VhZ2VzKVxuICAgIHJlY29yZC5zZWN1cml0eUNvbnN0cmFpbnRzLm1hcChmaXhMYW5ndWFnZXMpXG4gICAgcmVjb3JkLm90aGVyQ29uc3RyYWludHMubWFwKGZpeExhbmd1YWdlcylcbiAgICByZWNvcmQuY29udGFjdHMubWFwKChjKSA9PiBmaXhMYW5ndWFnZXMoYy5vcmdhbml6YXRpb24pKVxuICAgIHJlY29yZC5jb250YWN0c0ZvclJlc291cmNlLm1hcCgoYykgPT4gZml4TGFuZ3VhZ2VzKGMub3JnYW5pemF0aW9uKSlcbiAgICBmaXhMYW5ndWFnZXMocmVjb3JkLm93bmVyT3JnYW5pemF0aW9uKVxuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICByZWNvcmQuc3BhdGlhbEV4dGVudHMubWFwKGZpeExhbmd1YWdlcylcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgZGVmYXVsdCBsYW5ndWFnZSBmcm9tIG90aGVyTGFuZ3VhZ2VzIGxpc3RcbiAgICBpZiAocmVjb3JkLm90aGVyTGFuZ3VhZ2VzLmluY2x1ZGVzKHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UpKSB7XG4gICAgICByZWNvcmQub3RoZXJMYW5ndWFnZXMgPSByZWNvcmQub3RoZXJMYW5ndWFnZXMuZmlsdGVyKFxuICAgICAgICAobGFuZykgPT4gbGFuZyAhPT0gcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiByZWNvcmRcbiAgfVxuXG4gIHJlYWRCYXNlUmVjb3JkKHJvb3RFbDogWG1sRWxlbWVudCwgdHI6IFJlY29yZFRyYW5zbGF0aW9ucyk6IENhdGFsb2dSZWNvcmQge1xuICAgIGNvbnN0IHVuaXF1ZUlkZW50aWZpZXIgPSB0aGlzLnJlYWRlcnNbJ3VuaXF1ZUlkZW50aWZpZXInXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlYWRlcnNbJ2tpbmQnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IG93bmVyT3JnYW5pemF0aW9uID0gdGhpcy5yZWFkZXJzWydvd25lck9yZ2FuaXphdGlvbiddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnJlYWRlcnNbJ3RpdGxlJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBhYnN0cmFjdCA9IHRoaXMucmVhZGVyc1snYWJzdHJhY3QnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGNvbnRhY3RzID0gdGhpcy5yZWFkZXJzWydjb250YWN0cyddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgY29udGFjdHNGb3JSZXNvdXJjZSA9IHRoaXMucmVhZGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgcmVjb3JkVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkVXBkYXRlZCddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgcmVjb3JkQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgcmVjb3JkUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRQdWJsaXNoZWQnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IHJlc291cmNlQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCByZXNvdXJjZVVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgcmVzb3VyY2VQdWJsaXNoZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBrZXl3b3JkcyA9IHRoaXMucmVhZGVyc1sna2V5d29yZHMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IHRvcGljcyA9IHRoaXMucmVhZGVyc1sndG9waWNzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBsZWdhbENvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydsZWdhbENvbnN0cmFpbnRzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBvdGhlckNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBzZWN1cml0eUNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBsaWNlbnNlcyA9IHRoaXMucmVhZGVyc1snbGljZW5zZXMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IG92ZXJ2aWV3cyA9IHRoaXMucmVhZGVyc1snb3ZlcnZpZXdzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBsYW5kaW5nUGFnZSA9IHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IG9ubGluZVJlc291cmNlcyA9IHRoaXMucmVhZGVyc1snb25saW5lUmVzb3VyY2VzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBvdGhlckxhbmd1YWdlcyA9IHRoaXMucmVhZGVyc1snb3RoZXJMYW5ndWFnZXMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMucmVhZGVyc1snZGVmYXVsdExhbmd1YWdlJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCByZXNvdXJjZUlkZW50aWZpZXIgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlSWRlbnRpZmllciddKHJvb3RFbCwgdHIpXG4gICAgY29uc3Qgc3BhdGlhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3NwYXRpYWxFeHRlbnRzJ10ocm9vdEVsLCB0cilcblxuICAgIHJldHVybiB7XG4gICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgLi4uKHJlc291cmNlSWRlbnRpZmllciAmJiB7IHJlc291cmNlSWRlbnRpZmllciB9KSxcbiAgICAgIGtpbmQsXG4gICAgICBvdGhlckxhbmd1YWdlcyxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICByZWNvcmRVcGRhdGVkLFxuICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAuLi4ocmVzb3VyY2VQdWJsaXNoZWQgJiYgeyByZXNvdXJjZVB1Ymxpc2hlZCB9KSxcbiAgICAgIHRpdGxlLFxuICAgICAgYWJzdHJhY3QsXG4gICAgICBvd25lck9yZ2FuaXphdGlvbixcbiAgICAgIGNvbnRhY3RzLFxuICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgIGtleXdvcmRzLFxuICAgICAgdG9waWNzLFxuICAgICAgbGljZW5zZXMsXG4gICAgICBsZWdhbENvbnN0cmFpbnRzLFxuICAgICAgc2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICBvdmVydmlld3MsXG4gICAgICBzcGF0aWFsRXh0ZW50cyxcbiAgICAgIG9ubGluZVJlc291cmNlcyxcbiAgICAgIHRyYW5zbGF0aW9uczogdHIsXG4gICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgfVxuXG4gIGFzeW5jIHJlYWRSZWNvcmQoZG9jdW1lbnQ6IHN0cmluZyk6IFByb21pc2U8Q2F0YWxvZ1JlY29yZD4ge1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlWG1sU3RyaW5nKGRvY3VtZW50KVxuICAgIGNvbnN0IHJvb3RFbCA9IGdldFJvb3RFbGVtZW50KGRvYylcblxuICAgIGNvbnN0IHRyOiBSZWNvcmRUcmFuc2xhdGlvbnMgPSB7fVxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlYWRlcnNbJ2tpbmQnXShyb290RWwsIHRyKSBhcyBSZWNvcmRLaW5kXG5cbiAgICBpZiAoa2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnJlYWRlcnNbJ3N0YXR1cyddKHJvb3RFbCwgdHIpXG4gICAgICBjb25zdCBzcGF0aWFsUmVwcmVzZW50YXRpb24gPSB0aGlzLnJlYWRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddKFxuICAgICAgICByb290RWwsXG4gICAgICAgIHRyXG4gICAgICApXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJvb3RFbCwgdHIpXG4gICAgICBjb25zdCBsaW5lYWdlID0gdGhpcy5yZWFkZXJzWydsaW5lYWdlJ10ocm9vdEVsLCB0cilcbiAgICAgIGNvbnN0IHVwZGF0ZUZyZXF1ZW5jeSA9IHRoaXMucmVhZGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocm9vdEVsLCB0cilcblxuICAgICAgcmV0dXJuIHRoaXMuYWZ0ZXJSZWNvcmRSZWFkKHtcbiAgICAgICAgLi4udGhpcy5yZWFkQmFzZVJlY29yZChyb290RWwsIHRyKSxcbiAgICAgICAga2luZCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICAuLi4oc3BhdGlhbFJlcHJlc2VudGF0aW9uICYmIHsgc3BhdGlhbFJlcHJlc2VudGF0aW9uIH0pLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIH0gYXMgRGF0YXNldFJlY29yZClcbiAgICB9IGVsc2UgaWYgKGtpbmQgPT09ICdyZXVzZScpIHtcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShyb290RWwsIHRyKVxuICAgICAgY29uc3QgdGVtcG9yYWxFeHRlbnRzID0gdGhpcy5yZWFkZXJzWyd0ZW1wb3JhbEV4dGVudHMnXShyb290RWwsIHRyKVxuICAgICAgY29uc3QgcmV1c2VUeXBlID0gdGhpcy5yZWFkZXJzWydyZXVzZVR5cGUnXShyb290RWwsIHRyKVxuXG4gICAgICByZXR1cm4gdGhpcy5hZnRlclJlY29yZFJlYWQoe1xuICAgICAgICAuLi50aGlzLnJlYWRCYXNlUmVjb3JkKHJvb3RFbCwgdHIpLFxuICAgICAgICBraW5kLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIHJldXNlVHlwZSxcbiAgICAgIH0gYXMgUmV1c2VSZWNvcmQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFmdGVyUmVjb3JkUmVhZCh7XG4gICAgICAgIC4uLnRoaXMucmVhZEJhc2VSZWNvcmQocm9vdEVsLCB0ciksXG4gICAgICAgIGtpbmQsXG4gICAgICB9IGFzIFNlcnZpY2VSZWNvcmQpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgd3JpdGVSZWNvcmQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZT86IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByb290RWw6IFhtbEVsZW1lbnRcbiAgICBsZXQgZmllbGRDaGFuZ2VkOiAobmFtZTogc3RyaW5nKSA9PiBib29sZWFuXG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxEb2MgPSBwYXJzZVhtbFN0cmluZyhyZWZlcmVuY2UpXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY29yZCA9IGF3YWl0IHRoaXMucmVhZFJlY29yZChyZWZlcmVuY2UpXG4gICAgICByb290RWwgPSBnZXRSb290RWxlbWVudChvcmlnaW5hbERvYylcblxuICAgICAgZmllbGRDaGFuZ2VkID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZWNvcmQgIT09IG51bGxcbiAgICAgICAgICA/ICFpc0VxdWFsKHJlY29yZFtuYW1lXSwgb3JpZ2luYWxSZWNvcmRbbmFtZV0pXG4gICAgICAgICAgOiB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3RFbCA9IGNyZWF0ZUVsZW1lbnQoJ2dtZDpNRF9NZXRhZGF0YScpKClcbiAgICAgIGZpZWxkQ2hhbmdlZCA9ICgpID0+IHRydWVcbiAgICB9XG5cbiAgICBmaWVsZENoYW5nZWQoJ3VuaXF1ZUlkZW50aWZpZXInKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXVzZVR5cGUnKSAmJiB0aGlzLndyaXRlcnNbJ3JldXNlVHlwZSddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgna2luZCcpICYmIHRoaXMud3JpdGVyc1sna2luZCddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnZGVmYXVsdExhbmd1YWdlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snZGVmYXVsdExhbmd1YWdlJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBmaWVsZENoYW5nZWQoJ2NvbnRhY3RzJykgJiYgdGhpcy53cml0ZXJzWydjb250YWN0cyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnb3duZXJPcmdhbml6YXRpb24nKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRVcGRhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkQ3JlYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZENyZWF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZFB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCd0aXRsZScpICYmIHRoaXMud3JpdGVyc1sndGl0bGUnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2Fic3RyYWN0JykgJiYgdGhpcy53cml0ZXJzWydhYnN0cmFjdCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZUNyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlUHVibGlzaGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VQdWJsaXNoZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0c0ZvclJlc291cmNlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdrZXl3b3JkcycpICYmIHRoaXMud3JpdGVyc1sna2V5d29yZHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3RvcGljcycpICYmIHRoaXMud3JpdGVyc1sndG9waWNzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdsZWdhbENvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnc2VjdXJpdHlDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2xpY2Vuc2VzJykgJiYgdGhpcy53cml0ZXJzWydsaWNlbnNlcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnb3RoZXJDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ290aGVyQ29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ29ubGluZVJlc291cmNlcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ29ubGluZVJlc291cmNlcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VJZGVudGlmaWVyJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBpZiAocmVjb3JkLmtpbmQgPT09ICdkYXRhc2V0Jykge1xuICAgICAgZmllbGRDaGFuZ2VkKCdzdGF0dXMnKSAmJiB0aGlzLndyaXRlcnNbJ3N0YXR1cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCd1cGRhdGVGcmVxdWVuY3knKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3VwZGF0ZUZyZXF1ZW5jeSddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdzcGF0aWFsUmVwcmVzZW50YXRpb24nKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdvdmVydmlld3MnKSAmJiB0aGlzLndyaXRlcnNbJ292ZXJ2aWV3cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCd0ZW1wb3JhbEV4dGVudHMnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdzcGF0aWFsRXh0ZW50cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbEV4dGVudHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICAgIGZpZWxkQ2hhbmdlZCgnbGluZWFnZScpICYmIHRoaXMud3JpdGVyc1snbGluZWFnZSddKHJlY29yZCwgcm9vdEVsKVxuICAgIH1cblxuICAgIGZpZWxkQ2hhbmdlZCgnb3RoZXJMYW5ndWFnZXMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckxhbmd1YWdlcyddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgdGhpcy5iZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbClcblxuICAgIGNvbnN0IG5ld0RvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQocm9vdEVsKVxuICAgIHJldHVybiB4bWxUb1N0cmluZyhuZXdEb2N1bWVudClcbiAgfVxufVxuIl19
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMzkuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvaXNvMTkxMzkvaXNvMTkxMzkuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsU0FBUyxFQUNULG9CQUFvQixFQUNwQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGFBQWEsRUFD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QUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0MsQ0FBQztRQUNELFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBRWhELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVuQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUMsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIERhdGFzZXRSZWNvcmQsXG4gIE1vZGVsVHJhbnNsYXRpb25zLFxuICBSZWNvcmRLaW5kLFxuICBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gIFJldXNlUmVjb3JkLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi4vYmFzZS5jb252ZXJ0ZXInXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vY29udmVydC11dGlscydcbmltcG9ydCB7IGlzRmllbGRUcmFuc2xhdGFibGUgfSBmcm9tICcuLi90cmFuc2xhdGUtdXRpbHMnXG5pbXBvcnQge1xuICBjcmVhdGVEb2N1bWVudCxcbiAgY3JlYXRlRWxlbWVudCxcbiAgZ2V0Um9vdEVsZW1lbnQsXG4gIHBhcnNlWG1sU3RyaW5nLFxuICB4bWxUb1N0cmluZyxcbn0gZnJvbSAnLi4veG1sLXV0aWxzJ1xuaW1wb3J0IHtcbiAgcmVhZEFic3RyYWN0LFxuICByZWFkQ29udGFjdHMsXG4gIHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICByZWFkRGVmYXVsdExhbmd1YWdlLFxuICByZWFkSXNvVG9waWNzLFxuICByZWFkS2V5d29yZHMsXG4gIHJlYWRLaW5kLFxuICByZWFkTGVnYWxDb25zdHJhaW50cyxcbiAgcmVhZExpY2Vuc2VzLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE90aGVyQ29uc3RyYWludHMsXG4gIHJlYWRPdGhlckxhbmd1YWdlcyxcbiAgcmVhZE92ZXJ2aWV3cyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkVXBkYXRlZCxcbiAgcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgcmVhZFJlc291cmNlSWRlbnRpZmllcixcbiAgcmVhZFJlc291cmNlUHVibGlzaGVkLFxuICByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICByZWFkUmV1c2VUeXBlLFxuICByZWFkU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgcmVhZFNwYXRpYWxFeHRlbnRzLFxuICByZWFkU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICByZWFkU3RhdHVzLFxuICByZWFkVGVtcG9yYWxFeHRlbnRzLFxuICByZWFkVGl0bGUsXG4gIHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICByZWFkVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3JlYWQtcGFydHMnXG5pbXBvcnQge1xuICB3cml0ZUFic3RyYWN0LFxuICB3cml0ZUNvbnRhY3RzLFxuICB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHdyaXRlRGVmYXVsdExhbmd1YWdlLFxuICB3cml0ZUdyYXBoaWNPdmVydmlld3MsXG4gIHdyaXRlS2V5d29yZHMsXG4gIHdyaXRlS2luZCxcbiAgd3JpdGVMYW5ndWFnZXMsXG4gIHdyaXRlTGVnYWxDb25zdHJhaW50cyxcbiAgd3JpdGVMaWNlbnNlcyxcbiAgd3JpdGVMaW5lYWdlLFxuICB3cml0ZU9ubGluZVJlc291cmNlcyxcbiAgd3JpdGVPdGhlckNvbnN0cmFpbnRzLFxuICB3cml0ZVJlY29yZFVwZGF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICB3cml0ZVJlc291cmNlSWRlbnRpZmllcixcbiAgd3JpdGVSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgd3JpdGVSZXNvdXJjZVVwZGF0ZWQsXG4gIHdyaXRlUmV1c2VUeXBlLFxuICB3cml0ZVNlY3VyaXR5Q29uc3RyYWludHMsXG4gIHdyaXRlU3BhdGlhbEV4dGVudHMsXG4gIHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICB3cml0ZVN0YXR1cyxcbiAgd3JpdGVUZW1wb3JhbEV4dGVudHMsXG4gIHdyaXRlVGl0bGUsXG4gIHdyaXRlVG9waWNzLFxuICB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG4gIHdyaXRlVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3dyaXRlLXBhcnRzJ1xuXG5leHBvcnQgY2xhc3MgSXNvMTkxMzlDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPHN0cmluZz4ge1xuICBwcm90ZWN0ZWQgcmVhZGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyb290RWw6IFhtbEVsZW1lbnQsIHRyYW5zbGF0aW9uczogUmVjb3JkVHJhbnNsYXRpb25zKSA9PiB1bmtub3duXG4gID4gPSB7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogcmVhZFVuaXF1ZUlkZW50aWZpZXIsXG4gICAga2luZDogcmVhZEtpbmQsXG4gICAgb3duZXJPcmdhbml6YXRpb246IHJlYWRPd25lck9yZ2FuaXphdGlvbixcbiAgICByZWNvcmRVcGRhdGVkOiByZWFkUmVjb3JkVXBkYXRlZCxcbiAgICByZWNvcmRDcmVhdGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlc291cmNlSWRlbnRpZmllcjogcmVhZFJlc291cmNlSWRlbnRpZmllcixcbiAgICByZXNvdXJjZVVwZGF0ZWQ6IHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gICAgcmVzb3VyY2VDcmVhdGVkOiByZWFkUmVzb3VyY2VDcmVhdGVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiByZWFkUmVzb3VyY2VQdWJsaXNoZWQsXG4gICAgcmV1c2VUeXBlOiByZWFkUmV1c2VUeXBlLFxuICAgIHRpdGxlOiByZWFkVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHJlYWRBYnN0cmFjdCxcbiAgICBjb250YWN0czogcmVhZENvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGtleXdvcmRzOiByZWFkS2V5d29yZHMsXG4gICAgdG9waWNzOiByZWFkSXNvVG9waWNzLFxuICAgIGxpY2Vuc2VzOiByZWFkTGljZW5zZXMsXG4gICAgbGVnYWxDb25zdHJhaW50czogcmVhZExlZ2FsQ29uc3RyYWludHMsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogcmVhZFNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgb3RoZXJDb25zdHJhaW50czogcmVhZE90aGVyQ29uc3RyYWludHMsXG4gICAgc3RhdHVzOiByZWFkU3RhdHVzLFxuICAgIHVwZGF0ZUZyZXF1ZW5jeTogcmVhZFVwZGF0ZUZyZXF1ZW5jeSxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246IHJlYWRTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gICAgb3ZlcnZpZXdzOiByZWFkT3ZlcnZpZXdzLFxuICAgIGxpbmVhZ2U6IHJlYWRMaW5lYWdlLFxuICAgIG9ubGluZVJlc291cmNlczogcmVhZE9ubGluZVJlc291cmNlcyxcbiAgICB0ZW1wb3JhbEV4dGVudHM6IHJlYWRUZW1wb3JhbEV4dGVudHMsXG4gICAgc3BhdGlhbEV4dGVudHM6IHJlYWRTcGF0aWFsRXh0ZW50cyxcbiAgICBvdGhlckxhbmd1YWdlczogcmVhZE90aGVyTGFuZ3VhZ2VzLFxuICAgIGRlZmF1bHRMYW5ndWFnZTogcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgICAvLyBUT0RPXG4gICAgZXh0cmFzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGFuZGluZ1BhZ2U6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB0cmFuc2xhdGlvbnM6ICgpID0+IHVuZGVmaW5lZCxcbiAgfVxuXG4gIHByb3RlY3RlZCB3cml0ZXJzOiBSZWNvcmQ8XG4gICAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gICAgKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSA9PiB2b2lkXG4gID4gPSB7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogd3JpdGVVbmlxdWVJZGVudGlmaWVyLFxuICAgIGtpbmQ6IHdyaXRlS2luZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogKCkgPT4gdW5kZWZpbmVkLCAvLyBmaXhtZTogZmluZCBhIHdheSB0byBzdG9yZSB0aGlzIHZhbHVlIHByb3Blcmx5XG4gICAgcmVjb3JkVXBkYXRlZDogd3JpdGVSZWNvcmRVcGRhdGVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVzb3VyY2VJZGVudGlmaWVyOiB3cml0ZVJlc291cmNlSWRlbnRpZmllcixcbiAgICByZXNvdXJjZVVwZGF0ZWQ6IHdyaXRlUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogd3JpdGVSZXNvdXJjZUNyZWF0ZWQsXG4gICAgcmVzb3VyY2VQdWJsaXNoZWQ6IHdyaXRlUmVzb3VyY2VQdWJsaXNoZWQsXG4gICAgcmV1c2VUeXBlOiB3cml0ZVJldXNlVHlwZSxcbiAgICB0aXRsZTogd3JpdGVUaXRsZSxcbiAgICBhYnN0cmFjdDogd3JpdGVBYnN0cmFjdCxcbiAgICBjb250YWN0czogd3JpdGVDb250YWN0cyxcbiAgICBjb250YWN0c0ZvclJlc291cmNlOiB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAga2V5d29yZHM6IHdyaXRlS2V5d29yZHMsXG4gICAgdG9waWNzOiB3cml0ZVRvcGljcyxcbiAgICBsaWNlbnNlczogd3JpdGVMaWNlbnNlcyxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiB3cml0ZUxlZ2FsQ29uc3RyYWludHMsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogd3JpdGVTZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgIG90aGVyQ29uc3RyYWludHM6IHdyaXRlT3RoZXJDb25zdHJhaW50cyxcbiAgICBzdGF0dXM6IHdyaXRlU3RhdHVzLFxuICAgIHVwZGF0ZUZyZXF1ZW5jeTogd3JpdGVVcGRhdGVGcmVxdWVuY3ksXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgICBvdmVydmlld3M6IHdyaXRlR3JhcGhpY092ZXJ2aWV3cyxcbiAgICBsaW5lYWdlOiB3cml0ZUxpbmVhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiB3cml0ZU9ubGluZVJlc291cmNlcyxcbiAgICB0ZW1wb3JhbEV4dGVudHM6IHdyaXRlVGVtcG9yYWxFeHRlbnRzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiB3cml0ZVNwYXRpYWxFeHRlbnRzLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiB3cml0ZUxhbmd1YWdlcyxcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHdyaXRlRGVmYXVsdExhbmd1YWdlLFxuICAgIC8vIFRPRE9cbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHRyYW5zbGF0aW9uczogKCkgPT4gdW5kZWZpbmVkLCAvLyBOQi4gdHJhbnNsYXRpb25zIGFyZSBoYW5kbGVkIGluIHByb3BlcnRpZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBiZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbGVtZW50OiBYbWxFbGVtZW50KSB7XG4gICAgLy8gdG8gb3ZlcnJpZGVcbiAgfVxuXG4gIHByb3RlY3RlZCBhZnRlclJlY29yZFJlYWQocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogQ2F0YWxvZ1JlY29yZCB7XG4gICAgZnVuY3Rpb24gZml4TGFuZ3VhZ2VzKHRhcmdldDogeyB0cmFuc2xhdGlvbnM/OiBNb2RlbFRyYW5zbGF0aW9ucyB9KSB7XG4gICAgICBpZiAoISgndHJhbnNsYXRpb25zJyBpbiB0YXJnZXQpKSByZXR1cm5cbiAgICAgIGZvciAoY29uc3QgZmllbGROYW1lIGluIHRhcmdldC50cmFuc2xhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZmllbGRUcmFuc2xhdGlvbnMgPSB0YXJnZXQudHJhbnNsYXRpb25zW2ZpZWxkTmFtZV0gPz8ge31cbiAgICAgICAgLy8gcmVtb3ZlIHJlZHVuZGFudCB0cmFuc2xhdGlvbnNcbiAgICAgICAgaWYgKHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UgaW4gZmllbGRUcmFuc2xhdGlvbnMpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGRUcmFuc2xhdGlvbnNbcmVjb3JkLmRlZmF1bHRMYW5ndWFnZV1cbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgdHJhbnNsYXRlZCB2YWx1ZXMgaWYgdGhleSBoYXZlIG5vIHRyYW5zbGF0aW9uc1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmllbGRUcmFuc2xhdGlvbnMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRlbGV0ZSB0YXJnZXQudHJhbnNsYXRpb25zW2ZpZWxkTmFtZV1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIC8vIGFkZCBsYW5ndWFnZXMgdGhhdCBoYXZlIHRyYW5zbGF0aW9ucyB0byB0aGUgcm9vdCBsYW5ndWFnZSBsaXN0XG4gICAgICAgIGZvciAoY29uc3QgbGFuZyBpbiBmaWVsZFRyYW5zbGF0aW9ucykge1xuICAgICAgICAgIGlmICghcmVjb3JkLm90aGVyTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpKSB7XG4gICAgICAgICAgICByZWNvcmQub3RoZXJMYW5ndWFnZXMucHVzaChsYW5nKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZpeExhbmd1YWdlcyhyZWNvcmQpXG4gICAgcmVjb3JkLmtleXdvcmRzLm1hcChmaXhMYW5ndWFnZXMpXG4gICAgcmVjb3JkLm9ubGluZVJlc291cmNlcy5tYXAoZml4TGFuZ3VhZ2VzKVxuICAgIHJlY29yZC5saWNlbnNlcy5tYXAoZml4TGFuZ3VhZ2VzKVxuICAgIHJlY29yZC5sZWdhbENvbnN0cmFpbnRzLm1hcChmaXhMYW5ndWFnZXMpXG4gICAgcmVjb3JkLnNlY3VyaXR5Q29uc3RyYWludHMubWFwKGZpeExhbmd1YWdlcylcbiAgICByZWNvcmQub3RoZXJDb25zdHJhaW50cy5tYXAoZml4TGFuZ3VhZ2VzKVxuICAgIHJlY29yZC5jb250YWN0cy5tYXAoKGMpID0+IGZpeExhbmd1YWdlcyhjLm9yZ2FuaXphdGlvbikpXG4gICAgcmVjb3JkLmNvbnRhY3RzRm9yUmVzb3VyY2UubWFwKChjKSA9PiBmaXhMYW5ndWFnZXMoYy5vcmdhbml6YXRpb24pKVxuICAgIGZpeExhbmd1YWdlcyhyZWNvcmQub3duZXJPcmdhbml6YXRpb24pXG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIHJlY29yZC5zcGF0aWFsRXh0ZW50cy5tYXAoZml4TGFuZ3VhZ2VzKVxuICAgIH1cblxuICAgIC8vIHJlbW92ZSBkZWZhdWx0IGxhbmd1YWdlIGZyb20gb3RoZXJMYW5ndWFnZXMgbGlzdFxuICAgIGlmIChyZWNvcmQub3RoZXJMYW5ndWFnZXMuaW5jbHVkZXMocmVjb3JkLmRlZmF1bHRMYW5ndWFnZSkpIHtcbiAgICAgIHJlY29yZC5vdGhlckxhbmd1YWdlcyA9IHJlY29yZC5vdGhlckxhbmd1YWdlcy5maWx0ZXIoXG4gICAgICAgIChsYW5nKSA9PiBsYW5nICE9PSByZWNvcmQuZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZFxuICB9XG5cbiAgcmVhZEJhc2VSZWNvcmQocm9vdEVsOiBYbWxFbGVtZW50LCB0cjogUmVjb3JkVHJhbnNsYXRpb25zKTogQ2F0YWxvZ1JlY29yZCB7XG4gICAgY29uc3QgdW5pcXVlSWRlbnRpZmllciA9IHRoaXMucmVhZGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJvb3RFbCwgdHIpXG4gICAgY29uc3Qga2luZCA9IHRoaXMucmVhZGVyc1sna2luZCddKHJvb3RFbCwgdHIpXG4gICAgY29uc3Qgb3duZXJPcmdhbml6YXRpb24gPSB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMucmVhZGVyc1sndGl0bGUnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGFic3RyYWN0ID0gdGhpcy5yZWFkZXJzWydhYnN0cmFjdCddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgY29udGFjdHMgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBjb250YWN0c0ZvclJlc291cmNlID0gdGhpcy5yZWFkZXJzWydjb250YWN0c0ZvclJlc291cmNlJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCByZWNvcmRVcGRhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCByZWNvcmRDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCByZWNvcmRQdWJsaXNoZWQgPSB0aGlzLnJlYWRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgcmVzb3VyY2VDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IHJlc291cmNlVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VVcGRhdGVkJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCByZXNvdXJjZVB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VQdWJsaXNoZWQnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5yZWFkZXJzWydrZXl3b3JkcyddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgdG9waWNzID0gdGhpcy5yZWFkZXJzWyd0b3BpY3MnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGxlZ2FsQ29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ2xlZ2FsQ29uc3RyYWludHMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IG90aGVyQ29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ290aGVyQ29uc3RyYWludHMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IHNlY3VyaXR5Q29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGxpY2Vuc2VzID0gdGhpcy5yZWFkZXJzWydsaWNlbnNlcyddKHJvb3RFbCwgdHIpXG4gICAgY29uc3Qgb3ZlcnZpZXdzID0gdGhpcy5yZWFkZXJzWydvdmVydmlld3MnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gdGhpcy5yZWFkZXJzWydsYW5kaW5nUGFnZSddKHJvb3RFbCwgdHIpXG4gICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IG90aGVyTGFuZ3VhZ2VzID0gdGhpcy5yZWFkZXJzWydvdGhlckxhbmd1YWdlcyddKHJvb3RFbCwgdHIpXG4gICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5yZWFkZXJzWydkZWZhdWx0TGFuZ3VhZ2UnXShyb290RWwsIHRyKVxuICAgIGNvbnN0IHJlc291cmNlSWRlbnRpZmllciA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VJZGVudGlmaWVyJ10ocm9vdEVsLCB0cilcbiAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShyb290RWwsIHRyKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAuLi4ocmVzb3VyY2VJZGVudGlmaWVyICYmIHsgcmVzb3VyY2VJZGVudGlmaWVyIH0pLFxuICAgICAga2luZCxcbiAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgZGVmYXVsdExhbmd1YWdlLFxuICAgICAgLi4uKHJlY29yZENyZWF0ZWQgJiYgeyByZWNvcmRDcmVhdGVkIH0pLFxuICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAuLi4ocmVzb3VyY2VDcmVhdGVkICYmIHsgcmVzb3VyY2VDcmVhdGVkIH0pLFxuICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgdGl0bGUsXG4gICAgICBhYnN0cmFjdCxcbiAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgY29udGFjdHMsXG4gICAgICBjb250YWN0c0ZvclJlc291cmNlLFxuICAgICAga2V5d29yZHMsXG4gICAgICB0b3BpY3MsXG4gICAgICBsaWNlbnNlcyxcbiAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICBzZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgICAgb3RoZXJDb25zdHJhaW50cyxcbiAgICAgIG92ZXJ2aWV3cyxcbiAgICAgIHNwYXRpYWxFeHRlbnRzLFxuICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIC4uLihsYW5kaW5nUGFnZSAmJiB7IGxhbmRpbmdQYWdlIH0pLFxuICAgIH0gYXMgQ2F0YWxvZ1JlY29yZFxuICB9XG5cbiAgYXN5bmMgcmVhZFJlY29yZChkb2N1bWVudDogc3RyaW5nKTogUHJvbWlzZTxDYXRhbG9nUmVjb3JkPiB7XG4gICAgY29uc3QgZG9jID0gcGFyc2VYbWxTdHJpbmcoZG9jdW1lbnQpXG4gICAgY29uc3Qgcm9vdEVsID0gZ2V0Um9vdEVsZW1lbnQoZG9jKVxuICAgIGNvbnN0IHRyOiBSZWNvcmRUcmFuc2xhdGlvbnMgPSB7fVxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlYWRlcnNbJ2tpbmQnXShyb290RWwsIHRyKSBhcyBSZWNvcmRLaW5kXG5cbiAgICBpZiAoa2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnJlYWRlcnNbJ3N0YXR1cyddKHJvb3RFbCwgdHIpXG4gICAgICBjb25zdCBzcGF0aWFsUmVwcmVzZW50YXRpb24gPSB0aGlzLnJlYWRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddKFxuICAgICAgICByb290RWwsXG4gICAgICAgIHRyXG4gICAgICApXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJvb3RFbCwgdHIpXG4gICAgICBjb25zdCBsaW5lYWdlID0gdGhpcy5yZWFkZXJzWydsaW5lYWdlJ10ocm9vdEVsLCB0cilcbiAgICAgIGNvbnN0IHVwZGF0ZUZyZXF1ZW5jeSA9IHRoaXMucmVhZGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocm9vdEVsLCB0cilcblxuICAgICAgcmV0dXJuIHRoaXMuYWZ0ZXJSZWNvcmRSZWFkKHtcbiAgICAgICAgLi4udGhpcy5yZWFkQmFzZVJlY29yZChyb290RWwsIHRyKSxcbiAgICAgICAga2luZCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICAuLi4oc3BhdGlhbFJlcHJlc2VudGF0aW9uICYmIHsgc3BhdGlhbFJlcHJlc2VudGF0aW9uIH0pLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIH0gYXMgRGF0YXNldFJlY29yZClcbiAgICB9IGVsc2UgaWYgKGtpbmQgPT09ICdyZXVzZScpIHtcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShyb290RWwsIHRyKVxuICAgICAgY29uc3QgdGVtcG9yYWxFeHRlbnRzID0gdGhpcy5yZWFkZXJzWyd0ZW1wb3JhbEV4dGVudHMnXShyb290RWwsIHRyKVxuICAgICAgY29uc3QgcmV1c2VUeXBlID0gdGhpcy5yZWFkZXJzWydyZXVzZVR5cGUnXShyb290RWwsIHRyKVxuXG4gICAgICByZXR1cm4gdGhpcy5hZnRlclJlY29yZFJlYWQoe1xuICAgICAgICAuLi50aGlzLnJlYWRCYXNlUmVjb3JkKHJvb3RFbCwgdHIpLFxuICAgICAgICBraW5kLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIHJldXNlVHlwZSxcbiAgICAgIH0gYXMgUmV1c2VSZWNvcmQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFmdGVyUmVjb3JkUmVhZCh7XG4gICAgICAgIC4uLnRoaXMucmVhZEJhc2VSZWNvcmQocm9vdEVsLCB0ciksXG4gICAgICAgIGtpbmQsXG4gICAgICB9IGFzIFNlcnZpY2VSZWNvcmQpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgd3JpdGVSZWNvcmQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZT86IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByb290RWw6IFhtbEVsZW1lbnRcbiAgICBsZXQgZmllbGRDaGFuZ2VkOiAobmFtZTogc3RyaW5nKSA9PiBib29sZWFuXG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgbGV0IGxhbmd1YWdlc0NoYW5nZWQ6IGJvb2xlYW5cbiAgICAgIGNvbnN0IG9yaWdpbmFsRG9jID0gcGFyc2VYbWxTdHJpbmcocmVmZXJlbmNlKVxuICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSBhd2FpdCB0aGlzLnJlYWRSZWNvcmQocmVmZXJlbmNlKVxuICAgICAgcm9vdEVsID0gZ2V0Um9vdEVsZW1lbnQob3JpZ2luYWxEb2MpXG5cbiAgICAgIGZpZWxkQ2hhbmdlZCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVjb3JkICE9PSBudWxsXG4gICAgICAgICAgPyAhaXNFcXVhbChyZWNvcmRbbmFtZV0sIG9yaWdpbmFsUmVjb3JkW25hbWVdKSB8fFxuICAgICAgICAgICAgICAobGFuZ3VhZ2VzQ2hhbmdlZCAmJiBpc0ZpZWxkVHJhbnNsYXRhYmxlKG5hbWUpKVxuICAgICAgICAgIDogdHJ1ZVxuICAgICAgfVxuICAgICAgbGFuZ3VhZ2VzQ2hhbmdlZCA9IGZpZWxkQ2hhbmdlZCgnb3RoZXJMYW5ndWFnZXMnKVxuICAgIH0gZWxzZSB7XG4gICAgICByb290RWwgPSBjcmVhdGVFbGVtZW50KCdnbWQ6TURfTWV0YWRhdGEnKSgpXG4gICAgICBmaWVsZENoYW5nZWQgPSAoKSA9PiB0cnVlXG4gICAgfVxuXG4gICAgZmllbGRDaGFuZ2VkKCd1bmlxdWVJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgncmV1c2VUeXBlJykgJiYgdGhpcy53cml0ZXJzWydyZXVzZVR5cGUnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2tpbmQnKSAmJiB0aGlzLndyaXRlcnNbJ2tpbmQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2RlZmF1bHRMYW5ndWFnZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2RlZmF1bHRMYW5ndWFnZSddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmIHRoaXMud3JpdGVyc1snY29udGFjdHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ293bmVyT3JnYW5pemF0aW9uJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3duZXJPcmdhbml6YXRpb24nXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZENyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRQdWJsaXNoZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRQdWJsaXNoZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICA7KGZpZWxkQ2hhbmdlZCgndGl0bGUnKSB8fCBmaWVsZENoYW5nZWQoJ3RyYW5zbGF0aW9ucycpKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWyd0aXRsZSddKHJlY29yZCwgcm9vdEVsKVxuICAgIDsoZmllbGRDaGFuZ2VkKCdhYnN0cmFjdCcpIHx8IGZpZWxkQ2hhbmdlZCgndHJhbnNsYXRpb25zJykpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2Fic3RyYWN0J10ocmVjb3JkLCByb290RWwpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlQ3JlYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VQdWJsaXNoZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VVcGRhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VVcGRhdGVkJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBmaWVsZENoYW5nZWQoJ2NvbnRhY3RzRm9yUmVzb3VyY2UnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydjb250YWN0c0ZvclJlc291cmNlJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBmaWVsZENoYW5nZWQoJ2tleXdvcmRzJykgJiYgdGhpcy53cml0ZXJzWydrZXl3b3JkcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgndG9waWNzJykgJiYgdGhpcy53cml0ZXJzWyd0b3BpY3MnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2xlZ2FsQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydsZWdhbENvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdzZWN1cml0eUNvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snc2VjdXJpdHlDb25zdHJhaW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnbGljZW5zZXMnKSAmJiB0aGlzLndyaXRlcnNbJ2xpY2Vuc2VzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdvdGhlckNvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3RoZXJDb25zdHJhaW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnb25saW5lUmVzb3VyY2VzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb25saW5lUmVzb3VyY2VzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZUlkZW50aWZpZXInKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZUlkZW50aWZpZXInXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBmaWVsZENoYW5nZWQoJ3N0YXR1cycpICYmIHRoaXMud3JpdGVyc1snc3RhdHVzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3VwZGF0ZUZyZXF1ZW5jeScpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxSZXByZXNlbnRhdGlvbicpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ292ZXJ2aWV3cycpICYmIHRoaXMud3JpdGVyc1snb3ZlcnZpZXdzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3RlbXBvcmFsRXh0ZW50cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndGVtcG9yYWxFeHRlbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxFeHRlbnRzJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydzcGF0aWFsRXh0ZW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgOyhmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSB8fCBmaWVsZENoYW5nZWQoJ3RyYW5zbGF0aW9ucycpKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIHJvb3RFbClcbiAgICB9XG4gICAgZmllbGRDaGFuZ2VkKCdvdGhlckxhbmd1YWdlcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ290aGVyTGFuZ3VhZ2VzJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICB0aGlzLmJlZm9yZURvY3VtZW50Q3JlYXRpb24ocm9vdEVsKVxuXG4gICAgY29uc3QgbmV3RG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudChyb290RWwpXG4gICAgcmV0dXJuIHhtbFRvU3RyaW5nKG5ld0RvY3VtZW50KVxuICB9XG59XG4iXX0=