@po-ui/ng-templates 17.2.0 → 17.4.0

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 (42) hide show
  1. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-literals.interface.mjs +1 -1
  2. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +49 -4
  3. package/fesm2022/po-ui-ng-templates.mjs +49 -4
  4. package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
  5. package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-literals.interface.d.ts +6 -0
  6. package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.d.ts +26 -1
  7. package/package.json +4 -4
  8. package/po-ui-ng-templates-17.4.0.tgz +0 -0
  9. package/schematics/ng-add/index.js +1 -1
  10. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  11. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +1 -0
  12. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  13. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +22 -0
  14. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  15. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +1 -0
  16. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  17. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +22 -0
  18. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  19. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -0
  20. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  21. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +29 -0
  22. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  23. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -0
  24. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  25. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +31 -0
  26. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  27. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -0
  28. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  29. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +36 -0
  30. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  31. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -0
  32. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  33. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +28 -0
  34. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  35. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +4 -0
  36. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  37. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +25 -0
  38. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.__style__.template +0 -0
  39. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.html.template +1 -0
  40. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -0
  41. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +23 -0
  42. package/po-ui-ng-templates-17.2.0.tgz +0 -0
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLWVkaXQtbGl0ZXJhbHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9saWIvY29tcG9uZW50cy9wby1wYWdlLWR5bmFtaWMtZWRpdC9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LWxpdGVyYWxzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdXNlZEJ5IFBvUGFnZUR5bmFtaWNFZGl0Q29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIHBhcmEgZGVmaW5pw6fDo28gZGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tcGFnZS1keW5hbWljLWVkaXRgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gbmEgbWVuc2FnZW0gZGUgY2FuY2VsYW1lbnRvIGRhIGluY2x1c8Ojby9lZGnDp8Ojby5cbiAgICovXG4gIGNhbmNlbENvbmZpcm1NZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBleGliaWRvIG5vIGJvdMOjbyBgTm92b2AuXG4gICAqL1xuICBkZXRhaWxBY3Rpb25OZXc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBSw7N0dWxvIGV4aWJpZG8gbm8gYm90w6NvIGBDYW5jZWxhcmAuXG4gICAqL1xuICBwYWdlQWN0aW9uQ2FuY2VsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBleGliaWRvIG5vIGJvdMOjbyBgU2FsdmFyYC5cbiAgICovXG4gIHBhZ2VBY3Rpb25TYXZlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBleGliaWRvIG5vIGJvdMOjbyBgU2FsdmFyIGUgbm92b2AuXG4gICAqL1xuICBwYWdlQWN0aW9uU2F2ZU5ldz86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gcGFyYSByZXNnaXN0cm8gbsOjbyBlbmNvbnRyYWRvLlxuICAgKi9cbiAgcmVnaXN0ZXJOb3RGb3VuZD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gcGFyYSByZWN1cnNvIHNhbHZvIGNvbSBzdWNlc3NvLlxuICAgKi9cbiAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gZXhpYmlkbyBwYXJhIHJlY3Vyc28gYXR1YWxpemFkbyBjb20gc3VjZXNzby5cbiAgICovXG4gIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gZXhpYmlkbyBwYXJhIGFkaXZlcnTDqm5jaWEgZGUgZm9ybXVsw6FyaW8gcHJlZW5jaGlkbyBkZSBmb3JtYSBpbmNvcnJldGEuXG4gICAqL1xuICBzYXZlTm90aWZpY2F0aW9uV2FybmluZz86IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLWVkaXQtbGl0ZXJhbHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9saWIvY29tcG9uZW50cy9wby1wYWdlLWR5bmFtaWMtZWRpdC9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LWxpdGVyYWxzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdXNlZEJ5IFBvUGFnZUR5bmFtaWNFZGl0Q29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIHBhcmEgZGVmaW5pw6fDo28gZGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tcGFnZS1keW5hbWljLWVkaXRgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gbmEgbWVuc2FnZW0gZGUgY2FuY2VsYW1lbnRvIGRhIGluY2x1c8Ojby9lZGnDp8Ojby5cbiAgICovXG4gIGNhbmNlbENvbmZpcm1NZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBleGliaWRvIG5vIGJvdMOjbyBgTm92b2AuXG4gICAqL1xuICBkZXRhaWxBY3Rpb25OZXc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBSw7N0dWxvIGV4aWJpZG8gbm8gYm90w6NvIGBDYW5jZWxhcmAuXG4gICAqL1xuICBwYWdlQWN0aW9uQ2FuY2VsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBleGliaWRvIG5vIGJvdMOjbyBgU2FsdmFyYC5cbiAgICovXG4gIHBhZ2VBY3Rpb25TYXZlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBleGliaWRvIG5vIGJvdMOjbyBgU2FsdmFyIGUgbm92b2AuXG4gICAqL1xuICBwYWdlQWN0aW9uU2F2ZU5ldz86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gcGFyYSByZXNnaXN0cm8gbsOjbyBlbmNvbnRyYWRvLlxuICAgKi9cbiAgcmVnaXN0ZXJOb3RGb3VuZD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gcGFyYSBvY29ycsOqbmNpYSBkZSBhbGd1bWEgaW5jb25zaXN0w6puY2lhIGFvIHNhbHZhci5cbiAgICovXG4gIHNhdmVOb3RpZmljYXRpb25FcnJvcj86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRleHRvIGV4aWJpZG8gcGFyYSByZWN1cnNvIHNhbHZvIGNvbSBzdWNlc3NvLlxuICAgKi9cbiAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gZXhpYmlkbyBwYXJhIHJlY3Vyc28gYXR1YWxpemFkbyBjb20gc3VjZXNzby5cbiAgICovXG4gIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gZXhpYmlkbyBwYXJhIGFkaXZlcnTDqm5jaWEgZGUgZm9ybXVsw6FyaW8gcHJlZW5jaGlkbyBkZSBmb3JtYSBpbmNvcnJldGEuXG4gICAqL1xuICBzYXZlTm90aWZpY2F0aW9uV2FybmluZz86IHN0cmluZztcbn1cbiJdfQ==
@@ -54,6 +54,8 @@ function PoPageDynamicEditComponent_ng_template_4_Template(rf, ctx) { if (rf & 1
54
54
  i0.ɵɵadvance(2);
55
55
  i0.ɵɵproperty("ngIf", ctx_r3.detailFields.length > 0);
56
56
  } }
57
+ export const poNotificationType = ['error', 'warning'];
58
+ export const poNotificationTypeDefault = 'warning';
57
59
  export const poPageDynamicEditLiteralsDefault = {
58
60
  en: {
59
61
  cancelConfirmMessage: 'Are you sure you want to cancel this operation?',
@@ -62,6 +64,7 @@ export const poPageDynamicEditLiteralsDefault = {
62
64
  pageActionSave: 'Save',
63
65
  pageActionSaveNew: 'Save and new',
64
66
  registerNotFound: 'Register not found.',
67
+ saveNotificationError: 'Mandatory field(s) not filled.',
65
68
  saveNotificationSuccessSave: 'Resource successfully saved.',
66
69
  saveNotificationSuccessUpdate: 'Resource successfully updated.',
67
70
  saveNotificationWarning: 'Form must be filled out correctly.'
@@ -73,6 +76,7 @@ export const poPageDynamicEditLiteralsDefault = {
73
76
  pageActionSave: 'Guardar',
74
77
  pageActionSaveNew: 'Guardar y nuevo',
75
78
  registerNotFound: 'Registro no encontrado.',
79
+ saveNotificationError: 'Campo(s) obligatorio(s) no completado(s).',
76
80
  saveNotificationSuccessSave: 'Recurso salvo con éxito.',
77
81
  saveNotificationSuccessUpdate: 'Recurso actualizado con éxito.',
78
82
  saveNotificationWarning: 'El formulario debe llenarse correctamente.'
@@ -84,6 +88,7 @@ export const poPageDynamicEditLiteralsDefault = {
84
88
  pageActionSave: 'Salvar',
85
89
  pageActionSaveNew: 'Salvar e novo',
86
90
  registerNotFound: 'Registro não encontrado.',
91
+ saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',
87
92
  saveNotificationSuccessSave: 'Recurso salvo com sucesso.',
88
93
  saveNotificationSuccessUpdate: 'Recurso atualizado com sucesso.',
89
94
  saveNotificationWarning: 'Formulário precisa ser preenchido corretamente.'
@@ -95,6 +100,7 @@ export const poPageDynamicEditLiteralsDefault = {
95
100
  pageActionSave: 'Сохранить',
96
101
  pageActionSaveNew: 'Сохранить и создать',
97
102
  registerNotFound: 'Запись не найдена.',
103
+ saveNotificationError: 'Обязательное поле(я) не заполнено.',
98
104
  saveNotificationSuccessSave: 'Ресурс успешно сохранен.',
99
105
  saveNotificationSuccessUpdate: 'Ресурс успешно обновлен.',
100
106
  saveNotificationWarning: 'Форма должна быть заполнена правильно.'
@@ -355,6 +361,7 @@ export class PoPageDynamicEditComponent {
355
361
  _fields = [];
356
362
  _keys = [];
357
363
  _pageActions = [];
364
+ _notificationType = poNotificationTypeDefault;
358
365
  /**
359
366
  * @optional
360
367
  *
@@ -386,6 +393,7 @@ export class PoPageDynamicEditComponent {
386
393
  * pageActionSave: 'Gravar',
387
394
  * pageActionSaveNew: 'Gravar e incluir',
388
395
  * registerNotFound: 'Nenhum registro encontrado.',
396
+ * saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',
389
397
  * saveNotificationSuccessSave: 'Item salvo com sucesso.',
390
398
  * saveNotificationSuccessUpdate: 'Item atualizado com sucesso.',
391
399
  * saveNotificationWarning: 'Necessário preencher o formulário corretamente.'
@@ -418,6 +426,30 @@ export class PoPageDynamicEditComponent {
418
426
  get literals() {
419
427
  return this._literals || poPageDynamicEditLiteralsDefault[this.language];
420
428
  }
429
+ /**
430
+ * @optional
431
+ *
432
+ * @description
433
+ *
434
+ * Tipo da notificação.
435
+ *
436
+ * É possivel definir o tipo de notificação que será exibido quando houver algum campo inválido no formulário.
437
+ *
438
+ * ```
439
+ * <po-page-dynamic-edit
440
+ * p-notification-type="warning">
441
+ * </po-page-dynamic-edit>
442
+ * ```
443
+ *
444
+ * > Os valores aceitos são 'warning' e 'error'.
445
+ * @default warning
446
+ */
447
+ set notificationType(value) {
448
+ this._notificationType = poNotificationType.includes(value) ? value : poNotificationTypeDefault;
449
+ }
450
+ get notificationType() {
451
+ return this._notificationType;
452
+ }
421
453
  /**
422
454
  * @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.
423
455
  *
@@ -695,10 +727,20 @@ export class PoPageDynamicEditComponent {
695
727
  dynamicNgForm.form.patchValue(this.model);
696
728
  }
697
729
  }
730
+ showNotification(type) {
731
+ switch (type) {
732
+ case 'warning':
733
+ this.poNotification.warning(this.literals.saveNotificationWarning);
734
+ break;
735
+ case 'error':
736
+ this.poNotification.error(this.literals.saveNotificationError);
737
+ break;
738
+ }
739
+ }
698
740
  saveOperation() {
699
741
  if (this.dynamicForm.form.invalid) {
700
742
  this.markControlsAsDirtyAndFocusFirstInvalid();
701
- this.poNotification.warning(this.literals.saveNotificationWarning);
743
+ this.showNotification(this._notificationType);
702
744
  return EMPTY;
703
745
  }
704
746
  const paramId = this.activatedRoute.snapshot.params['id'];
@@ -788,7 +830,7 @@ export class PoPageDynamicEditComponent {
788
830
  let _t;
789
831
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dynamicForm = _t.first);
790
832
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.gridDetail = _t.first);
791
- } }, inputs: { breadcrumb: [i0.ɵɵInputFlags.None, "p-breadcrumb", "breadcrumb"], serviceApi: [i0.ɵɵInputFlags.None, "p-service-api", "serviceApi"], title: [i0.ɵɵInputFlags.None, "p-title", "title"], onLoad: [i0.ɵɵInputFlags.None, "p-load", "onLoad"], onLoadData: [i0.ɵɵInputFlags.None, "p-load-data", "onLoadData"], actions: [i0.ɵɵInputFlags.None, "p-actions", "actions"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], autoRouter: [i0.ɵɵInputFlags.None, "p-auto-router", "autoRouter"], fields: [i0.ɵɵInputFlags.None, "p-fields", "fields"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService])], decls: 6, vars: 6, consts: [[3, "p-actions", "p-breadcrumb", "p-title"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["registerNotFoundTemplate", ""], ["formFieldsTemplate", ""], [1, "po-icon", "po-icon-info"], [1, "po-font-text-large"], [3, "p-fields", "p-value"], ["dynamicForm", ""], ["class", "po-sm-12", 4, "ngIf"], [1, "po-sm-12"], [3, "p-label"], [1, "po-row", "po-mb-2"], [3, "p-label", "p-click"], [3, "p-row-actions", "p-columns", "p-data"], ["gridDetail", ""]], template: function PoPageDynamicEditComponent_Template(rf, ctx) { if (rf & 1) {
833
+ } }, inputs: { breadcrumb: [i0.ɵɵInputFlags.None, "p-breadcrumb", "breadcrumb"], serviceApi: [i0.ɵɵInputFlags.None, "p-service-api", "serviceApi"], title: [i0.ɵɵInputFlags.None, "p-title", "title"], onLoad: [i0.ɵɵInputFlags.None, "p-load", "onLoad"], onLoadData: [i0.ɵɵInputFlags.None, "p-load-data", "onLoadData"], actions: [i0.ɵɵInputFlags.None, "p-actions", "actions"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], notificationType: [i0.ɵɵInputFlags.None, "p-notification-type", "notificationType"], autoRouter: [i0.ɵɵInputFlags.None, "p-auto-router", "autoRouter"], fields: [i0.ɵɵInputFlags.None, "p-fields", "fields"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService])], decls: 6, vars: 6, consts: [[3, "p-actions", "p-breadcrumb", "p-title"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["registerNotFoundTemplate", ""], ["formFieldsTemplate", ""], [1, "po-icon", "po-icon-info"], [1, "po-font-text-large"], [3, "p-fields", "p-value"], ["dynamicForm", ""], ["class", "po-sm-12", 4, "ngIf"], [1, "po-sm-12"], [3, "p-label"], [1, "po-row", "po-mb-2"], [3, "p-label", "p-click"], [3, "p-row-actions", "p-columns", "p-data"], ["gridDetail", ""]], template: function PoPageDynamicEditComponent_Template(rf, ctx) { if (rf & 1) {
792
834
  i0.ɵɵelementStart(0, "po-page-default", 0);
793
835
  i0.ɵɵtemplate(1, PoPageDynamicEditComponent_ng_container_1_Template, 1, 0, "ng-container", 1);
794
836
  i0.ɵɵelementEnd();
@@ -831,6 +873,9 @@ export class PoPageDynamicEditComponent {
831
873
  }], literals: [{
832
874
  type: Input,
833
875
  args: ['p-literals']
876
+ }], notificationType: [{
877
+ type: Input,
878
+ args: ['p-notification-type']
834
879
  }], autoRouter: [{
835
880
  type: Input,
836
881
  args: ['p-auto-router']
@@ -838,5 +883,5 @@ export class PoPageDynamicEditComponent {
838
883
  type: Input,
839
884
  args: ['p-fields']
840
885
  }] }); })();
841
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageDynamicEditComponent, { className: "PoPageDynamicEditComponent", filePath: "lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts", lineNumber: 182 }); })();
842
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9saWIvY29tcG9uZW50cy9wby1wYWdlLWR5bmFtaWMtZWRpdC9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1lZGl0L3BvLXBhZ2UtZHluYW1pYy1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWdCLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFTTCxlQUFlLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7O0lDckI1Rix3QkFBb0c7OztJQUlwRyxpQ0FBVztJQUNULDBCQUEwQztJQUMxQywrQkFBaUM7SUFDL0IsWUFDRjtJQUFBLGlCQUFPLEVBQUE7OztJQURMLGVBQ0Y7SUFERSxpRUFDRjs7OztJQU9GLDhCQUFzRDtJQUNwRCxpQ0FBNkQ7SUFFN0QsK0JBQTRCLG9CQUFBO0lBQ3NCLDZMQUFXLGVBQUEsd0JB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QiwwQkFBMEI7Ozs7Ozs7cWxCQUYxQixDQUFDLG9CQUFvQixDQUFDO1lDbkxuQywwQ0FBeUY7WUFDdkYsNkZBQW9HO1lBQ3RHLGlCQUFrQjtZQUVsQiw0SEFPYywrR0FBQTs7OztZQVhHLDJDQUF5QixnQ0FBQSxzQkFBQTtZQUN6QixjQUFhO1lBQWIsZ0NBQWEsaUJBQUEsaUJBQUE7OztpRkRvTGpCLDBCQUEwQjtjQUx0QyxTQUFTOzJCQUNFLHNCQUFzQixhQUVyQixDQUFDLG9CQUFvQixDQUFDO2dTQUdQLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNDLFVBQVU7a0JBQWxDLFNBQVM7bUJBQUMsWUFBWTtZQUdBLFVBQVU7a0JBQWhDLEtBQUs7bUJBQUMsY0FBYztZQXVFRyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFHSixLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUErQkMsTUFBTTtrQkFBdEIsS0FBSzttQkFBQyxRQUFRO1lBNEJPLFVBQVU7a0JBQS9CLEtBQUs7bUJBQUMsYUFBYTtZQStCSSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUEyQ08sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBZ0NTLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQVNDLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTs7a0ZBN1BOLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXQsIG9mLCBTdWJzY3JpcHRpb24sIEVNUFRZLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBQb0JyZWFkY3J1bWIsXG4gIFBvRGlhbG9nU2VydmljZSxcbiAgUG9EeW5hbWljRm9ybUNvbXBvbmVudCxcbiAgUG9HcmlkQ29tcG9uZW50LFxuICBQb0dyaWRSb3dBY3Rpb25zLFxuICBQb0xhbmd1YWdlU2VydmljZSxcbiAgUG9Ob3RpZmljYXRpb25TZXJ2aWNlLFxuICBQb1BhZ2VBY3Rpb24sXG4gIHBvTG9jYWxlRGVmYXVsdFxufSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIG1hcE9iamVjdEJ5UHJvcGVydGllcywgdmFsdWVzRnJvbU9iamVjdCwgcmVtb3ZlS2V5c1Byb3BlcnRpZXMgfSBmcm9tICcuLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtYWN0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRGaWVsZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1wYWdlLWR5bmFtaWMvcG8tcGFnZS1keW5hbWljLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtY3VzdG9taXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNFZGl0TWV0YWRhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNPcHRpb25zU2NoZW1hIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tcGFnZS1jdXN0b21pemF0aW9uL3BvLXBhZ2UtZHluYW1pYy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtZWRpdC1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRCZWZvcmVDYW5jZWwgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtYmVmb3JlLWNhbmNlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1saXRlcmFscy5pbnRlcmZhY2UnO1xuXG50eXBlIFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zKTtcbnR5cGUgU2F2ZUFjdGlvbiA9IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snc2F2ZSddIHwgUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zWydzYXZlTmV3J107XG5cbmV4cG9ydCBjb25zdCBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzPntcbiAgICBjYW5jZWxDb25maXJtTWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgdGhpcyBvcGVyYXRpb24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOZXcnLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAnU2F2ZScsXG4gICAgcGFnZUFjdGlvblNhdmVOZXc6ICdTYXZlIGFuZCBuZXcnLFxuICAgIHJlZ2lzdGVyTm90Rm91bmQ6ICdSZWdpc3RlciBub3QgZm91bmQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1NhdmU6ICdSZXNvdXJjZSBzdWNjZXNzZnVsbHkgc2F2ZWQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1Jlc291cmNlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdGb3JtIG11c3QgYmUgZmlsbGVkIG91dCBjb3JyZWN0bHkuJ1xuICB9LFxuICBlczogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAnRXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBjYW5jZWxhciBlc3RhIG9wZXJhY2nDs24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOdWV2bycsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBwYWdlQWN0aW9uU2F2ZTogJ0d1YXJkYXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnR3VhcmRhciB5IG51ZXZvJyxcbiAgICByZWdpc3Rlck5vdEZvdW5kOiAnUmVnaXN0cm8gbm8gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29uIMOpeGl0by4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlOiAnUmVjdXJzbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdFbCBmb3JtdWxhcmlvIGRlYmUgbGxlbmFyc2UgY29ycmVjdGFtZW50ZS4nXG4gIH0sXG4gIHB0OiA8UG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscz57XG4gICAgY2FuY2VsQ29uZmlybU1lc3NhZ2U6ICdUZW0gY2VydGV6YSBxdWUgZGVzZWphIGNhbmNlbGFyIGVzdGEgb3BlcmHDp8Ojbz8nLFxuICAgIGRldGFpbEFjdGlvbk5ldzogJ05vdm8nLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcGFnZUFjdGlvblNhdmU6ICdTYWx2YXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnU2FsdmFyIGUgbm92bycsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ1JlZ2lzdHJvIG7Do28gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29tIHN1Y2Vzc28uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1JlY3Vyc28gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25XYXJuaW5nOiAnRm9ybXVsw6FyaW8gcHJlY2lzYSBzZXIgcHJlZW5jaGlkbyBjb3JyZXRhbWVudGUuJ1xuICB9LFxuICBydTogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDQvtGC0LzQtdC90LjRgtGMINGN0YLRgyDQvtC/0LXRgNCw0YbQuNGOPycsXG4gICAgZGV0YWlsQWN0aW9uTmV3OiAn0J3QvtCy0YvQuScsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ9Ce0YLQvNC10L3QuNGC0YwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAn0KHQvtGF0YDQsNC90LjRgtGMJyxcbiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ9Ch0L7RhdGA0LDQvdC40YLRjCDQuCDRgdC+0LfQtNCw0YLRjCcsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ9CX0LDQv9C40YHRjCDQvdC1INC90LDQudC00LXQvdCwLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlOiAn0KDQtdGB0YPRgNGBINGD0YHQv9C10YjQvdC+INGB0L7RhdGA0LDQvdC10L0uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ9Cg0LXRgdGD0YDRgSDRg9GB0L/QtdGI0L3QviDQvtCx0L3QvtCy0LvQtdC9LicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICfQpNC+0YDQvNCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQt9Cw0L/QvtC70L3QtdC90LAg0L/RgNCw0LLQuNC70YzQvdC+LidcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGBwby1wYWdlLWR5bmFtaWMtZWRpdGAgw6kgdW1hIHDDoWdpbmEgcXVlIHBvZGUgc2VydmlyIHBhcmEgZWRpdGFyIG91IGNyaWFyIG5vdm9zIHJlZ2lzdHJvcyxcbiAqIG8gbWVzbW8gdGFtYsOpbSBzdXBvcnRhIG1ldGFkYWRvcyBjb25mb3JtZSBlc3BlY2lmaWNhZG8gbmEgZG9jdW1lbnRhw6fDo28uXG4gKlxuICogIyMjIFV0aWxpemHDp8OjbyB2aWEgcm90YVxuICpcbiAqIEFvIHV0aWxpemFyIGFzIHJvdGFzIHBhcmEgaW5pY2lhbGl6YXIgbyB0ZW1wbGF0ZSwgbyBgcGFnZS1keW5hbWljLWVkaXRgIGRpc3BvbmliaWxpemEgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgZm9ybmVjaWRhcyBubyBhcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGFzIGRhIGFwbGljYcOnw6NvLCBwYXJhXG4gKiBwb2RlciBlc3BlY2lmaWNhciBvIGVuZHBvaW50IGRvcyBkYWRvcyBlIGRvcyBtZXRhZGFkb3MgcXVlIHNlcsOjbyBjYXJyZWdhZG9zIG5hIGluaWNpYWxpemHDp8Ojby5cbiAqXG4gKiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAqXG4gKiBBcnF1aXZvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGFzIGRhIGFwbGljYcOnw6NvOiBgYXBwLXJvdXRpbmcubW9kdWxlLnRzYFxuICogYGBgXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqIHtcbiAqICAgcGF0aDogJ3Blb3BsZScsXG4gKiAgIGNvbXBvbmVudDogUG9QYWdlRHluYW1pY0VkaXRDb21wb25lbnQsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzZXJ2aWNlQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL3Blb3BsZScsIC8vIGVuZHBvaW50IGRvcyBkYWRvc1xuICogICAgIHNlcnZpY2VNZXRhZGF0YUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9tZXRhZGF0YScsIC8vIGVuZHBvaW50IGRvcyBtZXRhZGFkb3MgdXRpbGl6YW5kbyBvIG3DqXRvZG8gSFRUUCBHZXRcbiAqICAgICBzZXJ2aWNlTG9hZEFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9sb2FkLW1ldGFkYXRhJyAvLyBlbmRwb2ludCBkZSBjdXN0b21pemHDp8O1ZXMgZG9zIG1ldGFkYWRvcyB1dGlsaXphbmRvIG8gbcOpdG9kbyBIVFRQIFBvc3RcbiAqICAgfVxuICogIH0sXG4gKiAge1xuICogICBwYXRoOiAnaG9tZScsXG4gKiAgIGNvbXBvbmVudDogSG9tZUV4YW1wbGVDb21wb25lbnRcbiAqICB9XG4gKiBdO1xuICpcbiAqIGBgYFxuICogTyBjb21wb25lbnRlIHByaW1laXJvIGlyw6EgY2FycmVnYXIgbyBtZXRhZGFkbyBkYSByb3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHNlcnZpY2VNZXRhZGF0YUFwaVxuICogZSBkZXBvaXMgaXLDoSBidXNjYXIgZGEgcm90YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBzZXJ2aWNlTG9hZEFwaS5cbiAqXG4gKiBBIHJlcXVpc2nDp8OjbyBkb3MgbWV0YWRhZG9zIMOpIGZlaXRhIG5hIGluaWNpYWxpemHDp8OjbyBkbyB0ZW1wbGF0ZSBwYXJhIGJ1c2NhciBvcyBtZXRhZGFkb3MgZGEgcMOhZ2luYSBwYXNzYW5kbyBvXG4gKiB0aXBvIGRvIG1ldGFkYWRvIGVzcGVyYWRvIGUgYSB2ZXJzw6NvIGNhY2hlYWRhIHBlbG8gYnJvd3Nlci5cbiAqXG4gKiA+IENhc28gbyBzZXJ2aWRvciByZXRvcm5hciB1bSBlcnJvIGFvIHJlY3VwZXJhciBvcyBtZXRhZGFkb3MsIHNlcsOjbyByZXBhc3NhZG9zIG9zIG1ldGFkYWRvcyBzYWx2b3MgZW0gY2FjaGUsXG4gKiBzZSBvIGNhY2hlIG7Do28gZXhpc3RpciBzZXLDoSBkaXNwYXJhZGEgdW1hIG5vdGlmaWNhw6fDo28uXG4gKlxuICogUGFyYSBjYXJyZWdhciBjb20gdW0gcmVjdXJzbyBqw6EgZXhpc3RlbnRlLCBkZXZlLXNlIHNlciBpbmNsdcOtZG8gdW0gcGFyw6JtZXRybyBuYSByb3RhIGNoYW1hZG8gYGlkYDpcbiAqXG4gKiBgYGBcbiAqIHtcbiAqICAgcGF0aDogJ3Blb3BsZS86aWQnLFxuICogICBjb21wb25lbnQ6IFBvUGFnZUR5bmFtaWNFZGl0Q29tcG9uZW50LFxuICogICBkYXRhOiB7XG4gKiAgICAgc2VydmljZUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9wZW9wbGUnLCAvLyBlbmRwb2ludCBkb3MgZGFkb3NcbiAqICAgICBzZXJ2aWNlTWV0YWRhdGFBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvbWV0YWRhdGEnLCAvLyBlbmRwb2ludCBkb3MgbWV0YWRhZG9zXG4gKiAgICAgc2VydmljZUxvYWRBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvbG9hZC1tZXRhZGF0YScgLy8gZW5kcG9pbnQgZGUgY3VzdG9taXphw6fDtWVzIGRvcyBtZXRhZGFkb3NcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSByZXF1aXNpw6fDo28gZG9zIG1ldGFkYWRvcyDDqSBmZWl0YSBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUgcGFyYSBidXNjYXIgb3MgbWV0YWRhZG9zIGRhIHDDoWdpbmEgcGFzc2FuZG8gb1xuICogdGlwbyBkbyBtZXRhZGFkbyBlc3BlcmFkbyBlIGEgdmVyc8OjbyBjYWNoZWFkYSBwZWxvIGJyb3dzZXIuXG4gKlxuICogTyBmb3JtYXRvIGVzcGVyYWRvIG5hIHJlc3Bvc3RhIGRhIHJlcXVpc2nDp8OjbyBlc3TDoSBlc3BlY2lmaWNhZG8gbmEgaW50ZXJmYWNlXG4gKiBbUG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YV0oL2RvY3VtZW50YXRpb24vcG8tcGFnZS1keW5hbWljLWVkaXQjcG8tcGFnZS1keW5hbWljLWVkaXQtbWV0YWRhdGEpLiBQb3IgZXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqICB7XG4gKiAgIHZlcnNpb246IDEsXG4gKiAgIHRpdGxlOiAnUGVyc29uIGVkaXQnLFxuICogICBmaWVsZHM6IFtcbiAqICAgICB7IHByb3BlcnR5OiAnaWQnLCBrZXk6IHRydWUsIGRpc2FibGVkOiB0cnVlIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ3N0YXR1cycgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnbmFtZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnbmlja25hbWUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2JpcnRoZGF0ZScsIGxhYmVsOiAnQmlydGggZGF0ZScgfSxcbiAqICAgICB7IHByb3BlcnR5OiAnZ2VucmUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2NpdHknIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2NvdW50cnknIH1cbiAqICAgXVxuICogfVxuICogYGBgXG4gKlxuICogPiBDYXNvIG8gZW5kcG9pbnQgZG9zIG1ldGFkYWRvcyBuw6NvIHNlamEgZXNwZWNpZmljYWRvLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIHV0aWxpemFuZG8gbyBgc2VydmljZUFwaWAgZGEgc2VndWludGUgZm9ybWE6XG4gKiBgYGBcbiAqIEdFVCB7ZW5kLXBvaW50fS9tZXRhZGF0YT90eXBlPWVkaXQmdmVyc2lvbj17dmVyc2lvbn1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgRWRpdCBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtZWRpdC11c2VyXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgRWRpdCAtIFVzZXJcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtdXNlci9zYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtdXNlci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWR5bmFtaWMtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvUGFnZUR5bmFtaWNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb1BhZ2VEeW5hbWljRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZHluYW1pY0Zvcm0nKSBkeW5hbWljRm9ybTogUG9EeW5hbWljRm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZERldGFpbCcpIGdyaWREZXRhaWw6IFBvR3JpZENvbXBvbmVudDtcblxuICAvKiogT2JqZXRvIGNvbSBwcm9wcmllZGFkZXMgZG8gYnJlYWRjcnVtYi4gKi9cbiAgQElucHV0KCdwLWJyZWFkY3J1bWInKSBicmVhZGNydW1iPzogUG9CcmVhZGNydW1iID0geyBpdGVtczogW10gfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVuZHBvaW50IHVzYWRvIHBlbG8gdGVtcGxhdGUgcGFyYSByZXF1aXNpw6fDo28gZG8gcmVjdXJzbyBxdWUgc2Vyw6EgZXhpYmlkbyBwYXJhIGVkacOnw6NvLlxuICAgKlxuICAgKiBQYXJhIGFzIGHDp8O1ZXMgZGUgYHNhdmVgIGUgYHNhdmVOZXdgLCBzZXLDoSBmZWl0byB1bWEgcmVxdWlzacOnw6NvIGRlIGNyaWHDp8OjbyBuZXNzZSBtZXNtbyBlbmRwb2ludCBwYXNzYW5kbyBvcyB2YWxvcmVzXG4gICAqIHByZWVuY2hpZG9zIHBlbG8gdXN1w6FyaW8gdmlhIHBheWxvYWQuXG4gICAqXG4gICAqID4gYFBPU1Qge2VuZC1wb2ludH1gXG4gICAqXG4gICAqIGBgYFxuICAgKiAgPHBvLXBhZ2UtZHluYW1pYy1lZGl0XG4gICAqICAgIFtwLWFjdGlvbnNdPVwieyBzYXZlOiAnLycsIHNhdmVOZXc6ICduZXcnIH1cIlxuICAgKiAgICBbcC1maWVsZHNdPVwiWyB7IHByb3BlcnR5OiAnbmFtZScgfSwgeyBwcm9wZXJ0eTogJ2NpdHknIH0gXVwiXG4gICAqICAgIHAtc2VydmljZT1cIi9hcGkvcG8tc2FtcGxlcy92MS9wZW9wbGVcIlxuICAgKiAgICAuLi4+XG4gICAqICA8L3BvLXBhZ2UtZHluYW1pYy1lZGl0PlxuICAgKiBgYGBcbiAgICpcbiAgICogUmVzcXVpc2nDp8OjbyBkaXNwYXJhZGEsIG9uZGUgYSBwcm9wcmllZGFkZSBgbmFtZWAgZSBgY2l0eWAgZm9yYW0gcHJlZW5jaGlkYXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUE9TVCAvYXBpL3BvLXNhbXBsZXMvdjEvcGVvcGxlIEhUVFAvMS4xXG4gICAqICBIb3N0OiBsb2NhbGhvc3Q6NDAwMFxuICAgKiAgQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICAgKiAgQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFJlcXVlc3QgcGF5bG9hZDpcbiAgICpcbiAgICogYGBgXG4gICAqIHsgXCJuYW1lXCI6IFwiRnVsYW5vXCIsIFwiY2l0eVwiOiBcIlNtYWxsdmlsbGVcIiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHF1ZWlyYSBxdWUgbyB0ZW1wbGF0ZSBjYXJyZWd1ZSB1bSByZWN1cnNvIGrDoSBleGlzdGVudGUsIGRldmUtc2Ugc2VyIGluY2x1w61kbyB1bSBwYXJhbWV0cm8gbmEgcm90YSBjaGFtYWRvIGBpZGAuXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgY29uZmlndXJhw6fDo28gZGUgcm90YTpcbiAgICpcbiAgICogYGBgXG4gICAqICBSb3V0ZXJNb2R1bGUuZm9yUm9vdChbXG4gICAqICAgIC4uLlxuICAgKiAgICB7IHBhdGg6ICdlZGl0LzppZCcsIGNvbXBvbmVudDogUGVyc29uRWRpdENvbXBvbmVudCB9LFxuICAgKiAgICAuLi5cbiAgICogIF0sXG4gICAqIGBgYFxuICAgKlxuICAgKiBCYXNlYWRvIG5pc3NvLCBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUsIHNlcsOhIGRpc3BhcmFkbyB1bWEgcmVxdWlzacOnw6NvIHBhcmEgYnVzY2FyIG8gcmVjdXJzbyBxdWUgc2Vyw6EgZWRpdGFkby5cbiAgICpcbiAgICogPiBgR0VUIHtlbmQtcG9pbnR9L3tpZH1gXG4gICAqXG4gICAqIE5vcyBtw6l0b2RvcyBkZSBgc2F2ZWAgZSBgc2F2ZU5ld2AsIGFvIGludsOpcyBkZSB1bSBgUE9TVGAsIHNlcsOhIGRpc3BhcmFkbyB1bSBgUFVUYC5cbiAgICpcbiAgICogUmVzcXVpc2nDp8OjbyBkaXNwYXJhZGEsIG9uZGUgYSBwcm9wcmllZGFkZSBgbmFtZWAgZSBgY2l0eWAgZm9yYW0gcHJlZW5jaGlkYXMgLyBhdHVhbGl6YWRhcywgZSBvIGBpZGAgZGEgdXJsIMOpIDI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUFVUIC9hcGkvcG8tc2FtcGxlcy92MS9wZW9wbGUvMiBIVFRQLzEuMVxuICAgKiAgSG9zdDogbG9jYWxob3N0OjQwMDBcbiAgICogIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAgICogIEFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpblxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXF1ZXN0IHBheWxvYWQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7IFwibmFtZVwiOiBcIkZ1bGFub1wiLCBcImNpdHlcIjogXCJNZXRyb3BvbGlzXCIgfVxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlLWFwaScpIHNlcnZpY2VBcGk6IHN0cmluZztcblxuICAvKiogVMOtdHVsbyBkYSBww6FnaW5hLiAqL1xuICBASW5wdXQoJ3AtdGl0bGUnKSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBvdSBzZXJ2acOnbyBxdWUgc2Vyw6EgZXhlY3V0YWRvIG5hIGluaWNpYWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqIC0gYHN0cmluZ2A6ICpFbmRwb2ludCogdXNhZG8gcGVsbyBjb21wb25lbnRlIHBhcmEgcmVxdWlzacOnw6NvIHZpYSBgUE9TVGAuXG4gICAqIC0gYGZ1bmN0aW9uYDogTcOpdG9kbyBxdWUgc2Vyw6EgZXhlY3V0YWRvLlxuICAgKlxuICAgKiBPIHJldG9ybm8gZGVzdGEgZnVuw6fDo28gZGV2ZSBzZXIgZG8gdGlwbyBgUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zYCxcbiAgICogb25kZSBvIHVzdcOhcmlvIHBvZGVyw6EgY3VzdG9taXphciBub3ZvcyBjYW1wb3MsIGJyZWFkY3J1bWIsIHRpdGxlIGUgYWN0aW9uc1xuICAgKlxuICAgKiBQb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGdldFBhZ2VPcHRpb25zKCk6IFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucyB7XG4gICAqIHJldHVybiB7XG4gICAqICAgYWN0aW9uczpcbiAgICogICAgIHsgY2FuY2VsOiBmYWxzZSwgc2F2ZTogJ3NhdmUvOmlkJywgc2F2ZU5ldzogJ3NhdmVOZXcnIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnaWRDYXJkJywgZ3JpZENvbHVtbnM6IDYgfVxuICAgKiAgIF1cbiAgICogfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkXT1cIm9uTG9hZE9wdGlvbnMuYmluZCh0aGlzKVwiXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBvbkxvYWQ6IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgYXDDs3Mgc2VyIHJlYWxpemFkYSBhIGJ1c2NhIGRvcyBkYWRvcy5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogRXN0YSBmdW7Dp8OjbyBwYXNzYSBwb3IgcGFyw6JtZXRybyBvIG1vZGVsIGUgZGV2ZSByZWNlYsOqLWxvIGRlIHZvbHRhIGNvbSBhcyBhbHRlcmHDp8O1ZXMuXG4gICAqIFRhbWLDqW0gYWNlaXRhIG8gcmV0b3JubyBkZSB1bSBPYnNlcnZhYmxlIGNvbSBvIG5vdm8gbW9kZWwuXG4gICAqXG4gICAqIFBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogb25Mb2FkQ3VzdG9tKG1vZGVsKSB7XG4gICAqICByZXR1cm4geyAuLi5tb2RlbCwgY3VzdG9tRmllbGQ6ICduZXdWYWx1ZScgfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkLWRhdGFdPVwib25Mb2FkQ3VzdG9tLmJpbmQodGhpcylcIlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkLWRhdGEnKSBvbkxvYWREYXRhOiAoKG1vZGVsOiBhbnkpID0+IGFueSkgfCAoKG1vZGVsOiBhbnkpID0+IE9ic2VydmFibGU8YW55Pik7XG5cbiAgbW9kZWw6IGFueSA9IHt9O1xuXG4gIC8vIGJlZm9yZVNhdmU6IHJldHVybiBib29sZWFuXG4gIC8vIGFmdGVyU2F2ZVxuICAvLyBiZWZvcmVSZW1vdmU6IHJldHVybiBib29sZWFuXG4gIC8vIGFmdGVyUmVtb3ZlXG4gIC8vIGJlZm9yZUluc2VydDogOiByZXR1cm4gYm9vbGVhblxuICByZWFkb25seSBkZXRhaWxBY3Rpb25zOiBQb0dyaWRSb3dBY3Rpb25zID0ge307XG5cbiAgcHJpdmF0ZSBpbmRleEZvY3VzID0gMDtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfYWN0aW9uczogUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zID0ge307XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzO1xuICBwcml2YXRlIF9hdXRvUm91dGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbnRyb2xGaWVsZHM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfZGV0YWlsRmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2R1cGxpY2F0ZXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfZmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2tleXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHJpdmF0ZSBfcGFnZUFjdGlvbnM6IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBw6fDtWVzIGRhIHDDoWdpbmEuXG4gICAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIHNldCBhY3Rpb25zKHZhbHVlOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5pc09iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IHt9O1xuXG4gICAgdGhpcy5fcGFnZUFjdGlvbnMgPSB0aGlzLmdldFBhZ2VBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fYWN0aW9ucyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtZHluYW1pYy1lZGl0YC5cbiAgICpcbiAgICogw4kgcG9zc2l2ZWwgY3VzdG9taXphciBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpc1xuICAgKiBvdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyXG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMgPSB7XG4gICAqICAgIGRldGFpbEFjdGlvbk5ldzogJ0luY2x1aXInLFxuICAgKiAgICBwYWdlQWN0aW9uQ2FuY2VsOiAnRGVzY2FydGFyJyxcbiAgICogICAgcGFnZUFjdGlvblNhdmU6ICdHcmF2YXInLFxuICAgKiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ0dyYXZhciBlIGluY2x1aXInLFxuICAgKiAgICByZWdpc3Rlck5vdEZvdW5kOiAnTmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG8uJyxcbiAgICogICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlOiAnSXRlbSBzYWx2byBjb20gc3VjZXNzby4nLFxuICAgKiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ0l0ZW0gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgKiAgICBzYXZlTm90aWZpY2F0aW9uV2FybmluZzogJ05lY2Vzc8OhcmlvIHByZWVuY2hlciBvIGZvcm11bMOhcmlvIGNvcnJldGFtZW50ZS4nXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtZWRpdFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tcGFnZS1keW5hbWljLWVkaXQ+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG5cbiAgICB0aGlzLl9wYWdlQWN0aW9ucyA9IHRoaXMuZ2V0UGFnZUFjdGlvbnModGhpcy5fYWN0aW9ucyk7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIFZhbGlkYXIgcm90YXMgbmEgbcOjbyBwb2lzIHNlIGV4aXN0aXIgdW1hIHJvdGEgJyoqJyBvIGNhdGNoIGRvIG5hdmlnYXRpb24gbsOjbyBmdW5jaW9uYS5cbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDcmlhIGF1dG9tYXRpY2FtZW50ZSBhcyByb3RhcyBkZSBlZGnDp8OjbyAobm92by9kdXBsaWNhdGUpIGUgZGV0YWxoZXMgY2FzbyBhcyBhw6fDtWVzXG4gICAqIGVzdGVqYW0gZGVmaW5pZGFzIG5hcyBhw6fDtWVzLlxuICAgKlxuICAgKiA+IFBhcmEgbyBjb3JyZXRvIGZ1bmNpb25hbWVudG8gbsOjbyBwb2RlIGhhdmVyIG5lbmh1bSByb3RhIGNvcmluZ2EgKGAqKmApIGVzcGVjaWZpY2FkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLXJvdXRlcicpIHNldCBhdXRvUm91dGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b1JvdXRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGF1dG9Sb3V0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9Sb3V0ZXI7XG4gIH1cblxuICAvKiogTGlzdGEgZG9zIGNhbXBvcyB1c2Fkb3MgbmEgdGFiZWxhIGUgYnVzY2EgYXZhbsOnYWRhLiAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyh2YWx1ZTogQXJyYXk8UG9QYWdlRHluYW1pY0VkaXRGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IFsuLi52YWx1ZV0gOiBbXTtcblxuICAgIHRoaXMuX2tleXMgPSB0aGlzLmdldEtleXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2R1cGxpY2F0ZXMgPSB0aGlzLmdldER1cGxpY2F0ZXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuXG4gICAgdGhpcy5fY29udHJvbEZpZWxkcyA9IHRoaXMuZ2V0Q29udHJvbEZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2RldGFpbEZpZWxkcyA9IHRoaXMuZ2V0RGV0YWlsRmllbGRzKHRoaXMuX2ZpZWxkcyk7XG4gIH1cblxuICBnZXQgZmllbGRzKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNFZGl0RmllbGQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHBvTm90aWZpY2F0aW9uOiBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0RpYWxvZ1NlcnZpY2U6IFBvRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNTZXJ2aWNlOiBQb1BhZ2VEeW5hbWljU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZERhdGFGcm9tQVBJKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRldGFpbEFjdGlvbk5ldygpIHtcbiAgICB0aGlzLmdyaWREZXRhaWwuaW5zZXJ0Um93KCk7XG4gIH1cblxuICBnZXQgZHVwbGljYXRlcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2R1cGxpY2F0ZXNdO1xuICB9XG5cbiAgZ2V0IGtleXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9rZXlzXTtcbiAgfVxuXG4gIGdldCBwYWdlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3BhZ2VBY3Rpb25zXTtcbiAgfVxuXG4gIGdldCBjb250cm9sRmllbGRzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sRmllbGRzO1xuICB9XG5cbiAgZ2V0IGRldGFpbEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGV0YWlsRmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21BUEkoKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlQXBpOiBzZXJ2aWNlQXBpRnJvbVJvdXRlLCBzZXJ2aWNlTWV0YWRhdGFBcGksIHNlcnZpY2VMb2FkQXBpIH0gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGE7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgY29uc3QgeyBkdXBsaWNhdGUgfSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICBjb25zdCBvbkxvYWQgPSBzZXJ2aWNlTG9hZEFwaSB8fCB0aGlzLm9uTG9hZDtcbiAgICB0aGlzLnNlcnZpY2VBcGkgPSBzZXJ2aWNlQXBpRnJvbVJvdXRlIHx8IHRoaXMuc2VydmljZUFwaTtcblxuICAgIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuY29uZmlnU2VydmljZUFwaSh7IGVuZHBvaW50OiB0aGlzLnNlcnZpY2VBcGksIG1ldGFkYXRhOiBzZXJ2aWNlTWV0YWRhdGFBcGkgfSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSQgPSB0aGlzLmdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGUsIGlkLCBvbkxvYWQpO1xuICAgIGNvbnN0IGRhdGEkID0gdGhpcy5sb2FkRGF0YShpZCwgZHVwbGljYXRlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbmNhdChtZXRhZGF0YSQsIGRhdGEkKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbChcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtICYmIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5kaXJ0eSkge1xuICAgICAgdGhpcy5wb0RpYWxvZ1NlcnZpY2UuY29uZmlybSh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubGl0ZXJhbHMuY2FuY2VsQ29uZmlybU1lc3NhZ2UsXG4gICAgICAgIHRpdGxlOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25DYW5jZWwsXG4gICAgICAgIGNvbmZpcm06IHRoaXMuZ29CYWNrLmJpbmQodGhpcywgYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nb0JhY2soYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VW5pcXVlS2V5KGl0ZW0pIHtcbiAgICBjb25zdCBrZXlzID0gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKGl0ZW0sIHRoaXMua2V5cyk7XG5cbiAgICByZXR1cm4gdmFsdWVzRnJvbU9iamVjdChrZXlzKS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcml2YXRlIGdvQmFjayhcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVDYW5jZWwoYWN0aW9uQmVmb3JlQ2FuY2VsKVxuICAgICAgICAuc3Vic2NyaWJlKChiZWZvcmVDYW5jZWxSZXN1bHQ6IFBvUGFnZUR5bmFtaWNFZGl0QmVmb3JlQ2FuY2VsKSA9PiB7XG4gICAgICAgICAgdGhpcy5leGVjdXRlQmFja0FjdGlvbihhY3Rpb25DYW5jZWwsIGJlZm9yZUNhbmNlbFJlc3VsdD8uYWxsb3dBY3Rpb24sIGJlZm9yZUNhbmNlbFJlc3VsdD8ubmV3VXJsKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlQmFja0FjdGlvbihcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWxsb3dBY3Rpb24/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnYWxsb3dBY3Rpb24nXSxcbiAgICBuZXdVcmw/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnbmV3VXJsJ11cbiAgKSB7XG4gICAgY29uc3QgaXNBbGxvd2VkQWN0aW9uID0gdHlwZW9mIGFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBhbGxvd0FjdGlvbiA6IHRydWU7XG5cbiAgICBpZiAoaXNBbGxvd2VkQWN0aW9uKSB7XG4gICAgICBpZiAoYWN0aW9uQ2FuY2VsID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGFjdGlvbkNhbmNlbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uQ2FuY2VsID09PSAnc3RyaW5nJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtuZXdVcmwgfHwgYWN0aW9uQ2FuY2VsXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY3Rpb25DYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWREYXRhKGlkLCBkdXBsaWNhdGU/KSB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IGR1cGxpY2F0ZSA/IEpTT04ucGFyc2UoZHVwbGljYXRlKSA6IHt9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmdldFJlc291cmNlKGlkKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5iZWZvcmVTZXRNb2RlbChyZXNwb25zZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhZ2VBY3Rpb25zID0gW107XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYmVmb3JlU2V0TW9kZWwocmVzcG9uc2U6IGFueSkge1xuICAgIGlmICghdGhpcy5vbkxvYWREYXRhKSB7XG4gICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25Mb2FkRGF0YUV4ZWN1dGlvbiA9IHRoaXMub25Mb2FkRGF0YShyZXNwb25zZSk7XG4gICAgY29uc3Qgb25Mb2FkRGF0YSQgPSBvbkxvYWREYXRhRXhlY3V0aW9uIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IG9uTG9hZERhdGFFeGVjdXRpb24gOiBvZihvbkxvYWREYXRhRXhlY3V0aW9uKTtcblxuICAgIG9uTG9hZERhdGEkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBjdXN0b21Nb2RlbCA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwgPSBjdXN0b21Nb2RlbDtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZDogVXJsT3JQb0N1c3RvbWl6YXRpb25GdW5jdGlvbikge1xuICAgIGlmIChvbkxvYWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFBvRHluYW1pY1BhZ2VPcHRpb25zKG9uTG9hZCkucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlUG9PcHRpb24gPT5cbiAgICAgICAgICB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmNoYW5nZU9yaWdpbmFsT3B0aW9uc1RvTmV3T3B0aW9ucyh0aGlzLCByZXNwb25zZVBvT3B0aW9uKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2w6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrYm94R3JvdXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBwby1jaGVja2JveC1ncm91cFtuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1gKTtcbiAgICBpZiAoY2hlY2tib3hHcm91cCkge1xuICAgICAgY29uc3QgY2hlY2tCb3hDb21wb25lbnQgPSBjaGVja2JveEdyb3VwLnF1ZXJ5U2VsZWN0b3IoJ3BvLWNoZWNrYm94W25nLXJlZmxlY3QtZGlzYWJsZWQ9ZmFsc2VdJyk7XG4gICAgICBjb25zdCBsYWJlbElucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gY2hlY2tCb3hDb21wb25lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5wby1jaGVja2JveC1vdXRsaW5lJyk7XG4gICAgICBpZiAobGFiZWxJbnB1dCkge1xuICAgICAgICBsYWJlbElucHV0LmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZGV4Rm9jdXMtLTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQ29udHJvbChjb250cm9sOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0ke2NvbnRyb2x9XWApO1xuICAgIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmIChpbnB1dEVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudCwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudDogRWxlbWVudCwgY29udHJvbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmFkaW9Db21wb25lbnQgPSBpbnB1dEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGBwby1yYWRpb1tuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1bbmctcmVmbGVjdC1kaXNhYmxlZD1mYWxzZV1gXG4gICAgKTtcbiAgICBpZiAocmFkaW9Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHJhZGlvSW5wdXQgPSByYWRpb0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgcmFkaW9JbnB1dC5mb2N1cygpO1xuICAgICAgcmFkaW9JbnB1dC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncG8tcmFkaW8tZm9jdXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRleEZvY3VzLS07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucz4ge1xuICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9uOiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMgPSB7XG4gICAgICBmaWVsZHM6IHRoaXMuZmllbGRzLFxuICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLFxuICAgICAgYnJlYWRjcnVtYjogdGhpcy5icmVhZGNydW1iLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGVcbiAgICB9O1xuXG4gICAgY29uc3QgcGFnZU9wdGlvblNjaGVtYTogUG9QYWdlRHluYW1pY09wdGlvbnNTY2hlbWE8UG9QYWdlRHluYW1pY0VkaXRPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWVsZHMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGU6IHN0cmluZywgcGFyYW1JZDogc3RyaW5nIHwgbnVtYmVyLCBvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pIHtcbiAgICBjb25zdCB0eXBlTWV0YWRhdGEgPSBwYXJhbUlkID8gJ2VkaXQnIDogJ2NyZWF0ZSc7XG5cbiAgICBpZiAoc2VydmljZUFwaUZyb21Sb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZ2V0TWV0YWRhdGE8UG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YT4odHlwZU1ldGFkYXRhKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b1JvdXRlciA9IHJlc3BvbnNlLmF1dG9Sb3V0ZXIgfHwgdGhpcy5hdXRvUm91dGVyO1xuICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3BvbnNlLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zO1xuICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IHJlc3BvbnNlLmJyZWFkY3J1bWIgfHwgdGhpcy5icmVhZGNydW1iO1xuICAgICAgICAgIHRoaXMuZmllbGRzID0gcmVzcG9uc2UuZmllbGRzIHx8IHRoaXMuZmllbGRzO1xuICAgICAgICAgIHRoaXMudGl0bGUgPSByZXNwb25zZS50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRyb2xzQXNEaXJ0eUFuZEZvY3VzRmlyc3RJbnZhbGlkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXhGb2N1cyA9IDA7XG4gICAgY29uc3QgY29udHJvbHMgPSBPYmplY3Qua2V5cyh0aGlzLmR5bmFtaWNGb3JtLmZvcm0uY29udHJvbHMpO1xuXG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB0aGlzLmluZGV4Rm9jdXMgPT09IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0NvbnRyb2woY29udHJvbCk7XG4gICAgICAgIHRoaXMuaW5kZXhGb2N1cysrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwodGhpcy5tb2RlbCwgcGF0aCk7XG5cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVuaXF1ZUtleShpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ10gPyB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVybChpdGVtOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaXF1ZUtleSA9IHRoaXMuZm9ybWF0VW5pcXVlS2V5KGl0ZW0pO1xuXG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvOmlkL2csIHVuaXF1ZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTYXZlKHNhdmVSZWRpcmVjdFBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHNhdmVPcGVyYXRpb24kID0gdGhpcy5zYXZlT3BlcmF0aW9uKCk7XG5cbiAgICByZXR1cm4gc2F2ZU9wZXJhdGlvbiQucGlwZShcbiAgICAgIHRhcChtZXNzYWdlID0+IHtcbiAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oc2F2ZVJlZGlyZWN0UGF0aCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKG5ld1Jlc291cmNlOiBhbnkgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgbmV3UmVzb3VyY2UgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5rZXlzKG5ld1Jlc291cmNlKS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGR5bmFtaWNOZ0Zvcm0gPSB0aGlzLmR5bmFtaWNGb3JtLmZvcm07XG5cbiAgICAgIHJlbW92ZUtleXNQcm9wZXJ0aWVzKHRoaXMua2V5cywgbmV3UmVzb3VyY2UpO1xuXG4gICAgICB0aGlzLm1vZGVsID0geyAuLi50aGlzLm1vZGVsLCAuLi5uZXdSZXNvdXJjZSB9O1xuXG4gICAgICBkeW5hbWljTmdGb3JtLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVPcGVyYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLm1hcmtDb250cm9sc0FzRGlydHlBbmRGb2N1c0ZpcnN0SW52YWxpZCgpO1xuICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmcpO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtSWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcbiAgICBjb25zdCBzdWNjZXNzTXNnID0gcGFyYW1JZFxuICAgICAgPyB0aGlzLmxpdGVyYWxzLnNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlXG4gICAgICA6IHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NTYXZlO1xuXG4gICAgY29uc3Qgc2F2ZU9wZXJhdGlvbiQgPSBwYXJhbUlkXG4gICAgICA/IHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UudXBkYXRlUmVzb3VyY2UocGFyYW1JZCwgdGhpcy5tb2RlbClcbiAgICAgIDogdGhpcy5wb1BhZ2VEeW5hbWljU2VydmljZS5jcmVhdGVSZXNvdXJjZSh0aGlzLm1vZGVsKTtcblxuICAgIHJldHVybiBzYXZlT3BlcmF0aW9uJC5waXBlKG1hcCgoKSA9PiBzdWNjZXNzTXNnKSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmUoYWN0aW9uOiBTYXZlQWN0aW9uLCBiZWZvcmU6ICdiZWZvcmVTYXZlJyB8ICdiZWZvcmVTYXZlTmV3JyA9ICdiZWZvcmVTYXZlJykge1xuICAgIGNvbnN0IGV4ZWN1dGVPcGVyYXRpb24gPSB7XG4gICAgICBiZWZvcmVTYXZlOiB0aGlzLmV4ZWN1dGVTYXZlLmJpbmQodGhpcyksXG4gICAgICBiZWZvcmVTYXZlTmV3OiB0aGlzLmV4ZWN1dGVTYXZlTmV3LmJpbmQodGhpcylcbiAgICB9O1xuXG4gICAgY29uc3QgdW5pcXVlS2V5ID0gdGhpcy5yZXNvbHZlVW5pcXVlS2V5KHRoaXMubW9kZWwpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2VbYmVmb3JlXSh0aGlzLmFjdGlvbnNbYmVmb3JlXSwgdW5pcXVlS2V5LCB7IC4uLnRoaXMubW9kZWwgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHJldHVybkJlZm9yZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdBY3Rpb24gPSByZXR1cm5CZWZvcmU/Lm5ld1VybCA/PyBhY3Rpb247XG4gICAgICAgICAgICBjb25zdCBhbGxvd0FjdGlvbiA9IHJldHVybkJlZm9yZT8uYWxsb3dBY3Rpb24gPz8gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChyZXR1cm5CZWZvcmU/LnJlc291cmNlKTtcblxuICAgICAgICAgICAgaWYgKCFhbGxvd0FjdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld0FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGVPcGVyYXRpb25bYmVmb3JlXShuZXdBY3Rpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3QWN0aW9uKHsgLi4udGhpcy5tb2RlbCB9LCB1bmlxdWVLZXkpO1xuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU2F2ZU5ldyhwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbUlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XG4gICAgY29uc3Qgc2F2ZU9wZXJhdGlvbiQgPSB0aGlzLnNhdmVPcGVyYXRpb24oKTtcblxuICAgIHJldHVybiBzYXZlT3BlcmF0aW9uJC5waXBlKFxuICAgICAgdGFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAocGFyYW1JZCkge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2VzcyhtZXNzYWdlKTtcblxuICAgICAgICAgIHRoaXMubmF2aWdhdGVUbyhwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3MobWVzc2FnZSk7XG5cbiAgICAgICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybS5mb3JtLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5c0J5RmllbGRzKGZpZWxkczogQXJyYXk8YW55PiA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQua2V5ID09PSB0cnVlKS5tYXAoZmllbGQgPT4gZmllbGQucHJvcGVydHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRmllbGRzKGZpZWxkczogQXJyYXk8YW55PiA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQudHlwZSAhPT0gJ2RldGFpbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXRhaWxGaWVsZHMoZmllbGRzOiBBcnJheTxhbnk+ID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC50eXBlID09PSAnZGV0YWlsJyk7XG4gIH1cblxuICBwcml2YXRlIGdldER1cGxpY2F0ZXNCeUZpZWxkcyhmaWVsZHM6IEFycmF5PGFueT4gPSBbXSkge1xuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLmR1cGxpY2F0ZSA9PT0gdHJ1ZSkubWFwKGZpZWxkID0+IGZpZWxkLnByb3BlcnR5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFnZUFjdGlvbnMoYWN0aW9uczogUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zID0ge30pOiBBcnJheTxQb1BhZ2VBY3Rpb24+IHtcbiAgICBjb25zdCBwYWdlQWN0aW9ucyA9IFt7IGxhYmVsOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25TYXZlLCBhY3Rpb246IHRoaXMuc2F2ZS5iaW5kKHRoaXMsIGFjdGlvbnMuc2F2ZSkgfV07XG5cbiAgICBpZiAoYWN0aW9ucy5zYXZlTmV3KSB7XG4gICAgICBwYWdlQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvblNhdmVOZXcsXG4gICAgICAgIGFjdGlvbjogdGhpcy5zYXZlLmJpbmQodGhpcywgYWN0aW9ucy5zYXZlTmV3LCAnYmVmb3JlU2F2ZU5ldycpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9ucy5jYW5jZWwgPT09IHVuZGVmaW5lZCB8fCBhY3Rpb25zLmNhbmNlbCkge1xuICAgICAgcGFnZUFjdGlvbnMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25DYW5jZWwsXG4gICAgICAgIGFjdGlvbjogdGhpcy5jYW5jZWwuYmluZCh0aGlzLCBhY3Rpb25zLmNhbmNlbCwgdGhpcy5hY3Rpb25zLmJlZm9yZUNhbmNlbClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYWdlQWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9XG59XG4iLCI8cG8tcGFnZS1kZWZhdWx0IFtwLWFjdGlvbnNdPVwicGFnZUFjdGlvbnNcIiBbcC1icmVhZGNydW1iXT1cImJyZWFkY3J1bWJcIiBbcC10aXRsZV09XCJ0aXRsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWw7IHRoZW4gZm9ybUZpZWxkc1RlbXBsYXRlOyBlbHNlIHJlZ2lzdGVyTm90Rm91bmRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbjwvcG8tcGFnZS1kZWZhdWx0PlxuXG48bmctdGVtcGxhdGUgI3JlZ2lzdGVyTm90Rm91bmRUZW1wbGF0ZT5cbiAgPHBvLXdpZGdldD5cbiAgICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1pbmZvXCI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+XG4gICAgICB7eyBsaXRlcmFscy5yZWdpc3Rlck5vdEZvdW5kIH19XG4gICAgPC9zcGFuPlxuICA8L3BvLXdpZGdldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9ybUZpZWxkc1RlbXBsYXRlPlxuICA8cG8tZHluYW1pYy1mb3JtICNkeW5hbWljRm9ybSBbcC1maWVsZHNdPVwiY29udHJvbEZpZWxkc1wiIFtwLXZhbHVlXT1cIm1vZGVsXCI+IDwvcG8tZHluYW1pYy1mb3JtPlxuXG4gIDxkaXYgKm5nSWY9XCJkZXRhaWxGaWVsZHMubGVuZ3RoID4gMFwiIGNsYXNzPVwicG8tc20tMTJcIj5cbiAgICA8cG8tZGl2aWRlciBbcC1sYWJlbF09XCJkZXRhaWxGaWVsZHNbMF0uZGl2aWRlclwiPjwvcG8tZGl2aWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1yb3cgcG8tbWItMlwiPlxuICAgICAgPHBvLWJ1dHRvbiBbcC1sYWJlbF09XCJsaXRlcmFscy5kZXRhaWxBY3Rpb25OZXdcIiAocC1jbGljayk9XCJkZXRhaWxBY3Rpb25OZXcoKVwiPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHBvLWdyaWRcbiAgICAgICNncmlkRGV0YWlsXG4gICAgICBbcC1yb3ctYWN0aW9uc109XCJkZXRhaWxBY3Rpb25zXCJcbiAgICAgIFtwLWNvbHVtbnNdPVwiZGV0YWlsRmllbGRzWzBdLmRldGFpbC5jb2x1bW5zXCJcbiAgICAgIFtwLWRhdGFdPVwibW9kZWxbZGV0YWlsRmllbGRzWzBdLnByb3BlcnR5XVwiXG4gICAgPlxuICAgIDwvcG8tZ3JpZD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
886
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageDynamicEditComponent, { className: "PoPageDynamicEditComponent", filePath: "lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts", lineNumber: 189 }); })();
887
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9saWIvY29tcG9uZW50cy9wby1wYWdlLWR5bmFtaWMtZWRpdC9wby1wYWdlLWR5bmFtaWMtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1lZGl0L3BvLXBhZ2UtZHluYW1pYy1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWdCLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFTTCxlQUFlLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7O0lDckI1Rix3QkFBb0c7OztJQUlwRyxpQ0FBVztJQUNULDBCQUEwQztJQUMxQywrQkFBaUM7SUFDL0IsWUFDRjtJQUFBLGlCQUFPLEVBQUE7OztJQURMLGVBQ0Y7SUFERSxpRUFDRjs7OztJQU9GLDhCQUFzRDtJQUNwRCxpQ0FBNkQ7SUFFN0QsK0JBQTRCLG9CQUFBO0lBQ3NCLDZMQUFXLGVBQUEsd0JB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QUNFLHNCQUFzQixhQUVyQixDQUFDLG9CQUFvQixDQUFDO2dTQUdQLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNDLFVBQVU7a0JBQWxDLFNBQVM7bUJBQUMsWUFBWTtZQUdBLFVBQVU7a0JBQWhDLEtBQUs7bUJBQUMsY0FBYztZQXVFRyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFHSixLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUErQkMsTUFBTTtrQkFBdEIsS0FBSzttQkFBQyxRQUFRO1lBNEJPLFVBQVU7a0JBQS9CLEtBQUs7bUJBQUMsYUFBYTtZQStCSSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUE0Q08sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBb0NlLGdCQUFnQjtrQkFBakQsS0FBSzttQkFBQyxxQkFBcUI7WUFzQkEsVUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlO1lBU0MsTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVOztrRkF4Uk4sMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbmNhdCwgb2YsIFN1YnNjcmlwdGlvbiwgRU1QVFksIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFBvQnJlYWRjcnVtYixcbiAgUG9EaWFsb2dTZXJ2aWNlLFxuICBQb0R5bmFtaWNGb3JtQ29tcG9uZW50LFxuICBQb0dyaWRDb21wb25lbnQsXG4gIFBvR3JpZFJvd0FjdGlvbnMsXG4gIFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gIFBvUGFnZUFjdGlvbixcbiAgcG9Mb2NhbGVEZWZhdWx0XG59IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgbWFwT2JqZWN0QnlQcm9wZXJ0aWVzLCB2YWx1ZXNGcm9tT2JqZWN0LCByZW1vdmVLZXlzUHJvcGVydGllcyB9IGZyb20gJy4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1hY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEZpZWxkIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLXBhZ2UtZHluYW1pYy9wby1wYWdlLWR5bmFtaWMuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1keW5hbWljLWVkaXQtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1wYWdlLWN1c3RvbWl6YXRpb24vcG8tcGFnZS1jdXN0b21pemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1tZXRhZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY09wdGlvbnNTY2hlbWEgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1wYWdlLWN1c3RvbWl6YXRpb24vcG8tcGFnZS1keW5hbWljLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3BvLXBhZ2UtZHluYW1pYy1lZGl0LWFjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWR5bmFtaWMtZWRpdC1iZWZvcmUtY2FuY2VsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtZHluYW1pYy1lZGl0LWxpdGVyYWxzLmludGVyZmFjZSc7XG5cbnR5cGUgVXJsT3JQb0N1c3RvbWl6YXRpb25GdW5jdGlvbiA9IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMpO1xudHlwZSBTYXZlQWN0aW9uID0gUG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zWydzYXZlJ10gfCBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ3NhdmVOZXcnXTtcblxuZXhwb3J0IGNvbnN0IHBvTm90aWZpY2F0aW9uVHlwZSA9IFsnZXJyb3InLCAnd2FybmluZyddO1xuZXhwb3J0IGNvbnN0IHBvTm90aWZpY2F0aW9uVHlwZURlZmF1bHQgPSAnd2FybmluZyc7XG5cbmV4cG9ydCBjb25zdCBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzPntcbiAgICBjYW5jZWxDb25maXJtTWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgdGhpcyBvcGVyYXRpb24/JyxcbiAgICBkZXRhaWxBY3Rpb25OZXc6ICdOZXcnLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAnU2F2ZScsXG4gICAgcGFnZUFjdGlvblNhdmVOZXc6ICdTYXZlIGFuZCBuZXcnLFxuICAgIHJlZ2lzdGVyTm90Rm91bmQ6ICdSZWdpc3RlciBub3QgZm91bmQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uRXJyb3I6ICdNYW5kYXRvcnkgZmllbGQocykgbm90IGZpbGxlZC4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1Jlc291cmNlIHN1Y2Nlc3NmdWxseSBzYXZlZC4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlOiAnUmVzb3VyY2Ugc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uV2FybmluZzogJ0Zvcm0gbXVzdCBiZSBmaWxsZWQgb3V0IGNvcnJlY3RseS4nXG4gIH0sXG4gIGVzOiA8UG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscz57XG4gICAgY2FuY2VsQ29uZmlybU1lc3NhZ2U6ICdFc3TDoSBzZWd1cm8gZGUgcXVlIGRlc2VhIGNhbmNlbGFyIGVzdGEgb3BlcmFjacOzbj8nLFxuICAgIGRldGFpbEFjdGlvbk5ldzogJ051ZXZvJyxcbiAgICBwYWdlQWN0aW9uQ2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAnR3VhcmRhcicsXG4gICAgcGFnZUFjdGlvblNhdmVOZXc6ICdHdWFyZGFyIHkgbnVldm8nLFxuICAgIHJlZ2lzdGVyTm90Rm91bmQ6ICdSZWdpc3RybyBubyBlbmNvbnRyYWRvLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbkVycm9yOiAnQ2FtcG8ocykgb2JsaWdhdG9yaW8ocykgbm8gY29tcGxldGFkbyhzKS4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29uIMOpeGl0by4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzVXBkYXRlOiAnUmVjdXJzbyBhY3R1YWxpemFkbyBjb24gw6l4aXRvLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdFbCBmb3JtdWxhcmlvIGRlYmUgbGxlbmFyc2UgY29ycmVjdGFtZW50ZS4nXG4gIH0sXG4gIHB0OiA8UG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscz57XG4gICAgY2FuY2VsQ29uZmlybU1lc3NhZ2U6ICdUZW0gY2VydGV6YSBxdWUgZGVzZWphIGNhbmNlbGFyIGVzdGEgb3BlcmHDp8Ojbz8nLFxuICAgIGRldGFpbEFjdGlvbk5ldzogJ05vdm8nLFxuICAgIHBhZ2VBY3Rpb25DYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgcGFnZUFjdGlvblNhdmU6ICdTYWx2YXInLFxuICAgIHBhZ2VBY3Rpb25TYXZlTmV3OiAnU2FsdmFyIGUgbm92bycsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ1JlZ2lzdHJvIG7Do28gZW5jb250cmFkby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25FcnJvcjogJ0NhbXBvKHMpIG9icmlnYXTDs3JpbyhzKSBzZW0gcHJlZW5jaGltZW50by4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ1JlY3Vyc28gc2Fsdm8gY29tIHN1Y2Vzc28uJyxcbiAgICBzYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1VwZGF0ZTogJ1JlY3Vyc28gYXR1YWxpemFkbyBjb20gc3VjZXNzby4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25XYXJuaW5nOiAnRm9ybXVsw6FyaW8gcHJlY2lzYSBzZXIgcHJlZW5jaGlkbyBjb3JyZXRhbWVudGUuJ1xuICB9LFxuICBydTogPFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHM+e1xuICAgIGNhbmNlbENvbmZpcm1NZXNzYWdlOiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDQvtGC0LzQtdC90LjRgtGMINGN0YLRgyDQvtC/0LXRgNCw0YbQuNGOPycsXG4gICAgZGV0YWlsQWN0aW9uTmV3OiAn0J3QvtCy0YvQuScsXG4gICAgcGFnZUFjdGlvbkNhbmNlbDogJ9Ce0YLQvNC10L3QuNGC0YwnLFxuICAgIHBhZ2VBY3Rpb25TYXZlOiAn0KHQvtGF0YDQsNC90LjRgtGMJyxcbiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ9Ch0L7RhdGA0LDQvdC40YLRjCDQuCDRgdC+0LfQtNCw0YLRjCcsXG4gICAgcmVnaXN0ZXJOb3RGb3VuZDogJ9CX0LDQv9C40YHRjCDQvdC1INC90LDQudC00LXQvdCwLicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvbkVycm9yOiAn0J7QsdGP0LfQsNGC0LXQu9GM0L3QvtC1INC/0L7Qu9C1KNGPKSDQvdC1INC30LDQv9C+0LvQvdC10L3Qvi4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ9Cg0LXRgdGD0YDRgSDRg9GB0L/QtdGI0L3QviDRgdC+0YXRgNCw0L3QtdC9LicsXG4gICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NVcGRhdGU6ICfQoNC10YHRg9GA0YEg0YPRgdC/0LXRiNC90L4g0L7QsdC90L7QstC70LXQvS4nLFxuICAgIHNhdmVOb3RpZmljYXRpb25XYXJuaW5nOiAn0KTQvtGA0LzQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LfQsNC/0L7Qu9C90LXQvdCwINC/0YDQsNCy0LjQu9GM0L3Qvi4nXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tcGFnZS1keW5hbWljLWVkaXRgIMOpIHVtYSBww6FnaW5hIHF1ZSBwb2RlIHNlcnZpciBwYXJhIGVkaXRhciBvdSBjcmlhciBub3ZvcyByZWdpc3Ryb3MsXG4gKiBvIG1lc21vIHRhbWLDqW0gc3Vwb3J0YSBtZXRhZGFkb3MgY29uZm9ybWUgZXNwZWNpZmljYWRvIG5hIGRvY3VtZW50YcOnw6NvLlxuICpcbiAqICMjIyBVdGlsaXphw6fDo28gdmlhIHJvdGFcbiAqXG4gKiBBbyB1dGlsaXphciBhcyByb3RhcyBwYXJhIGluaWNpYWxpemFyIG8gdGVtcGxhdGUsIG8gYHBhZ2UtZHluYW1pYy1lZGl0YCBkaXNwb25pYmlsaXphIHByb3ByaWVkYWRlcyBxdWUgZGV2ZW0gc2VyIGZvcm5lY2lkYXMgbm8gYXJxdWl2byBkZSBjb25maWd1cmHDp8OjbyBkZSByb3RhcyBkYSBhcGxpY2HDp8OjbywgcGFyYVxuICogcG9kZXIgZXNwZWNpZmljYXIgbyBlbmRwb2ludCBkb3MgZGFkb3MgZSBkb3MgbWV0YWRhZG9zIHF1ZSBzZXLDo28gY2FycmVnYWRvcyBuYSBpbmljaWFsaXphw6fDo28uXG4gKlxuICogRXhlbXBsbyBkZSB1dGlsaXphw6fDo286XG4gKlxuICogQXJxdWl2byBkZSBjb25maWd1cmHDp8OjbyBkZSByb3RhcyBkYSBhcGxpY2HDp8OjbzogYGFwcC1yb3V0aW5nLm1vZHVsZS50c2BcbiAqIGBgYFxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiB7XG4gKiAgIHBhdGg6ICdwZW9wbGUnLFxuICogICBjb21wb25lbnQ6IFBvUGFnZUR5bmFtaWNFZGl0Q29tcG9uZW50LFxuICogICBkYXRhOiB7XG4gKiAgICAgc2VydmljZUFwaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9wZW9wbGUnLCAvLyBlbmRwb2ludCBkb3MgZGFkb3NcbiAqICAgICBzZXJ2aWNlTWV0YWRhdGFBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvbWV0YWRhdGEnLCAvLyBlbmRwb2ludCBkb3MgbWV0YWRhZG9zIHV0aWxpemFuZG8gbyBtw6l0b2RvIEhUVFAgR2V0XG4gKiAgICAgc2VydmljZUxvYWRBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvbG9hZC1tZXRhZGF0YScgLy8gZW5kcG9pbnQgZGUgY3VzdG9taXphw6fDtWVzIGRvcyBtZXRhZGFkb3MgdXRpbGl6YW5kbyBvIG3DqXRvZG8gSFRUUCBQb3N0XG4gKiAgIH1cbiAqICB9LFxuICogIHtcbiAqICAgcGF0aDogJ2hvbWUnLFxuICogICBjb21wb25lbnQ6IEhvbWVFeGFtcGxlQ29tcG9uZW50XG4gKiAgfVxuICogXTtcbiAqXG4gKiBgYGBcbiAqIE8gY29tcG9uZW50ZSBwcmltZWlybyBpcsOhIGNhcnJlZ2FyIG8gbWV0YWRhZG8gZGEgcm90YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBzZXJ2aWNlTWV0YWRhdGFBcGlcbiAqIGUgZGVwb2lzIGlyw6EgYnVzY2FyIGRhIHJvdGEgZGVmaW5pZGEgbmEgcHJvcHJpZWRhZGUgc2VydmljZUxvYWRBcGkuXG4gKlxuICogQSByZXF1aXNpw6fDo28gZG9zIG1ldGFkYWRvcyDDqSBmZWl0YSBuYSBpbmljaWFsaXphw6fDo28gZG8gdGVtcGxhdGUgcGFyYSBidXNjYXIgb3MgbWV0YWRhZG9zIGRhIHDDoWdpbmEgcGFzc2FuZG8gb1xuICogdGlwbyBkbyBtZXRhZGFkbyBlc3BlcmFkbyBlIGEgdmVyc8OjbyBjYWNoZWFkYSBwZWxvIGJyb3dzZXIuXG4gKlxuICogPiBDYXNvIG8gc2Vydmlkb3IgcmV0b3JuYXIgdW0gZXJybyBhbyByZWN1cGVyYXIgb3MgbWV0YWRhZG9zLCBzZXLDo28gcmVwYXNzYWRvcyBvcyBtZXRhZGFkb3Mgc2Fsdm9zIGVtIGNhY2hlLFxuICogc2UgbyBjYWNoZSBuw6NvIGV4aXN0aXIgc2Vyw6EgZGlzcGFyYWRhIHVtYSBub3RpZmljYcOnw6NvLlxuICpcbiAqIFBhcmEgY2FycmVnYXIgY29tIHVtIHJlY3Vyc28gasOhIGV4aXN0ZW50ZSwgZGV2ZS1zZSBzZXIgaW5jbHXDrWRvIHVtIHBhcsOibWV0cm8gbmEgcm90YSBjaGFtYWRvIGBpZGA6XG4gKlxuICogYGBgXG4gKiB7XG4gKiAgIHBhdGg6ICdwZW9wbGUvOmlkJyxcbiAqICAgY29tcG9uZW50OiBQb1BhZ2VEeW5hbWljRWRpdENvbXBvbmVudCxcbiAqICAgZGF0YToge1xuICogICAgIHNlcnZpY2VBcGk6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvcGVvcGxlJywgLy8gZW5kcG9pbnQgZG9zIGRhZG9zXG4gKiAgICAgc2VydmljZU1ldGFkYXRhQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL21ldGFkYXRhJywgLy8gZW5kcG9pbnQgZG9zIG1ldGFkYWRvc1xuICogICAgIHNlcnZpY2VMb2FkQXBpOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL2xvYWQtbWV0YWRhdGEnIC8vIGVuZHBvaW50IGRlIGN1c3RvbWl6YcOnw7VlcyBkb3MgbWV0YWRhZG9zXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEEgcmVxdWlzacOnw6NvIGRvcyBtZXRhZGFkb3Mgw6kgZmVpdGEgbmEgaW5pY2lhbGl6YcOnw6NvIGRvIHRlbXBsYXRlIHBhcmEgYnVzY2FyIG9zIG1ldGFkYWRvcyBkYSBww6FnaW5hIHBhc3NhbmRvIG9cbiAqIHRpcG8gZG8gbWV0YWRhZG8gZXNwZXJhZG8gZSBhIHZlcnPDo28gY2FjaGVhZGEgcGVsbyBicm93c2VyLlxuICpcbiAqIE8gZm9ybWF0byBlc3BlcmFkbyBuYSByZXNwb3N0YSBkYSByZXF1aXNpw6fDo28gZXN0w6EgZXNwZWNpZmljYWRvIG5hIGludGVyZmFjZVxuICogW1BvUGFnZUR5bmFtaWNFZGl0TWV0YWRhdGFdKC9kb2N1bWVudGF0aW9uL3BvLXBhZ2UtZHluYW1pYy1lZGl0I3BvLXBhZ2UtZHluYW1pYy1lZGl0LW1ldGFkYXRhKS4gUG9yIGV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiAge1xuICogICB2ZXJzaW9uOiAxLFxuICogICB0aXRsZTogJ1BlcnNvbiBlZGl0JyxcbiAqICAgZmllbGRzOiBbXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2lkJywga2V5OiB0cnVlLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICogICAgIHsgcHJvcGVydHk6ICdzdGF0dXMnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ25hbWUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ25pY2tuYW1lJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICdiaXJ0aGRhdGUnLCBsYWJlbDogJ0JpcnRoIGRhdGUnIH0sXG4gKiAgICAgeyBwcm9wZXJ0eTogJ2dlbnJlJyB9LFxuICogICAgIHsgcHJvcGVydHk6ICdjaXR5JyB9LFxuICogICAgIHsgcHJvcGVydHk6ICdjb3VudHJ5JyB9XG4gKiAgIF1cbiAqIH1cbiAqIGBgYFxuICpcbiAqID4gQ2FzbyBvIGVuZHBvaW50IGRvcyBtZXRhZGFkb3MgbsOjbyBzZWphIGVzcGVjaWZpY2Fkbywgc2Vyw6EgZmVpdG8gdW1hIHJlcXVpc2nDp8OjbyB1dGlsaXphbmRvIG8gYHNlcnZpY2VBcGlgIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICogYGBgXG4gKiBHRVQge2VuZC1wb2ludH0vbWV0YWRhdGE/dHlwZT1lZGl0JnZlcnNpb249e3ZlcnNpb259XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtZWRpdC1iYXNpY1wiIHRpdGxlPVwiUE8gUGFnZSBEeW5hbWljIEVkaXQgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LWJhc2ljL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC1iYXNpYy9zYW1wbGUtcG8tcGFnZS1keW5hbWljLWVkaXQtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1keW5hbWljLWVkaXQtdXNlclwiIHRpdGxlPVwiUE8gUGFnZSBEeW5hbWljIEVkaXQgLSBVc2VyXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC11c2VyL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtZWRpdC11c2VyLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1lZGl0LXVzZXIuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tcGFnZS1keW5hbWljLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tcGFnZS1keW5hbWljLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb1BhZ2VEeW5hbWljU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUG9QYWdlRHluYW1pY0VkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2R5bmFtaWNGb3JtJykgZHluYW1pY0Zvcm06IFBvRHluYW1pY0Zvcm1Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2dyaWREZXRhaWwnKSBncmlkRGV0YWlsOiBQb0dyaWRDb21wb25lbnQ7XG5cbiAgLyoqIE9iamV0byBjb20gcHJvcHJpZWRhZGVzIGRvIGJyZWFkY3J1bWIuICovXG4gIEBJbnB1dCgncC1icmVhZGNydW1iJykgYnJlYWRjcnVtYj86IFBvQnJlYWRjcnVtYiA9IHsgaXRlbXM6IFtdIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFbmRwb2ludCB1c2FkbyBwZWxvIHRlbXBsYXRlIHBhcmEgcmVxdWlzacOnw6NvIGRvIHJlY3Vyc28gcXVlIHNlcsOhIGV4aWJpZG8gcGFyYSBlZGnDp8Ojby5cbiAgICpcbiAgICogUGFyYSBhcyBhw6fDtWVzIGRlIGBzYXZlYCBlIGBzYXZlTmV3YCwgc2Vyw6EgZmVpdG8gdW1hIHJlcXVpc2nDp8OjbyBkZSBjcmlhw6fDo28gbmVzc2UgbWVzbW8gZW5kcG9pbnQgcGFzc2FuZG8gb3MgdmFsb3Jlc1xuICAgKiBwcmVlbmNoaWRvcyBwZWxvIHVzdcOhcmlvIHZpYSBwYXlsb2FkLlxuICAgKlxuICAgKiA+IGBQT1NUIHtlbmQtcG9pbnR9YFxuICAgKlxuICAgKiBgYGBcbiAgICogIDxwby1wYWdlLWR5bmFtaWMtZWRpdFxuICAgKiAgICBbcC1hY3Rpb25zXT1cInsgc2F2ZTogJy8nLCBzYXZlTmV3OiAnbmV3JyB9XCJcbiAgICogICAgW3AtZmllbGRzXT1cIlsgeyBwcm9wZXJ0eTogJ25hbWUnIH0sIHsgcHJvcGVydHk6ICdjaXR5JyB9IF1cIlxuICAgKiAgICBwLXNlcnZpY2U9XCIvYXBpL3BvLXNhbXBsZXMvdjEvcGVvcGxlXCJcbiAgICogICAgLi4uPlxuICAgKiAgPC9wby1wYWdlLWR5bmFtaWMtZWRpdD5cbiAgICogYGBgXG4gICAqXG4gICAqIFJlc3F1aXNpw6fDo28gZGlzcGFyYWRhLCBvbmRlIGEgcHJvcHJpZWRhZGUgYG5hbWVgIGUgYGNpdHlgIGZvcmFtIHByZWVuY2hpZGFzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIFBPU1QgL2FwaS9wby1zYW1wbGVzL3YxL3Blb3BsZSBIVFRQLzEuMVxuICAgKiAgSG9zdDogbG9jYWxob3N0OjQwMDBcbiAgICogIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAgICogIEFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpblxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXF1ZXN0IHBheWxvYWQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7IFwibmFtZVwiOiBcIkZ1bGFub1wiLCBcImNpdHlcIjogXCJTbWFsbHZpbGxlXCIgfVxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBxdWVpcmEgcXVlIG8gdGVtcGxhdGUgY2FycmVndWUgdW0gcmVjdXJzbyBqw6EgZXhpc3RlbnRlLCBkZXZlLXNlIHNlciBpbmNsdcOtZG8gdW0gcGFyYW1ldHJvIG5hIHJvdGEgY2hhbWFkbyBgaWRgLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIHJvdGE6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgUm91dGVyTW9kdWxlLmZvclJvb3QoW1xuICAgKiAgICAuLi5cbiAgICogICAgeyBwYXRoOiAnZWRpdC86aWQnLCBjb21wb25lbnQ6IFBlcnNvbkVkaXRDb21wb25lbnQgfSxcbiAgICogICAgLi4uXG4gICAqICBdLFxuICAgKiBgYGBcbiAgICpcbiAgICogQmFzZWFkbyBuaXNzbywgbmEgaW5pY2lhbGl6YcOnw6NvIGRvIHRlbXBsYXRlLCBzZXLDoSBkaXNwYXJhZG8gdW1hIHJlcXVpc2nDp8OjbyBwYXJhIGJ1c2NhciBvIHJlY3Vyc28gcXVlIHNlcsOhIGVkaXRhZG8uXG4gICAqXG4gICAqID4gYEdFVCB7ZW5kLXBvaW50fS97aWR9YFxuICAgKlxuICAgKiBOb3MgbcOpdG9kb3MgZGUgYHNhdmVgIGUgYHNhdmVOZXdgLCBhbyBpbnbDqXMgZGUgdW0gYFBPU1RgLCBzZXLDoSBkaXNwYXJhZG8gdW0gYFBVVGAuXG4gICAqXG4gICAqIFJlc3F1aXNpw6fDo28gZGlzcGFyYWRhLCBvbmRlIGEgcHJvcHJpZWRhZGUgYG5hbWVgIGUgYGNpdHlgIGZvcmFtIHByZWVuY2hpZGFzIC8gYXR1YWxpemFkYXMsIGUgbyBgaWRgIGRhIHVybCDDqSAyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIFBVVCAvYXBpL3BvLXNhbXBsZXMvdjEvcGVvcGxlLzIgSFRUUC8xLjFcbiAgICogIEhvc3Q6IGxvY2FsaG9zdDo0MDAwXG4gICAqICBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gICAqICBBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW5cbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogUmVxdWVzdCBwYXlsb2FkOlxuICAgKlxuICAgKiBgYGBcbiAgICogeyBcIm5hbWVcIjogXCJGdWxhbm9cIiwgXCJjaXR5XCI6IFwiTWV0cm9wb2xpc1wiIH1cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3Atc2VydmljZS1hcGknKSBzZXJ2aWNlQXBpOiBzdHJpbmc7XG5cbiAgLyoqIFTDrXR1bG8gZGEgcMOhZ2luYS4gKi9cbiAgQElucHV0KCdwLXRpdGxlJykgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogRnVuw6fDo28gb3Ugc2VydmnDp28gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBzdHJpbmdgOiAqRW5kcG9pbnQqIHVzYWRvIHBlbG8gY29tcG9uZW50ZSBwYXJhIHJlcXVpc2nDp8OjbyB2aWEgYFBPU1RgLlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogTyByZXRvcm5vIGRlc3RhIGZ1bsOnw6NvIGRldmUgc2VyIGRvIHRpcG8gYFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9uc2AsXG4gICAqIG9uZGUgbyB1c3XDoXJpbyBwb2RlcsOhIGN1c3RvbWl6YXIgbm92b3MgY2FtcG9zLCBicmVhZGNydW1iLCB0aXRsZSBlIGFjdGlvbnNcbiAgICpcbiAgICogUG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBnZXRQYWdlT3B0aW9ucygpOiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMge1xuICAgKiByZXR1cm4ge1xuICAgKiAgIGFjdGlvbnM6XG4gICAqICAgICB7IGNhbmNlbDogZmFsc2UsIHNhdmU6ICdzYXZlLzppZCcsIHNhdmVOZXc6ICdzYXZlTmV3JyB9LFxuICAgKiAgIGZpZWxkczogW1xuICAgKiAgICAgeyBwcm9wZXJ0eTogJ2lkQ2FyZCcsIGdyaWRDb2x1bW5zOiA2IH1cbiAgICogICBdXG4gICAqIH07XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqIFBhcmEgcmVmZXJlbmNpYXIgYSBzdWEgZnVuw6fDo28gdXRpbGl6ZSBhIHByb3ByaWVkYWRlIGBiaW5kYCwgcG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiAgW3AtbG9hZF09XCJvbkxvYWRPcHRpb25zLmJpbmQodGhpcylcIlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkJykgb25Mb2FkOiBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY0VkaXRPcHRpb25zKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGdW7Dp8OjbyBxdWUgc2Vyw6EgZXhlY3V0YWRhIGFww7NzIHNlciByZWFsaXphZGEgYSBidXNjYSBkb3MgZGFkb3MuXG4gICAqXG4gICAqIEEgcHJvcHJpZWRhZGUgYWNlaXRhIG9zIHNlZ3VpbnRlcyB0aXBvczpcbiAgICogLSBgZnVuY3Rpb25gOiBNw6l0b2RvIHF1ZSBzZXLDoSBleGVjdXRhZG8uXG4gICAqXG4gICAqIEVzdGEgZnVuw6fDo28gcGFzc2EgcG9yIHBhcsOibWV0cm8gbyBtb2RlbCBlIGRldmUgcmVjZWLDqi1sbyBkZSB2b2x0YSBjb20gYXMgYWx0ZXJhw6fDtWVzLlxuICAgKiBUYW1iw6ltIGFjZWl0YSBvIHJldG9ybm8gZGUgdW0gT2JzZXJ2YWJsZSBjb20gbyBub3ZvIG1vZGVsLlxuICAgKlxuICAgKiBQb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIG9uTG9hZEN1c3RvbShtb2RlbCkge1xuICAgKiAgcmV0dXJuIHsgLi4ubW9kZWwsIGN1c3RvbUZpZWxkOiAnbmV3VmFsdWUnIH07XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqIFBhcmEgcmVmZXJlbmNpYXIgYSBzdWEgZnVuw6fDo28gdXRpbGl6ZSBhIHByb3ByaWVkYWRlIGBiaW5kYCwgcG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiAgW3AtbG9hZC1kYXRhXT1cIm9uTG9hZEN1c3RvbS5iaW5kKHRoaXMpXCJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZC1kYXRhJykgb25Mb2FkRGF0YTogKChtb2RlbDogYW55KSA9PiBhbnkpIHwgKChtb2RlbDogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4pO1xuXG4gIG1vZGVsOiBhbnkgPSB7fTtcblxuICAvLyBiZWZvcmVTYXZlOiByZXR1cm4gYm9vbGVhblxuICAvLyBhZnRlclNhdmVcbiAgLy8gYmVmb3JlUmVtb3ZlOiByZXR1cm4gYm9vbGVhblxuICAvLyBhZnRlclJlbW92ZVxuICAvLyBiZWZvcmVJbnNlcnQ6IDogcmV0dXJuIGJvb2xlYW5cbiAgcmVhZG9ubHkgZGV0YWlsQWN0aW9uczogUG9HcmlkUm93QWN0aW9ucyA9IHt9O1xuXG4gIHByaXZhdGUgaW5kZXhGb2N1cyA9IDA7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gIHByaXZhdGUgX2FjdGlvbnM6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9ucyA9IHt9O1xuICBwcml2YXRlIF9saXRlcmFsczogUG9QYWdlRHluYW1pY0VkaXRMaXRlcmFscztcbiAgcHJpdmF0ZSBfYXV0b1JvdXRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jb250cm9sRmllbGRzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2RldGFpbEZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwcml2YXRlIF9kdXBsaWNhdGVzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX2ZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwcml2YXRlIF9rZXlzOiBBcnJheTxhbnk+ID0gW107XG4gIHByaXZhdGUgX3BhZ2VBY3Rpb25zOiBBcnJheTxQb1BhZ2VBY3Rpb24+ID0gW107XG4gIHByaXZhdGUgX25vdGlmaWNhdGlvblR5cGU/OiBzdHJpbmcgPSBwb05vdGlmaWNhdGlvblR5cGVEZWZhdWx0O1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBw6fDtWVzIGRhIHDDoWdpbmEuXG4gICAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIHNldCBhY3Rpb25zKHZhbHVlOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5pc09iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IHt9O1xuXG4gICAgdGhpcy5fcGFnZUFjdGlvbnMgPSB0aGlzLmdldFBhZ2VBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fYWN0aW9ucyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtZHluYW1pYy1lZGl0YC5cbiAgICpcbiAgICogw4kgcG9zc2l2ZWwgY3VzdG9taXphciBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpc1xuICAgKiBvdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyXG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNFZGl0TGl0ZXJhbHMgPSB7XG4gICAqICAgIGRldGFpbEFjdGlvbk5ldzogJ0luY2x1aXInLFxuICAgKiAgICBwYWdlQWN0aW9uQ2FuY2VsOiAnRGVzY2FydGFyJyxcbiAgICogICAgcGFnZUFjdGlvblNhdmU6ICdHcmF2YXInLFxuICAgKiAgICBwYWdlQWN0aW9uU2F2ZU5ldzogJ0dyYXZhciBlIGluY2x1aXInLFxuICAgKiAgICByZWdpc3Rlck5vdEZvdW5kOiAnTmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG8uJyxcbiAgICogICAgc2F2ZU5vdGlmaWNhdGlvbkVycm9yOiAnQ2FtcG8ocykgb2JyaWdhdMOzcmlvKHMpIHNlbSBwcmVlbmNoaW1lbnRvLicsXG4gICAqICAgIHNhdmVOb3RpZmljYXRpb25TdWNjZXNzU2F2ZTogJ0l0ZW0gc2Fsdm8gY29tIHN1Y2Vzc28uJyxcbiAgICogICAgc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NVcGRhdGU6ICdJdGVtIGF0dWFsaXphZG8gY29tIHN1Y2Vzc28uJyxcbiAgICogICAgc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmc6ICdOZWNlc3PDoXJpbyBwcmVlbmNoZXIgbyBmb3JtdWzDoXJpbyBjb3JyZXRhbWVudGUuJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tcGFnZS1keW5hbWljLWVkaXRcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBhZ2UtZHluYW1pYy1lZGl0PlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIHZhbG9yIHBhZHLDo28gc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgY29uZmlndXJhZG8gbm8gW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgKmJyb3dzZXIqLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgICAgLi4udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9QYWdlRHluYW1pY0VkaXRMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuXG4gICAgdGhpcy5fcGFnZUFjdGlvbnMgPSB0aGlzLmdldFBhZ2VBY3Rpb25zKHRoaXMuX2FjdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb1BhZ2VEeW5hbWljRWRpdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFRpcG8gZGEgbm90aWZpY2HDp8Ojby5cbiAgICpcbiAgICogw4kgcG9zc2l2ZWwgZGVmaW5pciBvIHRpcG8gZGUgbm90aWZpY2HDp8OjbyBxdWUgc2Vyw6EgZXhpYmlkbyBxdWFuZG8gaG91dmVyIGFsZ3VtIGNhbXBvIGludsOhbGlkbyBubyBmb3JtdWzDoXJpby5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWR5bmFtaWMtZWRpdFxuICAgKiAgIHAtbm90aWZpY2F0aW9uLXR5cGU9XCJ3YXJuaW5nXCI+XG4gICAqIDwvcG8tcGFnZS1keW5hbWljLWVkaXQ+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE9zIHZhbG9yZXMgYWNlaXRvcyBzw6NvICd3YXJuaW5nJyBlICdlcnJvcicuXG4gICAqIEBkZWZhdWx0IHdhcm5pbmdcbiAgICovXG4gIEBJbnB1dCgncC1ub3RpZmljYXRpb24tdHlwZScpIHNldCBub3RpZmljYXRpb25UeXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ub3RpZmljYXRpb25UeXBlID0gcG9Ob3RpZmljYXRpb25UeXBlLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogcG9Ob3RpZmljYXRpb25UeXBlRGVmYXVsdDtcbiAgfVxuXG4gIGdldCBub3RpZmljYXRpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIFZhbGlkYXIgcm90YXMgbmEgbcOjbyBwb2lzIHNlIGV4aXN0aXIgdW1hIHJvdGEgJyoqJyBvIGNhdGNoIGRvIG5hdmlnYXRpb24gbsOjbyBmdW5jaW9uYS5cbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDcmlhIGF1dG9tYXRpY2FtZW50ZSBhcyByb3RhcyBkZSBlZGnDp8OjbyAobm92by9kdXBsaWNhdGUpIGUgZGV0YWxoZXMgY2FzbyBhcyBhw6fDtWVzXG4gICAqIGVzdGVqYW0gZGVmaW5pZGFzIG5hcyBhw6fDtWVzLlxuICAgKlxuICAgKiA+IFBhcmEgbyBjb3JyZXRvIGZ1bmNpb25hbWVudG8gbsOjbyBwb2RlIGhhdmVyIG5lbmh1bSByb3RhIGNvcmluZ2EgKGAqKmApIGVzcGVjaWZpY2FkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLXJvdXRlcicpIHNldCBhdXRvUm91dGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b1JvdXRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGF1dG9Sb3V0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9Sb3V0ZXI7XG4gIH1cblxuICAvKiogTGlzdGEgZG9zIGNhbXBvcyB1c2Fkb3MgbmEgdGFiZWxhIGUgYnVzY2EgYXZhbsOnYWRhLiAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyh2YWx1ZTogQXJyYXk8UG9QYWdlRHluYW1pY0VkaXRGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IFsuLi52YWx1ZV0gOiBbXTtcblxuICAgIHRoaXMuX2tleXMgPSB0aGlzLmdldEtleXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2R1cGxpY2F0ZXMgPSB0aGlzLmdldER1cGxpY2F0ZXNCeUZpZWxkcyh0aGlzLl9maWVsZHMpO1xuXG4gICAgdGhpcy5fY29udHJvbEZpZWxkcyA9IHRoaXMuZ2V0Q29udHJvbEZpZWxkcyh0aGlzLl9maWVsZHMpO1xuICAgIHRoaXMuX2RldGFpbEZpZWxkcyA9IHRoaXMuZ2V0RGV0YWlsRmllbGRzKHRoaXMuX2ZpZWxkcyk7XG4gIH1cblxuICBnZXQgZmllbGRzKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNFZGl0RmllbGQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHBvTm90aWZpY2F0aW9uOiBQb05vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0RpYWxvZ1NlcnZpY2U6IFBvRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNTZXJ2aWNlOiBQb1BhZ2VEeW5hbWljU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2U6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1NlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZERhdGFGcm9tQVBJKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRldGFpbEFjdGlvbk5ldygpIHtcbiAgICB0aGlzLmdyaWREZXRhaWwuaW5zZXJ0Um93KCk7XG4gIH1cblxuICBnZXQgZHVwbGljYXRlcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2R1cGxpY2F0ZXNdO1xuICB9XG5cbiAgZ2V0IGtleXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9rZXlzXTtcbiAgfVxuXG4gIGdldCBwYWdlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3BhZ2VBY3Rpb25zXTtcbiAgfVxuXG4gIGdldCBjb250cm9sRmllbGRzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sRmllbGRzO1xuICB9XG5cbiAgZ2V0IGRldGFpbEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGV0YWlsRmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21BUEkoKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlQXBpOiBzZXJ2aWNlQXBpRnJvbVJvdXRlLCBzZXJ2aWNlTWV0YWRhdGFBcGksIHNlcnZpY2VMb2FkQXBpIH0gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGE7XG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgY29uc3QgeyBkdXBsaWNhdGUgfSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICBjb25zdCBvbkxvYWQgPSBzZXJ2aWNlTG9hZEFwaSB8fCB0aGlzLm9uTG9hZDtcbiAgICB0aGlzLnNlcnZpY2VBcGkgPSBzZXJ2aWNlQXBpRnJvbVJvdXRlIHx8IHRoaXMuc2VydmljZUFwaTtcblxuICAgIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuY29uZmlnU2VydmljZUFwaSh7IGVuZHBvaW50OiB0aGlzLnNlcnZpY2VBcGksIG1ldGFkYXRhOiBzZXJ2aWNlTWV0YWRhdGFBcGkgfSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSQgPSB0aGlzLmdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGUsIGlkLCBvbkxvYWQpO1xuICAgIGNvbnN0IGRhdGEkID0gdGhpcy5sb2FkRGF0YShpZCwgZHVwbGljYXRlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbmNhdChtZXRhZGF0YSQsIGRhdGEkKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbChcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtICYmIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5kaXJ0eSkge1xuICAgICAgdGhpcy5wb0RpYWxvZ1NlcnZpY2UuY29uZmlybSh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMubGl0ZXJhbHMuY2FuY2VsQ29uZmlybU1lc3NhZ2UsXG4gICAgICAgIHRpdGxlOiB0aGlzLmxpdGVyYWxzLnBhZ2VBY3Rpb25DYW5jZWwsXG4gICAgICAgIGNvbmZpcm06IHRoaXMuZ29CYWNrLmJpbmQodGhpcywgYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nb0JhY2soYWN0aW9uQ2FuY2VsLCBhY3Rpb25CZWZvcmVDYW5jZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VW5pcXVlS2V5KGl0ZW0pIHtcbiAgICBjb25zdCBrZXlzID0gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKGl0ZW0sIHRoaXMua2V5cyk7XG5cbiAgICByZXR1cm4gdmFsdWVzRnJvbU9iamVjdChrZXlzKS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcml2YXRlIGdvQmFjayhcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWN0aW9uQmVmb3JlQ2FuY2VsOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNbJ2JlZm9yZUNhbmNlbCddXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5wb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnNTZXJ2aWNlXG4gICAgICAgIC5iZWZvcmVDYW5jZWwoYWN0aW9uQmVmb3JlQ2FuY2VsKVxuICAgICAgICAuc3Vic2NyaWJlKChiZWZvcmVDYW5jZWxSZXN1bHQ6IFBvUGFnZUR5bmFtaWNFZGl0QmVmb3JlQ2FuY2VsKSA9PiB7XG4gICAgICAgICAgdGhpcy5leGVjdXRlQmFja0FjdGlvbihhY3Rpb25DYW5jZWwsIGJlZm9yZUNhbmNlbFJlc3VsdD8uYWxsb3dBY3Rpb24sIGJlZm9yZUNhbmNlbFJlc3VsdD8ubmV3VXJsKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlQmFja0FjdGlvbihcbiAgICBhY3Rpb25DYW5jZWw6IFBvUGFnZUR5bmFtaWNFZGl0QWN0aW9uc1snY2FuY2VsJ10sXG4gICAgYWxsb3dBY3Rpb24/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnYWxsb3dBY3Rpb24nXSxcbiAgICBuZXdVcmw/OiBQb1BhZ2VEeW5hbWljRWRpdEJlZm9yZUNhbmNlbFsnbmV3VXJsJ11cbiAgKSB7XG4gICAgY29uc3QgaXNBbGxvd2VkQWN0aW9uID0gdHlwZW9mIGFsbG93QWN0aW9uID09PSAnYm9vbGVhbicgPyBhbGxvd0FjdGlvbiA6IHRydWU7XG5cbiAgICBpZiAoaXNBbGxvd2VkQWN0aW9uKSB7XG4gICAgICBpZiAoYWN0aW9uQ2FuY2VsID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGFjdGlvbkNhbmNlbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uQ2FuY2VsID09PSAnc3RyaW5nJyB8fCBuZXdVcmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtuZXdVcmwgfHwgYWN0aW9uQ2FuY2VsXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY3Rpb25DYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWREYXRhKGlkLCBkdXBsaWNhdGU/KSB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IGR1cGxpY2F0ZSA/IEpTT04ucGFyc2UoZHVwbGljYXRlKSA6IHt9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmdldFJlc291cmNlKGlkKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5iZWZvcmVTZXRNb2RlbChyZXNwb25zZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhZ2VBY3Rpb25zID0gW107XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYmVmb3JlU2V0TW9kZWwocmVzcG9uc2U6IGFueSkge1xuICAgIGlmICghdGhpcy5vbkxvYWREYXRhKSB7XG4gICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25Mb2FkRGF0YUV4ZWN1dGlvbiA9IHRoaXMub25Mb2FkRGF0YShyZXNwb25zZSk7XG4gICAgY29uc3Qgb25Mb2FkRGF0YSQgPSBvbkxvYWREYXRhRXhlY3V0aW9uIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IG9uTG9hZERhdGFFeGVjdXRpb24gOiBvZihvbkxvYWREYXRhRXhlY3V0aW9uKTtcblxuICAgIG9uTG9hZERhdGEkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBjdXN0b21Nb2RlbCA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwgPSBjdXN0b21Nb2RlbDtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzcG9uc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZDogVXJsT3JQb0N1c3RvbWl6YXRpb25GdW5jdGlvbikge1xuICAgIGlmIChvbkxvYWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFBvRHluYW1pY1BhZ2VPcHRpb25zKG9uTG9hZCkucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlUG9PcHRpb24gPT5cbiAgICAgICAgICB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmNoYW5nZU9yaWdpbmFsT3B0aW9uc1RvTmV3T3B0aW9ucyh0aGlzLCByZXNwb25zZVBvT3B0aW9uKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2w6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrYm94R3JvdXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBwby1jaGVja2JveC1ncm91cFtuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1gKTtcbiAgICBpZiAoY2hlY2tib3hHcm91cCkge1xuICAgICAgY29uc3QgY2hlY2tCb3hDb21wb25lbnQgPSBjaGVja2JveEdyb3VwLnF1ZXJ5U2VsZWN0b3IoJ3BvLWNoZWNrYm94W25nLXJlZmxlY3QtZGlzYWJsZWQ9ZmFsc2VdJyk7XG4gICAgICBjb25zdCBsYWJlbElucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gY2hlY2tCb3hDb21wb25lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5wby1jaGVja2JveC1vdXRsaW5lJyk7XG4gICAgICBpZiAobGFiZWxJbnB1dCkge1xuICAgICAgICBsYWJlbElucHV0LmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZGV4Rm9jdXMtLTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQ29udHJvbChjb250cm9sOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0ke2NvbnRyb2x9XWApO1xuICAgIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmIChpbnB1dEVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudCwgY29udHJvbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNDaGVja2JveElucHV0KGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNSYWRpb0lucHV0KGlucHV0RWxlbWVudDogRWxlbWVudCwgY29udHJvbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmFkaW9Db21wb25lbnQgPSBpbnB1dEVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGBwby1yYWRpb1tuZy1yZWZsZWN0LW5hbWU9JHtjb250cm9sfV1bbmctcmVmbGVjdC1kaXNhYmxlZD1mYWxzZV1gXG4gICAgKTtcbiAgICBpZiAocmFkaW9Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHJhZGlvSW5wdXQgPSByYWRpb0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgcmFkaW9JbnB1dC5mb2N1cygpO1xuICAgICAgcmFkaW9JbnB1dC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncG8tcmFkaW8tZm9jdXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRleEZvY3VzLS07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNFZGl0T3B0aW9ucz4ge1xuICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9uOiBQb1BhZ2VEeW5hbWljRWRpdE9wdGlvbnMgPSB7XG4gICAgICBmaWVsZHM6IHRoaXMuZmllbGRzLFxuICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLFxuICAgICAgYnJlYWRjcnVtYjogdGhpcy5icmVhZGNydW1iLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGVcbiAgICB9O1xuXG4gICAgY29uc3QgcGFnZU9wdGlvblNjaGVtYTogUG9QYWdlRHluYW1pY09wdGlvbnNTY2hlbWE8UG9QYWdlRHluYW1pY0VkaXRPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWVsZHMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1ldGFkYXRhKHNlcnZpY2VBcGlGcm9tUm91dGU6IHN0cmluZywgcGFyYW1JZDogc3RyaW5nIHwgbnVtYmVyLCBvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pIHtcbiAgICBjb25zdCB0eXBlTWV0YWRhdGEgPSBwYXJhbUlkID8gJ2VkaXQnIDogJ2NyZWF0ZSc7XG5cbiAgICBpZiAoc2VydmljZUFwaUZyb21Sb3V0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9QYWdlRHluYW1pY1NlcnZpY2UuZ2V0TWV0YWRhdGE8UG9QYWdlRHluYW1pY0VkaXRNZXRhZGF0YT4odHlwZU1ldGFkYXRhKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b1JvdXRlciA9IHJlc3BvbnNlLmF1dG9Sb3V0ZXIgfHwgdGhpcy5hdXRvUm91dGVyO1xuICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3BvbnNlLmFjdGlvbnMgfHwgdGhpcy5hY3Rpb25zO1xuICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IHJlc3BvbnNlLmJyZWFkY3J1bWIgfHwgdGhpcy5icmVhZGNydW1iO1xuICAgICAgICAgIHRoaXMuZmllbGRzID0gcmVzcG9uc2UuZmllbGRzIHx8IHRoaXMuZmllbGRzO1xuICAgICAgICAgIHRoaXMudGl0bGUgPSByZXNwb25zZS50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnNPbkluaXRpYWxpemUob25Mb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRyb2xzQXNEaXJ0eUFuZEZvY3VzRmlyc3RJbnZhbGlkKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXhGb2N1cyA9IDA7XG4gICAgY29uc3QgY29udHJvbHMgPSBPYmplY3Qua2V5cyh0aGlzLmR5bmFtaWNGb3JtLmZvcm0uY29udHJvbHMpO1xuXG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0uZm9ybS5jb250cm9sc1tjb250cm9sXS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB0aGlzLmluZGV4Rm9jdXMgPT09IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0NvbnRyb2woY29udHJvbCk7XG4gICAgICAgIHRoaXMuaW5kZXhGb2N1cysrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJlc29sdmVVcmwodGhpcy5tb2RlbCwgcGF0aCk7XG5cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVuaXF1ZUtleShpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ10gPyB0aGlzLmZvcm1hdFVuaXF1ZUtleShpdGVtKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVVybChpdGVtOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaXF1ZUtleSA9IHRoaXMuZm9ybWF0VW5pcXVlS2V5KGl0ZW0pO1xuXG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvOmlkL2csIHVuaXF1ZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTYXZlKHNhdmVSZWRpcmVjdFBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHNhdmVPcGVyYXRpb24kID0gdGhpcy5zYXZlT3BlcmF0aW9uKCk7XG5cbiAgICByZXR1cm4gc2F2ZU9wZXJhdGlvbiQucGlwZShcbiAgICAgIHRhcChtZXNzYWdlID0+IHtcbiAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oc2F2ZVJlZGlyZWN0UGF0aCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKG5ld1Jlc291cmNlOiBhbnkgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgbmV3UmVzb3VyY2UgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5rZXlzKG5ld1Jlc291cmNlKS5sZW5ndGggIT09IDApIHtcbiAgICAgIGNvbnN0IGR5bmFtaWNOZ0Zvcm0gPSB0aGlzLmR5bmFtaWNGb3JtLmZvcm07XG5cbiAgICAgIHJlbW92ZUtleXNQcm9wZXJ0aWVzKHRoaXMua2V5cywgbmV3UmVzb3VyY2UpO1xuXG4gICAgICB0aGlzLm1vZGVsID0geyAuLi50aGlzLm1vZGVsLCAuLi5uZXdSZXNvdXJjZSB9O1xuXG4gICAgICBkeW5hbWljTmdGb3JtLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dOb3RpZmljYXRpb24odHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvbldhcm5pbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmxpdGVyYWxzLnNhdmVOb3RpZmljYXRpb25FcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2F2ZU9wZXJhdGlvbigpIHtcbiAgICBpZiAodGhpcy5keW5hbWljRm9ybS5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMubWFya0NvbnRyb2xzQXNEaXJ0eUFuZEZvY3VzRmlyc3RJbnZhbGlkKCk7XG4gICAgICB0aGlzLnNob3dOb3RpZmljYXRpb24odGhpcy5fbm90aWZpY2F0aW9uVHlwZSk7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1JZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuICAgIGNvbnN0IHN1Y2Nlc3NNc2cgPSBwYXJhbUlkXG4gICAgICA/IHRoaXMubGl0ZXJhbHMuc2F2ZU5vdGlmaWNhdGlvblN1Y2Nlc3NVcGRhdGVcbiAgICAgIDogdGhpcy5saXRlcmFscy5zYXZlTm90aWZpY2F0aW9uU3VjY2Vzc1NhdmU7XG5cbiAgICBjb25zdCBzYXZlT3BlcmF0aW9uJCA9IHBhcmFtSWRcbiAgICAgID8gdGhpcy5wb1BhZ2VEeW5hbWljU2VydmljZS51cGRhdGVSZXNvdXJjZShwYXJhbUlkLCB0aGlzLm1vZGVsKVxuICAgICAgOiB0aGlzLnBvUGFnZUR5bmFtaWNTZXJ2aWNlLmNyZWF0ZVJlc291cmNlKHRoaXMubW9kZWwpO1xuXG4gICAgcmV0dXJuIHNhdmVPcGVyYXRpb24kLnBpcGUobWFwKCgpID0+IHN1Y2Nlc3NNc2cpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZShhY3Rpb246IFNhdmVBY3Rpb24sIGJlZm9yZTogJ2JlZm9yZVNhdmUnIHwgJ2JlZm9yZVNhdmVOZXcnID0gJ2JlZm9yZVNhdmUnKSB7XG4gICAgY29uc3QgZXhlY3V0ZU9wZXJhdGlvbiA9IHtcbiAgICAgIGJlZm9yZVNhdmU6IHRoaXMuZXhlY3V0ZVNhdmUuYmluZCh0aGlzKSxcbiAgICAgIGJlZm9yZVNhdmVOZXc6IHRoaXMuZXhlY3V0ZVNhdmVOZXcuYmluZCh0aGlzKVxuICAgIH07XG5cbiAgICBjb25zdCB1bmlxdWVLZXkgPSB0aGlzLnJlc29sdmVVbmlxdWVLZXkodGhpcy5tb2RlbCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMucG9QYWdlRHluYW1pY0VkaXRBY3Rpb25zU2VydmljZVtiZWZvcmVdKHRoaXMuYWN0aW9uc1tiZWZvcmVdLCB1bmlxdWVLZXksIHsgLi4udGhpcy5tb2RlbCB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAocmV0dXJuQmVmb3JlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0FjdGlvbiA9IHJldHVybkJlZm9yZT8ubmV3VXJsID8/IGFjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93QWN0aW9uID0gcmV0dXJuQmVmb3JlPy5hbGxvd0FjdGlvbiA/PyB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHJldHVybkJlZm9yZT8ucmVzb3VyY2UpO1xuXG4gICAgICAgICAgICBpZiAoIWFsbG93QWN0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3QWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZU9wZXJhdGlvbltiZWZvcmVdKG5ld0FjdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdBY3Rpb24oeyAuLi50aGlzLm1vZGVsIH0sIHVuaXF1ZUtleSk7XG4gICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTYXZlTmV3KHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcmFtSWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcbiAgICBjb25zdCBzYXZlT3BlcmF0aW9uJCA9IHRoaXMuc2F2ZU9wZXJhdGlvbigpO1xuXG4gICAgcmV0dXJuIHNhdmVPcGVyYXRpb24kLnBpcGUoXG4gICAgICB0YXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChwYXJhbUlkKSB7XG4gICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKG1lc3NhZ2UpO1xuXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKHBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2VzcyhtZXNzYWdlKTtcblxuICAgICAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRLZXlzQnlGaWVsZHMoZmllbGRzOiBBcnJheTxhbnk+ID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5rZXkgPT09IHRydWUpLm1hcChmaWVsZCA9PiBmaWVsZC5wcm9wZXJ0eSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRyb2xGaWVsZHMoZmllbGRzOiBBcnJheTxhbnk+ID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC50eXBlICE9PSAnZGV0YWlsJyk7XG4gIH1cblxuICBwcml2YXRlIGdldERldGFpbEZpZWxkcyhmaWVsZHM6IEFycmF5PGFueT4gPSBbXSkge1xuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnR5cGUgPT09ICdkZXRhaWwnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHVwbGljYXRlc0J5RmllbGRzKGZpZWxkczogQXJyYXk8YW55PiA9IFtdKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQuZHVwbGljYXRlID09PSB0cnVlKS5tYXAoZmllbGQgPT4gZmllbGQucHJvcGVydHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYWdlQWN0aW9ucyhhY3Rpb25zOiBQb1BhZ2VEeW5hbWljRWRpdEFjdGlvbnMgPSB7fSk6IEFycmF5PFBvUGFnZUFjdGlvbj4ge1xuICAgIGNvbnN0IHBhZ2VBY3Rpb25zID0gW3sgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvblNhdmUsIGFjdGlvbjogdGhpcy5zYXZlLmJpbmQodGhpcywgYWN0aW9ucy5zYXZlKSB9XTtcblxuICAgIGlmIChhY3Rpb25zLnNhdmVOZXcpIHtcbiAgICAgIHBhZ2VBY3Rpb25zLnB1c2goe1xuICAgICAgICBsYWJlbDogdGhpcy5saXRlcmFscy5wYWdlQWN0aW9uU2F2ZU5ldyxcbiAgICAgICAgYWN0aW9uOiB0aGlzLnNhdmUuYmluZCh0aGlzLCBhY3Rpb25zLnNhdmVOZXcsICdiZWZvcmVTYXZlTmV3JylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb25zLmNhbmNlbCA9PT0gdW5kZWZpbmVkIHx8IGFjdGlvbnMuY2FuY2VsKSB7XG4gICAgICBwYWdlQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMucGFnZUFjdGlvbkNhbmNlbCxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmNhbmNlbC5iaW5kKHRoaXMsIGFjdGlvbnMuY2FuY2VsLCB0aGlzLmFjdGlvbnMuYmVmb3JlQ2FuY2VsKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VBY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09iamVjdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxwby1wYWdlLWRlZmF1bHQgW3AtYWN0aW9uc109XCJwYWdlQWN0aW9uc1wiIFtwLWJyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiIFtwLXRpdGxlXT1cInRpdGxlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbDsgdGhlbiBmb3JtRmllbGRzVGVtcGxhdGU7IGVsc2UgcmVnaXN0ZXJOb3RGb3VuZFRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuPC9wby1wYWdlLWRlZmF1bHQ+XG5cbjxuZy10ZW1wbGF0ZSAjcmVnaXN0ZXJOb3RGb3VuZFRlbXBsYXRlPlxuICA8cG8td2lkZ2V0PlxuICAgIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWluZm9cIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2VcIj5cbiAgICAgIHt7IGxpdGVyYWxzLnJlZ2lzdGVyTm90Rm91bmQgfX1cbiAgICA8L3NwYW4+XG4gIDwvcG8td2lkZ2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb3JtRmllbGRzVGVtcGxhdGU+XG4gIDxwby1keW5hbWljLWZvcm0gI2R5bmFtaWNGb3JtIFtwLWZpZWxkc109XCJjb250cm9sRmllbGRzXCIgW3AtdmFsdWVdPVwibW9kZWxcIj4gPC9wby1keW5hbWljLWZvcm0+XG5cbiAgPGRpdiAqbmdJZj1cImRldGFpbEZpZWxkcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwby1zbS0xMlwiPlxuICAgIDxwby1kaXZpZGVyIFtwLWxhYmVsXT1cImRldGFpbEZpZWxkc1swXS5kaXZpZGVyXCI+PC9wby1kaXZpZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLXJvdyBwby1tYi0yXCI+XG4gICAgICA8cG8tYnV0dG9uIFtwLWxhYmVsXT1cImxpdGVyYWxzLmRldGFpbEFjdGlvbk5ld1wiIChwLWNsaWNrKT1cImRldGFpbEFjdGlvbk5ldygpXCI+PC9wby1idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cG8tZ3JpZFxuICAgICAgI2dyaWREZXRhaWxcbiAgICAgIFtwLXJvdy1hY3Rpb25zXT1cImRldGFpbEFjdGlvbnNcIlxuICAgICAgW3AtY29sdW1uc109XCJkZXRhaWxGaWVsZHNbMF0uZGV0YWlsLmNvbHVtbnNcIlxuICAgICAgW3AtZGF0YV09XCJtb2RlbFtkZXRhaWxGaWVsZHNbMF0ucHJvcGVydHldXCJcbiAgICA+XG4gICAgPC9wby1ncmlkPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -3875,6 +3875,8 @@ function PoPageDynamicEditComponent_ng_template_4_Template(rf, ctx) { if (rf & 1
3875
3875
  i0.ɵɵadvance(2);
3876
3876
  i0.ɵɵproperty("ngIf", ctx_r3.detailFields.length > 0);
3877
3877
  } }
3878
+ const poNotificationType = ['error', 'warning'];
3879
+ const poNotificationTypeDefault = 'warning';
3878
3880
  const poPageDynamicEditLiteralsDefault = {
3879
3881
  en: {
3880
3882
  cancelConfirmMessage: 'Are you sure you want to cancel this operation?',
@@ -3883,6 +3885,7 @@ const poPageDynamicEditLiteralsDefault = {
3883
3885
  pageActionSave: 'Save',
3884
3886
  pageActionSaveNew: 'Save and new',
3885
3887
  registerNotFound: 'Register not found.',
3888
+ saveNotificationError: 'Mandatory field(s) not filled.',
3886
3889
  saveNotificationSuccessSave: 'Resource successfully saved.',
3887
3890
  saveNotificationSuccessUpdate: 'Resource successfully updated.',
3888
3891
  saveNotificationWarning: 'Form must be filled out correctly.'
@@ -3894,6 +3897,7 @@ const poPageDynamicEditLiteralsDefault = {
3894
3897
  pageActionSave: 'Guardar',
3895
3898
  pageActionSaveNew: 'Guardar y nuevo',
3896
3899
  registerNotFound: 'Registro no encontrado.',
3900
+ saveNotificationError: 'Campo(s) obligatorio(s) no completado(s).',
3897
3901
  saveNotificationSuccessSave: 'Recurso salvo con éxito.',
3898
3902
  saveNotificationSuccessUpdate: 'Recurso actualizado con éxito.',
3899
3903
  saveNotificationWarning: 'El formulario debe llenarse correctamente.'
@@ -3905,6 +3909,7 @@ const poPageDynamicEditLiteralsDefault = {
3905
3909
  pageActionSave: 'Salvar',
3906
3910
  pageActionSaveNew: 'Salvar e novo',
3907
3911
  registerNotFound: 'Registro não encontrado.',
3912
+ saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',
3908
3913
  saveNotificationSuccessSave: 'Recurso salvo com sucesso.',
3909
3914
  saveNotificationSuccessUpdate: 'Recurso atualizado com sucesso.',
3910
3915
  saveNotificationWarning: 'Formulário precisa ser preenchido corretamente.'
@@ -3916,6 +3921,7 @@ const poPageDynamicEditLiteralsDefault = {
3916
3921
  pageActionSave: 'Сохранить',
3917
3922
  pageActionSaveNew: 'Сохранить и создать',
3918
3923
  registerNotFound: 'Запись не найдена.',
3924
+ saveNotificationError: 'Обязательное поле(я) не заполнено.',
3919
3925
  saveNotificationSuccessSave: 'Ресурс успешно сохранен.',
3920
3926
  saveNotificationSuccessUpdate: 'Ресурс успешно обновлен.',
3921
3927
  saveNotificationWarning: 'Форма должна быть заполнена правильно.'
@@ -4176,6 +4182,7 @@ class PoPageDynamicEditComponent {
4176
4182
  _fields = [];
4177
4183
  _keys = [];
4178
4184
  _pageActions = [];
4185
+ _notificationType = poNotificationTypeDefault;
4179
4186
  /**
4180
4187
  * @optional
4181
4188
  *
@@ -4207,6 +4214,7 @@ class PoPageDynamicEditComponent {
4207
4214
  * pageActionSave: 'Gravar',
4208
4215
  * pageActionSaveNew: 'Gravar e incluir',
4209
4216
  * registerNotFound: 'Nenhum registro encontrado.',
4217
+ * saveNotificationError: 'Campo(s) obrigatório(s) sem preenchimento.',
4210
4218
  * saveNotificationSuccessSave: 'Item salvo com sucesso.',
4211
4219
  * saveNotificationSuccessUpdate: 'Item atualizado com sucesso.',
4212
4220
  * saveNotificationWarning: 'Necessário preencher o formulário corretamente.'
@@ -4239,6 +4247,30 @@ class PoPageDynamicEditComponent {
4239
4247
  get literals() {
4240
4248
  return this._literals || poPageDynamicEditLiteralsDefault[this.language];
4241
4249
  }
4250
+ /**
4251
+ * @optional
4252
+ *
4253
+ * @description
4254
+ *
4255
+ * Tipo da notificação.
4256
+ *
4257
+ * É possivel definir o tipo de notificação que será exibido quando houver algum campo inválido no formulário.
4258
+ *
4259
+ * ```
4260
+ * <po-page-dynamic-edit
4261
+ * p-notification-type="warning">
4262
+ * </po-page-dynamic-edit>
4263
+ * ```
4264
+ *
4265
+ * > Os valores aceitos são 'warning' e 'error'.
4266
+ * @default warning
4267
+ */
4268
+ set notificationType(value) {
4269
+ this._notificationType = poNotificationType.includes(value) ? value : poNotificationTypeDefault;
4270
+ }
4271
+ get notificationType() {
4272
+ return this._notificationType;
4273
+ }
4242
4274
  /**
4243
4275
  * @todo Validar rotas na mão pois se existir uma rota '**' o catch do navigation não funciona.
4244
4276
  *
@@ -4516,10 +4548,20 @@ class PoPageDynamicEditComponent {
4516
4548
  dynamicNgForm.form.patchValue(this.model);
4517
4549
  }
4518
4550
  }
4551
+ showNotification(type) {
4552
+ switch (type) {
4553
+ case 'warning':
4554
+ this.poNotification.warning(this.literals.saveNotificationWarning);
4555
+ break;
4556
+ case 'error':
4557
+ this.poNotification.error(this.literals.saveNotificationError);
4558
+ break;
4559
+ }
4560
+ }
4519
4561
  saveOperation() {
4520
4562
  if (this.dynamicForm.form.invalid) {
4521
4563
  this.markControlsAsDirtyAndFocusFirstInvalid();
4522
- this.poNotification.warning(this.literals.saveNotificationWarning);
4564
+ this.showNotification(this._notificationType);
4523
4565
  return EMPTY;
4524
4566
  }
4525
4567
  const paramId = this.activatedRoute.snapshot.params['id'];
@@ -4609,7 +4651,7 @@ class PoPageDynamicEditComponent {
4609
4651
  let _t;
4610
4652
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dynamicForm = _t.first);
4611
4653
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.gridDetail = _t.first);
4612
- } }, inputs: { breadcrumb: [i0.ɵɵInputFlags.None, "p-breadcrumb", "breadcrumb"], serviceApi: [i0.ɵɵInputFlags.None, "p-service-api", "serviceApi"], title: [i0.ɵɵInputFlags.None, "p-title", "title"], onLoad: [i0.ɵɵInputFlags.None, "p-load", "onLoad"], onLoadData: [i0.ɵɵInputFlags.None, "p-load-data", "onLoadData"], actions: [i0.ɵɵInputFlags.None, "p-actions", "actions"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], autoRouter: [i0.ɵɵInputFlags.None, "p-auto-router", "autoRouter"], fields: [i0.ɵɵInputFlags.None, "p-fields", "fields"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService])], decls: 6, vars: 6, consts: [[3, "p-actions", "p-breadcrumb", "p-title"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["registerNotFoundTemplate", ""], ["formFieldsTemplate", ""], [1, "po-icon", "po-icon-info"], [1, "po-font-text-large"], [3, "p-fields", "p-value"], ["dynamicForm", ""], ["class", "po-sm-12", 4, "ngIf"], [1, "po-sm-12"], [3, "p-label"], [1, "po-row", "po-mb-2"], [3, "p-label", "p-click"], [3, "p-row-actions", "p-columns", "p-data"], ["gridDetail", ""]], template: function PoPageDynamicEditComponent_Template(rf, ctx) { if (rf & 1) {
4654
+ } }, inputs: { breadcrumb: [i0.ɵɵInputFlags.None, "p-breadcrumb", "breadcrumb"], serviceApi: [i0.ɵɵInputFlags.None, "p-service-api", "serviceApi"], title: [i0.ɵɵInputFlags.None, "p-title", "title"], onLoad: [i0.ɵɵInputFlags.None, "p-load", "onLoad"], onLoadData: [i0.ɵɵInputFlags.None, "p-load-data", "onLoadData"], actions: [i0.ɵɵInputFlags.None, "p-actions", "actions"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], notificationType: [i0.ɵɵInputFlags.None, "p-notification-type", "notificationType"], autoRouter: [i0.ɵɵInputFlags.None, "p-auto-router", "autoRouter"], fields: [i0.ɵɵInputFlags.None, "p-fields", "fields"] }, features: [i0.ɵɵProvidersFeature([PoPageDynamicService])], decls: 6, vars: 6, consts: [[3, "p-actions", "p-breadcrumb", "p-title"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["registerNotFoundTemplate", ""], ["formFieldsTemplate", ""], [1, "po-icon", "po-icon-info"], [1, "po-font-text-large"], [3, "p-fields", "p-value"], ["dynamicForm", ""], ["class", "po-sm-12", 4, "ngIf"], [1, "po-sm-12"], [3, "p-label"], [1, "po-row", "po-mb-2"], [3, "p-label", "p-click"], [3, "p-row-actions", "p-columns", "p-data"], ["gridDetail", ""]], template: function PoPageDynamicEditComponent_Template(rf, ctx) { if (rf & 1) {
4613
4655
  i0.ɵɵelementStart(0, "po-page-default", 0);
4614
4656
  i0.ɵɵtemplate(1, PoPageDynamicEditComponent_ng_container_1_Template, 1, 0, "ng-container", 1);
4615
4657
  i0.ɵɵelementEnd();
@@ -4652,6 +4694,9 @@ class PoPageDynamicEditComponent {
4652
4694
  }], literals: [{
4653
4695
  type: Input,
4654
4696
  args: ['p-literals']
4697
+ }], notificationType: [{
4698
+ type: Input,
4699
+ args: ['p-notification-type']
4655
4700
  }], autoRouter: [{
4656
4701
  type: Input,
4657
4702
  args: ['p-auto-router']
@@ -4659,7 +4704,7 @@ class PoPageDynamicEditComponent {
4659
4704
  type: Input,
4660
4705
  args: ['p-fields']
4661
4706
  }] }); })();
4662
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageDynamicEditComponent, { className: "PoPageDynamicEditComponent", filePath: "lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts", lineNumber: 182 }); })();
4707
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageDynamicEditComponent, { className: "PoPageDynamicEditComponent", filePath: "lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.ts", lineNumber: 189 }); })();
4663
4708
 
4664
4709
  /**
4665
4710
  * @description
@@ -10775,5 +10820,5 @@ class PoTemplatesModule {
10775
10820
  * Generated bundle index. Do not edit.
10776
10821
  */
10777
10822
 
10778
- export { PoComponentsModule, PoJobSchedulerParametersTemplateDirective, PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryErrorMessageComponent, PoModalPasswordRecoveryModalContent, PoModalPasswordRecoveryModule, PoModalPasswordRecoveryType, PoPageBackgroundComponent, PoPageBackgroundModule, PoPageBlockedUserComponent, PoPageBlockedUserContactsComponent, PoPageBlockedUserModule, PoPageBlockedUserReason, PoPageBlockedUserReasonComponent, PoPageChangePasswordComponent, PoPageChangePasswordModule, PoPageCustomizationModule, PoPageCustomizationService, PoPageDynamicDetailComponent, PoPageDynamicDetailModule, PoPageDynamicEditComponent, PoPageDynamicEditModule, PoPageDynamicModule, PoPageDynamicSearchComponent, PoPageDynamicSearchModule, PoPageDynamicService, PoPageDynamicTableComponent, PoPageDynamicTableModule, PoPageJobSchedulerComponent, PoPageJobSchedulerModule, PoPageLoginAuthenticationType, PoPageLoginComponent, PoPageLoginModule, PoServicesModule, PoTemplatesModule, poModalPasswordRecoveryLiterals, poPageBlockedUserButtonLiterals, poPageBlockedUserLiterals, poPageChangePasswordLiterals, poPageDynamicDetailLiteralsDefault, poPageDynamicEditLiteralsDefault, poPageDynamicLiterals };
10823
+ export { PoComponentsModule, PoJobSchedulerParametersTemplateDirective, PoModalPasswordRecoveryComponent, PoModalPasswordRecoveryErrorMessageComponent, PoModalPasswordRecoveryModalContent, PoModalPasswordRecoveryModule, PoModalPasswordRecoveryType, PoPageBackgroundComponent, PoPageBackgroundModule, PoPageBlockedUserComponent, PoPageBlockedUserContactsComponent, PoPageBlockedUserModule, PoPageBlockedUserReason, PoPageBlockedUserReasonComponent, PoPageChangePasswordComponent, PoPageChangePasswordModule, PoPageCustomizationModule, PoPageCustomizationService, PoPageDynamicDetailComponent, PoPageDynamicDetailModule, PoPageDynamicEditComponent, PoPageDynamicEditModule, PoPageDynamicModule, PoPageDynamicSearchComponent, PoPageDynamicSearchModule, PoPageDynamicService, PoPageDynamicTableComponent, PoPageDynamicTableModule, PoPageJobSchedulerComponent, PoPageJobSchedulerModule, PoPageLoginAuthenticationType, PoPageLoginComponent, PoPageLoginModule, PoServicesModule, PoTemplatesModule, poModalPasswordRecoveryLiterals, poNotificationType, poNotificationTypeDefault, poPageBlockedUserButtonLiterals, poPageBlockedUserLiterals, poPageChangePasswordLiterals, poPageDynamicDetailLiteralsDefault, poPageDynamicEditLiteralsDefault, poPageDynamicLiterals };
10779
10824
  //# sourceMappingURL=po-ui-ng-templates.mjs.map