@bnsights/bbsf-controls 1.0.28 → 1.0.31

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 (28) hide show
  1. package/README.md +2 -3
  2. package/bnsights-bbsf-controls-1.0.31.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +524 -355
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Enums/LanguageValidation.js +6 -0
  7. package/esm2015/lib/Shared/Models/RepeaterField.js +1 -1
  8. package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
  9. package/esm2015/lib/Shared/Models/TextBoxOptions.js +3 -1
  10. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +15 -9
  11. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +376 -336
  12. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +105 -0
  13. package/esm2015/lib/controls/TextBox/TextBox.component.js +14 -13
  14. package/esm2015/lib/controls/bbsf-controls.module.js +4 -1
  15. package/esm2015/public-api.js +3 -1
  16. package/fesm2015/bnsights-bbsf-controls.js +515 -356
  17. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  18. package/lib/Shared/Enums/LanguageValidation.d.ts +4 -0
  19. package/lib/Shared/Models/RepeaterField.d.ts +1 -0
  20. package/lib/Shared/Models/RepeaterOptions.d.ts +3 -0
  21. package/lib/Shared/Models/TextBoxOptions.d.ts +3 -0
  22. package/lib/controls/Repeater/repeater/repeater.component.d.ts +2 -1
  23. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  24. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +16 -0
  25. package/package.json +2 -2
  26. package/public-api.d.ts +2 -0
  27. package/src/lib/assets/Style.css +5 -1
  28. package/bnsights-bbsf-controls-1.0.28.tgz +0 -0
@@ -0,0 +1,6 @@
1
+ export var LanguageValidation;
2
+ (function (LanguageValidation) {
3
+ LanguageValidation[LanguageValidation["English"] = 1] = "English";
4
+ LanguageValidation[LanguageValidation["Arabic"] = 2] = "Arabic";
5
+ })(LanguageValidation || (LanguageValidation = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFuZ3VhZ2VWYWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9FbnVtcy9MYW5ndWFnZVZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBR1Q7QUFISCxXQUFZLGtCQUFrQjtJQUMxQixpRUFBVyxDQUFBO0lBQ1gsK0RBQVUsQ0FBQTtBQUNaLENBQUMsRUFIUyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBRzNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTGFuZ3VhZ2VWYWxpZGF0aW9uIHtcclxuICAgIEVuZ2xpc2ggPSAxLFxyXG4gICAgQXJhYmljID0gMlxyXG4gIH0iXX0=
@@ -1,3 +1,3 @@
1
1
  export class RepeaterField {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwZWF0ZXJGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvTW9kZWxzL1JlcGVhdGVyRmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGFBQWE7Q0FHekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9FbnVtc1wiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlckZpZWxkIHtcclxuICAgIENvbnRyb2xUeXBlOiBEYXRhVHlwZTtcclxuICAgIENvbnRyb2xPcHRpb25zOmFueTtcclxufVxyXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwZWF0ZXJGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvTW9kZWxzL1JlcGVhdGVyRmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGFBQWE7Q0FJekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9FbnVtc1wiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlckZpZWxkIHtcclxuICAgIEhlYWRlclRpdGxlOnN0cmluZztcclxuICAgIENvbnRyb2xUeXBlOiBEYXRhVHlwZTtcclxuICAgIENvbnRyb2xPcHRpb25zOmFueTtcclxufVxyXG4iXX0=
@@ -1,10 +1,11 @@
1
1
  export class RepeaterOptions {
2
2
  constructor() {
3
3
  this.MinRequiredItems = 1;
4
+ this.ActionLabelKey = "";
4
5
  this.AddButtonText = "Add";
5
6
  this.DeleteButtonText = "Delete";
6
7
  this.RepeaterValue = [];
7
8
  this.RepeaterStructure = [];
8
9
  }
9
10
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwZWF0ZXJPcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBRUkscUJBQWdCLEdBQVMsQ0FBQyxDQUFDO1FBSTNCLGtCQUFhLEdBQVMsS0FBSyxDQUFBO1FBRTNCLHFCQUFnQixHQUFTLFFBQVEsQ0FBQTtRQUNqQyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixzQkFBaUIsR0FBb0IsRUFBRSxDQUFBO0lBQzNDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcGVhdGVyRmllbGQgfSBmcm9tIFwiLi9SZXBlYXRlckZpZWxkXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJPcHRpb25zIHtcclxuICAgIElzUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgICBNaW5SZXF1aXJlZEl0ZW1zOiBudW1iZXI9MTtcclxuICAgIEV4dHJhQ2xhc3Nlczogc3RyaW5nO1xyXG4gICAgTmFtZTogc3RyaW5nO1xyXG4gICAgQWRkQnV0dG9uRXh0cmFDbGFzc2VzOiBzdHJpbmdcclxuICAgIEFkZEJ1dHRvblRleHQ6IHN0cmluZz1cIkFkZFwiXHJcbiAgICBEZWxldGVCdXR0b25FeHRyYUNsYXNzZXM6IHN0cmluZ1xyXG4gICAgRGVsZXRlQnV0dG9uVGV4dDogc3RyaW5nPVwiRGVsZXRlXCJcclxuICAgIFJlcGVhdGVyVmFsdWU6IGFueVtdID0gW107XHJcbiAgICBSZXBlYXRlclN0cnVjdHVyZTogUmVwZWF0ZXJGaWVsZFtdID0gW11cclxufVxyXG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwZWF0ZXJPcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBRUkscUJBQWdCLEdBQVMsQ0FBQyxDQUFDO1FBRzNCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBSXpCLGtCQUFhLEdBQVMsS0FBSyxDQUFDO1FBRTVCLHFCQUFnQixHQUFTLFFBQVEsQ0FBQztRQUNsQyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixzQkFBaUIsR0FBb0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcGVhdGVyRmllbGQgfSBmcm9tIFwiLi9SZXBlYXRlckZpZWxkXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJPcHRpb25zIHtcclxuICAgIElzUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgICBNaW5SZXF1aXJlZEl0ZW1zOiBudW1iZXI9MTtcclxuICAgIEV4dHJhQ2xhc3Nlczogc3RyaW5nO1xyXG4gICAgTmFtZTogc3RyaW5nO1xyXG4gICAgQWN0aW9uTGFiZWxLZXk6c3RyaW5nPVwiXCI7XHJcbiAgICBBZGRCdXR0b25FeHRyYUNsYXNzZXM6IHN0cmluZztcclxuICAgIFJlcGVhdGVyVGFibGVFeHRyYUNsYXNzZXM6IHN0cmluZ1xyXG4gICAgUmVwZWF0ZXJUYWJsZVJvd0V4dHJhQ2xhc3Nlczogc3RyaW5nXHJcbiAgICBBZGRCdXR0b25UZXh0OiBzdHJpbmc9XCJBZGRcIjtcclxuICAgIERlbGV0ZUJ1dHRvbkV4dHJhQ2xhc3Nlczogc3RyaW5nO1xyXG4gICAgRGVsZXRlQnV0dG9uVGV4dDogc3RyaW5nPVwiRGVsZXRlXCI7XHJcbiAgICBSZXBlYXRlclZhbHVlOiBhbnlbXSA9IFtdO1xyXG4gICAgUmVwZWF0ZXJTdHJ1Y3R1cmU6IFJlcGVhdGVyRmllbGRbXSA9IFtdO1xyXG59XHJcbiJdfQ==
@@ -14,6 +14,8 @@ export class TextBoxOptions {
14
14
  this.CustomValidation = [];
15
15
  /** to set Direction of textbox if textbox is Arabic or English */
16
16
  this.ForceDirection = null;
17
+ /** to set Language of textbox if textbox language is Arabic or English */
18
+ this.LanguageValidation = null;
17
19
  /** Set Type of TextBox ("text","password","email","number") */
18
20
  this.Type = InputType.Text;
19
21
  this.IconPosition = IconPosition.left;
@@ -21,4 +23,4 @@ export class TextBoxOptions {
21
23
  this.ValidationRules = [];
22
24
  }
23
25
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEJveE9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL01vZGVscy9UZXh0Qm94T3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUEyQkUsK0VBQStFO1FBQy9FLGdCQUFXLEdBQWEsSUFBSSxXQUFXLEVBQUUsQ0FBQTtRQUN6QyxvQ0FBb0M7UUFDcEMsaUJBQVksR0FBUSxLQUFLLENBQUE7UUFxQnpCLGlFQUFpRTtRQUNqRSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUMvQjtRQUNBO1FBQ0EscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQTtRQUN2QyxvRUFBb0U7UUFDcEUsbUJBQWMsR0FBaUIsSUFBSSxDQUFBO1FBQ25DLCtEQUErRDtRQUMvRCxTQUFJLEdBQWEsU0FBUyxDQUFDLElBQUksQ0FBQztRQU9oQyxpQkFBWSxHQUFpQixZQUFZLENBQUMsSUFBSSxDQUFBO1FBQzlDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsb0JBQWUsR0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vRW51bXMvSW5wdXRUeXBlJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdGlvbiB9IGZyb20gJy4vQ3VzdG9tVmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi9FbnVtcy9Db250cm9sTGF5b3V0JztcclxuaW1wb3J0IHsgUmFuZ2VOdW1iZXIgfSBmcm9tICcuL1JhbmdlTnVtYmVyJztcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi9FbnVtcy9Gb3JjZURpcmVjdGlvbic7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGUgfSBmcm9tICcuL0F0dHJpYnV0ZSc7XHJcbmltcG9ydCB7IEljb25Qb3NpdGlvbiB9IGZyb20gJy4uL0VudW1zL0ljb25Qb3NpdGlvbic7XHJcblxyXG5leHBvcnQgY2xhc3MgVGV4dEJveE9wdGlvbnMge1xyXG4gIC8qKlxyXG4gKiBSZXByZXNlbnQgTmFtZSBPZiBGb3JtIENvbnRyb2xcclxuICovXHJcbiAgTmFtZTpzdHJpbmdcclxuICAgLyoqXHJcbiAqICAgUmVwcmVzZW50IGNsYXNzZXMgdG8gdGV4dGJveCB0aGF0IGFsbG93IHVzIHRvIHNlbGVjdCB0aGUgVGV4dEJveCBieSBqcXVlcnkgb3IgamF2YXNjcmlwdCBcclxuICovXHJcbiBcclxuICBFeHRyYUNsYXNzZXM6c3RyaW5nXHJcblxyXG4gLyoqICBSZXByZXNlbnQgdmFsdWUgb2YgdGhlIGxhYmVsKi9cclxuICBMYWJlbFZhbHVlOnN0cmluZ1xyXG4gIC8qKiAgUmVwcmVzZW50IEtleSBvZiB0aGUgbGFiZWwqL1xyXG4gIExhYmVsS2V5OnN0cmluZ1xyXG4gIC8qKiAgUmVwcmVzZW50IHZhbHVlIG9mIHRoZSBsYWJlbERlc2NyaXB0aW9uIHNob3cgdW5kZXIgdGV4dGJveCovXHJcbiAgTGFiZWxEZXNjcmlwdGlvbjpzdHJpbmdcclxuICAvKiogUmVwcmVzZW50IHZhbHVlIG9mIHRoZSBQbGFjZWhvbGRlciBvZiB0ZXh0Ym94ICovXHJcbiAgUGxhY2Vob2xkZXI6c3RyaW5nXHJcbiAgLyoqVG8gc2V0ICB2YWx1ZSAgdG8gdGV4dGJveCAqL1xyXG4gIFZhbHVlOmFueVxyXG4gIC8vKiogU2V0IHRoZSBNYXhMZW5ndGggb2YgY2hhcmFjdGVycyBJbiBUZXh0Qm94ICovXHJcbiAgTWF4TGVuZ3RoPzpudW1iZXJcclxuICAvKipTZXQgdGhlIE1pbkxlbmd0aCBvZiBjaGFyYWN0ZXJzIEluIFRleHRCb3ggICovXHJcbiAgTWluTGVuZ3RoPzpudW1iZXJcclxuICAgLy8qKiBTZXQgdGhlIE1heFdvcmRDb3VudCBvZiBjaGFyYWN0ZXJzIEluIFRleHRCb3ggKi9cclxuICAgTWF4V29yZENvdW50OiBudW1iZXI7XHJcbiAgLyoqIHNldCBSYW5nZSBOdW1iZXIgdG8gVGV4dGJveCB3aXRoIHR5cGUgbnVtYmVyIHdpdGggRnJvbS1WYWx1ZSBhbmQgVG8tdmFsdWUqL1xyXG4gIE51bWJlclJhbmdlOlJhbmdlTnVtYmVyPW5ldyBSYW5nZU51bWJlcigpXHJcbiAgLyoqUHJldmVudCBBdXRvQ29tcGxldGUgb2YgdGV4dGJveCovXHJcbiAgQXV0b0NvbXBsZXRlOnN0cmluZz1cIm9mZlwiXHJcbiAgLyoqXHJcbiAgKiBEaXNwbGF5IFwiKlwiIGJlc2lkZSB0aGUgbGFiZWwgXHJcbiAgKiBpZiBGb3JjZUFzdGVyaXNrPXRydWUgYW5kIElzUmVxdWlyZWQ9VHJ1ZSBoaXMgZGlzcGxheSBcIipcIiAsXHJcbiAgKiBpZiBGb3JjZUFzdGVyaXNrPWZhbHNlIGFuZCBJc1JlcXVpcmVkPWZhbHNlIHRoaXMgcmVtb3ZlIFwiKlwiLFxyXG4gICppZiBGb3JjZUFzdGVyaXNrPWZhbHNlIGFuZCBJc1JlcXVpcmVkPVRydWUgdGhpcyBkaXNwbGF5IFwiKlwiICwgXHJcbiAgICovXHJcblxyXG4gIFNob3dBc3RlcmlzazogYm9vbGVhblxyXG4gIC8qKiBBYmlsaXR5IHRvIHNldCAgVGV4dEJveCByZXF1aXJlZCAqL1xyXG4gIElzUmVxdWlyZWQ6IGJvb2xlYW5cclxuICAvKiogQWJpbGl0eSB0byBkaXNwbGF5IG9yIGhpZGUgdGhlIGxhYmVsIG9mIFRleHRCb3ggKi9cclxuICBIaWRlTGFiZWw6ICBib29sZWFuXHJcbiAgLyoqIFNldHMgYW4gYXR0cmlidXRlIGRpc2FibGU9XCJkaXNhYmxlZFwiICAqL1xyXG4gIElzRGlzYWJsZWQ6IGJvb2xlYW5cclxuICAvKiogIHRleHQgaW5wdXQgb24gY2hhbmdlICAqLyBcclxuICBUcmltVGV4dE9uQ2hhbmdlOiBib29sZWFuXHJcbiAgLyoqIGFkZCBidXR0b24gdG8gZm9yIGNvcGluZyB0byBjbGlwYm9hcmQgKi9cclxuICBFbmFibGVDb3B5VG9DbGlwYm9hcmQ6IGJvb2xlYW5cclxuICAvKipQcmV2ZW50ICBEZWZ1bGF0IFBhc3N3b3JkIFZhbGlkYXRpb24gdG8gc2V0IEN1c3RvbSBWYWxpZGF0aW9uICovXHJcbiAgUmVtb3ZlRGVmYXVsdFBhc3N3b3JkVmFsaWRhdGlvbjpib29sZWFuXHJcbiAgLyoqICB0byBzZXQgdHlwZSBvZiB2aWV3ICBpZiB0ZXh0Ym94IGlzIFZlcnRpY2FsIG9yIEhvcml6b250YWwgKi9cclxuICBWaWV3VHlwZTogQ29udHJvbExheW91dCA9IG51bGw7XHJcbiAgLyoqIEFsbG93IHRvIFBhc3MgT2JqZWN0IFdpdGggQm9keSBvZiBGdW5jdGlvbiB3aGljaCByZXByZXNlbnQgQ3VzdG9tVmFsaWRhdGlvbiBhbmQgbWFzc2FnZSBmb3IgZXJyb3IgbWFzc2FnZSBcclxuKi9cclxuICBDdXN0b21WYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uW109W11cclxuICAvKiogdG8gc2V0IERpcmVjdGlvbiBvZiB0ZXh0Ym94ICBpZiB0ZXh0Ym94IGlzIEFyYWJpYyBvciBFbmdsaXNoICAqL1xyXG4gIEZvcmNlRGlyZWN0aW9uOiBGb3JjZURpcmVjdGlvbj1udWxsXHJcbiAgLyoqIFNldCBUeXBlIG9mIFRleHRCb3ggKFwidGV4dFwiLFwicGFzc3dvcmRcIixcImVtYWlsXCIsXCJudW1iZXJcIikgKi9cclxuICBUeXBlOiBJbnB1dFR5cGU9IElucHV0VHlwZS5UZXh0O1xyXG4gIC8qKiBTZXQgTGlzdCBvZiBDdXN0b20gQXR0cmlidXRlIHRvIFRleHRCb3ggICovXHJcbiAgQXR0cmlidXRlTGlzdDpBdHRyaWJ1dGVbXVxyXG4gIC8qKiBTZXQgTWFzayBQYXR0ZXJuIEF0dHJpYnV0ZSB0byBUZXh0Qm94ICAqL1xyXG4gIE1hc2tQYXR0ZXJuOiBzdHJpbmdcclxuICAvKmljb24gb3B0aW9ucyovXHJcbiAgSWNvbjogc3RyaW5nXHJcbiAgSWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24gPSBJY29uUG9zaXRpb24ubGVmdFxyXG4gIE5vTWFyZ2luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVmFsaWRhdGlvblJ1bGVzOmFueVtdPVtdO1xyXG59XHJcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEJveE9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL01vZGVscy9UZXh0Qm94T3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckQsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUEyQkUsK0VBQStFO1FBQy9FLGdCQUFXLEdBQWEsSUFBSSxXQUFXLEVBQUUsQ0FBQTtRQUN6QyxvQ0FBb0M7UUFDcEMsaUJBQVksR0FBUSxLQUFLLENBQUE7UUFxQnpCLGlFQUFpRTtRQUNqRSxhQUFRLEdBQWtCLElBQUksQ0FBQztRQUMvQjtRQUNBO1FBQ0EscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQTtRQUN2QyxvRUFBb0U7UUFDcEUsbUJBQWMsR0FBaUIsSUFBSSxDQUFBO1FBQ25DLDRFQUE0RTtRQUM1RSx1QkFBa0IsR0FBcUIsSUFBSSxDQUFBO1FBQzNDLCtEQUErRDtRQUMvRCxTQUFJLEdBQWEsU0FBUyxDQUFDLElBQUksQ0FBQztRQU9oQyxpQkFBWSxHQUFpQixZQUFZLENBQUMsSUFBSSxDQUFBO1FBQzlDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsb0JBQWUsR0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vRW51bXMvSW5wdXRUeXBlJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdGlvbiB9IGZyb20gJy4vQ3VzdG9tVmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQgfSBmcm9tICcuLi9FbnVtcy9Db250cm9sTGF5b3V0JztcclxuaW1wb3J0IHsgUmFuZ2VOdW1iZXIgfSBmcm9tICcuL1JhbmdlTnVtYmVyJztcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi9FbnVtcy9Gb3JjZURpcmVjdGlvbic7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGUgfSBmcm9tICcuL0F0dHJpYnV0ZSc7XHJcbmltcG9ydCB7IEljb25Qb3NpdGlvbiB9IGZyb20gJy4uL0VudW1zL0ljb25Qb3NpdGlvbic7XHJcbmltcG9ydCB7IExhbmd1YWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uL0VudW1zL0xhbmd1YWdlVmFsaWRhdGlvbic7XHJcblxyXG5leHBvcnQgY2xhc3MgVGV4dEJveE9wdGlvbnMge1xyXG4gIC8qKlxyXG4gKiBSZXByZXNlbnQgTmFtZSBPZiBGb3JtIENvbnRyb2xcclxuICovXHJcbiAgTmFtZTpzdHJpbmdcclxuICAgLyoqXHJcbiAqICAgUmVwcmVzZW50IGNsYXNzZXMgdG8gdGV4dGJveCB0aGF0IGFsbG93IHVzIHRvIHNlbGVjdCB0aGUgVGV4dEJveCBieSBqcXVlcnkgb3IgamF2YXNjcmlwdCBcclxuICovXHJcbiBcclxuICBFeHRyYUNsYXNzZXM6c3RyaW5nXHJcblxyXG4gLyoqICBSZXByZXNlbnQgdmFsdWUgb2YgdGhlIGxhYmVsKi9cclxuICBMYWJlbFZhbHVlOnN0cmluZ1xyXG4gIC8qKiAgUmVwcmVzZW50IEtleSBvZiB0aGUgbGFiZWwqL1xyXG4gIExhYmVsS2V5OnN0cmluZ1xyXG4gIC8qKiAgUmVwcmVzZW50IHZhbHVlIG9mIHRoZSBsYWJlbERlc2NyaXB0aW9uIHNob3cgdW5kZXIgdGV4dGJveCovXHJcbiAgTGFiZWxEZXNjcmlwdGlvbjpzdHJpbmdcclxuICAvKiogUmVwcmVzZW50IHZhbHVlIG9mIHRoZSBQbGFjZWhvbGRlciBvZiB0ZXh0Ym94ICovXHJcbiAgUGxhY2Vob2xkZXI6c3RyaW5nXHJcbiAgLyoqVG8gc2V0ICB2YWx1ZSAgdG8gdGV4dGJveCAqL1xyXG4gIFZhbHVlOmFueVxyXG4gIC8vKiogU2V0IHRoZSBNYXhMZW5ndGggb2YgY2hhcmFjdGVycyBJbiBUZXh0Qm94ICovXHJcbiAgTWF4TGVuZ3RoPzpudW1iZXJcclxuICAvKipTZXQgdGhlIE1pbkxlbmd0aCBvZiBjaGFyYWN0ZXJzIEluIFRleHRCb3ggICovXHJcbiAgTWluTGVuZ3RoPzpudW1iZXJcclxuICAgLy8qKiBTZXQgdGhlIE1heFdvcmRDb3VudCBvZiBjaGFyYWN0ZXJzIEluIFRleHRCb3ggKi9cclxuICAgTWF4V29yZENvdW50OiBudW1iZXI7XHJcbiAgLyoqIHNldCBSYW5nZSBOdW1iZXIgdG8gVGV4dGJveCB3aXRoIHR5cGUgbnVtYmVyIHdpdGggRnJvbS1WYWx1ZSBhbmQgVG8tdmFsdWUqL1xyXG4gIE51bWJlclJhbmdlOlJhbmdlTnVtYmVyPW5ldyBSYW5nZU51bWJlcigpXHJcbiAgLyoqUHJldmVudCBBdXRvQ29tcGxldGUgb2YgdGV4dGJveCovXHJcbiAgQXV0b0NvbXBsZXRlOnN0cmluZz1cIm9mZlwiXHJcbiAgLyoqXHJcbiAgKiBEaXNwbGF5IFwiKlwiIGJlc2lkZSB0aGUgbGFiZWwgXHJcbiAgKiBpZiBGb3JjZUFzdGVyaXNrPXRydWUgYW5kIElzUmVxdWlyZWQ9VHJ1ZSBoaXMgZGlzcGxheSBcIipcIiAsXHJcbiAgKiBpZiBGb3JjZUFzdGVyaXNrPWZhbHNlIGFuZCBJc1JlcXVpcmVkPWZhbHNlIHRoaXMgcmVtb3ZlIFwiKlwiLFxyXG4gICppZiBGb3JjZUFzdGVyaXNrPWZhbHNlIGFuZCBJc1JlcXVpcmVkPVRydWUgdGhpcyBkaXNwbGF5IFwiKlwiICwgXHJcbiAgICovXHJcblxyXG4gIFNob3dBc3RlcmlzazogYm9vbGVhblxyXG4gIC8qKiBBYmlsaXR5IHRvIHNldCAgVGV4dEJveCByZXF1aXJlZCAqL1xyXG4gIElzUmVxdWlyZWQ6IGJvb2xlYW5cclxuICAvKiogQWJpbGl0eSB0byBkaXNwbGF5IG9yIGhpZGUgdGhlIGxhYmVsIG9mIFRleHRCb3ggKi9cclxuICBIaWRlTGFiZWw6ICBib29sZWFuXHJcbiAgLyoqIFNldHMgYW4gYXR0cmlidXRlIGRpc2FibGU9XCJkaXNhYmxlZFwiICAqL1xyXG4gIElzRGlzYWJsZWQ6IGJvb2xlYW5cclxuICAvKiogIHRleHQgaW5wdXQgb24gY2hhbmdlICAqLyBcclxuICBUcmltVGV4dE9uQ2hhbmdlOiBib29sZWFuXHJcbiAgLyoqIGFkZCBidXR0b24gdG8gZm9yIGNvcGluZyB0byBjbGlwYm9hcmQgKi9cclxuICBFbmFibGVDb3B5VG9DbGlwYm9hcmQ6IGJvb2xlYW5cclxuICAvKipQcmV2ZW50ICBEZWZ1bGF0IFBhc3N3b3JkIFZhbGlkYXRpb24gdG8gc2V0IEN1c3RvbSBWYWxpZGF0aW9uICovXHJcbiAgUmVtb3ZlRGVmYXVsdFBhc3N3b3JkVmFsaWRhdGlvbjpib29sZWFuXHJcbiAgLyoqICB0byBzZXQgdHlwZSBvZiB2aWV3ICBpZiB0ZXh0Ym94IGlzIFZlcnRpY2FsIG9yIEhvcml6b250YWwgKi9cclxuICBWaWV3VHlwZTogQ29udHJvbExheW91dCA9IG51bGw7XHJcbiAgLyoqIEFsbG93IHRvIFBhc3MgT2JqZWN0IFdpdGggQm9keSBvZiBGdW5jdGlvbiB3aGljaCByZXByZXNlbnQgQ3VzdG9tVmFsaWRhdGlvbiBhbmQgbWFzc2FnZSBmb3IgZXJyb3IgbWFzc2FnZSBcclxuKi9cclxuICBDdXN0b21WYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uW109W11cclxuICAvKiogdG8gc2V0IERpcmVjdGlvbiBvZiB0ZXh0Ym94ICBpZiB0ZXh0Ym94IGlzIEFyYWJpYyBvciBFbmdsaXNoICAqL1xyXG4gIEZvcmNlRGlyZWN0aW9uOiBGb3JjZURpcmVjdGlvbj1udWxsXHJcbiAgLyoqIHRvIHNldCBMYW5ndWFnZSBvZiB0ZXh0Ym94ICBpZiB0ZXh0Ym94IGxhbmd1YWdlIGlzIEFyYWJpYyBvciBFbmdsaXNoICAqL1xyXG4gIExhbmd1YWdlVmFsaWRhdGlvbjogTGFuZ3VhZ2VWYWxpZGF0aW9uPW51bGxcclxuICAvKiogU2V0IFR5cGUgb2YgVGV4dEJveCAoXCJ0ZXh0XCIsXCJwYXNzd29yZFwiLFwiZW1haWxcIixcIm51bWJlclwiKSAqL1xyXG4gIFR5cGU6IElucHV0VHlwZT0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgLyoqIFNldCBMaXN0IG9mIEN1c3RvbSBBdHRyaWJ1dGUgdG8gVGV4dEJveCAgKi9cclxuICBBdHRyaWJ1dGVMaXN0OkF0dHJpYnV0ZVtdXHJcbiAgLyoqIFNldCBNYXNrIFBhdHRlcm4gQXR0cmlidXRlIHRvIFRleHRCb3ggICovXHJcbiAgTWFza1BhdHRlcm46IHN0cmluZ1xyXG4gIC8qaWNvbiBvcHRpb25zKi9cclxuICBJY29uOiBzdHJpbmdcclxuICBJY29uUG9zaXRpb246IEljb25Qb3NpdGlvbiA9IEljb25Qb3NpdGlvbi5sZWZ0XHJcbiAgTm9NYXJnaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBWYWxpZGF0aW9uUnVsZXM6YW55W109W107XHJcbn1cclxuIl19
@@ -5,16 +5,23 @@ export class RepeaterComponent {
5
5
  constructor() {
6
6
  this.templateRefs = [];
7
7
  this.items = [];
8
+ this.originalItems = [];
8
9
  this.repeaterContext = { index: 0, delete: null, elements: null };
9
10
  }
10
11
  ngOnInit() {
11
12
  this.currentTemplate = this.initialTemplate;
12
13
  this.repeaterGroup = new FormGroup({});
13
14
  this.group.addControl(this.options.Name, this.repeaterGroup);
14
- this.group.get(this.options.Name).setValue(this.options.RepeaterValue);
15
- for (let index = 0; index < this.options.MinRequiredItems; index++) {
16
- this.items.push(index);
15
+ if (this.options.RepeaterValue.length > 0) {
16
+ this.originalItems = this.options.RepeaterValue;
17
+ for (let index = 0; index < this.options.RepeaterValue.length; index++) {
18
+ this.items.push(index + 1);
19
+ }
17
20
  }
21
+ else
22
+ for (let index = 0; index < this.options.MinRequiredItems; index++) {
23
+ this.items.push(index);
24
+ }
18
25
  this.repeaterGroup.valueChanges.subscribe((res) => {
19
26
  let result = [];
20
27
  let rowNumber = [];
@@ -78,11 +85,10 @@ export class RepeaterComponent {
78
85
  }
79
86
  }
80
87
  }
81
- let item = this.items[Index];
82
- this.items = this.items.filter((res) => res != item);
88
+ this.items = this.items.filter((res) => res != this.items[Index]);
83
89
  }
84
- AddItem() {
85
- this.items.push(this.items.length + 1);
90
+ addItem() {
91
+ this.items.push(this.items[this.items.length - 1] + 1);
86
92
  }
87
93
  ngAfterViewInit() {
88
94
  let templateRefs = this._templates["_results"].map((item) => item["template"]);
@@ -97,7 +103,7 @@ export class RepeaterComponent {
97
103
  RepeaterComponent.decorators = [
98
104
  { type: Component, args: [{
99
105
  selector: 'BBSF-repeater',
100
- template: "<div *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<div>\r\n <ng-container *ngTemplateOutlet=\"add\">\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" \r\n let-Index=\"itemIndex\" let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\" [controlNumber]=\"control\"\r\n [group]=\"repeaterGroup\"></repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\"> <span [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\"\r\n (click)=\"AddItem()\"><span [innerHTML]=\"options.AddButtonText\"></span></button>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n<!-- <ng-template adHost></ng-template> -->",
106
+ template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\"> <span\r\n [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\"><span\r\n [innerHTML]=\"options.AddButtonText\"></span></button>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n<!-- <ng-template adHost></ng-template> -->\r\n",
101
107
  styles: [""]
102
108
  },] }
103
109
  ];
@@ -109,4 +115,4 @@ RepeaterComponent.propDecorators = {
109
115
  _templates: [{ type: ViewChildren, args: [NgTemplateNameDirective,] }],
110
116
  delete: [{ type: ViewChild, args: ['delete', { static: false },] }]
111
117
  };
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1JlcGVhdGVyL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFRN0YsTUFBTSxPQUFPLGlCQUFpQjtJQVk1QjtRQU5BLGlCQUFZLEdBQTRCLEVBQUUsQ0FBQztRQUMzQyxVQUFLLEdBQWEsRUFBRSxDQUFBO1FBR3BCLG9CQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBRTdDLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3RFLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FB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QUFFLGVBQWU7Z0JBQ3pCLHl4Q0FBd0M7O2FBRXpDOzs7O29CQUVFLEtBQUs7c0JBQ0wsS0FBSzs4QkFDTCxLQUFLO3lCQUNMLFlBQVksU0FBQyx1QkFBdUI7cUJBQ3BDLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlcGVhdGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJPcHRpb25zJztcclxuaW1wb3J0IHsgTmdUZW1wbGF0ZU5hbWVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRGlyZWN0aXZlcy90ZW1wbGF0ZS1uYW1lLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLXJlcGVhdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdGVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgeyBcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFJlcGVhdGVyT3B0aW9ucztcclxuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZHJlbihOZ1RlbXBsYXRlTmFtZURpcmVjdGl2ZSkgcHJpdmF0ZSBfdGVtcGxhdGVzOiBRdWVyeUxpc3Q8TmdUZW1wbGF0ZU5hbWVEaXJlY3RpdmU+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGVtcGxhdGVSZWZzOiBBcnJheTxUZW1wbGF0ZVJlZjxhbnk+PiA9IFtdO1xyXG4gIGl0ZW1zOiBudW1iZXJbXSA9IFtdXHJcbiAgcmVwZWF0ZXJHcm91cDogRm9ybUdyb3VwO1xyXG4gIGN1cnJlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICByZXBlYXRlckNvbnRleHQgPSB7IGluZGV4OiAwLCBkZWxldGU6IG51bGwsIGVsZW1lbnRzOiBudWxsIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50VGVtcGxhdGUgPSB0aGlzLmluaXRpYWxUZW1wbGF0ZTtcclxuICAgIHRoaXMucmVwZWF0ZXJHcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCB0aGlzLnJlcGVhdGVyR3JvdXApO1xyXG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnNldFZhbHVlKHRoaXMub3B0aW9ucy5SZXBlYXRlclZhbHVlKVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlcGVhdGVyR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgbGV0IHJvd051bWJlciA9IFtdO1xyXG4gICAgICBsZXQgYWRkSXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICBba2V5U3BsaXRBcnJbMV1dOiB7IFtrZXlTcGxpdEFyclswXV06IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdLnZhbHVlW2tleV0gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWRkSXRlbXMucHVzaChpdGVtKVxyXG4gICAgICAgICAgaWYgKCFyb3dOdW1iZXIuaW5jbHVkZXMoa2V5U3BsaXRBcnJbMV0pKVxyXG4gICAgICAgICAgICByb3dOdW1iZXIucHVzaChrZXlTcGxpdEFyclsxXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd051bWJlci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCByb3cgPSByb3dOdW1iZXJbaW5kZXhdO1xyXG4gICAgICAgIGxldCBhZGRPYmplY3QgPSB7fVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZEVsZW1lbnRzID0gYWRkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbVtyb3ddKVxyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWx0ZXJlZEVsZW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50c1tpbmRleF07XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJlZEVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbGVtZW50LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICBhZGRPYmplY3Rba2V5XSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGFkZE9iamVjdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZSA9IHJlc3VsdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShJbmRleCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zICYmIHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBsZXQgZGVsZXRlZENvbnRyb2xzOiBhbnlbXSA9IFtdXHJcbiAgICBsZXQgY29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLlJlcGVhdGVyU3RydWN0dXJlLm1hcChlID0+IGUuQ29udHJvbE9wdGlvbnMuTmFtZSlcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scykge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scywga2V5KSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGlmIChrZXlTcGxpdEFyclswXSArIGtleVNwbGl0QXJyWzFdID09IGAke2VsZW1lbnR9JHtJbmRleH1gKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHNba2V5XTtcclxuICAgICAgICAgICAgZGVsZXRlZENvbnRyb2xzLnB1c2goeyBba2V5XTogZWxlbWVudCB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRlbGV0ZWRDb250cm9scy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRlbGV0ZWRDb250cm9sc1tpbmRleF07XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgIHRoaXMucmVwZWF0ZXJHcm91cC5yZW1vdmVDb250cm9sKGtleSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGhpcy5pdGVtc1tJbmRleF07XHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKHJlcykgPT4gcmVzICE9IGl0ZW0pXHJcbiAgfVxyXG5cclxuICBBZGRJdGVtKCkge1xyXG4gICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuaXRlbXMubGVuZ3RoICsgMSlcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGxldCB0ZW1wbGF0ZVJlZnMgPSAodGhpcy5fdGVtcGxhdGVzW1wiX3Jlc3VsdHNcIl0gYXMgYW55W10pLm1hcCgoaXRlbSkgPT4gaXRlbVtcInRlbXBsYXRlXCJdKVxyXG4gICAgdGhpcy50ZW1wbGF0ZVJlZnMgPSB0ZW1wbGF0ZVJlZnNcclxuICAgIHRoaXMucmVwZWF0ZXJDb250ZXh0LmVsZW1lbnRzID0gdGhpcy50ZW1wbGF0ZVJlZnNcclxuICAgIHRoaXMucmVwZWF0ZXJDb250ZXh0LmRlbGV0ZSA9IHRoaXMuZGVsZXRlXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudEluZGV4KGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5yZXBlYXRlckNvbnRleHQuaW5kZXggPSBpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1JlcGVhdGVyL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFRN0YsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QjtRQVBBLGlCQUFZLEdBQTRCLEVBQUUsQ0FBQztRQUMzQyxVQUFLLEdBQWEsRUFBRSxDQUFBO1FBQ3BCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBRzFCLG9CQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBRTdDLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUNoRCxLQUFLLElBQUks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QUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7UUFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUUzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQVM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQXJIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLDYwQ0FBd0M7O2FBRXpDOzs7O29CQUVFLEtBQUs7c0JBQ0wsS0FBSzs4QkFDTCxLQUFLO3lCQUNMLFlBQVksU0FBQyx1QkFBdUI7cUJBQ3BDLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlcGVhdGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJPcHRpb25zJztcclxuaW1wb3J0IHsgTmdUZW1wbGF0ZU5hbWVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRGlyZWN0aXZlcy90ZW1wbGF0ZS1uYW1lLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLXJlcGVhdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdGVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogUmVwZWF0ZXJPcHRpb25zO1xyXG4gIEBJbnB1dCgpIGluaXRpYWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkcmVuKE5nVGVtcGxhdGVOYW1lRGlyZWN0aXZlKSBwcml2YXRlIF90ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxOZ1RlbXBsYXRlTmFtZURpcmVjdGl2ZT47XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRlbGV0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0ZW1wbGF0ZVJlZnM6IEFycmF5PFRlbXBsYXRlUmVmPGFueT4+ID0gW107XHJcbiAgaXRlbXM6IG51bWJlcltdID0gW11cclxuICBvcmlnaW5hbEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIHJlcGVhdGVyR3JvdXA6IEZvcm1Hcm91cDtcclxuICBjdXJyZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcmVwZWF0ZXJDb250ZXh0ID0geyBpbmRleDogMCwgZGVsZXRlOiBudWxsLCBlbGVtZW50czogbnVsbCB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFRlbXBsYXRlID0gdGhpcy5pbml0aWFsVGVtcGxhdGU7XHJcbiAgICB0aGlzLnJlcGVhdGVyR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgdGhpcy5yZXBlYXRlckdyb3VwKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxJdGVtcyA9IHRoaXMub3B0aW9ucy5SZXBlYXRlclZhbHVlO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLlJlcGVhdGVyVmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGluZGV4ICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zOyBpbmRleCsrKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGluZGV4KTtcclxuICAgICAgfVxyXG5cclxuICAgIHRoaXMucmVwZWF0ZXJHcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICBsZXQgcm93TnVtYmVyID0gW107XHJcbiAgICAgIGxldCBhZGRJdGVtcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHMpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scywga2V5KSkge1xyXG4gICAgICAgICAgY29uc3Qga2V5U3BsaXRBcnIgPSBrZXkuc3BsaXQoJy4nKVxyXG4gICAgICAgICAgbGV0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgIFtrZXlTcGxpdEFyclsxXV06IHsgW2tleVNwbGl0QXJyWzBdXTogdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV0udmFsdWVba2V5XSB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhZGRJdGVtcy5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICBpZiAoIXJvd051bWJlci5pbmNsdWRlcyhrZXlTcGxpdEFyclsxXSkpXHJcbiAgICAgICAgICAgIHJvd051bWJlci5wdXNoKGtleVNwbGl0QXJyWzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcm93TnVtYmVyLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd051bWJlcltpbmRleF07XHJcbiAgICAgICAgbGV0IGFkZE9iamVjdCA9IHt9XHJcbiAgICAgICAgbGV0IGZpbHRlcmVkRWxlbWVudHMgPSBhZGRJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtW3Jvd10pXHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpbHRlcmVkRWxlbWVudHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVsZW1lbnQgPSBmaWx0ZXJlZEVsZW1lbnRzW2luZGV4XTtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZpbHRlcmVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZpbHRlcmVkRWxlbWVudCwga2V5KSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaWx0ZXJlZEVsZW1lbnRba2V5XTtcclxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgICAgICAgIGFkZE9iamVjdFtrZXldID0gdmFsdWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnB1c2goYWRkT2JqZWN0KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5SZXBlYXRlclZhbHVlID0gcmVzdWx0O1xyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKEluZGV4KSB7XHJcbiAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPT0gdGhpcy5vcHRpb25zLk1pblJlcXVpcmVkSXRlbXMgJiYgdGhpcy5vcHRpb25zLklzUmVxdWlyZWQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGxldCBkZWxldGVkQ29udHJvbHM6IGFueVtdID0gW11cclxuICAgIGxldCBjb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJTdHJ1Y3R1cmUubWFwKGUgPT4gZS5Db250cm9sT3B0aW9ucy5OYW1lKVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzLCBrZXkpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgICAgY29uc3Qga2V5U3BsaXRBcnIgPSBrZXkuc3BsaXQoJy4nKVxyXG4gICAgICAgICAgaWYgKGtleVNwbGl0QXJyWzBdICsga2V5U3BsaXRBcnJbMV0gPT0gYCR7ZWxlbWVudH0ke0luZGV4fWApIHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9sc1trZXldO1xyXG4gICAgICAgICAgICBkZWxldGVkQ29udHJvbHMucHVzaCh7IFtrZXldOiBlbGVtZW50IH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGVsZXRlZENvbnRyb2xzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gZGVsZXRlZENvbnRyb2xzW2luZGV4XTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZWxlbWVudCkge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWxlbWVudCwga2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5yZXBlYXRlckdyb3VwLnJlbW92ZUNvbnRyb2woa2V5KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChyZXMpID0+IHJlcyAhPSB0aGlzLml0ZW1zW0luZGV4XSlcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oKSB7XHJcbiAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5pdGVtc1t0aGlzLml0ZW1zLmxlbmd0aCAtIDFdICsgMSlcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGxldCB0ZW1wbGF0ZVJlZnMgPSAodGhpcy5fdGVtcGxhdGVzW1wiX3Jlc3VsdHNcIl0gYXMgYW55W10pLm1hcCgoaXRlbSkgPT4gaXRlbVtcInRlbXBsYXRlXCJdKVxyXG4gICAgdGhpcy50ZW1wbGF0ZVJlZnMgPSB0ZW1wbGF0ZVJlZnNcclxuICAgIHRoaXMucmVwZWF0ZXJDb250ZXh0LmVsZW1lbnRzID0gdGhpcy50ZW1wbGF0ZVJlZnNcclxuICAgIHRoaXMucmVwZWF0ZXJDb250ZXh0LmRlbGV0ZSA9IHRoaXMuZGVsZXRlXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Q3VycmVudEluZGV4KGk6IG51bWJlcikge1xyXG4gICAgdGhpcy5yZXBlYXRlckNvbnRleHQuaW5kZXggPSBpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19