@eqproject/eqp-dynamic-module 2.4.3 → 2.4.5

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 (30) hide show
  1. package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +1 -1
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +3 -3
  3. package/esm2020/lib/components/private/dynamic-module-field/dynamic-module-field.component.mjs +1 -1
  4. package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +14 -4
  5. package/esm2020/lib/components/private/field-templates/image-field-template/image-field-template.component.mjs +82 -43
  6. package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +51 -70
  7. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +1 -1
  8. package/esm2020/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.mjs +3 -2
  9. package/esm2020/lib/components/private/tmw-image-drawer/i18n.mjs +63 -0
  10. package/esm2020/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.mjs +403 -0
  11. package/esm2020/lib/eqp-dynamic-module.module.mjs +6 -3
  12. package/esm2020/lib/models/endPointConfiguration.model.mjs +24 -1
  13. package/esm2020/lib/models/fields/imageField.model.mjs +7 -14
  14. package/esm2020/lib/models/fields/imageSelectorField.model.mjs +2 -1
  15. package/esm2020/lib/services/utilityHelper.services.mjs +1 -1
  16. package/fesm2015/eqproject-eqp-dynamic-module.mjs +936 -422
  17. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  18. package/fesm2020/eqproject-eqp-dynamic-module.mjs +776 -270
  19. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.d.ts +6 -1
  21. package/lib/components/private/field-templates/image-field-template/image-field-template.component.d.ts +18 -5
  22. package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +6 -2
  23. package/lib/components/private/tmw-image-drawer/i18n.d.ts +27 -0
  24. package/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.d.ts +70 -0
  25. package/lib/eqp-dynamic-module.module.d.ts +13 -12
  26. package/lib/models/endPointConfiguration.model.d.ts +2 -0
  27. package/lib/models/fields/imageField.model.d.ts +5 -0
  28. package/lib/models/fields/imageSelectorField.model.d.ts +3 -0
  29. package/lib/services/utilityHelper.services.d.ts +2 -1
  30. package/package.json +1 -2
@@ -1,3 +1,4 @@
1
+ import { ImageFolderEnum } from "./fields/imageField.model";
1
2
  export class EndPointConfiguration {
2
3
  constructor(baseUrl = null, userToken = null) {
3
4
  if (baseUrl != null) {
@@ -77,6 +78,23 @@ export class EndPointConfiguration {
77
78
  },
78
79
  };
79
80
  this.Forms = {
81
+ GetAttachmentWithBases64: {
82
+ Token: userToken,
83
+ Url: baseUrl + "/conf/getattachmentwithbases64",
84
+ RequestMethod: RequestMethodEnum.GET,
85
+ Params: [
86
+ {
87
+ ParamName: "AttachmentID",
88
+ ParamValue: 5,
89
+ ParamType: ParamTypeEnum["Query param"],
90
+ },
91
+ {
92
+ ParamName: "Types",
93
+ ParamValue: [ImageFolderEnum.Regular],
94
+ ParamType: ParamTypeEnum["Query param"],
95
+ },
96
+ ],
97
+ },
80
98
  GetByIDEndPoint: {
81
99
  Token: userToken,
82
100
  Url: baseUrl + "/conf/form",
@@ -92,6 +110,11 @@ export class EndPointConfiguration {
92
110
  Url: baseUrl + "/conf/form",
93
111
  RequestMethod: RequestMethodEnum.POST,
94
112
  },
113
+ SaveAttachmentEndPoint: {
114
+ Token: userToken,
115
+ Url: baseUrl + "/conf/saveattachmentfilebase",
116
+ RequestMethod: RequestMethodEnum.POST,
117
+ },
95
118
  };
96
119
  }
97
120
  }
@@ -116,4 +139,4 @@ export var RequestMethodEnum;
116
139
  RequestMethodEnum["PUT"] = "PUT";
117
140
  RequestMethodEnum["DELETE"] = "DELETE";
118
141
  })(RequestMethodEnum || (RequestMethodEnum = {}));
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8scUJBQXFCO0lBaUJoQyxZQUFZLFVBQWtCLElBQUksRUFBRSxZQUFvQixJQUFJO1FBQzFELElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiLG1CQUFtQixFQUFFO29CQUNuQixLQUFLLEVBQUUsU0FBUztvQkFDaEIsR0FBRyxFQUFFLE9BQU8sR0FBRyxZQUFZO29CQUMzQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsR0FBRztvQkFDcEMsTUFBTSxFQUFFO3dCQUNOOzRCQUNFLFNBQVMsRUFBRSxNQUFNOzRCQUNqQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUM7eUJBQ3hDO3FCQUNGO2lCQUNGO2dCQUNELDRCQUE0QixFQUFFO29CQUM1QixLQUFLLEVBQUUsU0FBUztvQkFDaEIsR0FBRyxFQUFFLE9BQU8sR0FBRyxvQkFBb0I7b0JBQ25DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHO29CQUNwQyxNQUFNLEVBQUU7d0JBQ047NEJBQ0UsU0FBUyxFQUFFLE9BQU87NEJBQ2xCLFVBQVUsRUFBRSxJQUFJOzRCQUNoQixTQUFTLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQzt5QkFDeEM7d0JBQ0Q7NEJBQ0UsU0FBUyxFQUFFLFFBQVE7NEJBQ25CLFVBQVUsRUFBRSxJQUFJOzRCQUNoQixTQUFTLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQzt5QkFDeEM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxTQUFTO29CQUNoQixHQUFHLEVBQUUsT0FBTyxHQUFHLGFBQWE7b0JBQzVCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHO2lCQUNyQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEdBQUcsRUFBRSxPQUFPLEdBQUcsVUFBVTtvQkFDekIsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLE1BQU0sRUFBRTt3QkFDTjs0QkFDRSxTQUFTLEVBQUUsV0FBVzs0QkFDdEIsVUFBVSxFQUFFLENBQUM7NEJBQ2IsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUM7eUJBQ3BDO3dCQUNEOzRCQUNFLFNBQVMsRUFBRSxrQkFBa0I7NEJBQzdCLFVBQVUsRUFBRSxJQUFJOzRCQUNoQixTQUFTLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQzt5QkFDeEM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsaUJBQWlCLEVBQUU7b0JBQ2pCLEtBQUssRUFBRSxTQUFTO29CQUNoQixHQUFHLEVBQUUsT0FBTyxHQUFHLGVBQWU7b0JBQzlCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHO2lCQUNyQztnQkFDRCxjQUFjLEVBQUU7b0JBQ2QsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEdBQUcsRUFBRSxPQUFPLEdBQUcsWUFBWTtvQkFDM0IsYUFBYSxFQUFFLGlCQUFpQixDQUFDLE1BQU07aUJBQ3hDO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxLQUFLLEVBQUUsU0FBUztvQkFDaEIsR0FBRyxFQUFFLE9BQU8sR0FBRyxpQkFBaUI7b0JBQ2hDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxNQUFNLEVBQUU7d0JBQ047NEJBQ0UsU0FBUyxFQUFFLFFBQVE7NEJBQ25CLFVBQVUsRUFBQyxDQUFDOzRCQUNaLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDO3lCQUNwQztxQkFDRjtpQkFDRjthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNYLGVBQWUsRUFBRTtvQkFDZixLQUFLLEVBQUUsU0FBUztvQkFDaEIsR0FBRyxFQUFFLE9BQU8sR0FBRyxZQUFZO29CQUMzQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsR0FBRztpQkFDckM7Z0JBQ0QseUJBQXlCLEVBQUU7b0JBQ3pCLEtBQUssRUFBRSxTQUFTO29CQUNoQixHQUFHLEVBQUUsT0FBTyxHQUFHLHlCQUF5QjtvQkFDeEMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLEdBQUc7aUJBQ3JDO2dCQUNELFlBQVksRUFBRTtvQkFDWixLQUFLLEVBQUUsU0FBUztvQkFDaEIsR0FBRyxFQUFFLE9BQU8sR0FBRyxZQUFZO29CQUMzQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7YUFDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtDQUt4QjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFBL0I7UUFFRSxlQUFVLEdBQVEsSUFBSSxDQUFDO0lBRXpCLENBQUM7Q0FBQTtBQUVELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsK0RBQWlCLENBQUE7SUFDakIseURBQWMsQ0FBQTtJQUNkLHVEQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFLWDtBQUxELFdBQVksaUJBQWlCO0lBQzNCLGdDQUFXLENBQUE7SUFDWCxrQ0FBYSxDQUFBO0lBQ2IsZ0NBQVcsQ0FBQTtJQUNYLHNDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSzVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEVuZFBvaW50Q29uZmlndXJhdGlvbiB7XHJcbiAgUmVjb3Jkczoge1xyXG4gICAgR2V0QnlGb3JtSURFbmRQb2ludD86IEVuZFBvaW50RGF0YTtcclxuICAgIEdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBHZXRCeUlERW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBTYXZlRW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBEdXBsaWNhdGVFbmRQb2ludD86IEVuZFBvaW50RGF0YTtcclxuICAgIERlbGV0ZUVuZFBvaW50PzogRW5kUG9pbnREYXRhO1xyXG4gICAgUmVwYWlyRW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBBcHBseUZpbHRlcj86RW5kUG9pbnREYXRhO1xyXG4gIH07XHJcbiAgRm9ybXM6IHtcclxuICAgIEdldEJ5SURFbmRQb2ludDogRW5kUG9pbnREYXRhO1xyXG4gICAgR2V0QnlJREFuZFZlcnNpb25FbmRQb2ludDogRW5kUG9pbnREYXRhO1xyXG4gICAgU2F2ZUVuZFBvaW50OiBFbmRQb2ludERhdGE7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoYmFzZVVybDogc3RyaW5nID0gbnVsbCwgdXNlclRva2VuOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBpZiAoYmFzZVVybCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuUmVjb3JkcyA9IHtcclxuICAgICAgICBHZXRCeUZvcm1JREVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvdjEvZ2V0YWxsXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAgICAgICBQYXJhbXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJ0ZXN0XCIsXHJcbiAgICAgICAgICAgICAgUGFyYW1WYWx1ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBHZXRBbGxCeUVudEFuZFVzZXJJREVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvdjEvR2V0QWxsQnlVc2VySURcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgICAgICAgIFBhcmFtczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgUGFyYW1OYW1lOiBcIkVudElEXCIsXHJcbiAgICAgICAgICAgICAgUGFyYW1WYWx1ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJVc2VySURcIixcclxuICAgICAgICAgICAgICBQYXJhbVZhbHVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIEdldEJ5SURFbmRQb2ludDoge1xyXG4gICAgICAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgICAgICAgIFVybDogYmFzZVVybCArIFwiL3YxL2dldEJ5SURcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIFNhdmVFbmRQb2ludDoge1xyXG4gICAgICAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgICAgICAgIFVybDogYmFzZVVybCArIFwiL3YxL3NhdmVcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLlBPU1QsXHJcbiAgICAgICAgICBQYXJhbXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJDb21wYW55SURcIixcclxuICAgICAgICAgICAgICBQYXJhbVZhbHVlOiAzLFxyXG4gICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwic2VuZE5vdGlmaWNhdGlvblwiLFxyXG4gICAgICAgICAgICAgIFBhcmFtVmFsdWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgRHVwbGljYXRlRW5kUG9pbnQ6IHtcclxuICAgICAgICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAgICAgICBVcmw6IGJhc2VVcmwgKyBcIi92MS9kdXBsaWNhdGVcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIERlbGV0ZUVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvdjEvZGVsZXRlXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5ERUxFVEUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBBcHBseUZpbHRlcjoge1xyXG4gICAgICAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgICAgICAgIFVybDogYmFzZVVybCArIFwiL3YxL2FwcGx5ZmlsdGVyXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5QT1NULFxyXG4gICAgICAgICAgUGFyYW1zOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwiZmlsdGVyXCIsXHJcbiAgICAgICAgICAgICAgUGFyYW1WYWx1ZTozLFxyXG4gICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuRm9ybXMgPSB7XHJcbiAgICAgICAgR2V0QnlJREVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvY29uZi9mb3JtXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBHZXRCeUlEQW5kVmVyc2lvbkVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvY29uZi9nZXRieWlkYWRudmVyc2lvblwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgU2F2ZUVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvY29uZi9mb3JtXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5QT1NULFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW5kUG9pbnREYXRhIHtcclxuICBVcmw6IHN0cmluZztcclxuICBUb2tlbj86IHN0cmluZztcclxuICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bTtcclxuICBQYXJhbXM/OiBFbmRQb2ludERhdGFQYXJhbXNbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVuZFBvaW50RGF0YVBhcmFtcyB7XHJcbiAgUGFyYW1OYW1lOiBzdHJpbmc7XHJcbiAgUGFyYW1WYWx1ZTogYW55ID0gbnVsbDtcclxuICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW07XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhcmFtVHlwZUVudW0ge1xyXG4gIFwiUXVlcnkgcGFyYW1cIiA9IDEsXHJcbiAgXCJJbiByb3V0ZVwiID0gMixcclxuICBcIkluIEJvZHlcIiA9IDMsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFJlcXVlc3RNZXRob2RFbnVtIHtcclxuICBHRVQgPSBcIkdFVFwiLFxyXG4gIFBPU1QgPSBcIlBPU1RcIixcclxuICBQVVQgPSBcIlBVVFwiLFxyXG4gIERFTEVURSA9IFwiREVMRVRFXCIsXHJcbn1cclxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsTUFBTSxPQUFPLHFCQUFxQjtJQW1CaEMsWUFBWSxVQUFrQixJQUFJLEVBQUUsWUFBb0IsSUFBSTtRQUMxRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYixtQkFBbUIsRUFBRTtvQkFDbkIsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEdBQUcsRUFBRSxPQUFPLEdBQUcsWUFBWTtvQkFDM0IsYUFBYSxFQUFFLGlCQUFpQixDQUFDLEdBQUc7b0JBQ3BDLE1BQU0sRUFBRTt3QkFDTjs0QkFDRSxTQUFTLEVBQUUsTUFBTTs0QkFDakIsVUFBVSxFQUFFLElBQUk7NEJBQ2hCLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDO3lCQUN4QztxQkFDRjtpQkFDRjtnQkFDRCw0QkFBNEIsRUFBRTtvQkFDNUIsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEdBQUcsRUFBRSxPQUFPLEdBQUcsb0JBQW9CO29CQUNuQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsR0FBRztvQkFDcEMsTUFBTSxFQUFFO3dCQUNOOzRCQUNFLFNBQVMsRUFBRSxPQUFPOzRCQUNsQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUM7eUJBQ3hDO3dCQUNEOzRCQUNFLFNBQVMsRUFBRSxRQUFROzRCQUNuQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUM7eUJBQ3hDO3FCQUNG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LGVBQVUsR0FBUSxJQUFJLENBQUM7SUFFekIsQ0FBQztDQUFBO0FBRUQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2QiwrREFBaUIsQ0FBQTtJQUNqQix5REFBYyxDQUFBO0lBQ2QsdURBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0IsZ0NBQVcsQ0FBQTtJQUNYLGtDQUFhLENBQUE7SUFDYixnQ0FBVyxDQUFBO0lBQ1gsc0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbWFnZUZvbGRlckVudW0gfSBmcm9tIFwiLi9maWVsZHMvaW1hZ2VGaWVsZC5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVuZFBvaW50Q29uZmlndXJhdGlvbiB7XHJcbiAgUmVjb3Jkczoge1xyXG4gICAgR2V0QnlGb3JtSURFbmRQb2ludD86IEVuZFBvaW50RGF0YTtcclxuICAgIEdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBHZXRCeUlERW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBTYXZlRW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBEdXBsaWNhdGVFbmRQb2ludD86IEVuZFBvaW50RGF0YTtcclxuICAgIERlbGV0ZUVuZFBvaW50PzogRW5kUG9pbnREYXRhO1xyXG4gICAgUmVwYWlyRW5kUG9pbnQ/OiBFbmRQb2ludERhdGE7XHJcbiAgICBBcHBseUZpbHRlcj86RW5kUG9pbnREYXRhO1xyXG4gIH07XHJcbiAgRm9ybXM6IHtcclxuICAgIEdldEF0dGFjaG1lbnRXaXRoQmFzZXM2NDogRW5kUG9pbnREYXRhO1xyXG4gICAgR2V0QnlJREVuZFBvaW50OiBFbmRQb2ludERhdGE7XHJcbiAgICBHZXRCeUlEQW5kVmVyc2lvbkVuZFBvaW50OiBFbmRQb2ludERhdGE7XHJcbiAgICBTYXZlRW5kUG9pbnQ6IEVuZFBvaW50RGF0YTtcclxuICAgIFNhdmVBdHRhY2htZW50RW5kUG9pbnQ6IEVuZFBvaW50RGF0YTtcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihiYXNlVXJsOiBzdHJpbmcgPSBudWxsLCB1c2VyVG9rZW46IHN0cmluZyA9IG51bGwpIHtcclxuICAgIGlmIChiYXNlVXJsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5SZWNvcmRzID0ge1xyXG4gICAgICAgIEdldEJ5Rm9ybUlERW5kUG9pbnQ6IHtcclxuICAgICAgICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAgICAgICBVcmw6IGJhc2VVcmwgKyBcIi92MS9nZXRhbGxcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgICAgICAgIFBhcmFtczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgUGFyYW1OYW1lOiBcInRlc3RcIixcclxuICAgICAgICAgICAgICBQYXJhbVZhbHVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIEdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQ6IHtcclxuICAgICAgICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAgICAgICBVcmw6IGJhc2VVcmwgKyBcIi92MS9HZXRBbGxCeVVzZXJJRFwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgICAgICAgUGFyYW1zOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwiRW50SURcIixcclxuICAgICAgICAgICAgICBQYXJhbVZhbHVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgUGFyYW1OYW1lOiBcIlVzZXJJRFwiLFxyXG4gICAgICAgICAgICAgIFBhcmFtVmFsdWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgR2V0QnlJREVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvdjEvZ2V0QnlJRFwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgU2F2ZUVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvdjEvc2F2ZVwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uUE9TVCxcclxuICAgICAgICAgIFBhcmFtczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgUGFyYW1OYW1lOiBcIkNvbXBhbnlJRFwiLFxyXG4gICAgICAgICAgICAgIFBhcmFtVmFsdWU6IDMsXHJcbiAgICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJzZW5kTm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgICAgICAgUGFyYW1WYWx1ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBEdXBsaWNhdGVFbmRQb2ludDoge1xyXG4gICAgICAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgICAgICAgIFVybDogYmFzZVVybCArIFwiL3YxL2R1cGxpY2F0ZVwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgRGVsZXRlRW5kUG9pbnQ6IHtcclxuICAgICAgICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAgICAgICBVcmw6IGJhc2VVcmwgKyBcIi92MS9kZWxldGVcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkRFTEVURSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIEFwcGx5RmlsdGVyOiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvdjEvYXBwbHlmaWx0ZXJcIixcclxuICAgICAgICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLlBPU1QsXHJcbiAgICAgICAgICBQYXJhbXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJmaWx0ZXJcIixcclxuICAgICAgICAgICAgICBQYXJhbVZhbHVlOjMsXHJcbiAgICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5Gb3JtcyA9IHtcclxuICAgICAgICBHZXRBdHRhY2htZW50V2l0aEJhc2VzNjQ6IHtcclxuICAgICAgICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAgICAgICBVcmw6IGJhc2VVcmwgKyBcIi9jb25mL2dldGF0dGFjaG1lbnR3aXRoYmFzZXM2NFwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgICAgICAgUGFyYW1zOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBQYXJhbU5hbWU6IFwiQXR0YWNobWVudElEXCIsXHJcbiAgICAgICAgICAgICAgUGFyYW1WYWx1ZTogNSxcclxuICAgICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFBhcmFtTmFtZTogXCJUeXBlc1wiLFxyXG4gICAgICAgICAgICAgIFBhcmFtVmFsdWU6IFtJbWFnZUZvbGRlckVudW0uUmVndWxhcl0sXHJcbiAgICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgR2V0QnlJREVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvY29uZi9mb3JtXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBHZXRCeUlEQW5kVmVyc2lvbkVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvY29uZi9nZXRieWlkYWRudmVyc2lvblwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgU2F2ZUVuZFBvaW50OiB7XHJcbiAgICAgICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgICAgICAgVXJsOiBiYXNlVXJsICsgXCIvY29uZi9mb3JtXCIsXHJcbiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5QT1NULFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgU2F2ZUF0dGFjaG1lbnRFbmRQb2ludDoge1xyXG4gICAgICAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgICAgICAgIFVybDogYmFzZVVybCArIFwiL2NvbmYvc2F2ZWF0dGFjaG1lbnRmaWxlYmFzZVwiLFxyXG4gICAgICAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uUE9TVCxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVuZFBvaW50RGF0YSB7XHJcbiAgVXJsOiBzdHJpbmc7XHJcbiAgVG9rZW4/OiBzdHJpbmc7XHJcbiAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW07XHJcbiAgUGFyYW1zPzogRW5kUG9pbnREYXRhUGFyYW1zW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbmRQb2ludERhdGFQYXJhbXMge1xyXG4gIFBhcmFtTmFtZTogc3RyaW5nO1xyXG4gIFBhcmFtVmFsdWU6IGFueSA9IG51bGw7XHJcbiAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBQYXJhbVR5cGVFbnVtIHtcclxuICBcIlF1ZXJ5IHBhcmFtXCIgPSAxLFxyXG4gIFwiSW4gcm91dGVcIiA9IDIsXHJcbiAgXCJJbiBCb2R5XCIgPSAzLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBSZXF1ZXN0TWV0aG9kRW51bSB7XHJcbiAgR0VUID0gXCJHRVRcIixcclxuICBQT1NUID0gXCJQT1NUXCIsXHJcbiAgUFVUID0gXCJQVVRcIixcclxuICBERUxFVEUgPSBcIkRFTEVURVwiLFxyXG59XHJcbiJdfQ==
@@ -4,19 +4,12 @@ export class ImageField extends BaseField {
4
4
  super(...arguments);
5
5
  this.ResizedImagesHeightPx = 128;
6
6
  this.EnableDrawing = false;
7
- /**Se true il medico può disegnare sull'immagine */
8
- //EnableDrawing: boolean;
9
- /**Se true l'immagine non è fissa, ma viene caricata come un allegato; */
10
- //ImageIsContextualAttachment: boolean;
11
- /**Contiene l'allegato caricato nel campo (se ImageIsContextualAttachment == true) */
12
- //ContextualAttachment: IAttachmentDTO;
13
- /**Proprietà per recuperare l'allegato caricato come array per eqp-attachments (se ImageIsContextualAttachment == true) */
14
- //get _contextualAttachments() {
15
- // return this.ContextualAttachment ? [this.ContextualAttachment] : [];
16
- //}
17
- /**Nome dell'immagine caricata (se ImageIsContextualAttachment == true) */
18
- //ImgName: string;
19
- //AttachDefinition: AttachmentField;
20
7
  }
21
8
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VGaWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL21vZGVscy9maWVsZHMvaW1hZ2VGaWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJL0MsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBQXpDOztRQUlJLDBCQUFxQixHQUFXLEdBQUcsQ0FBQztRQUNwQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUcvQixtREFBbUQ7UUFDbkQseUJBQXlCO1FBRXpCLHlFQUF5RTtRQUN6RSx1Q0FBdUM7UUFDdkMscUZBQXFGO1FBQ3JGLHVDQUF1QztRQUN2QywwSEFBMEg7UUFDMUgsZ0NBQWdDO1FBQ2hDLDBFQUEwRTtRQUMxRSxHQUFHO1FBQ0gsMEVBQTBFO1FBQzFFLGtCQUFrQjtRQUNsQixvQ0FBb0M7SUFHeEMsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUF0dGFjaG1lbnREVE8gfSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtYXR0YWNobWVudHNcIjtcclxuaW1wb3J0IHsgQmFzZUZpZWxkIH0gZnJvbSBcIi4uL2Jhc2VGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RmllbGQgfSBmcm9tIFwiLi9hdHRhY2htZW50RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluQXR0YWNobWVudCB9IGZyb20gXCIuL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEltYWdlRmllbGQgZXh0ZW5kcyBCYXNlRmllbGQge1xyXG5cclxuICAgIER5bkF0dGFjaG1lbnQ6IER5bkF0dGFjaG1lbnQ7XHJcbiAgICBEeW5BdHRhY2htZW50SUQ6IG51bWJlcjtcclxuICAgIFJlc2l6ZWRJbWFnZXNIZWlnaHRQeDogbnVtYmVyID0gMTI4O1xyXG4gICAgRW5hYmxlRHJhd2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgXHJcblxyXG4gICAgLyoqU2UgdHJ1ZSBpbCBtZWRpY28gcHXDsiBkaXNlZ25hcmUgc3VsbCdpbW1hZ2luZSAqL1xyXG4gICAgLy9FbmFibGVEcmF3aW5nOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlNlIHRydWUgbCdpbW1hZ2luZSBub24gw6ggZmlzc2EsIG1hIHZpZW5lIGNhcmljYXRhIGNvbWUgdW4gYWxsZWdhdG87ICovXHJcbiAgICAvL0ltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudDogYm9vbGVhbjtcclxuICAgIC8qKkNvbnRpZW5lIGwnYWxsZWdhdG8gY2FyaWNhdG8gbmVsIGNhbXBvIChzZSBJbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnQgPT0gdHJ1ZSkgKi9cclxuICAgIC8vQ29udGV4dHVhbEF0dGFjaG1lbnQ6IElBdHRhY2htZW50RFRPO1xyXG4gICAgLyoqUHJvcHJpZXTDoCBwZXIgcmVjdXBlcmFyZSBsJ2FsbGVnYXRvIGNhcmljYXRvIGNvbWUgYXJyYXkgcGVyIGVxcC1hdHRhY2htZW50cyAoc2UgSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50ID09IHRydWUpICovXHJcbiAgICAvL2dldCBfY29udGV4dHVhbEF0dGFjaG1lbnRzKCkge1xyXG4gICAgLy8gICAgcmV0dXJuIHRoaXMuQ29udGV4dHVhbEF0dGFjaG1lbnQgPyBbdGhpcy5Db250ZXh0dWFsQXR0YWNobWVudF0gOiBbXTtcclxuICAgIC8vfVxyXG4gICAgLyoqTm9tZSBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhIChzZSBJbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnQgPT0gdHJ1ZSkgKi9cclxuICAgIC8vSW1nTmFtZTogc3RyaW5nO1xyXG4gICAgLy9BdHRhY2hEZWZpbml0aW9uOiBBdHRhY2htZW50RmllbGQ7XHJcblxyXG5cclxufSJdfQ==
9
+ export var ImageFolderEnum;
10
+ (function (ImageFolderEnum) {
11
+ ImageFolderEnum[ImageFolderEnum["Regular"] = 1] = "Regular";
12
+ ImageFolderEnum[ImageFolderEnum["Resized"] = 2] = "Resized";
13
+ ImageFolderEnum[ImageFolderEnum["Thumbnail"] = 3] = "Thumbnail";
14
+ })(ImageFolderEnum || (ImageFolderEnum = {}));
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VGaWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL21vZGVscy9maWVsZHMvaW1hZ2VGaWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJL0MsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBQXpDOztRQUlJLDBCQUFxQixHQUFXLEdBQUcsQ0FBQztRQUNwQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztJQUVuQyxDQUFDO0NBQUE7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3ZCLDJEQUFhLENBQUE7SUFDYiwyREFBYSxDQUFBO0lBQ2IsK0RBQWUsQ0FBQTtBQUVuQixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQXR0YWNobWVudERUTyB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQgfSBmcm9tIFwiLi4vYmFzZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWVsZCB9IGZyb20gXCIuL2F0dGFjaG1lbnRGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEeW5BdHRhY2htZW50IH0gZnJvbSBcIi4vaW1hZ2VTZWxlY3RvckZpZWxkLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgSW1hZ2VGaWVsZCBleHRlbmRzIEJhc2VGaWVsZCB7XHJcblxyXG4gICAgRHluQXR0YWNobWVudDogRHluQXR0YWNobWVudDtcclxuICAgIER5bkF0dGFjaG1lbnRJRDogbnVtYmVyO1xyXG4gICAgUmVzaXplZEltYWdlc0hlaWdodFB4OiBudW1iZXIgPSAxMjg7XHJcbiAgICBFbmFibGVEcmF3aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG59XHJcblxyXG5leHBvcnQgZW51bSBJbWFnZUZvbGRlckVudW0ge1xyXG4gICAgXCJSZWd1bGFyXCIgPSAxLFxyXG4gICAgXCJSZXNpemVkXCIgPSAyLFxyXG4gICAgXCJUaHVtYm5haWxcIiA9IDMsXHJcbiAgIFxyXG59Il19
@@ -8,6 +8,7 @@ export class ImageSelectorField extends BaseField {
8
8
  export class DynAttachment {
9
9
  constructor() {
10
10
  this.objectToSelect = null;
11
+ this.FileBases64 = {};
11
12
  }
12
13
  }
13
14
  export class DynAttachmentSelectObject {
@@ -18,4 +19,4 @@ export class attachmentTypeEnum {
18
19
  this.LIST = 2;
19
20
  }
20
21
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VTZWxlY3RvckZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvbW9kZWxzL2ZpZWxkcy9pbWFnZVNlbGVjdG9yRmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTO0lBQWpEOztRQUtJLDBCQUFxQixHQUFXLEdBQUcsQ0FBQztJQUd4QyxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQW9DSSxtQkFBYyxHQUErQixJQUFJLENBQUM7SUFFdEQsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtDQUlyQztBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFBL0I7UUFDSSxXQUFNLEdBQUMsQ0FBQyxDQUFBO1FBQ1IsU0FBSSxHQUFDLENBQUMsQ0FBQTtJQUNWLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnRUeXBlLCBJQXR0YWNobWVudERUTyB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQgfSBmcm9tIFwiLi4vYmFzZUZpZWxkLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgSW1hZ2VTZWxlY3RvckZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcclxuXHJcbiAgICBWYWx1ZVBhaXJzOiB7IFtrZXk6IHN0cmluZ106IGFueX07XHJcbiAgICBEeW5BdHRhY2htZW50czogQXJyYXk8RHluQXR0YWNobWVudD47XHJcbiAgICBEeW5BdHRhY2htZW50c0lEczogQXJyYXk8bnVtYmVyPjtcclxuICAgIFJlc2l6ZWRJbWFnZXNIZWlnaHRQeDogbnVtYmVyID0gMTI4O1xyXG4gICAgSXNNdWx0aUNob2ljaGU6IGJvb2xlYW47XHJcbiAgICBBdHRhY2htZW50TGlzdDogQXJyYXk8RHluQXR0YWNobWVudD5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIER5bkF0dGFjaG1lbnQgaW1wbGVtZW50cyBJQXR0YWNobWVudERUTyB7XHJcblxyXG4gICAgSUQ6IG51bWJlciB8IHN0cmluZztcclxuICAgIEZpbGVOYW1lPzogc3RyaW5nO1xyXG4gICAgRmlsZUNvbnRlbnRUeXBlPzogc3RyaW5nO1xyXG4gICAgRmlsZUV4dGVuc2lvbj86IHN0cmluZztcclxuICAgIEZpbGVQYXRoPzogc3RyaW5nO1xyXG4gICAgQXR0YWNobWVudFR5cGU/OiBBdHRhY2htZW50VHlwZTtcclxuICAgIEZpbGVEYXRhQmFzZTY0Pzogc3RyaW5nO1xyXG4gICAgSXNJbWFnZT86IGJvb2xlYW47XHJcbiAgICBGaWxlVGh1bWJuYWlsQmFzZTY0Pzogc3RyaW5nO1xyXG4gICAgVHJ1c3RlZFVybD86IGFueTsgICAgXHJcbiAgICBcclxuICAgIFBhdGg6IHN0cmluZzsgXHJcbiAgICBUaHVtYm1haWxQYXRoOiBzdHJpbmc7IFxyXG4gICAgVGl0bGU6IHN0cmluZzsgXHJcbiAgICBDcmVhdGlvbkRhdGU6IERhdGU7XHJcblxyXG4gICAgLy8vIDxzdW1tYXJ5PlxyXG4gICAgLy8vIE5vbWUgZGVsbCdhcHBsaWNhemlvbmUgY2hlIHNkdGEgaW52aWFuZG8gaWwgZmllbCBpbW1hZ2luZSBkYSBhcmNoaXZpYXJlIC0gdmllbmUgdXRpbGl6emF0byBwZXIgY29pc3RydWlyZSB1bmEgc3RydXl0dXVyYSBnZXJhcmNoaWNhIHBlciBsJ2FyY2hpdmlhemlvbmUgZGVpIGZpbGVzXHJcbiAgICAvLy8gRXNlbXBpbyBBdHRhY2htYW50cy9UTUVELzIgICBkb3ZlIDIgw6ggbCdEIGRlbGxhIHN0cnV0dHVyYSBjaGUgc3RhIGludmlhbmRvIChPcmdhSUQpIC0gcXVlc3RhIHByb3ByaW9ldMOgIG5vaW4gdmllbmUgc2FsdmF0YSBuZWwgREJcclxuICAgIC8vLyA8L3N1bW1hcnk+XHJcbiAgICBQcm9qZWN0TmFtZTogc3RyaW5nOyBcclxuXHJcbiAgICBPcmdhSUQ6IHN0cmluZztcclxuICAgIEZvcm1JRDogc3RyaW5nO1xyXG4gICAgRmllbGRJRDogc3RyaW5nO1xyXG4gICAgQW5zd2VySUQ6IHN0cmluZztcclxuICAgXHJcbiAgICBJbWFnZVdpZHRoUHg6IG51bWJlcjtcclxuICAgIEltYWdlSGVpZ2h0UHg6IG51bWJlcjtcclxuICAgIFJlc2l6ZWRJbWFnZUhlaWdodFB4OiBudW1iZXI7XHJcblxyXG4gICAgQnV0dG9uVmFsdWU6IHN0cmluZztcclxuICAgIEJ1dHRvbktleTogc3RyaW5nO1xyXG4gICAgXHJcbiAgICBvYmplY3RUb1NlbGVjdD86IER5bkF0dGFjaG1lbnRTZWxlY3RPYmplY3QgPSBudWxsO1xyXG4gICAgb3JpZ2luYWxJbmRleD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIER5bkF0dGFjaG1lbnRTZWxlY3RPYmplY3Qge1xyXG4gICAgSUQ6IG51bWJlciB8IHN0cmluZztcclxuICAgIEJ1dHRvblZhbHVlOiBzdHJpbmc7XHJcbiAgICBCdXR0b25LZXk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIGF0dGFjaG1lbnRUeXBlRW51bXtcclxuICAgIFNJTkdMRT0xXHJcbiAgICBMSVNUPTJcclxufSJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VTZWxlY3RvckZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvbW9kZWxzL2ZpZWxkcy9pbWFnZVNlbGVjdG9yRmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTO0lBQWpEOztRQUtJLDBCQUFxQixHQUFXLEdBQUcsQ0FBQztJQUd4QyxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQW9DSSxtQkFBYyxHQUErQixJQUFJLENBQUM7UUFHbEQsZ0JBQVcsR0FBZ0MsRUFBRSxDQUFDO0lBRWxELENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyx5QkFBeUI7Q0FJckM7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBQS9CO1FBQ0ksV0FBTSxHQUFDLENBQUMsQ0FBQTtRQUNSLFNBQUksR0FBQyxDQUFDLENBQUE7SUFDVixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRhY2htZW50VHlwZSwgSUF0dGFjaG1lbnREVE8gfSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtYXR0YWNobWVudHNcIjtcclxuaW1wb3J0IHsgQmFzZUZpZWxkIH0gZnJvbSBcIi4uL2Jhc2VGaWVsZC5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEltYWdlU2VsZWN0b3JGaWVsZCBleHRlbmRzIEJhc2VGaWVsZCB7XHJcblxyXG4gICAgVmFsdWVQYWlyczogeyBba2V5OiBzdHJpbmddOiBhbnl9O1xyXG4gICAgRHluQXR0YWNobWVudHM6IEFycmF5PER5bkF0dGFjaG1lbnQ+O1xyXG4gICAgRHluQXR0YWNobWVudHNJRHM6IEFycmF5PG51bWJlcj47XHJcbiAgICBSZXNpemVkSW1hZ2VzSGVpZ2h0UHg6IG51bWJlciA9IDEyODtcclxuICAgIElzTXVsdGlDaG9pY2hlOiBib29sZWFuO1xyXG4gICAgQXR0YWNobWVudExpc3Q6IEFycmF5PER5bkF0dGFjaG1lbnQ+XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEeW5BdHRhY2htZW50IGltcGxlbWVudHMgSUF0dGFjaG1lbnREVE8ge1xyXG5cclxuICAgIElEOiBudW1iZXIgfCBzdHJpbmc7XHJcbiAgICBGaWxlTmFtZT86IHN0cmluZztcclxuICAgIEZpbGVDb250ZW50VHlwZT86IHN0cmluZztcclxuICAgIEZpbGVFeHRlbnNpb24/OiBzdHJpbmc7XHJcbiAgICBGaWxlUGF0aD86IHN0cmluZztcclxuICAgIEF0dGFjaG1lbnRUeXBlPzogQXR0YWNobWVudFR5cGU7XHJcbiAgICBGaWxlRGF0YUJhc2U2ND86IHN0cmluZztcclxuICAgIElzSW1hZ2U/OiBib29sZWFuO1xyXG4gICAgRmlsZVRodW1ibmFpbEJhc2U2ND86IHN0cmluZztcclxuICAgIFRydXN0ZWRVcmw/OiBhbnk7ICAgIFxyXG4gICAgXHJcbiAgICBQYXRoOiBzdHJpbmc7IFxyXG4gICAgVGh1bWJtYWlsUGF0aDogc3RyaW5nOyBcclxuICAgIFRpdGxlOiBzdHJpbmc7IFxyXG4gICAgQ3JlYXRpb25EYXRlOiBEYXRlO1xyXG5cclxuICAgIC8vLyA8c3VtbWFyeT5cclxuICAgIC8vLyBOb21lIGRlbGwnYXBwbGljYXppb25lIGNoZSBzZHRhIGludmlhbmRvIGlsIGZpZWwgaW1tYWdpbmUgZGEgYXJjaGl2aWFyZSAtIHZpZW5lIHV0aWxpenphdG8gcGVyIGNvaXN0cnVpcmUgdW5hIHN0cnV5dHV1cmEgZ2VyYXJjaGljYSBwZXIgbCdhcmNoaXZpYXppb25lIGRlaSBmaWxlc1xyXG4gICAgLy8vIEVzZW1waW8gQXR0YWNobWFudHMvVE1FRC8yICAgZG92ZSAyIMOoIGwnRCBkZWxsYSBzdHJ1dHR1cmEgY2hlIHN0YSBpbnZpYW5kbyAoT3JnYUlEKSAtIHF1ZXN0YSBwcm9wcmlvZXTDoCBub2luIHZpZW5lIHNhbHZhdGEgbmVsIERCXHJcbiAgICAvLy8gPC9zdW1tYXJ5PlxyXG4gICAgUHJvamVjdE5hbWU6IHN0cmluZzsgXHJcblxyXG4gICAgT3JnYUlEOiBzdHJpbmc7XHJcbiAgICBGb3JtSUQ6IHN0cmluZztcclxuICAgIEZpZWxkSUQ6IHN0cmluZztcclxuICAgIEFuc3dlcklEOiBzdHJpbmc7XHJcbiAgIFxyXG4gICAgSW1hZ2VXaWR0aFB4OiBudW1iZXI7XHJcbiAgICBJbWFnZUhlaWdodFB4OiBudW1iZXI7XHJcbiAgICBSZXNpemVkSW1hZ2VIZWlnaHRQeDogbnVtYmVyO1xyXG5cclxuICAgIEJ1dHRvblZhbHVlOiBzdHJpbmc7XHJcbiAgICBCdXR0b25LZXk6IHN0cmluZztcclxuICAgIFxyXG4gICAgb2JqZWN0VG9TZWxlY3Q/OiBEeW5BdHRhY2htZW50U2VsZWN0T2JqZWN0ID0gbnVsbDtcclxuICAgIG9yaWdpbmFsSW5kZXg/OiBudW1iZXI7XHJcblxyXG4gICAgRmlsZUJhc2VzNjQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZzsgfSA9IHt9O1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIER5bkF0dGFjaG1lbnRTZWxlY3RPYmplY3Qge1xyXG4gICAgSUQ6IG51bWJlciB8IHN0cmluZztcclxuICAgIEJ1dHRvblZhbHVlOiBzdHJpbmc7XHJcbiAgICBCdXR0b25LZXk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIGF0dGFjaG1lbnRUeXBlRW51bXtcclxuICAgIFNJTkdMRT0xXHJcbiAgICBMSVNUPTJcclxufSJdfQ==
@@ -568,4 +568,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
568
568
  providedIn: "root",
569
569
  }]
570
570
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.HttpClient }, { type: i3.SpinnerService }]; } });
571
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eUhlbHBlci5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsa0JBQWtCLEVBR2xCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSx1Q0FBdUMsQ0FBQztBQUsvQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxRQUFRLEVBQ1IsUUFBUSxHQUNULE1BQU0sa0NBQWtDLENBQUM7QUFHMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQVFwRixNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFFBQVEsQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUNsQyxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDaEIsSUFBRyxJQUFJLEVBQUM7Z0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7YUFDM0I7aUJBQUk7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNyQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQ1UsV0FBK0IsRUFDL0IsSUFBZ0IsRUFDaEIsY0FBOEI7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Q0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzNDLElBQUksYUFBYSxFQUFFO2dCQUNqQixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEI7WUFDRCw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLDhEQUE4RDtRQUNoRSxDQUFDLENBQ0YsQ0FBQztJQUVOLENBQUM7O0FBeG9CYSw0QkFBTyxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7a0hBRHBDLG9CQUFvQjtzSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VGaWVsZCxcclxuICBDb2xTcGFuU2l6ZXNFbnVtLFxyXG4gIEZpZWxkSW52aXNpYmlsaXR5RW51bSxcclxuICBGaWVsZFR5cGVFbnVtLFxyXG59IGZyb20gXCIuLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnRleHQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBFbmRQb2ludENvbmZpZ3VyYXRpb24sXHJcbiAgRW5kUG9pbnREYXRhLFxyXG4gIEVuZFBvaW50RGF0YVBhcmFtcyxcclxuICBQYXJhbVR5cGVFbnVtLFxyXG4gIFJlcXVlc3RNZXRob2RFbnVtLFxyXG59IGZyb20gXCIuLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWVsZCB9IGZyb20gXCIuLi9tb2RlbHMvZmllbGRzL2F0dGFjaG1lbnRGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbWFnZUZpZWxkIH0gZnJvbSBcIi4uL21vZGVscy9maWVsZHMvaW1hZ2VGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBMaXN0VmFsdWVGaWVsZCB9IGZyb20gXCIuLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhRmllbGQgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpZWxkcy90ZXh0YXJlYUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgVGV4dE1hc2tFbnVtLFxyXG4gIFRleHRGaWVsZCxcclxuICBVcmxSZWdleCxcclxuICBUZWxSZWdleCxcclxufSBmcm9tIFwiLi4vbW9kZWxzL2ZpZWxkcy90ZXh0RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tIFwiLi4vbW9kZWxzL3JlY29yZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcnJheVZhbGlkYXRvcnMgfSBmcm9tIFwiLi9jdXN0b20tZm9ybS12YWxpZGF0b3JzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwiLi9zcGlubmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gXCIuL2dsb2JhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEltYWdlU2VsZWN0b3JGaWVsZCB9IGZyb20gXCIuLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0eUhlbHBlclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBzdGF0aWMgY29udGV4dDogQ29udGV4dCA9IG5ldyBDb250ZXh0KCk7XHJcblxyXG4gIGRlYnVnTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlYnVnTG9nKG1lc3NhZ2U6IHN0cmluZywgaXRlbT86IGFueSl7XHJcbiAgICBpZih0aGlzLmRlYnVnTW9kZSl7XHJcbiAgICAgIGlmKGl0ZW0pe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIGl0ZW0pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogU3Bpbm5lclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgRXZhbHVhdGVGaWVsZEZvcm11bGEoXHJcbiAgICBmb3JtdWxhOiBzdHJpbmcsXHJcbiAgICByZWM6IFJlY29yZCxcclxuICAgIGN0eDogYW55XHJcbiAgKTogYW55IHtcclxuICAgIGNvbnN0IGV2YWx1YXRlZFZhbHVlID0gZXZhbChmb3JtdWxhKTtcclxuICAgIHJldHVybiBldmFsdWF0ZWRWYWx1ZSA/IGV2YWx1YXRlZFZhbHVlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgU2V0Q29udGV4dChjdHg6IENvbnRleHQpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGN0eDtcclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBpc051bWVyaWMobikge1xyXG4gICAgcmV0dXJuICFpc05hTihuKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaW5pdFN0eWxlcyhzdHlsZWNzcykge1xyXG4gICAgcmV0dXJuIHN0eWxlY3NzLnNwbGl0KFwiO1wiKS5yZWR1Y2UoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3Qga2V5cGFyID0gYi5zcGxpdChcIjpcIik7XHJcbiAgICAgIGlmIChrZXlwYXIubGVuZ3RoID4gMSkgYVtrZXlwYXJbMF0udHJpbSgpXSA9IGtleXBhclsxXS50cmltKCk7XHJcbiAgICAgIHJldHVybiBhO1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBHZXRGaWVsZFR5cGUoZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgc3dpdGNoIChmaWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl06IHtcclxuICAgICAgICBjb25zdCB0OiBUZXh0RmllbGQgPSBPYmplY3QuYXNzaWduKG5ldyBUZXh0RmllbGQoKSwgZmllbGQpO1xyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbXBvc3RhcmUgaSB2YWxvcmkgZGEgc3VnZ2VyaXJlIG5lbGwnYXV0b2NvbXBsZXRlIHBlciBpIGNhbXBpIGluIGN1aSBsJ3V0ZW50ZSBkZXZlIHNjcml2ZXJlIGNvbWFuZGkgamF2YXNjcmlwdC5cclxuICAgKiBJbiBiYXNlIGFsbCd1bHRpbW8gY2FyYXR0ZXJlIGRpZ2l0YXRvIHZpZW5lIGltcG9zdGF0byB1biBlbGVuY28gZGkgb2dnZXR0aSBvIHByb3ByaWV0w6AgY2hlIGwndXRlbnRlIGhhIGEgZGlzcG9zaXppb25lIGluIHF1ZWwgbW9tZW50by5cclxuICAgKiBAcGFyYW0gZmllbGRzIEFycmF5IGRpIEJhc2VGaWVsZCBhZ2dpdW50aSBhbGxhIEZvcm1cclxuICAgKiBAcGFyYW0gdHlwZWRGb3JtdWxhIFN0cmluZ2EgZGlnaXRhdGEgZGFsbCd1dGVudGVcclxuICAgKiBAc3VtbWFyeSBJbCBtZXRvZG8gaW1wb3N0YSBpIHN1Z2dlcmltZW50aSBiYXNhbmRvc2kgc3UgMyBjYXNpOlxyXG4gICAqICAxKSBsJ3V0ZW50ZSBub24gaGEgZGlnaXRhdG8gbnVsbGEgbyBsYSBzdHJpbmdhIGRpZ2l0YXRhIGRhbGwndXRlbnRlIGZpbmlzY2UgY29uIHVubyBzcGF6aW8gdnVvdG9cclxuICAgKiAgMikgbGEgc3RyaW5nYSBkaWdpdGF0YSBkYWxsJ3V0ZW50ZSBmaW5pc2NlIGNvbiB1biBcIi5cIlxyXG4gICAqICAzKSBsYSBzdHJpbmdhIGRpZ2l0YXRhIGRhbGwndXRlbnRlIG5vbiBjb2luY2lkZSBjb24gbmVzc3VuIGFsdHJvIGNhc28gc29wcmEgKGZpbmlzY2UgY29uIHVuIGNhcmF0dGVyZSBxdWFsdW5xdWUpXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBHZXRBdXRvY29tcGxldGVPcHRpb25zKFxyXG4gICAgZmllbGRzOiBBcnJheTxCYXNlRmllbGQ+LFxyXG4gICAgdHlwZWRGb3JtdWxhOiBzdHJpbmdcclxuICApOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4ge1xyXG4gICAgbGV0IGF1dG9jb21wbGV0ZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgIC8vIFJlY3VwZXJvIGkgbm9taSBkaSB0dXR0aSBpIGNhbXBpIGNyZWF0aSBmaW5vIGFkIG9yYSBuZWxsYSBmb3JtLlxyXG4gICAgY29uc3QgYXZhaWxhYmxlUmVjUHJvcGVydGllczogQXJyYXk8c3RyaW5nPiA9IGZpZWxkcy5tYXAoKGYpID0+XHJcbiAgICAgIGYuTGFiZWwuc3BsaXQoXCIgXCIpLmpvaW4oXCJfXCIpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIE5lbCBjYXNpIGluIGN1aSBsJ3V0ZW50ZSBub24gaGEgaW5zZXJpdG8gbnVsbGEgb3BwdXJlIGxhIHN0cmluZ2EgZmluaXNjZSBjb24gdW5vIHNwYXppbyB2dW90byBvIHVuIHNpbWJvbG8gZGl2ZXJzbyBkYSBcIi5cIlxyXG4gICAgLy8gKHVuIGNhcmF0dGVyZSBub24gYWxmYW51bWVyaWNvKSBpbXBvc3RvIGNvbWUgc3VnZ2VyaW1lbnRpIHNvbG8gXCJyZWNcIiBlIFwiY3R4XCIsIG92dmVybyBnbGkgdW5pY2kgZHVlIG9nZ2V0dGkgYSBjdWkgbCd1dGVudGUgaGEgYWNjZXNzby5cclxuICAgIGlmIChcclxuICAgICAgIXR5cGVkRm9ybXVsYSB8fFxyXG4gICAgICAoIXR5cGVkRm9ybXVsYS5lbmRzV2l0aChcIi5cIikgJiZcclxuICAgICAgICBuZXcgUmVnRXhwKFwiW14wLTlhLXpBLVpfXVwiKS50ZXN0KFxyXG4gICAgICAgICAgdHlwZWRGb3JtdWxhLnN1YnN0cmluZyh0eXBlZEZvcm11bGEubGVuZ3RoIC0gMSwgdHlwZWRGb3JtdWxhLmxlbmd0aClcclxuICAgICAgICApKVxyXG4gICAgKSB7XHJcbiAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgeyBsYWJlbDogXCJyZWNcIiwgdmFsdWU6ICh0eXBlZEZvcm11bGEgPyB0eXBlZEZvcm11bGEgOiBcIlwiKSArIFwicmVjXCIgfSxcclxuICAgICAgICB7IGxhYmVsOiBcImN0eFwiLCB2YWx1ZTogKHR5cGVkRm9ybXVsYSA/IHR5cGVkRm9ybXVsYSA6IFwiXCIpICsgXCJjdHhcIiB9LFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gICAgLy8gU2UgbGEgc3RyaW5nYSBmaW5pc2NlIGNvbiB1biBcIi5cIiB2dW9sIGRpcmUgY2hlIGwndXRlbnRlIHN0YSBjZXJjYW5kbyBkaSBhY2NlZGVyZSBhZCB1bmEgcHJvcHJpZXTDoCBkaSB1biBvZ2dldHRvXHJcbiAgICAvLyBhIHN1YSBkaXNwb3NpemlvbmUuIFJlY3VwZXJvIGlsIG5vbWUgZGVsbCd1bHRpbW8gb2dnZXR0byBkaWdpdGF0byBkYWxsJ3V0ZW50ZSBlIHNlIGwnb2dnZXR0byBzY2VsdG8gw6ggXCJyZWNcIiBvIFwiY3R4XCJcclxuICAgIC8vIGFsbG9yYSBzdWdnZXJpc2NvIGxlIHByb3ByaWV0w6AgY2hlIGVzaXN0b25vIGFsbCdpbnRlcm5vIGRpIHF1ZXN0aSBvZ2dldHRpIGFsdHJpbWVudGkgbm9uIG1vc3RybyBudWxsYS5cclxuICAgIGVsc2UgaWYgKHR5cGVkRm9ybXVsYS5lbmRzV2l0aChcIi5cIikpIHtcclxuICAgICAgY29uc3QgZm9ybXVsYVBpZWNlczogQXJyYXk8c3RyaW5nPiA9IHR5cGVkRm9ybXVsYVxyXG4gICAgICAgIC5zcGxpdChcIiBcIilcclxuICAgICAgICBbdHlwZWRGb3JtdWxhLnNwbGl0KFwiIFwiKS5sZW5ndGggLSAxXS5zcGxpdChcIi5cIik7XHJcbiAgICAgIGlmIChmb3JtdWxhUGllY2VzW2Zvcm11bGFQaWVjZXMubGVuZ3RoIC0gMl0gPT09IFwicmVjXCIpIHtcclxuICAgICAgICBhdXRvY29tcGxldGVPcHRpb25zID0gYXZhaWxhYmxlUmVjUHJvcGVydGllcy5tYXAoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBmLCB2YWx1ZTogdHlwZWRGb3JtdWxhICsgZiB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGZvcm11bGFQaWVjZXNbZm9ybXVsYVBpZWNlcy5sZW5ndGggLSAyXSA9PT0gXCJjdHhcIikge1xyXG4gICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBPYmplY3Qua2V5cyhVdGlsaXR5SGVscGVyU2VydmljZS5jb250ZXh0KS5tYXAoXHJcbiAgICAgICAgICAoZikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogZiwgdmFsdWU6IHR5cGVkRm9ybXVsYSArIGYgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIGZvcm11bGFQaWVjZXMubGVuZ3RoID4gMiAmJlxyXG4gICAgICAgIGZvcm11bGFQaWVjZXNbZm9ybXVsYVBpZWNlcy5sZW5ndGggLSAzXSA9PT0gXCJjdHhcIiAmJlxyXG4gICAgICAgIGZvcm11bGFQaWVjZXNbZm9ybXVsYVBpZWNlcy5sZW5ndGggLSAyXSA9PT0gXCJVc2VyXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXV0b2NvbXBsZXRlT3B0aW9ucyA9IE9iamVjdC5rZXlzKFxyXG4gICAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuY29udGV4dC5Vc2VyXHJcbiAgICAgICAgKS5tYXAoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBmLCB2YWx1ZTogdHlwZWRGb3JtdWxhICsgZiB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gSW4gdHV0dGkgZ2xpIGFsdHJpIGNhc2ksIG92dmVybyBxdWFuZG8gbGEgc3RyaW5nYSBkaWdpdGF0YSBmaW5pc2NlIGNvbiB1biBjYXJhdHRlcmUgZGl2ZXJzbyBkYSBxdWVsbGlcclxuICAgIC8vIGNvbnRyb2xsYXRpIGZpbm9yYSwgdnVvbCBkaXJlIGNoZSBsJ3V0ZW50ZSBzdGEgZGlnaXRhbnRvIGlsIG5vbWUgZGkgdW4gb2dnZXR0bywgdW5hIHByb3ByaWV0w6AgbyB1bmFcclxuICAgIC8vIGZ1bnppb25lIGphdmFzY3JpcHQuIENvbnRyb2xsbyBsYSBwYXJvbGEgY2hlIGwndXRlbnRlIHN0YSBkaWdpdGFuZG8gZSBzZSBmYSBwYXJ0ZSBkaSB1bm8gZGVnbGkgb2dnZXR0aSBhIGRpc3Bvc2l6aW9uZVxyXG4gICAgLy8gbyB1bmEgcHJvcHJpZXTDoCBkaSBlc3NpIGFsbG9yYSBzdWdnZXJpc2NvIGkgcG9zc2liaWxpIG1hdGNoLlxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGF2YWlsYWJsZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgICAgLy8gUHJlbmRvIHR1dHRpIGkgYmxvY2NoaSBkaSBjYXJhdHRlcmkgZGlnaXRhdGkgZGFsbCd1dGVudGVcclxuICAgICAgY29uc3QgYWxsRm9ybXVsYVdvcmRzOiBBcnJheTxzdHJpbmc+ID0gdHlwZWRGb3JtdWxhLnNwbGl0KFwiIFwiKTtcclxuICAgICAgLy8gUHJlbmRvIGwndWx0aW1vIGJsb2NjbyBkaSBjYXJhdHRlcmkgZGlnaXRhdG8gZGFsbCd1dGVudGVcclxuICAgICAgY29uc3QgbGFzdFR5cGVkU3RyaW5nOiBzdHJpbmcgPVxyXG4gICAgICAgIGFsbEZvcm11bGFXb3Jkc1thbGxGb3JtdWxhV29yZHMubGVuZ3RoIC0gMV07XHJcblxyXG4gICAgICAvLyBTZSBsYSBsJ3VsdGltYSBzdHJpbmdhIGRpZ2l0YXRhIG5vbiBjb250aWVuZSBjYXJhdHRlcmkgc3BlY2lhbGkgYWxsb3JhIHNwbGl0dG8gbGEgc3RyaW5nYVxyXG4gICAgICAvLyBzdWkgXCIuXCIgZSBpbXBvc3RvIGkgc3VnZ2VyaW1lbnRpIGluIGJhc2UgYWwgcGF0aCBkZWxsYSBwcm9ycGlldMOgIGNoZSBzaSBzdGEgZGlnaXRhbmRvLlxyXG4gICAgICBpZiAoIW5ldyBSZWdFeHAoXCJbXjAtOWEtekEtWl8uXVwiKS50ZXN0KGxhc3RUeXBlZFN0cmluZykpIHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0eVBhdGggPSBsYXN0VHlwZWRTdHJpbmcuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RUeXBlZFdvcmsgPSBwcm9wZXJ0eVBhdGhbcHJvcGVydHlQYXRoLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgICBsZXQgcHJvcGVydGllc1RvQ2hlY2s6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHByb3BlcnR5UGF0aC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgcHJvcGVydGllc1RvQ2hlY2sgPSBbXCJyZWNcIiwgXCJjdHhcIl07XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIHByb3BlcnR5UGF0aC5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICBwcm9wZXJ0eVBhdGhbcHJvcGVydHlQYXRoLmxlbmd0aCAtIDJdID09PSBcImN0eFwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBwcm9wZXJ0aWVzVG9DaGVjayA9IE9iamVjdC5rZXlzKFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmNvbnRleHQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBwcm9wZXJ0eVBhdGgubGVuZ3RoID4gMiAmJlxyXG4gICAgICAgICAgcHJvcGVydHlQYXRoW3Byb3BlcnR5UGF0aC5sZW5ndGggLSAzXSA9PT0gXCJjdHhcIiAmJlxyXG4gICAgICAgICAgcHJvcGVydHlQYXRoW3Byb3BlcnR5UGF0aC5sZW5ndGggLSAyXSA9PT0gXCJVc2VyXCJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHByb3BlcnRpZXNUb0NoZWNrID0gT2JqZWN0LmtleXMoVXRpbGl0eUhlbHBlclNlcnZpY2UuY29udGV4dC5Vc2VyKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgcHJvcGVydHlQYXRoLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgIHByb3BlcnR5UGF0aFtwcm9wZXJ0eVBhdGgubGVuZ3RoIC0gMl0gPT09IFwicmVjXCJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHByb3BlcnRpZXNUb0NoZWNrID0gYXZhaWxhYmxlUmVjUHJvcGVydGllcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEVzZWd1byBpbCBjb250cm9sbG8gc3VsbGUgcHJvcHJpZXTDoCByZWN1cGVyYXRlLCBhZ2dpdW5nbyBhaSBzdWdnZXJpbWVudGkgdHV0dGkgaSBub21pIGNoZSBpbml6aWFubyBjb25cclxuICAgICAgICAvLyBxdWVsbG8gY2hlIHN0YSBkaWdpdGFuZG8gbCd1dGVudGUuXHJcbiAgICAgICAgcHJvcGVydGllc1RvQ2hlY2suZm9yRWFjaCgocHJvcCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHByb3Auc3RhcnRzV2l0aChsYXN0VHlwZWRXb3JrKSkge1xyXG4gICAgICAgICAgICBhdmFpbGFibGVPcHRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBwcm9wLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdHlwZWRGb3JtdWxhICtcclxuICAgICAgICAgICAgICAgIHByb3Auc3Vic3RyaW5nKGxhc3RUeXBlZFdvcmsubGVuZ3RoLCBwcm9wLmxlbmd0aCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhdXRvY29tcGxldGVPcHRpb25zID0gYXZhaWxhYmxlT3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBkYWxsJ2h0bWwgcGVyIGltcG9zdGFyZSBsZSBjbGFzc2kgY3NzIHBlciB2aXN1YWxpenphcmUgaWwgY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBTZSBwZXIgaWwgZmllbGQgc29ubyBzdGF0ZSBzcGVjaWZpY2F0ZSBkZWxsZSBjbGFzc2kgYWxsb3JhIHZlbmdvbm8gYXBwbGNhdGUgcXVlbGxlLCBhbHRyaW1lbnRpIHZlbmdvbm8gdXNhdGVcclxuICAgKiBkZWxsZSBjbGFzc2kgZGkgZGVmYXVsdC5cclxuICAgKiBAcGFyYW0gZmllbGQgQmFzZUZpZWxkIGRhIHZpc3VhbGl6emFyZS5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1bmEgc3RyaW5nYSBjb250ZW5lbnRlIGxlIGNsYXNzaSBjc3MgZGEgYXBwbGljYXJlLlxyXG4gICAqL1xyXG4gIGdldEZpZWxkU3lsZUNsYXNzKGZpZWxkOiBCYXNlRmllbGQpOiBzdHJpbmcge1xyXG4gICAgICAgIFxyXG4gICAgdmFyIGNvbHNwYW52YWx1ZXMgPSBcIlwiO1xyXG4gICAgdmFyIHZpc2liaWxpdHl2YWx1ZXMgPSBcIlwiO1xyXG4gICAgaWYgKGZpZWxkLkNvbFNwYW5TaXplcyAmJiBmaWVsZC5Db2xTcGFuU2l6ZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgIGNvbHNwYW52YWx1ZXMgPSBmaWVsZC5Db2xTcGFuU2l6ZXMubWFwKChzaXplKSA9PlxyXG4gICAgICBDb2xTcGFuU2l6ZXNFbnVtW3NpemVdLnRvU3RyaW5nKCkpLmpvaW4oXCIgXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29sc3BhbnZhbHVlcyA9IHRoaXMuZ2V0RGVmYXVsdFN0eWxlQ2xhc3MoZmllbGQsICdhbGlnbi1zZWxmLWVuZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZmllbGQuSW5MaXN0Vmlldyl7XHJcbiAgICAgIGlmIChmaWVsZC5JbnZpc2liaWxpdHkgPT0gRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPKXsgdmlzaWJpbGl0eXZhbHVlcyA9IFwidmlzaWJpbGl0eV9oaWRkZW5cIjsgfVxyXG4gICAgICBpZiAoZmllbGQuSW52aXNpYmlsaXR5ID09IEZpZWxkSW52aXNpYmlsaXR5RW51bVtcIk5BU0NPU1RPIENPTiBBUkVBIFZJU0lCSUxFXCJdKXsgdmlzaWJpbGl0eXZhbHVlcyA9IFwidmlzaWJpbGl0eV90cmFuc3BhcmVudFwiOyB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbHNwYW52YWx1ZXMgKyBcIiBcIiArIHZpc2liaWxpdHl2YWx1ZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gZGFsbCdodG1sIHBlciBpbXBvc3RhcmUgbGUgY2xhc3NpIGNzcyBwZXIgdmlzdWFsaXp6YXJlIGlsIGNhbXBvIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0uXHJcbiAgICogU2UgcGVyIGlsIGZpZWxkIHNvbm8gc3RhdGUgc3BlY2lmaWNhdGUgZGVsbGUgY2xhc3NpIGFsbG9yYSB2ZW5nb25vIGFwcGxjYXRlIHF1ZWxsZSwgYWx0cmltZW50aSB2ZW5nb25vIHVzYXRlXHJcbiAgICogZGVsbGUgY2xhc3NpIGRpIGRlZmF1bHQuXHJcbiAgICogQHBhcmFtIGZpZWxkIEJhc2VGaWVsZCBkYSB2aXN1YWxpenphcmUuXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgdW5hIHN0cmluZ2EgY29udGVuZW50ZSBsZSBjbGFzc2kgY3NzIGRhIGFwcGxpY2FyZS5cclxuICAgKi9cclxuICBnZXRGaWVsZEFuc3dlclN0eWxlQ2xhc3MoZmllbGQ6IEJhc2VGaWVsZCk6IHN0cmluZyB7XHJcbiAgICAgICAgXHJcbiAgICBpZiAoZmllbGQuQW5zd2VyU3R5bGUgJiYgZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzICYmIGZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplcy5sZW5ndGggPiAwKXtcclxuICAgICAgLy8vL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2ZpZWxkJywgZmllbGQpXHJcblxyXG4gICAgICByZXR1cm4gZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzLm1hcCgoc2l6ZSkgPT5cclxuICAgICAgICBDb2xTcGFuU2l6ZXNFbnVtW3NpemVdLnRvU3RyaW5nKClcclxuICAgICAgKS5qb2luKFwiIFwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0U3R5bGVDbGFzcyhmaWVsZCwgJ2FsaWduLXNlbGYtc3RhcnQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFN0eWxlQ2xhc3MoZmllbGQ6IEJhc2VGaWVsZCwgZGVmYXVsdEFsaWduOiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICBcclxuICAgIHN3aXRjaCAoZmllbGQuRmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkNhbXBvIGRpIHRlc3RvXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQ2FtcG8gZGkgdGVzdG8nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctNCBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQXJlYSBkaSB0ZXN0b1wiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0FyZWEgZGkgdGVzdG8nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJCb29sZWFub1wiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0Jvb2xlYW5vJylcclxuICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTQgY29sLWxnLTQgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkRhdGEgZS9vIG9yYVwiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0RhdGEgZS9vIG9yYScpXHJcbiAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJDYW1wbyBudW1lcmljb1wiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0NhbXBvIG51bWVyaWNvJylcclxuICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTQgY29sLWxnLTQgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkFsbGVnYXRvXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQWxsZWdhdG8nKVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIChmaWVsZCBhcyBBdHRhY2htZW50RmllbGQpLklzTXVsdGlBdHRhY2ggfHxcclxuICAgICAgICAgICgoZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5NZXRhZGF0YUZpZWxkcyAmJlxyXG4gICAgICAgICAgICAoZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5NZXRhZGF0YUZpZWxkcy5sZW5ndGggPiAwKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTIgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctNCBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkltbWFnaW5lXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnSW1tYWdpbmUnKVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKGZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaCB8fFxyXG4gICAgICAgICAgKChmaWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLk1ldGFkYXRhRmllbGRzICYmXHJcbiAgICAgICAgICAgIChmaWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLk1ldGFkYXRhRmllbGRzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTEyIGNvbC1sZy0xMiBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICAgIH0qL1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgICAgICAgLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdFbGVuY28gZ2VuZXJpY28nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctNCBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiTG9va3VwXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnTG9va3VwJylcclxuICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTQgY29sLWxnLTQgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnRm9ybSBkaSBkZXR0YWdsaW8nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06XHJcbiAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFdGljaGV0dGFcIl06XHJcbiAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgaWwgRm9ybUdyb3VwIGNoZSByYXBwcmVzZW50YSB1bmEgRm9ybSBhIHBhcnRpcmUgZGFpIHN1b2kgQmFzZUZpZWxkLlxyXG4gICAqIEBwYXJhbSBmb3JtRmllbGRzIExpc3RhIGRlaSBCYXNlRmllbGQgY2hlIGNvbXBvbmdvbm8gbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gcmVjb3JkIE9nZ2V0dG8gZGkgdGlwbyBSZWNvcmQgY2hlIGNvbnRpZW5lIGkgdmFsb3JpIGRlaSBjYW1waS5cclxuICAgKiBAcGFyYW0gb25seVZpZXcgU2UgVFJVRSBkaXNhYmlsaXRhIGxhIGZvcm0gcGVyIHJlbmRlcmxhIGluIHNvbGEgbGV0dHVyYS5cclxuICAgKiBAcGFyYW0gaW5jbHVkZUN1cnJlbnRGb3JtSW5GaWVsZCBTZSBUUlVFIHBvcG9sYSBsYSBwcm9wcmlldMOgIEZvcm1Gb3JtR3JvdXAgYWxsJ2ludGVybm8gZGkgb2duaSBCYXNlRmllbGQgY29uIGlsIEZvcm1Hcm91cCBjb3JyZW50ZS5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBGb3JtR3JvdXAgcmFwcHJlc2VudGF0ZSBsYSBGb3JtIGEgY3VpIGFwcGFydGVuZ29ubyBpIEJhc2VGaWVsZCByaWNldnV0aSBpbiBpbnB1dC5cclxuICAgKi9cclxuICBwdWJsaWMgQ3JlYXRlRm9ybUZvcm1Hcm91cChcclxuICAgIGZvcm1GaWVsZHM6IEFycmF5PEJhc2VGaWVsZD4sXHJcbiAgICByZWNvcmQ6IFJlY29yZCxcclxuICAgIG9ubHlWaWV3ID0gZmFsc2UsXHJcbiAgICBpbmNsdWRlQ3VycmVudEZvcm1JbkZpZWxkID0gdHJ1ZVxyXG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgLy8gLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiZm9ybUZpZWxkc1wiLCBmb3JtRmllbGRzKTtcclxuICAgIC8vIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInJlY29yZFwiLCByZWNvcmQpO1xyXG4gICAgLy8gLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwib25seVZpZXdcIiwgb25seVZpZXcpO1xyXG4gICAgLy8gLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaW5jbHVkZUN1cnJlbnRGb3JtSW5GaWVsZFwiLCBpbmNsdWRlQ3VycmVudEZvcm1JbkZpZWxkKTtcclxuXHJcbiAgICBjb25zdCBmb3JtRm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoW10pO1xyXG5cclxuICAgIGZvcm1GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgIC8vICAgLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKGZpZWxkKTtcclxuICAgICAgZm9ybUZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICBmaWVsZC5OYW1lLFxyXG4gICAgICAgIHRoaXMuY3JlYXRlRmllbGRGb3JtQ29udHJvbChmaWVsZCwgcmVjb3JkKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5jbHVkZUN1cnJlbnRGb3JtSW5GaWVsZCkge1xyXG4gICAgICAgIC8vIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhmaWVsZCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICBmaWVsZC5Gb3JtRm9ybUdyb3VwID0gZm9ybUZvcm07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKG9ubHlWaWV3KSB7XHJcbiAgICAgIGZvcm1Gb3JtLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybUZvcm07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBwZXIgY3JlYXJlIGUgYWdnaXVuZ2VyZSBhbCBGb3JtR3JvdXAgcmFwcHJlc2VudGFudGUgbGEgZm9ybSB1biBudW92byBGb3JtQ29udHJvbCBhIHBhcnRpcmUgZGEgdW4gRmllbGQuXHJcbiAgICogSW4gbnVvdm8gRm9ybUNvbnRyb2wgYXZyw6AgaWwgbm9tZSBkZWwgY2FtcG8gcGFzc2F0byBlIHZlcnJhbm5vIGltcG9zdGF0aSBpIFZhbGlkYXRvcnMgaW4gYmFzZSBhbCB0aXBvIGRlbCBjYW1wbyBzdGVzc28uXHJcbiAgICogQHBhcmFtIGZpZWxkIEJhc2VGaWVsZCBwZXIgY3VpIGNyZWFyZSBpbCBGb3JtQ29udHJvbCBkYSBpbnNlcmlyZSBuZWwgRm9ybUdyb3VwIGRlbGEgZm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUZpZWxkRm9ybUNvbnRyb2woXHJcbiAgICBmaWVsZDogQmFzZUZpZWxkLFxyXG4gICAgcmVjb3JkOiBSZWNvcmRcclxuICApOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XHJcblxyXG4gICAgaWYgKGZpZWxkLlJlcXVpcmVkKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgc3dpdGNoIChmaWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl06XHJcbiAgICAgICAgaWYgKChmaWVsZCBhcyBUZXh0RmllbGQpLk1heExlbmdodCkge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKChmaWVsZCBhcyBUZXh0RmllbGQpLk1heExlbmdodCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGZpZWxkIGFzIFRleHRGaWVsZCkuTWluTGVuZ2h0KSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoKGZpZWxkIGFzIFRleHRGaWVsZCkuTWluTGVuZ2h0KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAoKGZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2spIHtcclxuICAgICAgICAgIGNhc2UgVGV4dE1hc2tFbnVtLlVybDpcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihVcmxSZWdleCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgVGV4dE1hc2tFbnVtLkVtYWlsOlxyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBUZXh0TWFza0VudW0uVGVsZWZvbm86XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oVGVsUmVnZXgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJBcmVhIGRpIHRlc3RvXCJdOlxyXG4gICAgICAgIGlmICgoZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWF4TGVuZ2h0KSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKChmaWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5NYXhMZW5naHQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1pbkxlbmdodCkge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgoZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWluTGVuZ2h0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5BbGxlZ2F0bzpcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lOlxyXG4gICAgICAgIGlmIChmaWVsZC5SZXF1aXJlZCkgdmFsaWRhdG9ycy5wdXNoKEFycmF5VmFsaWRhdG9ycy5taW5MZW5naHQoMSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgICAgICAgaWYgKChmaWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSXNNdWx0aUNob2ljaGUpXHJcbiAgICAgICAgICBpZiAoZmllbGQuUmVxdWlyZWQpIHZhbGlkYXRvcnMucHVzaChBcnJheVZhbGlkYXRvcnMubWluTGVuZ2h0KDEpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdOlxyXG4gICAgICAgIGlmICgoZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5Jc011bHRpQ2hvaWNoZSlcclxuICAgICAgICAgIGlmIChmaWVsZC5SZXF1aXJlZCkgdmFsaWRhdG9ycy5wdXNoKEFycmF5VmFsaWRhdG9ycy5taW5MZW5naHQoMSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Db250cm9sKHJlY29yZFtmaWVsZC5OYW1lXSwgdmFsaWRhdG9ycyk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjb25maWd1cmFyZSBnbGkgZW5kcG9pbnQgZGEgdXNhcmUgZGkgZGVmYXVsdCBhIHBhcnRpcmUgZGFsbCd1cmwgYmFzZSBkZWwgc2VydmVyXHJcbiAgICogYSBjdWkgc2kgZGV2ZSBjb25uZXR0ZXJlIGUgYWwgdG9rZW4gZGEgcGFzc2FyZSBwZXIgYXV0ZW50aWNhcnNpLlxyXG4gICAqIEBwYXJhbSBiYXNlU2VydmVyVXJsIFN0cmluZ2EgZGVsbCd1cmwgYmFzZSBkZWwgc2VydmVyIChlczogXCJodHRwOi8vbG9jYWxob3N0OjUwMDBcIikuXHJcbiAgICogQHBhcmFtIHVzZXJUb2tlbiBUb2tlbiBkZWxsJ3V0ZW50ZSBsb2dnYXRvIGRhIHVzYXJlIHBlciBhdXRlbnRpY2Fyc2kgc2UgbmVjZXNzYXJpby5cclxuICAgKiBAcmV0dXJucyBSZXNpdHVpc2NlIGxhIGNvbmZpZ3VyYXppb25lIGNvbXBsZXRhIGRlZ2xpIGVuZFBvaW50IGRhIHVzYXJlIGRpIGRlZmF1bHQuXHJcbiAgICovXHJcbiAgcHVibGljIENvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoXHJcbiAgICBiYXNlU2VydmVyVXJsOiBzdHJpbmcsXHJcbiAgICB1c2VyVG9rZW46IHN0cmluZ1xyXG4gICk6IEVuZFBvaW50Q29uZmlndXJhdGlvbiB7XHJcbiAgICBsZXQgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb24gPVxyXG4gICAgICBuZXcgRW5kUG9pbnRDb25maWd1cmF0aW9uKGJhc2VTZXJ2ZXJVcmwsIHVzZXJUb2tlbik7XHJcblxyXG4gICAgLy8gZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgPSB7XHJcbiAgICAvLyAgIEdldEJ5Rm9ybUlERW5kUG9pbnQ6IHtcclxuICAgIC8vICAgICBVcmw6IGJhc2VTZXJ2ZXJVcmwgKyBcIi9hcGkvdjEvZ2V0YWxsXCIsXHJcbiAgICAvLyAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgIC8vICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIEdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQ6IHtcclxuICAgIC8vICAgICBVcmw6IGJhc2VTZXJ2ZXJVcmwgKyBcIi9hcGkvdjEvR2V0QWxsQnlVc2VySURcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgR2V0QnlJREVuZFBvaW50OiB7XHJcbiAgICAvLyAgICAgVXJsOiBiYXNlU2VydmVyVXJsICsgXCIvYXBpL3YxL2dldEJ5SURcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgU2F2ZUVuZFBvaW50OiB7XHJcbiAgICAvLyAgICAgVXJsOiBiYXNlU2VydmVyVXJsICsgXCIvYXBpL3YxL3NhdmVcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLlBPU1QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIER1cGxpY2F0ZUVuZFBvaW50OiB7XHJcbiAgICAvLyAgICAgVXJsOiBiYXNlU2VydmVyVXJsICsgXCIvYXBpL3YxL2R1cGxpY2F0ZVwiLFxyXG4gICAgLy8gICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAvLyAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBEZWxldGVFbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS92MS9kZWxldGVcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkRFTEVURSxcclxuICAgIC8vICAgfSxcclxuICAgIC8vIH07XHJcbiAgICAvLyBlbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMgPSB7XHJcbiAgICAvLyAgIEdldEJ5SURFbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS9jb25mL2Zvcm1cIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgR2V0QnlJREFuZFZlcnNpb25FbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS9jb25mL0dldEJ5SURBbmRWZXJzaW9uXCIsXHJcbiAgICAvLyAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgIC8vICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIFNhdmVFbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS9jb25mL2Zvcm1cIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLlBPU1QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyB9O1xyXG4gICAgcmV0dXJuIGVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiBwcmVuZGUgdW5hIHN0cmluZ2EgaW4gaW5wdXQgZSB2ZXJpZmljYSBjaGUgb2duaSBwYXJlbnRlc2kgYXBlcnRhIHZlbmdhIGFuY2hlIGNoaXVzYVxyXG4gICAqIEByZXR1cm5zIHRydWUgc2UgbGUgcGFyZW50ZXNpIHNvbm8gcGFyaSBlIG9nbmkgcGFyZW50ZXNpIGNoaXVkZSBzZSBzdGVzc2EsIGZhbHNlIHNlIG1hbmNhbm8gcGFyZW50ZXNpIG8gbm9uIHZlbmdvbm8gY2hpdXNlXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdDaGVja1BhcmVudGVzaXMoZXhwcmVzc2lvbiwgcmVxdWlyZWQgPSBmYWxzZSkge1xyXG4gICAgaWYgKGV4cHJlc3Npb24gPT0gdW5kZWZpbmVkIHx8IGV4cHJlc3Npb24gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gcmVxdWlyZWQgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RhY2sgPSBbXTtcclxuICAgIGxldCBjdXJyZW50O1xyXG4gICAgY29uc3QgbWF0Y2hMb29rdXAgPSB7XHJcbiAgICAgIFwiKFwiOiBcIilcIixcclxuICAgICAgXCJbXCI6IFwiXVwiLFxyXG4gICAgICBcIntcIjogXCJ9XCIsXHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjdXJyZW50ID0gZXhwcmVzc2lvbltpXTsgLy9lYXNpZXIgdGhhbiB3cml0aW5nIGl0IG92ZXIgYW5kIG92ZXJcclxuXHJcbiAgICAgIGlmIChjdXJyZW50ID09PSBcIihcIiB8fCBjdXJyZW50ID09PSBcIltcIiB8fCBjdXJyZW50ID09PSBcIntcIikge1xyXG4gICAgICAgIHN0YWNrLnB1c2goY3VycmVudCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PT0gXCIpXCIgfHwgY3VycmVudCA9PT0gXCJdXCIgfHwgY3VycmVudCA9PT0gXCJ9XCIpIHtcclxuICAgICAgICBjb25zdCBsYXN0QnJhY2tldCA9IHN0YWNrLnBvcCgpO1xyXG5cclxuICAgICAgICBpZiAobWF0Y2hMb29rdXBbbGFzdEJyYWNrZXRdICE9PSBjdXJyZW50KSB7XHJcbiAgICAgICAgICAvL2lmIHRoZSBzdGFjayBpcyBlbXB0eSwgLnBvcCgpIHJldHVybnMgdW5kZWZpbmVkLCBzbyB0aGlzIGV4cHJlc3Npb24gaXMgc3RpbGwgY29ycmVjdFxyXG5cclxuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy90ZXJtaW5hdGUgaW1tZWRpYXRlbHkgLSBubyBuZWVkIHRvIGNvbnRpbnVlIHNjYW5uaW5nIHRoZSBzdHJpbmdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RhY2subGVuZ3RoID09PSAwOyAvL2FueSBlbGVtZW50cyBtZWFuIGJyYWNrZXRzIGxlZnQgb3BlblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIGxhIGNvbmZpZ3VyYXppb25lIGRpIHVuIGVuZHBvaW50IGNvc3RydWlzY2UgbCd1cmwgZGEgY2hpYW1hcmUsIGdsaSBldmVudHVhbGkgcGFyYW1ldHJpXHJcbiAgICogZGEgcGFzc2FyZSAobmVsIGJvZHkgbyBuZWxsYSByb3R0YSkgZWQgZWZmZXR0dWEgbGEgY2hpYW1hdGEuIEFsIHRlcm1pbmUgZGVsbGEgY2hpYW1hdGEgZXNlZ3VlIGxlIGV2ZW50dWFsaVxyXG4gICAqIGZ1bnppb25pIGRpIGNhbGxiYWNrIChzaWEgaW4gY2FzbyBkaSBzdWNjZXNzbyBjaGUgaW4gY2FzbyBkaSBlcnJvcmUpIHBhc3NhdGUgaW4gaW5wdXQuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50RGF0YSBDb2ZpZ3VyYXppb25lIGRlbGwnZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICogQHBhcmFtIGR5bmFtaWNNb2R1bGVQYXJhbXMgQXJyYXkgZGVpIHBhcmFtZXRyaSBhZ2dpdW50aSBkYWwgbW9kdWxvIGRpbmFtaWNvIGEgcXVlbGxpIGdpw6AgY29uZmlndXJhdGlcclxuICAgKiAoYWQgZXNlbXBpbyBpbCByZWNvcmQgbyBsYSBmb3JtIGRhIHNhbHZhcmUgb3BwdXJlIGwnSUQgcGVyIHJlY3VwZXJhcmUgdW5hIHBhcnRpY29sYXJlIGVudGl0w6ApLlxyXG4gICAqIEBwYXJhbSBjYWxsYmFjayBNZXRvZG8gZGEgZXNlZ3VpcmUgaW4gY2FzbyBkaSBzdWNjZXNzbyBkb3BvIGxhIGNoaWFtYXRhIGh0dHAuXHJcbiAgICogTk9UQTogaW4gaW5wdXQgdmllbmUgcGFzc2F0YSBsYSByaXNwb3N0YSBkZWxsYSBjaGlhbWF0YSBzdGVzc2EuXHJcbiAgICogQHBhcmFtIGVycm9yQ2FsbEJhY2sgTWV0b2RvIGRhIGVzZWd1aXJlIGluIGNhc28gZGkgZXJyb3JlIGRvcG8gbGEgY2hpYW1hdGEgaHR0cC5cclxuICAgKiBOT1RBOiBpbiBpbnB1dCB2aWVuZSBwYXNzYXRvIGwnZXJyb3JlIGdlbmVyYXRvIGRlbGxhIGNoaWFtYXRhIHN0ZXNzYS5cclxuICAgKi9cclxuICBwdWJsaWMgUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgZW5kUG9pbnREYXRhOiBFbmRQb2ludERhdGEsXHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID0gbnVsbCxcclxuICAgIGNhbGxiYWNrOiAoZTogRm9ybSB8IFJlY29yZCB8IEFycmF5PFJlY29yZD4pID0+IHZvaWQgPSBudWxsLFxyXG4gICAgZXJyb3JDYWxsQmFjazogKGVycjogdW5rbm93bikgPT4gdm9pZCA9IG51bGxcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuYWRkUmVxdWVzdENvdW50ZXIoKTtcclxuXHJcbiAgICBsZXQgdXJsID0gYCR7ZW5kUG9pbnREYXRhLlVybH1gO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgY29uc3QgYm9keVBhcmFtcyA9IHtcclxuICAgICAgQWRkaXRpb25hbFBhcmFtczoge30sXHJcbiAgICB9O1xyXG5cclxuICAgIC8vI3JlZ2lvbiBtZXJnZVBhcmFtXHJcbiAgICAvLyB1bmlzY28gaSBkYXRpIGRpIGRlZmF1bHQgZGVmaW5pdGkgbmVsbGEgY29uZmlndXJhemlvbmUgZGVsbGEgY2hpYW1hdGEgY29uIGkgZGF0aSBjaGUgaW1wb3N0byBuZWxsYSBjaGlhbWF0YSBzcGVjaWZpY2FcclxuICAgIGlmIChlbmRQb2ludERhdGEuUGFyYW1zID09IHVuZGVmaW5lZCB8fCBlbmRQb2ludERhdGEuUGFyYW1zID09IG51bGwpIHtcclxuICAgICAgZW5kUG9pbnREYXRhLlBhcmFtcyA9IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKGR5bmFtaWNNb2R1bGVQYXJhbXMgPT0gdW5kZWZpbmVkIHx8IGR5bmFtaWNNb2R1bGVQYXJhbXMgPT0gbnVsbCkge1xyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWVyZ2VkUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID0gWy4uLmVuZFBvaW50RGF0YS5QYXJhbXNdO1xyXG5cclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMuZm9yRWFjaCgob2JqKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBtZXJnZWRQYXJhbXMuZmluZEluZGV4KFxyXG4gICAgICAgIChpdGVtKSA9PiBpdGVtLlBhcmFtTmFtZSA9PT0gb2JqLlBhcmFtTmFtZVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgbWVyZ2VkUGFyYW1zW2V4aXN0aW5nSW5kZXhdLlBhcmFtVmFsdWUgPSBvYmouUGFyYW1WYWx1ZTtcclxuICAgICAgICBtZXJnZWRQYXJhbXNbZXhpc3RpbmdJbmRleF0uUGFyYW1UeXBlID0gb2JqLlBhcmFtVHlwZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtZXJnZWRQYXJhbXMucHVzaChvYmopO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAobWVyZ2VkUGFyYW1zKSB7XHJcbiAgICAgIG1lcmdlZFBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocGFyYW0uUGFyYW1UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXToge1xyXG4gICAgICAgICAgICBjb25zdCBzdHJpbmdQYXJhbTogc3RyaW5nID1cclxuICAgICAgICAgICAgICBwYXJhbS5QYXJhbU5hbWUgKyBcIj1cIiArIHBhcmFtLlBhcmFtVmFsdWU7XHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID1cclxuICAgICAgICAgICAgICAocXVlcnlQYXJhbXMgPT0gbnVsbCA/IFwiXCIgOiBxdWVyeVBhcmFtcyArIFwiJlwiKSArIHN0cmluZ1BhcmFtO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgUGFyYW1UeXBlRW51bVtcIkluIHJvdXRlXCJdOiB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCArICh1cmwuZW5kc1dpdGgoXCIvXCIpID8gXCJcIiA6IFwiL1wiKSArIHBhcmFtLlBhcmFtVmFsdWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXToge1xyXG4gICAgICAgICAgICBib2R5UGFyYW1zW3BhcmFtLlBhcmFtTmFtZV0gPSBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uIG1lcmdlUGFyYW1cclxuXHJcbiAgICAvLyNyZWdpb24gYWRkRGVmYXVsdFBhcmFtc1xyXG4gICAgLy8gU2UgbmVsbGEgY29uZmlndXJhemlvbmUgc29ubyBzdGF0aSBkZWZpbml0aSBwYXJhbWV0cmkgZGEgYWdnaXVuZ2VyZSBhbGxhIGNoaWFtYXRhIHF1ZXN0aSB2ZW5nb25vIGNpY2xhdGlcclxuICAgIC8vIGUgYWdnaXVudGkgbmVsIHB1bnRvIGluIGN1aSBkZXZvbm8gZXNzZXJlIHVzYXRpLlxyXG4gICAgLy8gaWYgKGVuZFBvaW50RGF0YS5QYXJhbXMpIHtcclxuICAgIC8vICAgICBlbmRQb2ludERhdGEuUGFyYW1zLmZvckVhY2gocGFyYW0gPT4ge1xyXG4gICAgLy8gICAgICAgICBzd2l0Y2ggKHBhcmFtLlBhcmFtVHlwZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtWydRdWVyeSBwYXJhbSddOiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nUGFyYW06IHN0cmluZyA9IHBhcmFtLlBhcmFtTmFtZSArIFwiPVwiICsgcGFyYW0uUGFyYW1WYWx1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtcyA9IChxdWVyeVBhcmFtcyA9PSBudWxsID8gXCJcIiA6IHF1ZXJ5UGFyYW1zICsgXCImXCIpICsgc3RyaW5nUGFyYW07XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICBjYXNlIFBhcmFtVHlwZUVudW1bJ0luIHJvdXRlJ106IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAodXJsLmVuZHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIikgKyBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J106IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBib2R5UGFyYW1zLkFkZGl0aW9uYWxQYXJhbXNbcGFyYW0uUGFyYW1OYW1lXSA9IHBhcmFtLlBhcmFtVmFsdWU7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vIH1cclxuICAgIC8vI2VuZHJlZ2lvbiBhZGREZWZhdWx0UGFyYW1zXHJcblxyXG4gICAgLy8jcmVnaW9uIGFkZFNwZWNpZmljUGFyYW1zXHJcbiAgICAvLyBTZSBzb25vIHN0YXRpIHBhc3NhdGkgcGFyYW1ldHJpIGRhIGFnZ2l1bmdlcmUgYWxsYSBjaGlhbWF0YSBkZWZpbml0aSBhbGwnaW50ZXJubyBkZWwgbW9kdWxvIGRpbmFtaWNvXHJcbiAgICAvLyB2ZW5nb25vIGNpY2xhdGkgZSBhZ2dpdW50aSBuZWwgcHVudG8gaW4gY3VpIGRldm9ubyBlc3NlcmUgdXNhdGkgZG9wbyBxdWVsbGkgZGVmaW5pdGkgbmVsbGEgY29uZmlndXJhemlvbmUuXHJcbiAgICAvLyBpZiAoZHluYW1pY01vZHVsZVBhcmFtcykge1xyXG4gICAgLy8gICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMuZm9yRWFjaChwYXJhbSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHN3aXRjaCAocGFyYW0uUGFyYW1UeXBlKSB7XHJcbiAgICAvLyAgICAgICAgICAgICBjYXNlIFBhcmFtVHlwZUVudW1bJ1F1ZXJ5IHBhcmFtJ106IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdQYXJhbTogc3RyaW5nID0gcGFyYW0uUGFyYW1OYW1lICsgXCI9XCIgKyBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gKHF1ZXJ5UGFyYW1zID09IG51bGwgPyBcIlwiIDogcXVlcnlQYXJhbXMgKyBcIiZcIikgKyBzdHJpbmdQYXJhbTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgIGNhc2UgUGFyYW1UeXBlRW51bVsnSW4gcm91dGUnXToge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIHVybCA9IHVybCArICh1cmwuZW5kc1dpdGgoXCIvXCIpID8gXCJcIiA6IFwiL1wiKSArIHBhcmFtLlBhcmFtVmFsdWU7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICBjYXNlIFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXToge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJvZHlQYXJhbXNbcGFyYW0uUGFyYW1OYW1lXSA9IHBhcmFtLlBhcmFtVmFsdWU7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9KVxyXG4gICAgLy8gfVxyXG4gICAgLy8jZW5kcmVnaW9uIGFkZFNwZWNpZmljUGFyYW1zXHJcblxyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICE9IG51bGwpIHtcclxuICAgICAgdXJsID1cclxuICAgICAgICAodXJsLmVuZHNXaXRoKFwiL1wiKSA/IHVybC5zdWJzdHJpbmcoMCwgdXJsLmxlbmd0aCAtIDEpIDogdXJsKSArXHJcbiAgICAgICAgXCI/XCIgK1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucmVxdWVzdChlbmRQb2ludERhdGEuUmVxdWVzdE1ldGhvZCwgdXJsLCB7XHJcbiAgICAgICAgaGVhZGVyczogZW5kUG9pbnREYXRhLlRva2VuXHJcbiAgICAgICAgICA/IHsgQXV0aG9yaXphdGlvbjogZW5kUG9pbnREYXRhLlRva2VuIH1cclxuICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICBib2R5OiAhW1JlcXVlc3RNZXRob2RFbnVtLkRFTEVURSwgUmVxdWVzdE1ldGhvZEVudW0uR0VUXS5pbmNsdWRlcyhcclxuICAgICAgICAgIGVuZFBvaW50RGF0YS5SZXF1ZXN0TWV0aG9kXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgPyBib2R5UGFyYW1zXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogRm9ybSB8IFJlY29yZCB8IEFycmF5PFJlY29yZD4pID0+IHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UucmVtb3ZlUmVxdWVzdENvdW50ZXIoKTtcclxuICAgICAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnJlbW92ZVJlcXVlc3RDb3VudGVyKCk7XHJcbiAgICAgICAgICBpZiAoZXJyb3JDYWxsQmFjaykge1xyXG4gICAgICAgICAgICBlcnJvckNhbGxCYWNrKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiUnVuRW5kUG9pbnRDYWxsIC0gc3Vic2NyaWJlIC0gZW5kXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
571
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eUhlbHBlci5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsa0JBQWtCLEVBR2xCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSx1Q0FBdUMsQ0FBQztBQUsvQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxRQUFRLEVBQ1IsUUFBUSxHQUNULE1BQU0sa0NBQWtDLENBQUM7QUFHMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQVFwRixNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFFBQVEsQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUNsQyxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDaEIsSUFBRyxJQUFJLEVBQUM7Z0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7YUFDM0I7aUJBQUk7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNyQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQ1UsV0FBK0IsRUFDL0IsSUFBZ0IsRUFDaEIsY0FBOEI7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Q0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzNDLElBQUksYUFBYSxFQUFFO2dCQUNqQixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEI7WUFDRCw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLDhEQUE4RDtRQUNoRSxDQUFDLENBQ0YsQ0FBQztJQUVOLENBQUM7O0FBeG9CYSw0QkFBTyxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7a0hBRHBDLG9CQUFvQjtzSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VGaWVsZCxcclxuICBDb2xTcGFuU2l6ZXNFbnVtLFxyXG4gIEZpZWxkSW52aXNpYmlsaXR5RW51bSxcclxuICBGaWVsZFR5cGVFbnVtLFxyXG59IGZyb20gXCIuLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnRleHQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBFbmRQb2ludENvbmZpZ3VyYXRpb24sXHJcbiAgRW5kUG9pbnREYXRhLFxyXG4gIEVuZFBvaW50RGF0YVBhcmFtcyxcclxuICBQYXJhbVR5cGVFbnVtLFxyXG4gIFJlcXVlc3RNZXRob2RFbnVtLFxyXG59IGZyb20gXCIuLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWVsZCB9IGZyb20gXCIuLi9tb2RlbHMvZmllbGRzL2F0dGFjaG1lbnRGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbWFnZUZpZWxkIH0gZnJvbSBcIi4uL21vZGVscy9maWVsZHMvaW1hZ2VGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBMaXN0VmFsdWVGaWVsZCB9IGZyb20gXCIuLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhRmllbGQgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpZWxkcy90ZXh0YXJlYUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgVGV4dE1hc2tFbnVtLFxyXG4gIFRleHRGaWVsZCxcclxuICBVcmxSZWdleCxcclxuICBUZWxSZWdleCxcclxufSBmcm9tIFwiLi4vbW9kZWxzL2ZpZWxkcy90ZXh0RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tIFwiLi4vbW9kZWxzL3JlY29yZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcnJheVZhbGlkYXRvcnMgfSBmcm9tIFwiLi9jdXN0b20tZm9ybS12YWxpZGF0b3JzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwiLi9zcGlubmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gXCIuL2dsb2JhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IER5bkF0dGFjaG1lbnQsIEltYWdlU2VsZWN0b3JGaWVsZCB9IGZyb20gXCIuLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0eUhlbHBlclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBzdGF0aWMgY29udGV4dDogQ29udGV4dCA9IG5ldyBDb250ZXh0KCk7XHJcblxyXG4gIGRlYnVnTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlYnVnTG9nKG1lc3NhZ2U6IHN0cmluZywgaXRlbT86IGFueSl7XHJcbiAgICBpZih0aGlzLmRlYnVnTW9kZSl7XHJcbiAgICAgIGlmKGl0ZW0pe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIGl0ZW0pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogU3Bpbm5lclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgRXZhbHVhdGVGaWVsZEZvcm11bGEoXHJcbiAgICBmb3JtdWxhOiBzdHJpbmcsXHJcbiAgICByZWM6IFJlY29yZCxcclxuICAgIGN0eDogYW55XHJcbiAgKTogYW55IHtcclxuICAgIGNvbnN0IGV2YWx1YXRlZFZhbHVlID0gZXZhbChmb3JtdWxhKTtcclxuICAgIHJldHVybiBldmFsdWF0ZWRWYWx1ZSA/IGV2YWx1YXRlZFZhbHVlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgU2V0Q29udGV4dChjdHg6IENvbnRleHQpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGN0eDtcclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBpc051bWVyaWMobikge1xyXG4gICAgcmV0dXJuICFpc05hTihuKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaW5pdFN0eWxlcyhzdHlsZWNzcykge1xyXG4gICAgcmV0dXJuIHN0eWxlY3NzLnNwbGl0KFwiO1wiKS5yZWR1Y2UoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3Qga2V5cGFyID0gYi5zcGxpdChcIjpcIik7XHJcbiAgICAgIGlmIChrZXlwYXIubGVuZ3RoID4gMSkgYVtrZXlwYXJbMF0udHJpbSgpXSA9IGtleXBhclsxXS50cmltKCk7XHJcbiAgICAgIHJldHVybiBhO1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBHZXRGaWVsZFR5cGUoZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgc3dpdGNoIChmaWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl06IHtcclxuICAgICAgICBjb25zdCB0OiBUZXh0RmllbGQgPSBPYmplY3QuYXNzaWduKG5ldyBUZXh0RmllbGQoKSwgZmllbGQpO1xyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbXBvc3RhcmUgaSB2YWxvcmkgZGEgc3VnZ2VyaXJlIG5lbGwnYXV0b2NvbXBsZXRlIHBlciBpIGNhbXBpIGluIGN1aSBsJ3V0ZW50ZSBkZXZlIHNjcml2ZXJlIGNvbWFuZGkgamF2YXNjcmlwdC5cclxuICAgKiBJbiBiYXNlIGFsbCd1bHRpbW8gY2FyYXR0ZXJlIGRpZ2l0YXRvIHZpZW5lIGltcG9zdGF0byB1biBlbGVuY28gZGkgb2dnZXR0aSBvIHByb3ByaWV0w6AgY2hlIGwndXRlbnRlIGhhIGEgZGlzcG9zaXppb25lIGluIHF1ZWwgbW9tZW50by5cclxuICAgKiBAcGFyYW0gZmllbGRzIEFycmF5IGRpIEJhc2VGaWVsZCBhZ2dpdW50aSBhbGxhIEZvcm1cclxuICAgKiBAcGFyYW0gdHlwZWRGb3JtdWxhIFN0cmluZ2EgZGlnaXRhdGEgZGFsbCd1dGVudGVcclxuICAgKiBAc3VtbWFyeSBJbCBtZXRvZG8gaW1wb3N0YSBpIHN1Z2dlcmltZW50aSBiYXNhbmRvc2kgc3UgMyBjYXNpOlxyXG4gICAqICAxKSBsJ3V0ZW50ZSBub24gaGEgZGlnaXRhdG8gbnVsbGEgbyBsYSBzdHJpbmdhIGRpZ2l0YXRhIGRhbGwndXRlbnRlIGZpbmlzY2UgY29uIHVubyBzcGF6aW8gdnVvdG9cclxuICAgKiAgMikgbGEgc3RyaW5nYSBkaWdpdGF0YSBkYWxsJ3V0ZW50ZSBmaW5pc2NlIGNvbiB1biBcIi5cIlxyXG4gICAqICAzKSBsYSBzdHJpbmdhIGRpZ2l0YXRhIGRhbGwndXRlbnRlIG5vbiBjb2luY2lkZSBjb24gbmVzc3VuIGFsdHJvIGNhc28gc29wcmEgKGZpbmlzY2UgY29uIHVuIGNhcmF0dGVyZSBxdWFsdW5xdWUpXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBHZXRBdXRvY29tcGxldGVPcHRpb25zKFxyXG4gICAgZmllbGRzOiBBcnJheTxCYXNlRmllbGQ+LFxyXG4gICAgdHlwZWRGb3JtdWxhOiBzdHJpbmdcclxuICApOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4ge1xyXG4gICAgbGV0IGF1dG9jb21wbGV0ZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgIC8vIFJlY3VwZXJvIGkgbm9taSBkaSB0dXR0aSBpIGNhbXBpIGNyZWF0aSBmaW5vIGFkIG9yYSBuZWxsYSBmb3JtLlxyXG4gICAgY29uc3QgYXZhaWxhYmxlUmVjUHJvcGVydGllczogQXJyYXk8c3RyaW5nPiA9IGZpZWxkcy5tYXAoKGYpID0+XHJcbiAgICAgIGYuTGFiZWwuc3BsaXQoXCIgXCIpLmpvaW4oXCJfXCIpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIE5lbCBjYXNpIGluIGN1aSBsJ3V0ZW50ZSBub24gaGEgaW5zZXJpdG8gbnVsbGEgb3BwdXJlIGxhIHN0cmluZ2EgZmluaXNjZSBjb24gdW5vIHNwYXppbyB2dW90byBvIHVuIHNpbWJvbG8gZGl2ZXJzbyBkYSBcIi5cIlxyXG4gICAgLy8gKHVuIGNhcmF0dGVyZSBub24gYWxmYW51bWVyaWNvKSBpbXBvc3RvIGNvbWUgc3VnZ2VyaW1lbnRpIHNvbG8gXCJyZWNcIiBlIFwiY3R4XCIsIG92dmVybyBnbGkgdW5pY2kgZHVlIG9nZ2V0dGkgYSBjdWkgbCd1dGVudGUgaGEgYWNjZXNzby5cclxuICAgIGlmIChcclxuICAgICAgIXR5cGVkRm9ybXVsYSB8fFxyXG4gICAgICAoIXR5cGVkRm9ybXVsYS5lbmRzV2l0aChcIi5cIikgJiZcclxuICAgICAgICBuZXcgUmVnRXhwKFwiW14wLTlhLXpBLVpfXVwiKS50ZXN0KFxyXG4gICAgICAgICAgdHlwZWRGb3JtdWxhLnN1YnN0cmluZyh0eXBlZEZvcm11bGEubGVuZ3RoIC0gMSwgdHlwZWRGb3JtdWxhLmxlbmd0aClcclxuICAgICAgICApKVxyXG4gICAgKSB7XHJcbiAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgeyBsYWJlbDogXCJyZWNcIiwgdmFsdWU6ICh0eXBlZEZvcm11bGEgPyB0eXBlZEZvcm11bGEgOiBcIlwiKSArIFwicmVjXCIgfSxcclxuICAgICAgICB7IGxhYmVsOiBcImN0eFwiLCB2YWx1ZTogKHR5cGVkRm9ybXVsYSA/IHR5cGVkRm9ybXVsYSA6IFwiXCIpICsgXCJjdHhcIiB9LFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG4gICAgLy8gU2UgbGEgc3RyaW5nYSBmaW5pc2NlIGNvbiB1biBcIi5cIiB2dW9sIGRpcmUgY2hlIGwndXRlbnRlIHN0YSBjZXJjYW5kbyBkaSBhY2NlZGVyZSBhZCB1bmEgcHJvcHJpZXTDoCBkaSB1biBvZ2dldHRvXHJcbiAgICAvLyBhIHN1YSBkaXNwb3NpemlvbmUuIFJlY3VwZXJvIGlsIG5vbWUgZGVsbCd1bHRpbW8gb2dnZXR0byBkaWdpdGF0byBkYWxsJ3V0ZW50ZSBlIHNlIGwnb2dnZXR0byBzY2VsdG8gw6ggXCJyZWNcIiBvIFwiY3R4XCJcclxuICAgIC8vIGFsbG9yYSBzdWdnZXJpc2NvIGxlIHByb3ByaWV0w6AgY2hlIGVzaXN0b25vIGFsbCdpbnRlcm5vIGRpIHF1ZXN0aSBvZ2dldHRpIGFsdHJpbWVudGkgbm9uIG1vc3RybyBudWxsYS5cclxuICAgIGVsc2UgaWYgKHR5cGVkRm9ybXVsYS5lbmRzV2l0aChcIi5cIikpIHtcclxuICAgICAgY29uc3QgZm9ybXVsYVBpZWNlczogQXJyYXk8c3RyaW5nPiA9IHR5cGVkRm9ybXVsYVxyXG4gICAgICAgIC5zcGxpdChcIiBcIilcclxuICAgICAgICBbdHlwZWRGb3JtdWxhLnNwbGl0KFwiIFwiKS5sZW5ndGggLSAxXS5zcGxpdChcIi5cIik7XHJcbiAgICAgIGlmIChmb3JtdWxhUGllY2VzW2Zvcm11bGFQaWVjZXMubGVuZ3RoIC0gMl0gPT09IFwicmVjXCIpIHtcclxuICAgICAgICBhdXRvY29tcGxldGVPcHRpb25zID0gYXZhaWxhYmxlUmVjUHJvcGVydGllcy5tYXAoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBmLCB2YWx1ZTogdHlwZWRGb3JtdWxhICsgZiB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGZvcm11bGFQaWVjZXNbZm9ybXVsYVBpZWNlcy5sZW5ndGggLSAyXSA9PT0gXCJjdHhcIikge1xyXG4gICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBPYmplY3Qua2V5cyhVdGlsaXR5SGVscGVyU2VydmljZS5jb250ZXh0KS5tYXAoXHJcbiAgICAgICAgICAoZikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogZiwgdmFsdWU6IHR5cGVkRm9ybXVsYSArIGYgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIGZvcm11bGFQaWVjZXMubGVuZ3RoID4gMiAmJlxyXG4gICAgICAgIGZvcm11bGFQaWVjZXNbZm9ybXVsYVBpZWNlcy5sZW5ndGggLSAzXSA9PT0gXCJjdHhcIiAmJlxyXG4gICAgICAgIGZvcm11bGFQaWVjZXNbZm9ybXVsYVBpZWNlcy5sZW5ndGggLSAyXSA9PT0gXCJVc2VyXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXV0b2NvbXBsZXRlT3B0aW9ucyA9IE9iamVjdC5rZXlzKFxyXG4gICAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuY29udGV4dC5Vc2VyXHJcbiAgICAgICAgKS5tYXAoKGYpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBmLCB2YWx1ZTogdHlwZWRGb3JtdWxhICsgZiB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gSW4gdHV0dGkgZ2xpIGFsdHJpIGNhc2ksIG92dmVybyBxdWFuZG8gbGEgc3RyaW5nYSBkaWdpdGF0YSBmaW5pc2NlIGNvbiB1biBjYXJhdHRlcmUgZGl2ZXJzbyBkYSBxdWVsbGlcclxuICAgIC8vIGNvbnRyb2xsYXRpIGZpbm9yYSwgdnVvbCBkaXJlIGNoZSBsJ3V0ZW50ZSBzdGEgZGlnaXRhbnRvIGlsIG5vbWUgZGkgdW4gb2dnZXR0bywgdW5hIHByb3ByaWV0w6AgbyB1bmFcclxuICAgIC8vIGZ1bnppb25lIGphdmFzY3JpcHQuIENvbnRyb2xsbyBsYSBwYXJvbGEgY2hlIGwndXRlbnRlIHN0YSBkaWdpdGFuZG8gZSBzZSBmYSBwYXJ0ZSBkaSB1bm8gZGVnbGkgb2dnZXR0aSBhIGRpc3Bvc2l6aW9uZVxyXG4gICAgLy8gbyB1bmEgcHJvcHJpZXTDoCBkaSBlc3NpIGFsbG9yYSBzdWdnZXJpc2NvIGkgcG9zc2liaWxpIG1hdGNoLlxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGF2YWlsYWJsZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgICAgLy8gUHJlbmRvIHR1dHRpIGkgYmxvY2NoaSBkaSBjYXJhdHRlcmkgZGlnaXRhdGkgZGFsbCd1dGVudGVcclxuICAgICAgY29uc3QgYWxsRm9ybXVsYVdvcmRzOiBBcnJheTxzdHJpbmc+ID0gdHlwZWRGb3JtdWxhLnNwbGl0KFwiIFwiKTtcclxuICAgICAgLy8gUHJlbmRvIGwndWx0aW1vIGJsb2NjbyBkaSBjYXJhdHRlcmkgZGlnaXRhdG8gZGFsbCd1dGVudGVcclxuICAgICAgY29uc3QgbGFzdFR5cGVkU3RyaW5nOiBzdHJpbmcgPVxyXG4gICAgICAgIGFsbEZvcm11bGFXb3Jkc1thbGxGb3JtdWxhV29yZHMubGVuZ3RoIC0gMV07XHJcblxyXG4gICAgICAvLyBTZSBsYSBsJ3VsdGltYSBzdHJpbmdhIGRpZ2l0YXRhIG5vbiBjb250aWVuZSBjYXJhdHRlcmkgc3BlY2lhbGkgYWxsb3JhIHNwbGl0dG8gbGEgc3RyaW5nYVxyXG4gICAgICAvLyBzdWkgXCIuXCIgZSBpbXBvc3RvIGkgc3VnZ2VyaW1lbnRpIGluIGJhc2UgYWwgcGF0aCBkZWxsYSBwcm9ycGlldMOgIGNoZSBzaSBzdGEgZGlnaXRhbmRvLlxyXG4gICAgICBpZiAoIW5ldyBSZWdFeHAoXCJbXjAtOWEtekEtWl8uXVwiKS50ZXN0KGxhc3RUeXBlZFN0cmluZykpIHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0eVBhdGggPSBsYXN0VHlwZWRTdHJpbmcuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RUeXBlZFdvcmsgPSBwcm9wZXJ0eVBhdGhbcHJvcGVydHlQYXRoLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgICBsZXQgcHJvcGVydGllc1RvQ2hlY2s6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHByb3BlcnR5UGF0aC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgcHJvcGVydGllc1RvQ2hlY2sgPSBbXCJyZWNcIiwgXCJjdHhcIl07XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIHByb3BlcnR5UGF0aC5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICBwcm9wZXJ0eVBhdGhbcHJvcGVydHlQYXRoLmxlbmd0aCAtIDJdID09PSBcImN0eFwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBwcm9wZXJ0aWVzVG9DaGVjayA9IE9iamVjdC5rZXlzKFV0aWxpdHlIZWxwZXJTZXJ2aWNlLmNvbnRleHQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICBwcm9wZXJ0eVBhdGgubGVuZ3RoID4gMiAmJlxyXG4gICAgICAgICAgcHJvcGVydHlQYXRoW3Byb3BlcnR5UGF0aC5sZW5ndGggLSAzXSA9PT0gXCJjdHhcIiAmJlxyXG4gICAgICAgICAgcHJvcGVydHlQYXRoW3Byb3BlcnR5UGF0aC5sZW5ndGggLSAyXSA9PT0gXCJVc2VyXCJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHByb3BlcnRpZXNUb0NoZWNrID0gT2JqZWN0LmtleXMoVXRpbGl0eUhlbHBlclNlcnZpY2UuY29udGV4dC5Vc2VyKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgcHJvcGVydHlQYXRoLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgIHByb3BlcnR5UGF0aFtwcm9wZXJ0eVBhdGgubGVuZ3RoIC0gMl0gPT09IFwicmVjXCJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHByb3BlcnRpZXNUb0NoZWNrID0gYXZhaWxhYmxlUmVjUHJvcGVydGllcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEVzZWd1byBpbCBjb250cm9sbG8gc3VsbGUgcHJvcHJpZXTDoCByZWN1cGVyYXRlLCBhZ2dpdW5nbyBhaSBzdWdnZXJpbWVudGkgdHV0dGkgaSBub21pIGNoZSBpbml6aWFubyBjb25cclxuICAgICAgICAvLyBxdWVsbG8gY2hlIHN0YSBkaWdpdGFuZG8gbCd1dGVudGUuXHJcbiAgICAgICAgcHJvcGVydGllc1RvQ2hlY2suZm9yRWFjaCgocHJvcCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHByb3Auc3RhcnRzV2l0aChsYXN0VHlwZWRXb3JrKSkge1xyXG4gICAgICAgICAgICBhdmFpbGFibGVPcHRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBwcm9wLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdHlwZWRGb3JtdWxhICtcclxuICAgICAgICAgICAgICAgIHByb3Auc3Vic3RyaW5nKGxhc3RUeXBlZFdvcmsubGVuZ3RoLCBwcm9wLmxlbmd0aCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhdXRvY29tcGxldGVPcHRpb25zID0gYXZhaWxhYmxlT3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXV0b2NvbXBsZXRlT3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBkYWxsJ2h0bWwgcGVyIGltcG9zdGFyZSBsZSBjbGFzc2kgY3NzIHBlciB2aXN1YWxpenphcmUgaWwgY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBTZSBwZXIgaWwgZmllbGQgc29ubyBzdGF0ZSBzcGVjaWZpY2F0ZSBkZWxsZSBjbGFzc2kgYWxsb3JhIHZlbmdvbm8gYXBwbGNhdGUgcXVlbGxlLCBhbHRyaW1lbnRpIHZlbmdvbm8gdXNhdGVcclxuICAgKiBkZWxsZSBjbGFzc2kgZGkgZGVmYXVsdC5cclxuICAgKiBAcGFyYW0gZmllbGQgQmFzZUZpZWxkIGRhIHZpc3VhbGl6emFyZS5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1bmEgc3RyaW5nYSBjb250ZW5lbnRlIGxlIGNsYXNzaSBjc3MgZGEgYXBwbGljYXJlLlxyXG4gICAqL1xyXG4gIGdldEZpZWxkU3lsZUNsYXNzKGZpZWxkOiBCYXNlRmllbGQpOiBzdHJpbmcge1xyXG4gICAgICAgIFxyXG4gICAgdmFyIGNvbHNwYW52YWx1ZXMgPSBcIlwiO1xyXG4gICAgdmFyIHZpc2liaWxpdHl2YWx1ZXMgPSBcIlwiO1xyXG4gICAgaWYgKGZpZWxkLkNvbFNwYW5TaXplcyAmJiBmaWVsZC5Db2xTcGFuU2l6ZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgIGNvbHNwYW52YWx1ZXMgPSBmaWVsZC5Db2xTcGFuU2l6ZXMubWFwKChzaXplKSA9PlxyXG4gICAgICBDb2xTcGFuU2l6ZXNFbnVtW3NpemVdLnRvU3RyaW5nKCkpLmpvaW4oXCIgXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29sc3BhbnZhbHVlcyA9IHRoaXMuZ2V0RGVmYXVsdFN0eWxlQ2xhc3MoZmllbGQsICdhbGlnbi1zZWxmLWVuZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZmllbGQuSW5MaXN0Vmlldyl7XHJcbiAgICAgIGlmIChmaWVsZC5JbnZpc2liaWxpdHkgPT0gRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPKXsgdmlzaWJpbGl0eXZhbHVlcyA9IFwidmlzaWJpbGl0eV9oaWRkZW5cIjsgfVxyXG4gICAgICBpZiAoZmllbGQuSW52aXNpYmlsaXR5ID09IEZpZWxkSW52aXNpYmlsaXR5RW51bVtcIk5BU0NPU1RPIENPTiBBUkVBIFZJU0lCSUxFXCJdKXsgdmlzaWJpbGl0eXZhbHVlcyA9IFwidmlzaWJpbGl0eV90cmFuc3BhcmVudFwiOyB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbHNwYW52YWx1ZXMgKyBcIiBcIiArIHZpc2liaWxpdHl2YWx1ZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gZGFsbCdodG1sIHBlciBpbXBvc3RhcmUgbGUgY2xhc3NpIGNzcyBwZXIgdmlzdWFsaXp6YXJlIGlsIGNhbXBvIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0uXHJcbiAgICogU2UgcGVyIGlsIGZpZWxkIHNvbm8gc3RhdGUgc3BlY2lmaWNhdGUgZGVsbGUgY2xhc3NpIGFsbG9yYSB2ZW5nb25vIGFwcGxjYXRlIHF1ZWxsZSwgYWx0cmltZW50aSB2ZW5nb25vIHVzYXRlXHJcbiAgICogZGVsbGUgY2xhc3NpIGRpIGRlZmF1bHQuXHJcbiAgICogQHBhcmFtIGZpZWxkIEJhc2VGaWVsZCBkYSB2aXN1YWxpenphcmUuXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgdW5hIHN0cmluZ2EgY29udGVuZW50ZSBsZSBjbGFzc2kgY3NzIGRhIGFwcGxpY2FyZS5cclxuICAgKi9cclxuICBnZXRGaWVsZEFuc3dlclN0eWxlQ2xhc3MoZmllbGQ6IEJhc2VGaWVsZCk6IHN0cmluZyB7XHJcbiAgICAgICAgXHJcbiAgICBpZiAoZmllbGQuQW5zd2VyU3R5bGUgJiYgZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzICYmIGZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplcy5sZW5ndGggPiAwKXtcclxuICAgICAgLy8vL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2ZpZWxkJywgZmllbGQpXHJcblxyXG4gICAgICByZXR1cm4gZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzLm1hcCgoc2l6ZSkgPT5cclxuICAgICAgICBDb2xTcGFuU2l6ZXNFbnVtW3NpemVdLnRvU3RyaW5nKClcclxuICAgICAgKS5qb2luKFwiIFwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0U3R5bGVDbGFzcyhmaWVsZCwgJ2FsaWduLXNlbGYtc3RhcnQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFN0eWxlQ2xhc3MoZmllbGQ6IEJhc2VGaWVsZCwgZGVmYXVsdEFsaWduOiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICBcclxuICAgIHN3aXRjaCAoZmllbGQuRmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkNhbXBvIGRpIHRlc3RvXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQ2FtcG8gZGkgdGVzdG8nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctNCBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQXJlYSBkaSB0ZXN0b1wiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0FyZWEgZGkgdGVzdG8nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJCb29sZWFub1wiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0Jvb2xlYW5vJylcclxuICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTQgY29sLWxnLTQgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkRhdGEgZS9vIG9yYVwiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0RhdGEgZS9vIG9yYScpXHJcbiAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJDYW1wbyBudW1lcmljb1wiXTpcclxuICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0NhbXBvIG51bWVyaWNvJylcclxuICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTQgY29sLWxnLTQgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkFsbGVnYXRvXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQWxsZWdhdG8nKVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIChmaWVsZCBhcyBBdHRhY2htZW50RmllbGQpLklzTXVsdGlBdHRhY2ggfHxcclxuICAgICAgICAgICgoZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5NZXRhZGF0YUZpZWxkcyAmJlxyXG4gICAgICAgICAgICAoZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5NZXRhZGF0YUZpZWxkcy5sZW5ndGggPiAwKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTIgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctNCBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkltbWFnaW5lXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnSW1tYWdpbmUnKVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKGZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaCB8fFxyXG4gICAgICAgICAgKChmaWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLk1ldGFkYXRhRmllbGRzICYmXHJcbiAgICAgICAgICAgIChmaWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLk1ldGFkYXRhRmllbGRzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTEyIGNvbC1sZy0xMiBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICAgIH0qL1xyXG4gICAgICAgIFxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgICAgICAgLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdFbGVuY28gZ2VuZXJpY28nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wtbGctNCBcIiArIGRlZmF1bHRBbGlnbjtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiTG9va3VwXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnTG9va3VwJylcclxuICAgICAgICByZXR1cm4gXCJjb2wtc20tMTIgY29sLW1kLTQgY29sLWxnLTQgXCIgKyBkZWZhdWx0QWxpZ247XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdOlxyXG4gICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnRm9ybSBkaSBkZXR0YWdsaW8nKVxyXG4gICAgICAgIHJldHVybiBcImNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06XHJcbiAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFdGljaGV0dGFcIl06XHJcbiAgICAgICAgcmV0dXJuIFwiY29sLXNtLTEyIGNvbC1tZC00IGNvbC1sZy00IFwiICsgZGVmYXVsdEFsaWduO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgaWwgRm9ybUdyb3VwIGNoZSByYXBwcmVzZW50YSB1bmEgRm9ybSBhIHBhcnRpcmUgZGFpIHN1b2kgQmFzZUZpZWxkLlxyXG4gICAqIEBwYXJhbSBmb3JtRmllbGRzIExpc3RhIGRlaSBCYXNlRmllbGQgY2hlIGNvbXBvbmdvbm8gbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gcmVjb3JkIE9nZ2V0dG8gZGkgdGlwbyBSZWNvcmQgY2hlIGNvbnRpZW5lIGkgdmFsb3JpIGRlaSBjYW1waS5cclxuICAgKiBAcGFyYW0gb25seVZpZXcgU2UgVFJVRSBkaXNhYmlsaXRhIGxhIGZvcm0gcGVyIHJlbmRlcmxhIGluIHNvbGEgbGV0dHVyYS5cclxuICAgKiBAcGFyYW0gaW5jbHVkZUN1cnJlbnRGb3JtSW5GaWVsZCBTZSBUUlVFIHBvcG9sYSBsYSBwcm9wcmlldMOgIEZvcm1Gb3JtR3JvdXAgYWxsJ2ludGVybm8gZGkgb2duaSBCYXNlRmllbGQgY29uIGlsIEZvcm1Hcm91cCBjb3JyZW50ZS5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBGb3JtR3JvdXAgcmFwcHJlc2VudGF0ZSBsYSBGb3JtIGEgY3VpIGFwcGFydGVuZ29ubyBpIEJhc2VGaWVsZCByaWNldnV0aSBpbiBpbnB1dC5cclxuICAgKi9cclxuICBwdWJsaWMgQ3JlYXRlRm9ybUZvcm1Hcm91cChcclxuICAgIGZvcm1GaWVsZHM6IEFycmF5PEJhc2VGaWVsZD4sXHJcbiAgICByZWNvcmQ6IFJlY29yZCxcclxuICAgIG9ubHlWaWV3ID0gZmFsc2UsXHJcbiAgICBpbmNsdWRlQ3VycmVudEZvcm1JbkZpZWxkID0gdHJ1ZVxyXG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgLy8gLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiZm9ybUZpZWxkc1wiLCBmb3JtRmllbGRzKTtcclxuICAgIC8vIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInJlY29yZFwiLCByZWNvcmQpO1xyXG4gICAgLy8gLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwib25seVZpZXdcIiwgb25seVZpZXcpO1xyXG4gICAgLy8gLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaW5jbHVkZUN1cnJlbnRGb3JtSW5GaWVsZFwiLCBpbmNsdWRlQ3VycmVudEZvcm1JbkZpZWxkKTtcclxuXHJcbiAgICBjb25zdCBmb3JtRm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoW10pO1xyXG5cclxuICAgIGZvcm1GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgIC8vICAgLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKGZpZWxkKTtcclxuICAgICAgZm9ybUZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICBmaWVsZC5OYW1lLFxyXG4gICAgICAgIHRoaXMuY3JlYXRlRmllbGRGb3JtQ29udHJvbChmaWVsZCwgcmVjb3JkKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5jbHVkZUN1cnJlbnRGb3JtSW5GaWVsZCkge1xyXG4gICAgICAgIC8vIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhmaWVsZCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICBmaWVsZC5Gb3JtRm9ybUdyb3VwID0gZm9ybUZvcm07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKG9ubHlWaWV3KSB7XHJcbiAgICAgIGZvcm1Gb3JtLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybUZvcm07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBwZXIgY3JlYXJlIGUgYWdnaXVuZ2VyZSBhbCBGb3JtR3JvdXAgcmFwcHJlc2VudGFudGUgbGEgZm9ybSB1biBudW92byBGb3JtQ29udHJvbCBhIHBhcnRpcmUgZGEgdW4gRmllbGQuXHJcbiAgICogSW4gbnVvdm8gRm9ybUNvbnRyb2wgYXZyw6AgaWwgbm9tZSBkZWwgY2FtcG8gcGFzc2F0byBlIHZlcnJhbm5vIGltcG9zdGF0aSBpIFZhbGlkYXRvcnMgaW4gYmFzZSBhbCB0aXBvIGRlbCBjYW1wbyBzdGVzc28uXHJcbiAgICogQHBhcmFtIGZpZWxkIEJhc2VGaWVsZCBwZXIgY3VpIGNyZWFyZSBpbCBGb3JtQ29udHJvbCBkYSBpbnNlcmlyZSBuZWwgRm9ybUdyb3VwIGRlbGEgZm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUZpZWxkRm9ybUNvbnRyb2woXHJcbiAgICBmaWVsZDogQmFzZUZpZWxkLFxyXG4gICAgcmVjb3JkOiBSZWNvcmRcclxuICApOiBBYnN0cmFjdENvbnRyb2wge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XHJcblxyXG4gICAgaWYgKGZpZWxkLlJlcXVpcmVkKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgc3dpdGNoIChmaWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl06XHJcbiAgICAgICAgaWYgKChmaWVsZCBhcyBUZXh0RmllbGQpLk1heExlbmdodCkge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKChmaWVsZCBhcyBUZXh0RmllbGQpLk1heExlbmdodCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGZpZWxkIGFzIFRleHRGaWVsZCkuTWluTGVuZ2h0KSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoKGZpZWxkIGFzIFRleHRGaWVsZCkuTWluTGVuZ2h0KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAoKGZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2spIHtcclxuICAgICAgICAgIGNhc2UgVGV4dE1hc2tFbnVtLlVybDpcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihVcmxSZWdleCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgVGV4dE1hc2tFbnVtLkVtYWlsOlxyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBUZXh0TWFza0VudW0uVGVsZWZvbm86XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oVGVsUmVnZXgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJBcmVhIGRpIHRlc3RvXCJdOlxyXG4gICAgICAgIGlmICgoZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWF4TGVuZ2h0KSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKChmaWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5NYXhMZW5naHQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1pbkxlbmdodCkge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgoZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWluTGVuZ2h0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5BbGxlZ2F0bzpcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lOlxyXG4gICAgICAgIGlmIChmaWVsZC5SZXF1aXJlZCkgdmFsaWRhdG9ycy5wdXNoKEFycmF5VmFsaWRhdG9ycy5taW5MZW5naHQoMSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgICAgICAgaWYgKChmaWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSXNNdWx0aUNob2ljaGUpXHJcbiAgICAgICAgICBpZiAoZmllbGQuUmVxdWlyZWQpIHZhbGlkYXRvcnMucHVzaChBcnJheVZhbGlkYXRvcnMubWluTGVuZ2h0KDEpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdOlxyXG4gICAgICAgIGlmICgoZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5Jc011bHRpQ2hvaWNoZSlcclxuICAgICAgICAgIGlmIChmaWVsZC5SZXF1aXJlZCkgdmFsaWRhdG9ycy5wdXNoKEFycmF5VmFsaWRhdG9ycy5taW5MZW5naHQoMSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Db250cm9sKHJlY29yZFtmaWVsZC5OYW1lXSwgdmFsaWRhdG9ycyk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjb25maWd1cmFyZSBnbGkgZW5kcG9pbnQgZGEgdXNhcmUgZGkgZGVmYXVsdCBhIHBhcnRpcmUgZGFsbCd1cmwgYmFzZSBkZWwgc2VydmVyXHJcbiAgICogYSBjdWkgc2kgZGV2ZSBjb25uZXR0ZXJlIGUgYWwgdG9rZW4gZGEgcGFzc2FyZSBwZXIgYXV0ZW50aWNhcnNpLlxyXG4gICAqIEBwYXJhbSBiYXNlU2VydmVyVXJsIFN0cmluZ2EgZGVsbCd1cmwgYmFzZSBkZWwgc2VydmVyIChlczogXCJodHRwOi8vbG9jYWxob3N0OjUwMDBcIikuXHJcbiAgICogQHBhcmFtIHVzZXJUb2tlbiBUb2tlbiBkZWxsJ3V0ZW50ZSBsb2dnYXRvIGRhIHVzYXJlIHBlciBhdXRlbnRpY2Fyc2kgc2UgbmVjZXNzYXJpby5cclxuICAgKiBAcmV0dXJucyBSZXNpdHVpc2NlIGxhIGNvbmZpZ3VyYXppb25lIGNvbXBsZXRhIGRlZ2xpIGVuZFBvaW50IGRhIHVzYXJlIGRpIGRlZmF1bHQuXHJcbiAgICovXHJcbiAgcHVibGljIENvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoXHJcbiAgICBiYXNlU2VydmVyVXJsOiBzdHJpbmcsXHJcbiAgICB1c2VyVG9rZW46IHN0cmluZ1xyXG4gICk6IEVuZFBvaW50Q29uZmlndXJhdGlvbiB7XHJcbiAgICBsZXQgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb24gPVxyXG4gICAgICBuZXcgRW5kUG9pbnRDb25maWd1cmF0aW9uKGJhc2VTZXJ2ZXJVcmwsIHVzZXJUb2tlbik7XHJcblxyXG4gICAgLy8gZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMgPSB7XHJcbiAgICAvLyAgIEdldEJ5Rm9ybUlERW5kUG9pbnQ6IHtcclxuICAgIC8vICAgICBVcmw6IGJhc2VTZXJ2ZXJVcmwgKyBcIi9hcGkvdjEvZ2V0YWxsXCIsXHJcbiAgICAvLyAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgIC8vICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIEdldEFsbEJ5RW50QW5kVXNlcklERW5kUG9pbnQ6IHtcclxuICAgIC8vICAgICBVcmw6IGJhc2VTZXJ2ZXJVcmwgKyBcIi9hcGkvdjEvR2V0QWxsQnlVc2VySURcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgR2V0QnlJREVuZFBvaW50OiB7XHJcbiAgICAvLyAgICAgVXJsOiBiYXNlU2VydmVyVXJsICsgXCIvYXBpL3YxL2dldEJ5SURcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgU2F2ZUVuZFBvaW50OiB7XHJcbiAgICAvLyAgICAgVXJsOiBiYXNlU2VydmVyVXJsICsgXCIvYXBpL3YxL3NhdmVcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLlBPU1QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIER1cGxpY2F0ZUVuZFBvaW50OiB7XHJcbiAgICAvLyAgICAgVXJsOiBiYXNlU2VydmVyVXJsICsgXCIvYXBpL3YxL2R1cGxpY2F0ZVwiLFxyXG4gICAgLy8gICAgIFRva2VuOiB1c2VyVG9rZW4sXHJcbiAgICAvLyAgICAgUmVxdWVzdE1ldGhvZDogUmVxdWVzdE1ldGhvZEVudW0uR0VULFxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBEZWxldGVFbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS92MS9kZWxldGVcIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkRFTEVURSxcclxuICAgIC8vICAgfSxcclxuICAgIC8vIH07XHJcbiAgICAvLyBlbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMgPSB7XHJcbiAgICAvLyAgIEdldEJ5SURFbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS9jb25mL2Zvcm1cIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLkdFVCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgR2V0QnlJREFuZFZlcnNpb25FbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS9jb25mL0dldEJ5SURBbmRWZXJzaW9uXCIsXHJcbiAgICAvLyAgICAgVG9rZW46IHVzZXJUb2tlbixcclxuICAgIC8vICAgICBSZXF1ZXN0TWV0aG9kOiBSZXF1ZXN0TWV0aG9kRW51bS5HRVQsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIFNhdmVFbmRQb2ludDoge1xyXG4gICAgLy8gICAgIFVybDogYmFzZVNlcnZlclVybCArIFwiL2FwaS9jb25mL2Zvcm1cIixcclxuICAgIC8vICAgICBUb2tlbjogdXNlclRva2VuLFxyXG4gICAgLy8gICAgIFJlcXVlc3RNZXRob2Q6IFJlcXVlc3RNZXRob2RFbnVtLlBPU1QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyB9O1xyXG4gICAgcmV0dXJuIGVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiBwcmVuZGUgdW5hIHN0cmluZ2EgaW4gaW5wdXQgZSB2ZXJpZmljYSBjaGUgb2duaSBwYXJlbnRlc2kgYXBlcnRhIHZlbmdhIGFuY2hlIGNoaXVzYVxyXG4gICAqIEByZXR1cm5zIHRydWUgc2UgbGUgcGFyZW50ZXNpIHNvbm8gcGFyaSBlIG9nbmkgcGFyZW50ZXNpIGNoaXVkZSBzZSBzdGVzc2EsIGZhbHNlIHNlIG1hbmNhbm8gcGFyZW50ZXNpIG8gbm9uIHZlbmdvbm8gY2hpdXNlXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdDaGVja1BhcmVudGVzaXMoZXhwcmVzc2lvbiwgcmVxdWlyZWQgPSBmYWxzZSkge1xyXG4gICAgaWYgKGV4cHJlc3Npb24gPT0gdW5kZWZpbmVkIHx8IGV4cHJlc3Npb24gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gcmVxdWlyZWQgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RhY2sgPSBbXTtcclxuICAgIGxldCBjdXJyZW50O1xyXG4gICAgY29uc3QgbWF0Y2hMb29rdXAgPSB7XHJcbiAgICAgIFwiKFwiOiBcIilcIixcclxuICAgICAgXCJbXCI6IFwiXVwiLFxyXG4gICAgICBcIntcIjogXCJ9XCIsXHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwcmVzc2lvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjdXJyZW50ID0gZXhwcmVzc2lvbltpXTsgLy9lYXNpZXIgdGhhbiB3cml0aW5nIGl0IG92ZXIgYW5kIG92ZXJcclxuXHJcbiAgICAgIGlmIChjdXJyZW50ID09PSBcIihcIiB8fCBjdXJyZW50ID09PSBcIltcIiB8fCBjdXJyZW50ID09PSBcIntcIikge1xyXG4gICAgICAgIHN0YWNrLnB1c2goY3VycmVudCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PT0gXCIpXCIgfHwgY3VycmVudCA9PT0gXCJdXCIgfHwgY3VycmVudCA9PT0gXCJ9XCIpIHtcclxuICAgICAgICBjb25zdCBsYXN0QnJhY2tldCA9IHN0YWNrLnBvcCgpO1xyXG5cclxuICAgICAgICBpZiAobWF0Y2hMb29rdXBbbGFzdEJyYWNrZXRdICE9PSBjdXJyZW50KSB7XHJcbiAgICAgICAgICAvL2lmIHRoZSBzdGFjayBpcyBlbXB0eSwgLnBvcCgpIHJldHVybnMgdW5kZWZpbmVkLCBzbyB0aGlzIGV4cHJlc3Npb24gaXMgc3RpbGwgY29ycmVjdFxyXG5cclxuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy90ZXJtaW5hdGUgaW1tZWRpYXRlbHkgLSBubyBuZWVkIHRvIGNvbnRpbnVlIHNjYW5uaW5nIHRoZSBzdHJpbmdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RhY2subGVuZ3RoID09PSAwOyAvL2FueSBlbGVtZW50cyBtZWFuIGJyYWNrZXRzIGxlZnQgb3BlblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIGxhIGNvbmZpZ3VyYXppb25lIGRpIHVuIGVuZHBvaW50IGNvc3RydWlzY2UgbCd1cmwgZGEgY2hpYW1hcmUsIGdsaSBldmVudHVhbGkgcGFyYW1ldHJpXHJcbiAgICogZGEgcGFzc2FyZSAobmVsIGJvZHkgbyBuZWxsYSByb3R0YSkgZWQgZWZmZXR0dWEgbGEgY2hpYW1hdGEuIEFsIHRlcm1pbmUgZGVsbGEgY2hpYW1hdGEgZXNlZ3VlIGxlIGV2ZW50dWFsaVxyXG4gICAqIGZ1bnppb25pIGRpIGNhbGxiYWNrIChzaWEgaW4gY2FzbyBkaSBzdWNjZXNzbyBjaGUgaW4gY2FzbyBkaSBlcnJvcmUpIHBhc3NhdGUgaW4gaW5wdXQuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50RGF0YSBDb2ZpZ3VyYXppb25lIGRlbGwnZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICogQHBhcmFtIGR5bmFtaWNNb2R1bGVQYXJhbXMgQXJyYXkgZGVpIHBhcmFtZXRyaSBhZ2dpdW50aSBkYWwgbW9kdWxvIGRpbmFtaWNvIGEgcXVlbGxpIGdpw6AgY29uZmlndXJhdGlcclxuICAgKiAoYWQgZXNlbXBpbyBpbCByZWNvcmQgbyBsYSBmb3JtIGRhIHNhbHZhcmUgb3BwdXJlIGwnSUQgcGVyIHJlY3VwZXJhcmUgdW5hIHBhcnRpY29sYXJlIGVudGl0w6ApLlxyXG4gICAqIEBwYXJhbSBjYWxsYmFjayBNZXRvZG8gZGEgZXNlZ3VpcmUgaW4gY2FzbyBkaSBzdWNjZXNzbyBkb3BvIGxhIGNoaWFtYXRhIGh0dHAuXHJcbiAgICogTk9UQTogaW4gaW5wdXQgdmllbmUgcGFzc2F0YSBsYSByaXNwb3N0YSBkZWxsYSBjaGlhbWF0YSBzdGVzc2EuXHJcbiAgICogQHBhcmFtIGVycm9yQ2FsbEJhY2sgTWV0b2RvIGRhIGVzZWd1aXJlIGluIGNhc28gZGkgZXJyb3JlIGRvcG8gbGEgY2hpYW1hdGEgaHR0cC5cclxuICAgKiBOT1RBOiBpbiBpbnB1dCB2aWVuZSBwYXNzYXRvIGwnZXJyb3JlIGdlbmVyYXRvIGRlbGxhIGNoaWFtYXRhIHN0ZXNzYS5cclxuICAgKi9cclxuICBwdWJsaWMgUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgZW5kUG9pbnREYXRhOiBFbmRQb2ludERhdGEsXHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID0gbnVsbCxcclxuICAgIGNhbGxiYWNrOiAoZTogRm9ybSB8IFJlY29yZCB8IEFycmF5PFJlY29yZD4gfCBEeW5BdHRhY2htZW50KSA9PiB2b2lkID0gbnVsbCxcclxuICAgIGVycm9yQ2FsbEJhY2s6IChlcnI6IHVua25vd24pID0+IHZvaWQgPSBudWxsXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmFkZFJlcXVlc3RDb3VudGVyKCk7XHJcblxyXG4gICAgbGV0IHVybCA9IGAke2VuZFBvaW50RGF0YS5Vcmx9YDtcclxuICAgIGxldCBxdWVyeVBhcmFtczogc3RyaW5nID0gbnVsbDtcclxuICAgIGNvbnN0IGJvZHlQYXJhbXMgPSB7XHJcbiAgICAgIEFkZGl0aW9uYWxQYXJhbXM6IHt9LFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyNyZWdpb24gbWVyZ2VQYXJhbVxyXG4gICAgLy8gdW5pc2NvIGkgZGF0aSBkaSBkZWZhdWx0IGRlZmluaXRpIG5lbGxhIGNvbmZpZ3VyYXppb25lIGRlbGxhIGNoaWFtYXRhIGNvbiBpIGRhdGkgY2hlIGltcG9zdG8gbmVsbGEgY2hpYW1hdGEgc3BlY2lmaWNhXHJcbiAgICBpZiAoZW5kUG9pbnREYXRhLlBhcmFtcyA9PSB1bmRlZmluZWQgfHwgZW5kUG9pbnREYXRhLlBhcmFtcyA9PSBudWxsKSB7XHJcbiAgICAgIGVuZFBvaW50RGF0YS5QYXJhbXMgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChkeW5hbWljTW9kdWxlUGFyYW1zID09IHVuZGVmaW5lZCB8fCBkeW5hbWljTW9kdWxlUGFyYW1zID09IG51bGwpIHtcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lcmdlZFBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9IFsuLi5lbmRQb2ludERhdGEuUGFyYW1zXTtcclxuXHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLmZvckVhY2goKG9iaikgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gbWVyZ2VkUGFyYW1zLmZpbmRJbmRleChcclxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5QYXJhbU5hbWUgPT09IG9iai5QYXJhbU5hbWVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIG1lcmdlZFBhcmFtc1tleGlzdGluZ0luZGV4XS5QYXJhbVZhbHVlID0gb2JqLlBhcmFtVmFsdWU7XHJcbiAgICAgICAgbWVyZ2VkUGFyYW1zW2V4aXN0aW5nSW5kZXhdLlBhcmFtVHlwZSA9IG9iai5QYXJhbVR5cGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWVyZ2VkUGFyYW1zLnB1c2gob2JqKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKG1lcmdlZFBhcmFtcykge1xyXG4gICAgICBtZXJnZWRQYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHBhcmFtLlBhcmFtVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl06IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RyaW5nUGFyYW06IHN0cmluZyA9XHJcbiAgICAgICAgICAgICAgcGFyYW0uUGFyYW1OYW1lICsgXCI9XCIgKyBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9XHJcbiAgICAgICAgICAgICAgKHF1ZXJ5UGFyYW1zID09IG51bGwgPyBcIlwiIDogcXVlcnlQYXJhbXMgKyBcIiZcIikgKyBzdHJpbmdQYXJhbTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIFBhcmFtVHlwZUVudW1bXCJJbiByb3V0ZVwiXToge1xyXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAodXJsLmVuZHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIikgKyBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl06IHtcclxuICAgICAgICAgICAgYm9keVBhcmFtc1twYXJhbS5QYXJhbU5hbWVdID0gcGFyYW0uUGFyYW1WYWx1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvbiBtZXJnZVBhcmFtXHJcblxyXG4gICAgLy8jcmVnaW9uIGFkZERlZmF1bHRQYXJhbXNcclxuICAgIC8vIFNlIG5lbGxhIGNvbmZpZ3VyYXppb25lIHNvbm8gc3RhdGkgZGVmaW5pdGkgcGFyYW1ldHJpIGRhIGFnZ2l1bmdlcmUgYWxsYSBjaGlhbWF0YSBxdWVzdGkgdmVuZ29ubyBjaWNsYXRpXHJcbiAgICAvLyBlIGFnZ2l1bnRpIG5lbCBwdW50byBpbiBjdWkgZGV2b25vIGVzc2VyZSB1c2F0aS5cclxuICAgIC8vIGlmIChlbmRQb2ludERhdGEuUGFyYW1zKSB7XHJcbiAgICAvLyAgICAgZW5kUG9pbnREYXRhLlBhcmFtcy5mb3JFYWNoKHBhcmFtID0+IHtcclxuICAgIC8vICAgICAgICAgc3dpdGNoIChwYXJhbS5QYXJhbVR5cGUpIHtcclxuICAgIC8vICAgICAgICAgICAgIGNhc2UgUGFyYW1UeXBlRW51bVsnUXVlcnkgcGFyYW0nXToge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ1BhcmFtOiBzdHJpbmcgPSBwYXJhbS5QYXJhbU5hbWUgKyBcIj1cIiArIHBhcmFtLlBhcmFtVmFsdWU7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSAocXVlcnlQYXJhbXMgPT0gbnVsbCA/IFwiXCIgOiBxdWVyeVBhcmFtcyArIFwiJlwiKSArIHN0cmluZ1BhcmFtO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtWydJbiByb3V0ZSddOiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgdXJsID0gdXJsICsgKHVybC5lbmRzV2l0aChcIi9cIikgPyBcIlwiIDogXCIvXCIpICsgcGFyYW0uUGFyYW1WYWx1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgIGNhc2UgUGFyYW1UeXBlRW51bVsnSW4gQm9keSddOiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgYm9keVBhcmFtcy5BZGRpdGlvbmFsUGFyYW1zW3BhcmFtLlBhcmFtTmFtZV0gPSBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyNlbmRyZWdpb24gYWRkRGVmYXVsdFBhcmFtc1xyXG5cclxuICAgIC8vI3JlZ2lvbiBhZGRTcGVjaWZpY1BhcmFtc1xyXG4gICAgLy8gU2Ugc29ubyBzdGF0aSBwYXNzYXRpIHBhcmFtZXRyaSBkYSBhZ2dpdW5nZXJlIGFsbGEgY2hpYW1hdGEgZGVmaW5pdGkgYWxsJ2ludGVybm8gZGVsIG1vZHVsbyBkaW5hbWljb1xyXG4gICAgLy8gdmVuZ29ubyBjaWNsYXRpIGUgYWdnaXVudGkgbmVsIHB1bnRvIGluIGN1aSBkZXZvbm8gZXNzZXJlIHVzYXRpIGRvcG8gcXVlbGxpIGRlZmluaXRpIG5lbGxhIGNvbmZpZ3VyYXppb25lLlxyXG4gICAgLy8gaWYgKGR5bmFtaWNNb2R1bGVQYXJhbXMpIHtcclxuICAgIC8vICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLmZvckVhY2gocGFyYW0gPT4ge1xyXG4gICAgLy8gICAgICAgICBzd2l0Y2ggKHBhcmFtLlBhcmFtVHlwZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtWydRdWVyeSBwYXJhbSddOiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nUGFyYW06IHN0cmluZyA9IHBhcmFtLlBhcmFtTmFtZSArIFwiPVwiICsgcGFyYW0uUGFyYW1WYWx1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtcyA9IChxdWVyeVBhcmFtcyA9PSBudWxsID8gXCJcIiA6IHF1ZXJ5UGFyYW1zICsgXCImXCIpICsgc3RyaW5nUGFyYW07XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICBjYXNlIFBhcmFtVHlwZUVudW1bJ0luIHJvdXRlJ106IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAodXJsLmVuZHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIikgKyBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICAgICAgY2FzZSBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J106IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBib2R5UGFyYW1zW3BhcmFtLlBhcmFtTmFtZV0gPSBwYXJhbS5QYXJhbVZhbHVlO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgfSlcclxuICAgIC8vIH1cclxuICAgIC8vI2VuZHJlZ2lvbiBhZGRTcGVjaWZpY1BhcmFtc1xyXG5cclxuICAgIGlmIChxdWVyeVBhcmFtcyAhPSBudWxsKSB7XHJcbiAgICAgIHVybCA9XHJcbiAgICAgICAgKHVybC5lbmRzV2l0aChcIi9cIikgPyB1cmwuc3Vic3RyaW5nKDAsIHVybC5sZW5ndGggLSAxKSA6IHVybCkgK1xyXG4gICAgICAgIFwiP1wiICtcclxuICAgICAgICBxdWVyeVBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmh0dHBcclxuICAgICAgLnJlcXVlc3QoZW5kUG9pbnREYXRhLlJlcXVlc3RNZXRob2QsIHVybCwge1xyXG4gICAgICAgIGhlYWRlcnM6IGVuZFBvaW50RGF0YS5Ub2tlblxyXG4gICAgICAgICAgPyB7IEF1dGhvcml6YXRpb246IGVuZFBvaW50RGF0YS5Ub2tlbiB9XHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgYm9keTogIVtSZXF1ZXN0TWV0aG9kRW51bS5ERUxFVEUsIFJlcXVlc3RNZXRob2RFbnVtLkdFVF0uaW5jbHVkZXMoXHJcbiAgICAgICAgICBlbmRQb2ludERhdGEuUmVxdWVzdE1ldGhvZFxyXG4gICAgICAgIClcclxuICAgICAgICAgID8gYm9keVBhcmFtc1xyXG4gICAgICAgICAgOiBudWxsLFxyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IEZvcm0gfCBSZWNvcmQgfCBBcnJheTxSZWNvcmQ+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnJlbW92ZVJlcXVlc3RDb3VudGVyKCk7XHJcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgY2FsbGJhY2socmVzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5yZW1vdmVSZXF1ZXN0Q291bnRlcigpO1xyXG4gICAgICAgICAgaWYgKGVycm9yQ2FsbEJhY2spIHtcclxuICAgICAgICAgICAgZXJyb3JDYWxsQmFjayhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIlJ1bkVuZFBvaW50Q2FsbCAtIHN1YnNjcmliZSAtIGVuZFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gIH1cclxufVxyXG4iXX0=