@posiwise/admin-module 0.0.117 → 0.0.118

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 (22) hide show
  1. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +5 -6
  2. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +5 -6
  3. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +3 -4
  4. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +3 -4
  5. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +3 -4
  6. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +3 -4
  7. package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +11 -3
  8. package/esm2022/lib/components/faqs/add-faq/add-faq.component.mjs +3 -3
  9. package/esm2022/lib/components/faqs/edit-faq/edit-faq.component.mjs +3 -3
  10. package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +3 -3
  11. package/esm2022/lib/components/products/product-details/product-details.component.mjs +3 -3
  12. package/esm2022/lib/components/products/products-list/products-list.component.mjs +2 -2
  13. package/esm2022/lib/components/subscriptions/subscriptions-list/invite-users/invite-users.component.mjs +4 -4
  14. package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +4 -4
  15. package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +2 -2
  16. package/esm2022/lib/components/users/users-list/users-list.component.mjs +3 -3
  17. package/esm2022/lib/shared/interface/domain-config.interface.mjs +1 -1
  18. package/fesm2022/posiwise-admin-module.mjs +44 -42
  19. package/fesm2022/posiwise-admin-module.mjs.map +1 -1
  20. package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +2 -0
  21. package/lib/shared/interface/domain-config.interface.d.ts +1 -0
  22. package/package.json +1 -1
@@ -89,7 +89,7 @@ export class ProductsListComponent extends AppBaseComponent {
89
89
  this.featureKeysList = response.products.map(element => {
90
90
  return {
91
91
  value: element.feature_key,
92
- label: element.feature_key
92
+ label: element.feature_key || ''
93
93
  };
94
94
  });
95
95
  this.featureKeysList = uniqBy(this.featureKeysList, 'label');
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
143
143
  type: ViewChild,
144
144
  args: ['passwordValidationModalForProductDelete', { static: false }]
145
145
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJvZHVjdHMvcHJvZHVjdHMtbGlzdC9wcm9kdWN0cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcm9kdWN0cy9wcm9kdWN0cy1saXN0L3Byb2R1Y3RzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPbkMsTUFBTSxPQUFPLHFCQUNULFNBQVEsZ0JBQWdCO0lBc0N4QixZQUNZLGNBQThCLEVBQ3RDLFFBQWtCLEVBQ1YsR0FBc0I7UUFFOUIsS0FBSyxDQUFDLFFBQVEs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RUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTTtRQUNoQixJQUFJLENBQUMsY0FBYzthQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUQsSUFBSSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFDakQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBeEpRLHFCQUFxQjttR0FBckIscUJBQXFCLHlQQzVCbEMsZ3lRQXlNQTs7NEZEN0thLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSx3QkFBd0I7MElBU2xDLHVDQUF1QztzQkFEdEMsU0FBUzt1QkFBQyx5Q0FBeUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IFBBR0VfU0laRSwgVE9LRU5fS0VZIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL3NoYXJlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IFBhZ2luZyB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1hZG1pbi1wcm9kdWN0cy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdHMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdHMtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzTGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBAVmlld0NoaWxkKCdwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGU6IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudDtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgbG9hZGluZyA9IHRydWU7XG5cbiAgICBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBwcm9kdWN0cyA9IFtdO1xuXG4gICAgcGFnZSA9IDE7XG5cbiAgICBiaWxsaW5nRnJlcXVlbmN5ID0gWyd3ZWVrJywgJ21vbnRoJywgJ3llYXInXTtcblxuICAgIGNhdGVnb3JpZXMgPSBbXTtcblxuICAgIHRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPSAwO1xuXG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG5cbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgY3VycmVuY3kgPSBbXTtcblxuICAgIHJlZ2lvbnMgPSBbXTtcblxuICAgIGZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcblxuICAgIGZlYXR1cmVLZXlzTGlzdCA9IFtdO1xuXG4gICAgcHJpdmF0ZSBwcm9kdWN0VG9EZWxldGU6IFByb2R1Y3Q7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgIHRoaXMuZ2V0Q3VycmVuY3lBbmRSZWdpb25zKCk7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKFRPS0VOX0tFWSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiA9ICEhcmVzO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXREYXRhKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgb3JkZXJfYnk6IHBhZ2VEZXRhaWxzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIG9yZGVyX2RpcmVjdGlvbjogcGFnZURldGFpbHMuc29ydE9yZGVyLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW5jeUFuZFJlZ2lvbnMoKSB7XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFN1cHBvcnRlZEN1cnJlbmN5KCksXG4gICAgICAgICAgICByZWdpb25zOiB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFN1cHBvcnRlZFJlZ2lvbnMoKVxuICAgICAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSByZXM/LmN1cnJlbmN5Py5yZWdpb25zO1xuICAgICAgICAgICAgdGhpcy5yZWdpb25zID0gcmVzPy5yZWdpb25zPy5yZWdpb25zO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGEocGFnaW5nOiBQYWdpbmcpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZVxuICAgICAgICAgICAgLmdldFByb2R1Y3RMaXN0KHBhZ2luZywgdGhpcy5zdWJzY3JpcHRpb25JZCwge1xuICAgICAgICAgICAgICAgIGZlYXR1cmVfa2V5czogdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzLmpvaW4oKSB8fCAnJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSByZXNwb25zZS5wcm9kdWN0cztcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPSByZXNwb25zZS51bmZpbHRlcmVkX2NvdW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5mZWF0dXJlS2V5c0xpc3Q/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZT8ucHJvZHVjdHMgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucHJvZHVjdHM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVLZXlzTGlzdCA9IHJlc3BvbnNlLnByb2R1Y3RzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuZmVhdHVyZV9rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnQuZmVhdHVyZV9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVLZXlzTGlzdCA9IHVuaXFCeSh0aGlzLmZlYXR1cmVLZXlzTGlzdCwgJ2xhYmVsJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnByaWNlX3Blcl91bml0ID0gKGVsZW1lbnQucHJpY2VfcGVyX3VuaXQgLyAxMDApLnRvRml4ZWQoMik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlYXJjaE9wdGlvbkNoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXREYXRhKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGl0ZW06IFByb2R1Y3QpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0VG9EZWxldGUgPSBpdGVtO1xuICAgICAgICB0aGlzLnBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUHJvZHVjdERlbGV0ZS5vcGVuKCk7XG4gICAgfVxuXG4gICAgZGVsZXRlUHJvZHVjdChfZXZlbnQpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZVxuICAgICAgICAgICAgLmRlbGV0ZVByb2R1Y3QodGhpcy5wcm9kdWN0VG9EZWxldGU/LmlkLCB0aGlzLnN1YnNjcmlwdGlvbklkKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0cyA9IHRoaXMucHJvZHVjdHMuZmlsdGVyKHggPT4geC5pZCAhPT0gdGhpcy5wcm9kdWN0VG9EZWxldGU/LmlkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RUb0RlbGV0ZSA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhdGVnb3JpZXMoKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0UHJvZHVjdENhdGVnb3JpZXMoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzcG9uc2U/LmNhdGVnb3JpZXMgfHwgW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2wteHMtMTIgdGV4dC1lbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBmbG9hdC1zdGFydFwiPlByb2R1Y3RzPC9oMj5cbiAgPGJ1dHRvbiAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuQ3JlYXRlJ1wiXG4gICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXJzLnByb2R1Y3REZXRhaWxzICsgJ2FkZCddXCI+XG4gICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gQ3JlYXRlIFByb2R1Y3RcbiAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCJsb2FkaW5nXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lcj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInByaW1lbmctZGF0YXRhYmxlLWNvbnRhaW5lciB0YWJsZS1yZXNwb25zaXZlIG10LTBcIlxuICBbY2xhc3MuaGlkZVRhYmxlXT1cInRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPT09IDBcIj5cbiAgPHAtdGFibGUgI2R0XG4gICAgW3ZhbHVlXT1cInByb2R1Y3RzXCJcbiAgICBbcGFnaW5hdG9yXT1cInRvdGFsUmVjb3JkcyAhPT0gMFwiXG4gICAgW2xhenldPVwidHJ1ZVwiXG4gICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2ZpbHRlckRlbGF5XT1cIjEwMDBcIlxuICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgW2N1c3RvbVNvcnRdPVwidHJ1ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZpbHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgICAgPHAtbXVsdGlTZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRmVhdHVyZSBLZXlzXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImZlYXR1cmVLZXlzTGlzdFwiXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwib25TZWFyY2hPcHRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIG10LTIgbWUtMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgIHNpemU9XCI1MFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9kdWN0Li4uXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJtdy05MFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICA8dHIgY2xhc3M9XCJoZWFkXCI+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cIm5hbWVcIj5cbiAgICAgICAgICB7eyAnTGFiZWwuTmFtZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIm5hbWVcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInN0cmlwZV9wbGFuX2lkXCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlN0cmlwZVBsYW4nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdHJpcGVfcGxhbl9pZFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicGVybWlzc2lvbl9rZXlcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuUGVybWlzc2lvbktleScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInBlcm1pc3Npb25fa2V5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJmZWF0dXJlX2tleVwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5GZWF0dXJlS2V5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiZmVhdHVyZV9rZXlcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInByb2R1Y3Rfa2V5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlByb2R1Y3RLZXknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJwcm9kdWN0X2tleVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiY2F0ZWdvcnlcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJjYXRlZ29yeVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicmVnaW9uXCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlJlZ2lvbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInJlZ2lvblwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiY3VycmVuY3lcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuQ3VycmVuY3knIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJjdXJyZW5jeVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicHJpY2VfcGVyX3VuaXRcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuUHJpY2UnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJwcmljZV9wZXJfdW5pdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiYWN0aXZlXCI+XG4gICAgICAgICAge3sgJ0xhYmVsLklzQWN0aXZlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiYWN0aXZlXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJiaWxsaW5nX2ZyZXF1ZW5jeVwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5CaWxsaW5nJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiYmlsbGluZ19mcmVxdWVuY3lcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1saXN0LXR3b1wiPnt7ICdMYWJlbC5BY3Rpb25zJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgbGV0LWl0ZW0+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJOYW1lXCI+e3sgaXRlbS5uYW1lIH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlN0cmlwZSBQbGFuXCI+e3sgaXRlbS5zdHJpcGVfcGxhbl9pZCB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQZXJtaXNzaW9uIEtleVwiPnt7IGl0ZW0ucGVybWlzc2lvbl9rZXkgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRmVhdHVyZSBLZXlcIj57eyBpdGVtLmZlYXR1cmVfa2V5IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlByb2R1Y3QgS2V5XCI+e3sgaXRlbS5wcm9kdWN0X2tleSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJDYXRlZ29yeVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBjYXRlZ29yaWVzLCBpdGVtOiBpdGVtLmNhdGVnb3J5IH1cIlxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuaW5nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtLmNhdGVnb3J5IH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUmVnaW9uXCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IHJlZ2lvbnMsIGl0ZW06IGl0ZW0ucmVnaW9uIH1cIlxuICAgICAgICAgICAgY29sb3I9XCJjeWFuXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtLnJlZ2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkN1cnJlbmN5XCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IGN1cnJlbmN5LCBpdGVtOiBpdGVtLmN1cnJlbmN5IH1cIlxuICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGl0ZW0uY3VycmVuY3kgfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQcmljZVwiPnt7IGl0ZW0ucHJpY2VfcGVyX3VuaXQgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQWN0aXZlXCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sIGl0ZW06IGl0ZW0/LmFjdGl2ZSB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwic3VjY2Vzcy1kYW5nZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGl0ZW0/LmFjdGl2ZSA/ICdZZXMnIDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkJpbGxpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICAgIFthcHBEeW5hbWljQmFkZ2VdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IGJpbGxpbmdGcmVxdWVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogaXRlbT8uYmlsbGluZ19mcmVxdWVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY29sb3I9XCJibHVlLWdyZXlcIj57eyBpdGVtLmJpbGxpbmdfZnJlcXVlbmN5IH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQWN0aW9uXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZSB3aWR0aC1tYXgtY29udGVudFwiPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuRWRpdCdcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0RGV0YWlscyArIGl0ZW0uaWRdXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEZWxldGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWRtaW4uUHJvZHVjdC5EZWxldGUnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKGl0ZW0pXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJVc2VycyBMaXN0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuRWRpdCdcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0c1VzZXJMaXN0ICsgaXRlbS5pZF1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YXNrcyBjdGExLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEdXBsaWNhdGUgVGhlIFByb2R1Y3RcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLXNtLTNcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJ3Byb2R1Y3QtZGV0YWlscy9hZGQnXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IGR1cGxpY2F0ZV9wcm9kdWN0X2lkOiBpdGVtLmlkIH1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jbG9uZSBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJGZWVkYmFjayBRdWVzdGlvbnNcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5mZWVkYmFja1F1ZXN0aW9uc11cIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyBwcm9kdWN0X2lkOiBpdGVtLmlkIH1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb21tZW50cyBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC10YWJsZT5cbiAgPGRpdiAqbmdJZj1cInRvdGFsUmVjb3JkcyA9PT0gMCAmJiB0b3RhbFJlY29yZHNVbkZpbHRlcmVkICE9PSAwXCI+XG4gICAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ1NlYXJjaC5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiIFtkZXNjcmlwdGlvbl09XCInU2VhcmNoLk5vRGF0YURlc2NyaXB0aW9uJyB8IHRyYW5zbG9jb1wiID5cbiAgICA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIipuZ0lmPVwidG90YWxSZWNvcmRzICE9PSAwXCIgPlRvdGFsOiB7eyB0b3RhbFJlY29yZHMgfX08L3NwYW4+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID09PSAwXCI+XG4gIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidBZG1pbi5Qcm9kdWN0cy5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPiA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cbjwhLS0gcGFzc3dvcmQgdmFsaWRhdGlvbiBtb2RhbCBmb3IgZGVsZXRlIHByb2R1Y3QgLS0+XG48cHctcGFzc3dvcmQtdmFsaWRhdGlvbiAjcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JQcm9kdWN0RGVsZXRlXG4gIChzdWNjZXNzRXZlbnQpPVwiZGVsZXRlUHJvZHVjdCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICA8cD57eyAnVXNlci5BY2NvdW50Lk1lc3NhZ2UuQWN0aW9uQ2FuTm90VW5kb25lJyB8IHRyYW5zbG9jbyB9fTwvcD5cbiAgICAgIDxwPnt7ICdVc2VyLkFjY291bnQuTWVzc2FnZS5Db25maXJtUGFzc3dvcmQnIHwgdHJhbnNsb2NvIH19PC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvcHctcGFzc3dvcmQtdmFsaWRhdGlvbj5cbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJvZHVjdHMvcHJvZHVjdHMtbGlzdC9wcm9kdWN0cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcm9kdWN0cy9wcm9kdWN0cy1saXN0L3Byb2R1Y3RzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPbkMsTUFBTSxPQUFPLHFCQUNULFNBQVEsZ0JBQWdCO0lBc0N4QixZQUNZLGNBQThCLEVBQ3RDLFFBQWtCLEVBQ1YsR0FBc0I7UUFFOUIsS0FBSyxDQUFDLFFBQVEs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Q0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDLGNBQWM7YUFDZCxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUM1RCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzVELElBQUksUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ2pELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUSxXQUFXO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXhKUSxxQkFBcUI7bUdBQXJCLHFCQUFxQix5UEM1QmxDLGd5UUF5TUE7OzRGRDdLYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0ksd0JBQXdCOzBJQVNsQyx1Q0FBdUM7c0JBRHRDLFNBQVM7dUJBQUMseUNBQXlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhenlMb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5pbXBvcnQgeyBQQUdFX1NJWkUsIFRPS0VOX0tFWSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9zaGFyZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQYWdpbmcgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB1bmlxQnkgZnJvbSAnbG9kYXNoL3VuaXFCeSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctYWRtaW4tcHJvZHVjdHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3RzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2R1Y3RzLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0c0xpc3RDb21wb25lbnRcbiAgICBleHRlbmRzIEFwcEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkXG57XG4gICAgQFZpZXdDaGlsZCgncGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JQcm9kdWN0RGVsZXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JQcm9kdWN0RGVsZXRlOiBQYXNzd29yZFZhbGlkYXRpb25Db21wb25lbnQ7XG5cbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcblxuICAgIGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgc2VhcmNoVGV4dCA9ICcnO1xuXG4gICAgcHJvZHVjdHMgPSBbXTtcblxuICAgIHBhZ2UgPSAxO1xuXG4gICAgYmlsbGluZ0ZyZXF1ZW5jeSA9IFsnd2VlaycsICdtb250aCcsICd5ZWFyJ107XG5cbiAgICBjYXRlZ29yaWVzID0gW107XG5cbiAgICB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gMDtcblxuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuXG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGN1cnJlbmN5ID0gW107XG5cbiAgICByZWdpb25zID0gW107XG5cbiAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzID0gW107XG5cbiAgICBmZWF0dXJlS2V5c0xpc3QgPSBbXTtcblxuICAgIHByaXZhdGUgcHJvZHVjdFRvRGVsZXRlOiBQcm9kdWN0O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICB0aGlzLmdldEN1cnJlbmN5QW5kUmVnaW9ucygpO1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uTGF6eUxvYWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZURldGFpbHMgPSBIZWxwZXJTZXJ2aWNlLm9uVGFibGVMYXp5TG9hZChldmVudCk7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2VEZXRhaWxzLnBhZ2U7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRSxcbiAgICAgICAgICAgIG9yZGVyX2J5OiBwYWdlRGV0YWlscy5zb3J0RmllbGQsXG4gICAgICAgICAgICBvcmRlcl9kaXJlY3Rpb246IHBhZ2VEZXRhaWxzLnNvcnRPcmRlcixcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VycmVuY3lBbmRSZWdpb25zKCkge1xuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICBjdXJyZW5jeTogdGhpcy5wcm9kdWN0U2VydmljZS5nZXRTdXBwb3J0ZWRDdXJyZW5jeSgpLFxuICAgICAgICAgICAgcmVnaW9uczogdGhpcy5wcm9kdWN0U2VydmljZS5nZXRTdXBwb3J0ZWRSZWdpb25zKClcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0gcmVzPy5jdXJyZW5jeT8ucmVnaW9ucztcbiAgICAgICAgICAgIHRoaXMucmVnaW9ucyA9IHJlcz8ucmVnaW9ucz8ucmVnaW9ucztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRhKHBhZ2luZzogUGFnaW5nKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcm9kdWN0TGlzdChwYWdpbmcsIHRoaXMuc3Vic2NyaXB0aW9uSWQsIHtcbiAgICAgICAgICAgICAgICBmZWF0dXJlX2tleXM6IHRoaXMuZmlsdGVyQnlGZWF0dXJlS2V5cy5qb2luKCkgfHwgJydcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gcmVzcG9uc2UucHJvZHVjdHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXNwb25zZS5vYmplY3RfY291bnQ7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gcmVzcG9uc2UudW5maWx0ZXJlZF9jb3VudDtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuZmVhdHVyZUtleXNMaXN0Py5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U/LnByb2R1Y3RzICYmXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnByb2R1Y3RzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5c0xpc3QgPSByZXNwb25zZS5wcm9kdWN0cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50LmZlYXR1cmVfa2V5IHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5c0xpc3QgPSB1bmlxQnkodGhpcy5mZWF0dXJlS2V5c0xpc3QsICdsYWJlbCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wcmljZV9wZXJfdW5pdCA9IChlbGVtZW50LnByaWNlX3Blcl91bml0IC8gMTAwKS50b0ZpeGVkKDIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hPcHRpb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShpdGVtOiBQcm9kdWN0KSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFRvRGVsZXRlID0gaXRlbTtcbiAgICAgICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclByb2R1Y3REZWxldGUub3BlbigpO1xuICAgIH1cblxuICAgIGRlbGV0ZVByb2R1Y3QoX2V2ZW50KSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGVQcm9kdWN0KHRoaXMucHJvZHVjdFRvRGVsZXRlPy5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzLmZpbHRlcih4ID0+IHguaWQgIT09IHRoaXMucHJvZHVjdFRvRGVsZXRlPy5pZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0VG9EZWxldGUgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXRlZ29yaWVzKCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFByb2R1Y3RDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZT8uY2F0ZWdvcmllcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlc3BvbnNlPy5jYXRlZ29yaWVzIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIHRleHQtZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPGgyIGNsYXNzPVwiY2FyZC10aXRsZSBwLTAgZmxvYXQtc3RhcnRcIj5Qcm9kdWN0czwvaDI+XG4gIDxidXR0b24gKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Qcm9kdWN0LkNyZWF0ZSdcIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCJcbiAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5wcm9kdWN0RGV0YWlscyArICdhZGQnXVwiPlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IENyZWF0ZSBQcm9kdWN0XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwibG9hZGluZ1wiPlxuICA8cC1wcm9ncmVzc1NwaW5uZXI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwcmltZW5nLWRhdGF0YWJsZS1jb250YWluZXIgdGFibGUtcmVzcG9uc2l2ZSBtdC0wXCJcbiAgW2NsYXNzLmhpZGVUYWJsZV09XCJ0b3RhbFJlY29yZHNVbkZpbHRlcmVkID09PSAwXCI+XG4gIDxwLXRhYmxlICNkdFxuICAgIFt2YWx1ZV09XCJwcm9kdWN0c1wiXG4gICAgW3BhZ2luYXRvcl09XCJ0b3RhbFJlY29yZHMgIT09IDBcIlxuICAgIFtsYXp5XT1cInRydWVcIlxuICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtmaWx0ZXJEZWxheV09XCIxMDAwXCJcbiAgICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkKCRldmVudClcIlxuICAgIFtjdXN0b21Tb3J0XT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1maWx0ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICAgIDxwLW11bHRpU2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZlYXR1cmUgS2V5c1wiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJmZWF0dXJlS2V5c0xpc3RcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uU2VhcmNoT3B0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj5cbiAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBtdC0yIG1lLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUHJvZHVjdC4uLlwiXG4gICAgICAgICAgICAoaW5wdXQpPVwiZHQuZmlsdGVyR2xvYmFsKCRldmVudC50YXJnZXQudmFsdWUsICdjb250YWlucycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibXctOTBcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgPHRyIGNsYXNzPVwiaGVhZFwiPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJuYW1lXCI+XG4gICAgICAgICAge3sgJ0xhYmVsLk5hbWUnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJuYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJzdHJpcGVfcGxhbl9pZFwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5TdHJpcGVQbGFuJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwic3RyaXBlX3BsYW5faWRcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInBlcm1pc3Npb25fa2V5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlBlcm1pc3Npb25LZXknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJwZXJtaXNzaW9uX2tleVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiZmVhdHVyZV9rZXlcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuRmVhdHVyZUtleScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImZlYXR1cmVfa2V5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJwcm9kdWN0X2tleVwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5Qcm9kdWN0S2V5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicHJvZHVjdF9rZXlcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImNhdGVnb3J5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLkNhdGVnb3J5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY2F0ZWdvcnlcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInJlZ2lvblwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5Qcm9kdWN0cy5SZWdpb24nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJyZWdpb25cIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImN1cnJlbmN5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLkN1cnJlbmN5JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY3VycmVuY3lcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInByaWNlX3Blcl91bml0XCI+XG4gICAgICAgICAge3sgJ0FkbWluLlByb2R1Y3RzLlByaWNlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicHJpY2VfcGVyX3VuaXRcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImFjdGl2ZVwiPlxuICAgICAgICAgIHt7ICdMYWJlbC5Jc0FjdGl2ZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImFjdGl2ZVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwiYmlsbGluZ19mcmVxdWVuY3lcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uUHJvZHVjdHMuQmlsbGluZycgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImJpbGxpbmdfZnJlcXVlbmN5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtbGlzdC10d29cIj57eyAnTGFiZWwuQWN0aW9ucycgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICAgIGxldC1pdGVtPlxuICAgICAgPHRyPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTmFtZVwiPnt7IGl0ZW0ubmFtZSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJTdHJpcGUgUGxhblwiPnt7IGl0ZW0uc3RyaXBlX3BsYW5faWQgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUGVybWlzc2lvbiBLZXlcIj57eyBpdGVtLnBlcm1pc3Npb25fa2V5IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkZlYXR1cmUgS2V5XCI+e3sgaXRlbS5mZWF0dXJlX2tleSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQcm9kdWN0IEtleVwiPnt7IGl0ZW0ucHJvZHVjdF9rZXkgfX08L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQ2F0ZWdvcnlcIj5cbiAgICAgICAgICA8c3BhbiBbYXBwRHluYW1pY0JhZGdlXT1cInsgaXRlbXNBcnJheTogY2F0ZWdvcmllcywgaXRlbTogaXRlbS5jYXRlZ29yeSB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwid2FybmluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgaXRlbS5jYXRlZ29yeSB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlJlZ2lvblwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiByZWdpb25zLCBpdGVtOiBpdGVtLnJlZ2lvbiB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwiY3lhblwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgaXRlbS5yZWdpb24gfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJDdXJyZW5jeVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBjdXJyZW5jeSwgaXRlbTogaXRlbS5jdXJyZW5jeSB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwiYmx1ZS1ncmV5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtLmN1cnJlbmN5IH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUHJpY2VcIj57eyBpdGVtLnByaWNlX3Blcl91bml0IH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGl2ZVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBbdHJ1ZSwgZmFsc2VdLCBpdGVtOiBpdGVtPy5hY3RpdmUgfVwiXG4gICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIj57eyBpdGVtPy5hY3RpdmUgPyAnWWVzJyA6ICdObycgfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJCaWxsaW5nXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgICBbYXBwRHluYW1pY0JhZGdlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0FycmF5OiBiaWxsaW5nRnJlcXVlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW0/LmJpbGxpbmdfZnJlcXVlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwiYmx1ZS1ncmV5XCI+e3sgaXRlbS5iaWxsaW5nX2ZyZXF1ZW5jeSB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbGlzdC1pbmxpbmUgd2lkdGgtbWF4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRWRpdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Qcm9kdWN0LkVkaXQnXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMucHJvZHVjdERldGFpbHMgKyBpdGVtLmlkXVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlByb2R1Y3QuRGVsZXRlJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShpdGVtKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiVXNlcnMgTGlzdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Qcm9kdWN0LkVkaXQnXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMucHJvZHVjdHNVc2VyTGlzdCArIGl0ZW0uaWRdXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFza3MgY3RhMS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRHVwbGljYXRlIFRoZSBQcm9kdWN0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS1zbS0zXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWydwcm9kdWN0LWRldGFpbHMvYWRkJ11cIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyBkdXBsaWNhdGVfcHJvZHVjdF9pZDogaXRlbS5pZCB9XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2xvbmUgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRmVlZGJhY2sgUXVlc3Rpb25zXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMuZmVlZGJhY2tRdWVzdGlvbnNdXCJcbiAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgcHJvZHVjdF9pZDogaXRlbS5pZCB9XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29tbWVudHMgZWRpdC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3AtdGFibGU+XG4gIDxkaXYgKm5nSWY9XCJ0b3RhbFJlY29yZHMgPT09IDAgJiYgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCAhPT0gMFwiPlxuICAgIDxwdy1uby1kYXRhIFt3aXRoSW1hZ2VdPVwidHJ1ZVwiIFttZXNzYWdlXT1cIidTZWFyY2guTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIiBbZGVzY3JpcHRpb25dPVwiJ1NlYXJjaC5Ob0RhdGFEZXNjcmlwdGlvbicgfCB0cmFuc2xvY29cIiA+XG4gICAgPC9wdy1uby1kYXRhPlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1yZWNvcmRzLWNvdW50XCIqbmdJZj1cInRvdGFsUmVjb3JkcyAhPT0gMFwiID5Ub3RhbDoge3sgdG90YWxSZWNvcmRzIH19PC9zcGFuPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9PT0gMFwiPlxuICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInQWRtaW4uUHJvZHVjdHMuTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIj4gPC9wdy1uby1kYXRhPlxuPC9kaXY+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRpb24gbW9kYWwgZm9yIGRlbGV0ZSBwcm9kdWN0IC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUHJvZHVjdERlbGV0ZVxuICAoc3VjY2Vzc0V2ZW50KT1cImRlbGV0ZVByb2R1Y3QoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPHA+e3sgJ1VzZXIuQWNjb3VudC5NZXNzYWdlLkFjdGlvbkNhbk5vdFVuZG9uZScgfCB0cmFuc2xvY28gfX08L3A+XG4gICAgICA8cD57eyAnVXNlci5BY2NvdW50Lk1lc3NhZ2UuQ29uZmlybVBhc3N3b3JkJyB8IHRyYW5zbG9jbyB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3B3LXBhc3N3b3JkLXZhbGlkYXRpb24+XG4iXX0=
@@ -138,7 +138,7 @@ export class InviteUsersComponent extends AppBaseComponent {
138
138
  this.searchOptions = featureKeys.map(element => {
139
139
  return {
140
140
  id: element,
141
- label: element
141
+ label: element || ''
142
142
  };
143
143
  });
144
144
  });
@@ -222,13 +222,13 @@ export class InviteUsersComponent extends AppBaseComponent {
222
222
  super.ngOnDestroy();
223
223
  }
224
224
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InviteUsersComponent, deps: [{ token: i1.AdminService }, { token: i2.UntypedFormBuilder }, { token: i3.ProductService }, { token: i3.CommonService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: InviteUsersComponent, selector: "pw-invite-users", viewQueries: [{ propertyName: "refProduct", first: true, predicate: ["refProduct"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Invite New User</h3>\n <p>Here you can send an invitation to a new user to try any of our products</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid':\n form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationIndustries$ | async as industries\">\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry'| transloco\">\n <select formControlName=\"organization_industry_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of industries['organization_industries']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName'| transloco\"\n class=\"col-md-6 p-0\"\n name=\"name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationTypes$ | async as types\">\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType'| transloco\">\n <select formControlName=\"organization_type_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of types['organization_types']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationSizes$ | async as sizes\">\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize'| transloco\">\n <select formControlName=\"organization_size_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of sizes['organization_sizes']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Invite</button>\n </div>\n </div>\n</form>\n </div>\n </div>\n </div>\n</div>", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "component", type: i4.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "component", type: i6.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i7.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslocoPipe, name: "transloco" }] }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: InviteUsersComponent, selector: "pw-invite-users", viewQueries: [{ propertyName: "refProduct", first: true, predicate: ["refProduct"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Invite New User</h3>\n <p>Here you can send an invitation to a new user to try any of our products</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid':\n form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationIndustries$ | async as industries\">\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry'| transloco\">\n <select formControlName=\"organization_industry_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of industries['organization_industries']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName'| transloco\"\n class=\"col-md-6 p-0\"\n name=\"name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationTypes$ | async as types\">\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType'| transloco\">\n <select formControlName=\"organization_type_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of types['organization_types']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationSizes$ | async as sizes\">\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize'| transloco\">\n <select formControlName=\"organization_size_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of sizes['organization_sizes']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; back()\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Invite</button>\n </div>\n </div>\n</form>\n </div>\n </div>\n </div>\n</div>", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "component", type: i4.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "component", type: i6.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i7.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslocoPipe, name: "transloco" }] }); }
226
226
  }
227
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InviteUsersComponent, decorators: [{
228
228
  type: Component,
229
- args: [{ selector: 'pw-invite-users', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Invite New User</h3>\n <p>Here you can send an invitation to a new user to try any of our products</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid':\n form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationIndustries$ | async as industries\">\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry'| transloco\">\n <select formControlName=\"organization_industry_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of industries['organization_industries']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName'| transloco\"\n class=\"col-md-6 p-0\"\n name=\"name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationTypes$ | async as types\">\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType'| transloco\">\n <select formControlName=\"organization_type_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of types['organization_types']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationSizes$ | async as sizes\">\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize'| transloco\">\n <select formControlName=\"organization_size_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of sizes['organization_sizes']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Invite</button>\n </div>\n </div>\n</form>\n </div>\n </div>\n </div>\n</div>", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
229
+ args: [{ selector: 'pw-invite-users', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard user-details\">\n <div class=\"dashboard-body\">\n\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Invite New User</h3>\n <p>Here you can send an invitation to a new user to try any of our products</p>\n </div>\n\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.FirstName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.FirstName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"first_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.FirstName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n [ngClass]=\"{\n 'is-invalid':\n form.get('first_name').touched && form.get('first_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.LastName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.LastName' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"last_name\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.LastName' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n [ngClass]=\"{\n 'is-invalid': form.get('last_name').touched && form.get('last_name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Email' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Email' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"email\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Email' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n [ngClass]=\"{\n 'is-invalid': form.get('email').touched && form.get('email').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete #refProduct\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n field=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search Product\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container label=\"{{'Label.Seats' | transloco}}{{unitsText}}\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.Units' | transloco\"\n class=\"col-md-6 p-0\"\n name=\"units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Units' | transloco\">\n <input type=\"number\"\n class=\"form-control\"\n formControlName=\"units\"\n [ngClass]=\"{\n 'is-invalid': form.get('units').touched && form.get('units').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Admin.Subscriptions.MinUnits' | transloco\"\n [showTooltip]=\"true\"\n name=\"min_units\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.MinUnits' | transloco\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.MinUnits' | transloco\">\n <input type=\"number\"\n min=\"0\"\n [max]=\"form.get('units').value\"\n class=\"form-control\"\n formControlName=\"min_units\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationIndustries$ | async as industries\">\n <pw-input-container [label]=\"'Organization.OrganizationIndustry' | transloco\"\n name=\"organization_industry_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationIndustry'| transloco\">\n <select formControlName=\"organization_industry_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of industries['organization_industries']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\">\n <pw-input-container [label]=\"'Organization.OrganizationName' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationName'| transloco\"\n class=\"col-md-6 p-0\"\n name=\"name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\"\n [ngClass]=\"{\n 'is-invalid': form.get('name').touched && form.get('name').invalid\n }\" />\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationTypes$ | async as types\">\n <pw-input-container [label]=\"'Organization.OrganizationType' | transloco\"\n name=\"organization_type_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationType'| transloco\">\n <select formControlName=\"organization_type_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of types['organization_types']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-sm-4\"\n *ngIf=\"organizationSizes$ | async as sizes\">\n <pw-input-container [label]=\"'Organization.OrganizationSize' | transloco\"\n name=\"organization_size_id\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.OrganizationSize'| transloco\">\n <select formControlName=\"organization_size_id\"\n class=\"form-control form-select\">\n <option *ngFor=\"let option of sizes['organization_sizes']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end\">\n <input type=\"button\"\n class=\"btn btn-outline-primary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; back()\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Invite</button>\n </div>\n </div>\n</form>\n </div>\n </div>\n </div>\n</div>", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
230
230
  }], ctorParameters: () => [{ type: i1.AdminService }, { type: i2.UntypedFormBuilder }, { type: i3.ProductService }, { type: i3.CommonService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { refProduct: [{
231
231
  type: ViewChild,
232
232
  args: ['refProduct']
233
233
  }] } });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLXVzZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtbGlzdC9pbnZpdGUtdXNlcnMvaW52aXRlLXVzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtbGlzdC9pbnZpdGUtdXNlcnMvaW52aXRlLXVzZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFHUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFp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RztZQUNULFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsV0FBVyxFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDeEMsQ0FBQztRQUNGLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRCxJQUFJLEtBQUssWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDekQsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTNRUSxvQkFBb0I7bUdBQXBCLG9CQUFvQix3TEM5QmpDLGsxUEFrTU07OzRGRHBLTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksaUJBQWlCO2tPQTRERixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGdyb3VwQnkgZnJvbSAnbG9kYXNoL2dyb3VwQnknO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UsIEZvcm1IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGUgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5pbXBvcnQgeyBGZWF0dXJlS2V5IH0gZnJvbSAnbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL25ld3NsZXR0ZXIuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1pbnZpdGUtdXNlcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnZpdGUtdXNlcnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ludml0ZS11c2Vycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEludml0ZVVzZXJzQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIHRvdGFsUmVjb3JkcyA9IDA7XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIHN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBwcm9kdWN0cyA9IFtdO1xuXG4gICAgb3JnYW5pemF0aW9uU2l6ZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVLZXlbXT47XG5cbiAgICBvcmdhbml6YXRpb25UeXBlcyQ6IE9ic2VydmFibGU8RmVhdHVyZUtleVtdPjtcblxuICAgIG9yZ2FuaXphdGlvbkluZHVzdHJpZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVLZXlbXT47XG5cbiAgICBzZWFyY2hPcHRpb25zOiB7IGlkOiB1bmtub3duOyBsYWJlbDogdW5rbm93biB9W10gPSBbXTtcblxuICAgIGZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcblxuICAgIGlzTG9hZGVkID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgcGFnZSA9IDE7XG5cbiAgICBiaWxsaW5nRnJlcXVlbmN5ID0gWyd3ZWVrJywgJ21vbnRoJywgJ3llYXInXTtcblxuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuXG4gICAgc3Vic2NyaXB0aW9uU3RhdHVzID0gWydhbGwnLCAnZXhwaXJlZCcsICdhY3RpdmUnLCAncGFpZCddO1xuXG4gICAgc3RhdHVzID0gJyc7XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IDA7XG5cbiAgICBmaWx0ZXJlZFByb2R1Y3RzID0gW107XG5cbiAgICBjdXJyZW5jeSA9IFtdO1xuXG4gICAgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzO1xuXG4gICAgdW5pdHNUZXh0ID0gJyc7XG5cbiAgICBidXR0b25CdXN5ID0gZmFsc2U7XG5cbiAgICBzZWxlY3RlZEZlYXR1cmVLZXlzOiBGZWF0dXJlS2V5W107XG5cbiAgICBzdWJzY3JpcHRpb25JbnNpZ2h0czogRmVhdHVyZUtleVtdO1xuXG4gICAgQFZpZXdDaGlsZCgncmVmUHJvZHVjdCcpIHJlZlByb2R1Y3Q6IEF1dG9Db21wbGV0ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBwcm9kdWN0X2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZmlyc3RfbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGxhc3RfbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25faW5kdXN0cnlfaWQ6IFsnJ10sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25fdHlwZV9pZDogWycnXSxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbl9zaXplX2lkOiBbJyddLFxuICAgICAgICAgICAgbmFtZTogWycnXSxcbiAgICAgICAgICAgIHVuaXRzOiBbJyddLFxuICAgICAgICAgICAgbWluX3VuaXRzOiBbJyddXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8gdGhpcy5nZXREYXRhKDEsIDEwMCk7XG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uSW5kdXN0cmllcyQgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSW5kdXN0cmllcygpO1xuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblR5cGVzJCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRPcmdhbml6YXRpb25UeXBlcygpO1xuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNpemVzJCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRPcmdhbml6YXRpb25TaXplcygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmdldFN1cHBvcnRlZEN1cnJlbmN5KCk7XG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdHNMaXN0KCk7XG4gICAgICAgIHRoaXMuZ2V0TWluTWF4VW5pdHMoKTtcbiAgICB9XG5cbiAgICBnZXRUYWJsZVN0YXRlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgnc3Vic2NyaXB0aW9uLWxpc3Qtc3RhdGUnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gcmVzdWx0Py5zZWFyY2hUZXh0IHx8ICcnO1xuICAgICAgICAgICAgICAgICh0aGlzLnN0YXR1cyA9IHJlc3VsdD8uc3RhdHVzIHx8ICcnKSxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRGZWF0dXJlS2V5cyA9IHJlc3VsdD8uZmVhdHVyZUtleXMgfHwgW10pLFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gdGhpcy5zZWxlY3RlZEZlYXR1cmVLZXlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRDdXJyZW5jeSgpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5nZXRTdXBwb3J0ZWRDdXJyZW5jeSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHJlcz8ucmVnaW9ucztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TWluTWF4VW5pdHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgICAgICAgdGhpcy51bml0c1RleHQgPSB4Py51bml0c1RleHQgfHwgJyc7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2F2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICBGb3JtSGVscGVyU2VydmljZS52YWxpZGF0ZUFsbEZvcm1GaWVsZHModGhpcy5mb3JtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcm9kdWN0SWQgPSB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykudmFsdWUuaWQ7XG4gICAgICAgICAgICBjb25zdCBpbnZpdGVPYmogPSB7XG4gICAgICAgICAgICAgICAgZW1haWw6IHRoaXMuZm9ybS5nZXQoJ2VtYWlsJykudmFsdWUsXG4gICAgICAgICAgICAgICAgZmlyc3RfbmFtZTogdGhpcy5mb3JtLmdldCgnZmlyc3RfbmFtZScpLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxhc3RfbmFtZTogdGhpcy5mb3JtLmdldCgnbGFzdF9uYW1lJykudmFsdWUsXG4gICAgICAgICAgICAgICAgdW5pdHM6IHRoaXMuZm9ybS5nZXQoJ3VuaXRzJykudmFsdWUsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX2luZHVzdHJ5X2lkOiB0aGlzLmZvcm0uZ2V0KCdvcmdhbml6YXRpb25faW5kdXN0cnlfaWQnKS52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fdHlwZV9pZDogdGhpcy5mb3JtLmdldCgnb3JnYW5pemF0aW9uX3R5cGVfaWQnKS52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fc2l6ZV9pZDogdGhpcy5mb3JtLmdldCgnb3JnYW5pemF0aW9uX3NpemVfaWQnKS52YWx1ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmZvcm0uZ2V0KCduYW1lJykudmFsdWUsXG4gICAgICAgICAgICAgICAgbWluX3VuaXRzOiB0aGlzLmZvcm0uZ2V0KCdtaW5fdW5pdHMnKS52YWx1ZSxcbiAgICAgICAgICAgICAgICBwcm9kdWN0X2lkOiBwcm9kdWN0SWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmludml0ZUZvclRyaWFsKHByb2R1Y3RJZCwgaW52aXRlT2JqLCB0aGlzLnN1YnNjcmlwdGlvbklkKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5TdWJzY3JpcHRpb25zLkludml0YXRpb25TZW50JylcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMucm91dGVycy5zdWJzY3JpcHRpb25MaXN0fWBdKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvZHVjdHNMaXN0KCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldFByb2R1Y3RMaXN0KHt9LCB0aGlzLnN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmVhdHVyZUtleXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgIG5ldyBTZXQocmVzcG9uc2UucHJvZHVjdHMubWFwKGl0ZW0gPT4gaXRlbS5mZWF0dXJlX2tleSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hPcHRpb25zID0gZmVhdHVyZUtleXMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWxlbWVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0T2JqKG9iaikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICBzZWFyY2hQcm9kdWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcm9kdWN0TGlzdCh7IHNlYXJjaDogZXZlbnQucXVlcnkgfSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRQcm9kdWN0cyA9IHRoaXMuZ3JvdXBQcm9kdWN0cyhyZXNwb25zZS5wcm9kdWN0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblByb2R1Y3RDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgcHJvZHVjdElkID0gTnVtYmVyKGV2ZW50Py52YWx1ZS5pZCk7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RPYmogPSB0aGlzLmZpbHRlcmVkUHJvZHVjdHMuZmluZCh4ID0+IHguaWQgPT09IHByb2R1Y3RJZCk7XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIHByb2R1Y3RfaWQ6IHByb2R1Y3RPYmpcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Qcm9kdWN0Q2xlYXIoX2V2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5yZWZQcm9kdWN0LmlucHV0RUwubmF0aXZlRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdF9pZCcpLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ3JvdXBQcm9kdWN0cyhwcm9kdWN0cykge1xuICAgICAgICBpZiAocHJvZHVjdHMgJiYgcHJvZHVjdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcHJvZHVjdHMgPSBwcm9kdWN0cy5maWx0ZXIoeCA9PiB4LmRlcGVuZGVuY3lfcHJvZHVjdHM/Lmxlbmd0aCA8IDEgJiYgeC5hY3RpdmUpO1xuICAgICAgICAgICAgcHJvZHVjdHMgPSBncm91cEJ5KHByb2R1Y3RzLCAnY3VycmVuY3knKTtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gdGhpcy5zb3J0T2JqKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIGxldCBncm91cGVkQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICAgICAgZm9yIChjb25zdCBwIGluIHByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9kdWN0c1twXS5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT4gTnVtYmVyKGIucHJpY2VfcGVyX3VuaXQpIC0gTnVtYmVyKGEucHJpY2VfcGVyX3VuaXQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBncm91cGVkQXJyYXkucHVzaCguLi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cGVkQXJyYXkgPVxuICAgICAgICAgICAgICAgIGdyb3VwZWRBcnJheT8ubWFwKHggPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7eC5uYW1lfSB8ICR7eC5yZWdpb259IHwgJHt4LmJpbGxpbmdfZnJlcXVlbmN5fSB8ICR7eC5taW5fdW5pdHN9IHggJHsoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wcmljZV9wZXJfdW5pdCAvIDEwMFxuICAgICAgICAgICAgICAgICAgICAgICAgKS50b0ZpeGVkKDIpfSB8ICR7eC5jdXJyZW5jeX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHNUZXh0OiBgKG1pbiAke3gubWluX3VuaXRzfSAtIG1heCAke3gubWF4X3VuaXRzfSlgXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSkgfHwgW107XG5cbiAgICAgICAgICAgIHJldHVybiBncm91cGVkQXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZ2V0RXhwaXJlc0F0Q29sb3IoaXRlbSkge1xuICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgbW9udGhCZWZvcmUgPSBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSAtIDEpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAndGV4dC1kYW5nZXIgZnctYm9sZCc6IG5ldyBEYXRlKGl0ZW0uZXhwaXJlc19hdCkgPCBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgJ3RleHQtd2FybmluZyB0ZXh0LWJvbGQtNzAwJzpcbiAgICAgICAgICAgICAgICBpdGVtLmJpbGxpbmdGcmVxdWVuY3kgPT09ICd5ZWFyJyAmJlxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKGl0ZW0uZXhwaXJlc19hdCkgPCBuZXcgRGF0ZShtb250aEJlZm9yZSkgJiZcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZShpdGVtLmV4cGlyZXNfYXQpID4gbmV3IERhdGUoKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgICAgICAgIGZlYXR1cmVLZXlzOiB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXNcbiAgICAgICAgfTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1YnNjcmlwdGlvbi1saXN0LXN0YXRlJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICBjb25zdCBub3RpZmllciA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRha2VVbnRpbChub3RpZmllcikpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudC51cmxBZnRlclJlZGlyZWN0cy5pbmNsdWRlcygnL3N1YnNjcmlwdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0kKCdzdWJzY3JpcHRpb24tbGlzdC1zdGF0ZScpO1xuICAgICAgICAgICAgICAgICAgICBub3RpZmllci5uZXh0KCcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkIHVzZXItZGV0YWlsc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keVwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWUtYXV0byBjb2wteHMtNiBtdC00XCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgICAgICAgIGNsYXNzPVwicHJldmlvdXNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiXCI+SW52aXRlIE5ldyBVc2VyPC9oMz5cbiAgICAgICAgICA8cD5IZXJlIHlvdSBjYW4gc2VuZCBhbiBpbnZpdGF0aW9uIHRvIGEgbmV3IHVzZXIgdG8gdHJ5IGFueSBvZiBvdXIgcHJvZHVjdHM8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInAtMiBtdC0zXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIChuZ1N1Ym1pdCk9XCJvblNhdmUoKVwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidMYWJlbC5GaXJzdE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVG9vbHRpcC5GaXJzdE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtbWQtNiBwLTBcIlxuICAgICAgICBuYW1lPVwiZmlyc3RfbmFtZVwiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5WYWxpZGF0aW9uLkZpcnN0TmFtZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3RfbmFtZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uZ2V0KCdmaXJzdF9uYW1lJykudG91Y2hlZCAmJiBmb3JtLmdldCgnZmlyc3RfbmFtZScpLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0xhYmVsLkxhc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuTGFzdE5hbWUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtbWQtNiBwLTBcIlxuICAgICAgICBuYW1lPVwibGFzdF9uYW1lXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlZhbGlkYXRpb24uTGFzdE5hbWUnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBmb3JtLmdldCgnbGFzdF9uYW1lJykudG91Y2hlZCAmJiBmb3JtLmdldCgnbGFzdF9uYW1lJykuaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1zbS00XCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInTGFiZWwuRW1haWwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVG9vbHRpcC5FbWFpbCcgfCB0cmFuc2xvY29cIlxuICAgICAgICBjbGFzcz1cImNvbC1tZC02IHAtMFwiXG4gICAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5WYWxpZGF0aW9uLkVtYWlsJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBmb3JtLmdldCgnZW1haWwnKS50b3VjaGVkICYmIGZvcm0uZ2V0KCdlbWFpbCcpLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0xhYmVsLlByb2R1Y3QnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVG9vbHRpcC5TdWJzY3JpcHRpb25Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIG5hbWU9XCJwcm9kdWN0X2lkXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlZhbGlkYXRpb24uUHJvZHVjdCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPHAtYXV0b0NvbXBsZXRlICNyZWZQcm9kdWN0XG4gICAgICAgIFtzdWdnZXN0aW9uc109XCJmaWx0ZXJlZFByb2R1Y3RzXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0X2lkXCJcbiAgICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICAgIGZpZWxkPVwibGFiZWxcIlxuICAgICAgICAgIFtkcm9wZG93bl09XCJ0cnVlXCJcbiAgICAgICAgICBbZGVsYXldPVwiMTAwMFwiXG4gICAgICAgICAgW3R5cGVdPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2hQcm9kdWN0KCRldmVudClcIlxuICAgICAgICAgIChvblNlbGVjdCk9XCJvblByb2R1Y3RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uQ2xlYXIpPVwib25Qcm9kdWN0Q2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9kdWN0XCJcbiAgICAgICAgICBbaW5wdXRTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uZ2V0KCdwcm9kdWN0X2lkJykudG91Y2hlZCAmJiBmb3JtLmdldCgncHJvZHVjdF9pZCcpLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgYm9yZGVyOiAnMXB4IHNvbGlkICNmZjU4NmInIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgYm9yZGVyOiAnMXB4IHNvbGlkIGdyYXknIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIj5cbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1zbS00XCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIGxhYmVsPVwie3snTGFiZWwuU2VhdHMnIHwgdHJhbnNsb2NvfX17e3VuaXRzVGV4dH19XCJcbiAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVG9vbHRpcC5Vbml0cycgfCB0cmFuc2xvY29cIlxuICAgICAgICBjbGFzcz1cImNvbC1tZC02IHAtMFwiXG4gICAgICAgIG5hbWU9XCJ1bml0c1wiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5WYWxpZGF0aW9uLlVuaXRzJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRzXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGZvcm0uZ2V0KCd1bml0cycpLnRvdWNoZWQgJiYgZm9ybS5nZXQoJ3VuaXRzJykuaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1zbS00XCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5NaW5Vbml0cycgfCB0cmFuc2xvY29cIlxuICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgIG5hbWU9XCJtaW5fdW5pdHNcIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVmFsaWRhdGlvbi5NaW5Vbml0cycgfCB0cmFuc2xvY29cIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVG9vbHRpcC5NaW5Vbml0cycgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgIFttYXhdPVwiZm9ybS5nZXQoJ3VuaXRzJykudmFsdWVcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5fdW5pdHNcIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIlxuICAgICAgKm5nSWY9XCJvcmdhbml6YXRpb25JbmR1c3RyaWVzJCB8IGFzeW5jIGFzIGluZHVzdHJpZXNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidPcmdhbml6YXRpb24uT3JnYW5pemF0aW9uSW5kdXN0cnknIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgbmFtZT1cIm9yZ2FuaXphdGlvbl9pbmR1c3RyeV9pZFwiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuT3JnYW5pemF0aW9uSW5kdXN0cnknfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJvcmdhbml6YXRpb25faW5kdXN0cnlfaWRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tc2VsZWN0XCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGluZHVzdHJpZXNbJ29yZ2FuaXphdGlvbl9pbmR1c3RyaWVzJ11cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxuICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ09yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb25OYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuT3JnYW5pemF0aW9uTmFtZSd8IHRyYW5zbG9jb1wiXG4gICAgICAgIGNsYXNzPVwiY29sLW1kLTYgcC0wXCJcbiAgICAgICAgbmFtZT1cIm5hbWVcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBmb3JtLmdldCgnbmFtZScpLnRvdWNoZWQgJiYgZm9ybS5nZXQoJ25hbWUnKS5pbnZhbGlkXG4gICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIlxuICAgICAgKm5nSWY9XCJvcmdhbml6YXRpb25UeXBlcyQgfCBhc3luYyBhcyB0eXBlc1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ09yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb25UeXBlJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIG5hbWU9XCJvcmdhbml6YXRpb25fdHlwZV9pZFwiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuT3JnYW5pemF0aW9uVHlwZSd8IHRyYW5zbG9jb1wiPlxuICAgICAgICA8c2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm9yZ2FuaXphdGlvbl90eXBlX2lkXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB0eXBlc1snb3JnYW5pemF0aW9uX3R5cGVzJ11cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxuICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiXG4gICAgICAqbmdJZj1cIm9yZ2FuaXphdGlvblNpemVzJCB8IGFzeW5jIGFzIHNpemVzXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInT3JnYW5pemF0aW9uLk9yZ2FuaXphdGlvblNpemUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgbmFtZT1cIm9yZ2FuaXphdGlvbl9zaXplX2lkXCJcbiAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVG9vbHRpcC5Pcmdhbml6YXRpb25TaXplJ3wgdHJhbnNsb2NvXCI+XG4gICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwib3JnYW5pemF0aW9uX3NpemVfaWRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tc2VsZWN0XCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNpemVzWydvcmdhbml6YXRpb25fc2l6ZXMnXVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XG4gICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGV4dC1lbmRcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBtZS0zXCJcbiAgICAgICAgdmFsdWU9XCJDYW5jZWxcIlxuICAgICAgICAoY2xpY2spPVwiZm9ybS5yZXNldCgpOyB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gMFwiIC8+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbkJ1c3lcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPkludml0ZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLXVzZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtbGlzdC9pbnZpdGUtdXNlcnMvaW52aXRlLXVzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMtbGlzdC9pbnZpdGUtdXNlcnMvaW52aXRlLXVzZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFHUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFp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TSxJQUFJLEdBQUc7WUFDVCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQ3hDLENBQUM7UUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0EzUVEsb0JBQW9CO21HQUFwQixvQkFBb0Isd0xDOUJqQywwMVBBa01NOzs0RkRwS08sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLGlCQUFpQjtrT0E0REYsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3RvcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBncm91cEJ5IGZyb20gJ2xvZGFzaC9ncm91cEJ5JztcbmltcG9ydCB7IExhenlMb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlLCBGb3JtSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuaW1wb3J0IHsgRmVhdHVyZUtleSB9IGZyb20gJ2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvc2hhcmVkL2ludGVyZmFjZS9uZXdzbGV0dGVyLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctaW52aXRlLXVzZXJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW52aXRlLXVzZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnZpdGUtdXNlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbnZpdGVVc2Vyc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICB0b3RhbFJlY29yZHMgPSAwO1xuXG4gICAgbG9hZGluZyA9IHRydWU7XG5cbiAgICBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBzdWJzY3JpcHRpb25zID0gW107XG5cbiAgICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gICAgcHJvZHVjdHMgPSBbXTtcblxuICAgIG9yZ2FuaXphdGlvblNpemVzJDogT2JzZXJ2YWJsZTxGZWF0dXJlS2V5W10+O1xuXG4gICAgb3JnYW5pemF0aW9uVHlwZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVLZXlbXT47XG5cbiAgICBvcmdhbml6YXRpb25JbmR1c3RyaWVzJDogT2JzZXJ2YWJsZTxGZWF0dXJlS2V5W10+O1xuXG4gICAgc2VhcmNoT3B0aW9uczogeyBpZDogdW5rbm93bjsgbGFiZWw6IHVua25vd24gfVtdID0gW107XG5cbiAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzID0gW107XG5cbiAgICBpc0xvYWRlZCA9IHRydWU7XG5cbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuXG4gICAgYmlsbGluZ0ZyZXF1ZW5jeSA9IFsnd2VlaycsICdtb250aCcsICd5ZWFyJ107XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIHN1YnNjcmlwdGlvblN0YXR1cyA9IFsnYWxsJywgJ2V4cGlyZWQnLCAnYWN0aXZlJywgJ3BhaWQnXTtcblxuICAgIHN0YXR1cyA9ICcnO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIHRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPSAwO1xuXG4gICAgZmlsdGVyZWRQcm9kdWN0cyA9IFtdO1xuXG4gICAgY3VycmVuY3kgPSBbXTtcblxuICAgIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cztcblxuICAgIHVuaXRzVGV4dCA9ICcnO1xuXG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuXG4gICAgc2VsZWN0ZWRGZWF0dXJlS2V5czogRmVhdHVyZUtleVtdO1xuXG4gICAgc3Vic2NyaXB0aW9uSW5zaWdodHM6IEZlYXR1cmVLZXlbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ3JlZlByb2R1Y3QnKSByZWZQcm9kdWN0OiBBdXRvQ29tcGxldGU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHByb2R1Y3RTZXJ2aWNlOiBQcm9kdWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgcHJvZHVjdF9pZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGZpcnN0X25hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBsYXN0X25hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uX2luZHVzdHJ5X2lkOiBbJyddLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uX3R5cGVfaWQ6IFsnJ10sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25fc2l6ZV9pZDogWycnXSxcbiAgICAgICAgICAgIG5hbWU6IFsnJ10sXG4gICAgICAgICAgICB1bml0czogWycnXSxcbiAgICAgICAgICAgIG1pbl91bml0czogWycnXVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIHRoaXMuZ2V0RGF0YSgxLCAxMDApO1xuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbkluZHVzdHJpZXMkID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkluZHVzdHJpZXMoKTtcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25UeXBlcyQgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVHlwZXMoKTtcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TaXplcyQgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uU2l6ZXMoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRTdXBwb3J0ZWRDdXJyZW5jeSgpO1xuICAgICAgICB0aGlzLmdldFByb2R1Y3RzTGlzdCgpO1xuICAgICAgICB0aGlzLmdldE1pbk1heFVuaXRzKCk7XG4gICAgfVxuXG4gICAgZ2V0VGFibGVTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3N1YnNjcmlwdGlvbi1saXN0LXN0YXRlJykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHJlc3VsdD8uc2VhcmNoVGV4dCB8fCAnJztcbiAgICAgICAgICAgICAgICAodGhpcy5zdGF0dXMgPSByZXN1bHQ/LnN0YXR1cyB8fCAnJyksXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnNlbGVjdGVkRmVhdHVyZUtleXMgPSByZXN1bHQ/LmZlYXR1cmVLZXlzIHx8IFtdKSxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZmlsdGVyQnlGZWF0dXJlS2V5cyA9IHRoaXMuc2VsZWN0ZWRGZWF0dXJlS2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uTGF6eUxvYWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZURldGFpbHMgPSBIZWxwZXJTZXJ2aWNlLm9uVGFibGVMYXp5TG9hZChldmVudCk7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2VEZXRhaWxzLnBhZ2U7XG4gICAgfVxuXG4gICAgZ2V0U3VwcG9ydGVkQ3VycmVuY3koKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0U3VwcG9ydGVkQ3VycmVuY3koKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSByZXM/LnJlZ2lvbnM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE1pbk1heFVuaXRzKCkge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgICAgICAgIHRoaXMudW5pdHNUZXh0ID0geD8udW5pdHNUZXh0IHx8ICcnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNhdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICAgICAgRm9ybUhlbHBlclNlcnZpY2UudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgcHJvZHVjdElkID0gdGhpcy5mb3JtLmdldCgncHJvZHVjdF9pZCcpLnZhbHVlLmlkO1xuICAgICAgICAgICAgY29uc3QgaW52aXRlT2JqID0ge1xuICAgICAgICAgICAgICAgIGVtYWlsOiB0aGlzLmZvcm0uZ2V0KCdlbWFpbCcpLnZhbHVlLFxuICAgICAgICAgICAgICAgIGZpcnN0X25hbWU6IHRoaXMuZm9ybS5nZXQoJ2ZpcnN0X25hbWUnKS52YWx1ZSxcbiAgICAgICAgICAgICAgICBsYXN0X25hbWU6IHRoaXMuZm9ybS5nZXQoJ2xhc3RfbmFtZScpLnZhbHVlLFxuICAgICAgICAgICAgICAgIHVuaXRzOiB0aGlzLmZvcm0uZ2V0KCd1bml0cycpLnZhbHVlLFxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbl9pbmR1c3RyeV9pZDogdGhpcy5mb3JtLmdldCgnb3JnYW5pemF0aW9uX2luZHVzdHJ5X2lkJykudmFsdWUsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX3R5cGVfaWQ6IHRoaXMuZm9ybS5nZXQoJ29yZ2FuaXphdGlvbl90eXBlX2lkJykudmFsdWUsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX3NpemVfaWQ6IHRoaXMuZm9ybS5nZXQoJ29yZ2FuaXphdGlvbl9zaXplX2lkJykudmFsdWUsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5mb3JtLmdldCgnbmFtZScpLnZhbHVlLFxuICAgICAgICAgICAgICAgIG1pbl91bml0czogdGhpcy5mb3JtLmdldCgnbWluX3VuaXRzJykudmFsdWUsXG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogcHJvZHVjdElkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZVxuICAgICAgICAgICAgICAgIC5pbnZpdGVGb3JUcmlhbChwcm9kdWN0SWQsIGludml0ZU9iaiwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uU3Vic2NyaXB0aW9ucy5JbnZpdGF0aW9uU2VudCcpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgJHt0aGlzLnJvdXRlcnMuc3Vic2NyaXB0aW9uTGlzdH1gXSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2R1Y3RzTGlzdCgpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5nZXRQcm9kdWN0TGlzdCh7fSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVLZXlzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgU2V0KHJlc3BvbnNlLnByb2R1Y3RzLm1hcChpdGVtID0+IGl0ZW0uZmVhdHVyZV9rZXkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoT3B0aW9ucyA9IGZlYXR1cmVLZXlzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnQgfHwgJydcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydE9iaihvYmopIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgIC5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgc2VhcmNoUHJvZHVjdChldmVudCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvZHVjdExpc3QoeyBzZWFyY2g6IGV2ZW50LnF1ZXJ5IH0sIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkUHJvZHVjdHMgPSB0aGlzLmdyb3VwUHJvZHVjdHMocmVzcG9uc2UucHJvZHVjdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Qcm9kdWN0Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IE51bWJlcihldmVudD8udmFsdWUuaWQpO1xuICAgICAgICBjb25zdCBwcm9kdWN0T2JqID0gdGhpcy5maWx0ZXJlZFByb2R1Y3RzLmZpbmQoeCA9PiB4LmlkID09PSBwcm9kdWN0SWQpO1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBwcm9kdWN0X2lkOiBwcm9kdWN0T2JqXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUHJvZHVjdENsZWFyKF9ldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMucmVmUHJvZHVjdC5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwUHJvZHVjdHMocHJvZHVjdHMpIHtcbiAgICAgICAgaWYgKHByb2R1Y3RzICYmIHByb2R1Y3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gcHJvZHVjdHMuZmlsdGVyKHggPT4geC5kZXBlbmRlbmN5X3Byb2R1Y3RzPy5sZW5ndGggPCAxICYmIHguYWN0aXZlKTtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gZ3JvdXBCeShwcm9kdWN0cywgJ2N1cnJlbmN5Jyk7XG4gICAgICAgICAgICBwcm9kdWN0cyA9IHRoaXMuc29ydE9iaihwcm9kdWN0cyk7XG4gICAgICAgICAgICBsZXQgZ3JvdXBlZEFycmF5ID0gW107XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBpbiBwcm9kdWN0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvZHVjdHNbcF0uc29ydChcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IE51bWJlcihiLnByaWNlX3Blcl91bml0KSAtIE51bWJlcihhLnByaWNlX3Blcl91bml0KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZEFycmF5LnB1c2goLi4udmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBlZEFycmF5ID1cbiAgICAgICAgICAgICAgICBncm91cGVkQXJyYXk/Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3gubmFtZX0gfCAke3gucmVnaW9ufSB8ICR7eC5iaWxsaW5nX2ZyZXF1ZW5jeX0gfCAke3gubWluX3VuaXRzfSB4ICR7KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHJpY2VfcGVyX3VuaXQgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9GaXhlZCgyKX0gfCAke3guY3VycmVuY3l9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzVGV4dDogYChtaW4gJHt4Lm1pbl91bml0c30gLSBtYXggJHt4Lm1heF91bml0c30pYFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBlZEFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGdldEV4cGlyZXNBdENvbG9yKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoQmVmb3JlID0gZC5zZXRNb250aChkLmdldE1vbnRoKCkgLSAxKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3RleHQtZGFuZ2VyIGZ3LWJvbGQnOiBuZXcgRGF0ZShpdGVtLmV4cGlyZXNfYXQpIDwgbmV3IERhdGUoKSxcbiAgICAgICAgICAgICd0ZXh0LXdhcm5pbmcgdGV4dC1ib2xkLTcwMCc6XG4gICAgICAgICAgICAgICAgaXRlbS5iaWxsaW5nRnJlcXVlbmN5ID09PSAneWVhcicgJiZcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZShpdGVtLmV4cGlyZXNfYXQpIDwgbmV3IERhdGUobW9udGhCZWZvcmUpICYmXG4gICAgICAgICAgICAgICAgbmV3IERhdGUoaXRlbS5leHBpcmVzX2F0KSA+IG5ldyBEYXRlKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICAgICAgICBmZWF0dXJlS2V5czogdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzXG4gICAgICAgIH07XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdWJzY3JpcHRpb24tbGlzdC1zdGF0ZScsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgY29uc3Qgbm90aWZpZXIgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwobm90aWZpZXIpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgIGlmICghZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMuaW5jbHVkZXMoJy9zdWJzY3JpcHRpb24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtJCgnc3Vic2NyaXB0aW9uLWxpc3Qtc3RhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubmV4dCgnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGRpdiBjbGFzcz1cImRhc2hib2FyZCB1c2VyLWRldGFpbHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1lLWF1dG8gY29sLXhzLTYgbXQtNFwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgICAgICBjbGFzcz1cInByZXZpb3VzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIlwiPkludml0ZSBOZXcgVXNlcjwvaDM+XG4gICAgICAgICAgPHA+SGVyZSB5b3UgY2FuIHNlbmQgYW4gaW52aXRhdGlvbiB0byBhIG5ldyB1c2VyIHRvIHRyeSBhbnkgb2Ygb3VyIHByb2R1Y3RzPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIgbXQtM1wiPlxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAobmdTdWJtaXQpPVwib25TYXZlKClcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1zbS00XCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInTGFiZWwuRmlyc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuRmlyc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIGNsYXNzPVwiY29sLW1kLTYgcC0wXCJcbiAgICAgICAgbmFtZT1cImZpcnN0X25hbWVcIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVmFsaWRhdGlvbi5GaXJzdE5hbWUnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpcnN0X25hbWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmdldCgnZmlyc3RfbmFtZScpLnRvdWNoZWQgJiYgZm9ybS5nZXQoJ2ZpcnN0X25hbWUnKS5pbnZhbGlkXG4gICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidMYWJlbC5MYXN0TmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5Ub29sdGlwLkxhc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIGNsYXNzPVwiY29sLW1kLTYgcC0wXCJcbiAgICAgICAgbmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5WYWxpZGF0aW9uLkxhc3ROYW1lJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXN0X25hbWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZm9ybS5nZXQoJ2xhc3RfbmFtZScpLnRvdWNoZWQgJiYgZm9ybS5nZXQoJ2xhc3RfbmFtZScpLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0xhYmVsLkVtYWlsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuRW1haWwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtbWQtNiBwLTBcIlxuICAgICAgICBuYW1lPVwiZW1haWxcIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVmFsaWRhdGlvbi5FbWFpbCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZm9ybS5nZXQoJ2VtYWlsJykudG91Y2hlZCAmJiBmb3JtLmdldCgnZW1haWwnKS5pbnZhbGlkXG4gICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidMYWJlbC5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuU3Vic2NyaXB0aW9uUHJvZHVjdCcgfCB0cmFuc2xvY29cIlxuICAgICAgICBuYW1lPVwicHJvZHVjdF9pZFwiXG4gICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5WYWxpZGF0aW9uLlByb2R1Y3QnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgIDxwLWF1dG9Db21wbGV0ZSAjcmVmUHJvZHVjdFxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRQcm9kdWN0c1wiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdF9pZFwiXG4gICAgICAgICAgZGF0YUtleT1cImlkXCJcbiAgICAgICAgICBmaWVsZD1cImxhYmVsXCJcbiAgICAgICAgICBbZHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgICAgICAgW2RlbGF5XT1cIjEwMDBcIlxuICAgICAgICAgIFt0eXBlXT1cIidzZWFyY2gnXCJcbiAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoUHJvZHVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAob25TZWxlY3QpPVwib25Qcm9kdWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChvbkNsZWFyKT1cIm9uUHJvZHVjdENsZWFyKCRldmVudClcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUHJvZHVjdFwiXG4gICAgICAgICAgW2lucHV0U3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmdldCgncHJvZHVjdF9pZCcpLnRvdWNoZWQgJiYgZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS5pbnZhbGlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGJvcmRlcjogJzFweCBzb2xpZCAjZmY1ODZiJyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IGJvcmRlcjogJzFweCBzb2xpZCBncmF5JyB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCI+XG4gICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBsYWJlbD1cInt7J0xhYmVsLlNlYXRzJyB8IHRyYW5zbG9jb319e3t1bml0c1RleHR9fVwiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuVW5pdHMnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtbWQtNiBwLTBcIlxuICAgICAgICBuYW1lPVwidW5pdHNcIlxuICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuVmFsaWRhdGlvbi5Vbml0cycgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1bml0c1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBmb3JtLmdldCgndW5pdHMnKS50b3VjaGVkICYmIGZvcm0uZ2V0KCd1bml0cycpLmludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtc20tNFwiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0FkbWluLlN1YnNjcmlwdGlvbnMuTWluVW5pdHMnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICBuYW1lPVwibWluX3VuaXRzXCJcbiAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlZhbGlkYXRpb24uTWluVW5pdHMnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuTWluVW5pdHMnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICBbbWF4XT1cImZvcm0uZ2V0KCd1bml0cycpLnZhbHVlXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluX3VuaXRzXCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1zbS00XCJcbiAgICAgICpuZ0lmPVwib3JnYW5pemF0aW9uSW5kdXN0cmllcyQgfCBhc3luYyBhcyBpbmR1c3RyaWVzXCI+XG4gICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInT3JnYW5pemF0aW9uLk9yZ2FuaXphdGlvbkluZHVzdHJ5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIG5hbWU9XCJvcmdhbml6YXRpb25faW5kdXN0cnlfaWRcIlxuICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5Ub29sdGlwLk9yZ2FuaXphdGlvbkluZHVzdHJ5J3wgdHJhbnNsb2NvXCI+XG4gICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwib3JnYW5pemF0aW9uX2luZHVzdHJ5X2lkXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBpbmR1c3RyaWVzWydvcmdhbml6YXRpb25faW5kdXN0cmllcyddXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidPcmdhbml6YXRpb24uT3JnYW5pemF0aW9uTmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5Ub29sdGlwLk9yZ2FuaXphdGlvbk5hbWUnfCB0cmFuc2xvY29cIlxuICAgICAgICBjbGFzcz1cImNvbC1tZC02IHAtMFwiXG4gICAgICAgIG5hbWU9XCJuYW1lXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZm9ybS5nZXQoJ25hbWUnKS50b3VjaGVkICYmIGZvcm0uZ2V0KCduYW1lJykuaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1zbS00XCJcbiAgICAgICpuZ0lmPVwib3JnYW5pemF0aW9uVHlwZXMkIHwgYXN5bmMgYXMgdHlwZXNcIj5cbiAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidPcmdhbml6YXRpb24uT3JnYW5pemF0aW9uVHlwZScgfCB0cmFuc2xvY29cIlxuICAgICAgICBuYW1lPVwib3JnYW5pemF0aW9uX3R5cGVfaWRcIlxuICAgICAgICBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uU3Vic2NyaXB0aW9ucy5Ub29sdGlwLk9yZ2FuaXphdGlvblR5cGUnfCB0cmFuc2xvY29cIj5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJvcmdhbml6YXRpb25fdHlwZV9pZFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdHlwZXNbJ29yZ2FuaXphdGlvbl90eXBlcyddXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTMgY29sLXNtLTRcIlxuICAgICAgKm5nSWY9XCJvcmdhbml6YXRpb25TaXplcyQgfCBhc3luYyBhcyBzaXplc1wiPlxuICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ09yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb25TaXplJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgIG5hbWU9XCJvcmdhbml6YXRpb25fc2l6ZV9pZFwiXG4gICAgICAgIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5TdWJzY3JpcHRpb25zLlRvb2x0aXAuT3JnYW5pemF0aW9uU2l6ZSd8IHRyYW5zbG9jb1wiPlxuICAgICAgICA8c2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm9yZ2FuaXphdGlvbl9zaXplX2lkXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLXNlbGVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzaXplc1snb3JnYW5pemF0aW9uX3NpemVzJ11cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxuICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbWUtM1wiXG4gICAgICAgIHZhbHVlPVwiQ2FuY2VsXCJcbiAgICAgICAgKGNsaWNrKT1cImZvcm0ucmVzZXQoKTsgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IDA7IGJhY2soKVwiIC8+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbkJ1c3lcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPkludml0ZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==