@posiwise/smart-crm 0.0.16 → 0.0.18

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.
@@ -136,12 +136,12 @@ export class SmartCrmLeadsDetailsComponent extends AppBaseComponent {
136
136
  search(event) {
137
137
  let data = [];
138
138
  if (event.query) {
139
- data = this.accounts.filter((x) => {
139
+ data = this.accounts?.filter((x) => {
140
140
  return x.name.toLowerCase().includes(event.query.toLowerCase());
141
141
  });
142
142
  }
143
143
  else {
144
- this.accounts.forEach(element => {
144
+ this.accounts?.forEach(element => {
145
145
  data.push(element);
146
146
  });
147
147
  }
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
170
170
  type: Component,
171
171
  args: [{ selector: 'pw-smart-crm-leads-details', template: "<div class=\"me-auto col-xs-6\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\"\n aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ 'Crm.LeadCrmLeads.' | transloco }}: {{ isLoading ? '' : (data?.first_name || data?.last_name ? data?.first_name ||\n data?.last_name : ('Label.AddNew' | transloco)) }}</span>\n </h3>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n<div class=\"p-2 mt-3\" *ngIf=\"!isLoading\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.FirstName' | transloco\" name=\"first_name\"\n [errorMsg]=\"'Crm.ContactMessage.FirstNameErrorMessage' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"first_name\" id=\"first_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['first_name'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LastName' | transloco\" name=\"last_name\"\n [errorMsg]=\"'Crm.ContactMessage.LastNameErrorMessage' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"last_name\" id=\"last_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['last_name'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Headline' | transloco\" name=\"headline\"\n [errorMsg]=\"'Crm.ContactMessage.HeadlineErrorMessage' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"headline\" id=\"headline\"\n [ngClass]=\"{ 'is-invalid': submitted && f['headline'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Tel' | transloco\" name=\"tel\"\n [errorMsg]=\"'Crm.ContactMessage.TelErrorMessage' | transloco\">\n <input type=\"text\" class=\"form-control\" formControlName=\"tel\" id=\"tel\"\n [ngClass]=\"{ 'is-invalid': submitted && f['tel'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-4\">\n <div class=\"mb-3\">\n <label>{{ 'Crm.ContactMessage.Email' | transloco }} <span class=\"text-danger required-icon\">*</span>\n <span *ngIf=\"data && data.email_verified\" class=\"text-success fw-bold\">Verified</span>\n </label>\n <input type=\"text\" class=\"form-control\" formControlName=\"email\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email'].errors }\" />\n <pw-field-error-display [displayError]=\"(submitted || f['email'].touched) && f['email'].errors\" [errorMsg]=\"\n f['email']?.errors?.required\n ? 'Please enter email'\n : 'Please Enter valid email'\n \">\n </pw-field-error-display>\n </div>\n </div>\n <div class=\"col-12 col-sm-4\">\n <div class=\"mb-3\">\n <!-- <pw-input-container [label]=\"'Crm.ContactMessage.EmailVerfied' | transloco\" class=\"nowrap\"\n <pw-input-containername=\"email_verified\"> -->\n <label class=\"info-circle mb-2\">{{ 'Crm.ContactMessage.EmailVerified' | transloco }} <span\n class=\"tooltiptext gradient-custom-branding\"> {{'Crm.ContactMessage.Tooltip.EmailVerified'| transloco\n }} </span>\n </label>\n <pw-input-container class=\"nowrap\" name=\"email_verified\">\n <ui-switch formControlName=\"email_verified\" name=\"email_verified\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email_verified'].errors }\">\n </ui-switch>\n </pw-input-container>\n <!-- </pw-input-container> -->\n </div>\n </div>\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LinkedInUrl' | transloco\" name=\"linkedin_url\">\n <input type=\"text\" class=\"form-control\" formControlName=\"linkedin_url\" id=\"linkedin_url\" />\n </pw-input-container>\n </div>\n <div class=\"ui-fluid skills-modal col-sm-4\">\n <label class=\"info-circle mb-2\">{{ 'Crm.ContactMessage.Account' | transloco }} <span\n class=\"tooltiptext gradient-custom-branding\">After assigning a company the contact will be visible in the\n Contacts tabs</span></label>\n <p-autoComplete [suggestions]=\"filteredAccounts\" formControlName=\"crm_account_id\" dataKey=\"id\"\n autocomplete=\"off\" field=\"name\" [dropdown]=\"true\" (completeMethod)=\"search($event)\" styleClass=\"w-100\"\n [inputStyle]=\"\n submitted && f['crm_account_id'].errors\n ? { border: '1px solid #ff586b' }\n : { border: '1px solid gray' }\n \" placeholder=\"Search accounts\" [multiple]=\"false\">\n </p-autoComplete>\n </div>\n <div class=\"col-12 col-sm-4\">\n <label class=\"info-circle mb-2\">{{ 'Crm.CrmLeads.Source' | transloco }} <span class=\"text-danger required-icon\">*</span><span\n class=\"tooltiptext gradient-custom-branding\">{{ 'Crm.CrmLeads.Tooltip.Source' | transloco }}</span>\n </label>\n <pw-input-container name=\"crm_source_id\" errorMsg=\"source is required\" *ngIf=\"source$ | async as source\">\n <select class=\"form-select\" formControlName=\"crm_source_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['crm_source_id'].errors }\">\n <option *ngFor=\"let option of source['crm_sources']\" [value]=\"option.id\"> {{ option.name }} </option>\n </select>\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.DateOfBirth' | transloco\" name=\"dob\">\n <div class=\"input-group\">\n <input class=\"form-control\" placeholder=\"dd-mm-yyyy\" formControlName=\"dob\" ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\" (click)=\"d.toggle()\" type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-4\">\n <label class=\"info-circle mb-2\">{{ 'Crm.ContactMessage.Potential' | transloco }} <span\n class=\"tooltiptext gradient-custom-branding\"> {{ 'Crm.ContactMessage.Tooltip.Potential' | transloco\n }}</span>\n </label>\n <select formControlName=\"potential\" class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['potential'].errors }\">\n <option *ngFor=\"let option of potentials\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n <div class=\"col-12 col-sm-4\">\n <label class=\"info-circle mb-2\">{{ 'Crm.ContactMessage.Labels' | transloco }} <span\n class=\"tooltiptext gradient-custom-branding\"> {{ 'Crm.ContactMessage.Tooltip.Labels' | transloco }}\n </span>\n </label>\n <p-multiSelect [options]=\"labels\" formControlName=\"labels\" appendTo=\"body\"></p-multiSelect>\n </div>\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" (click)=\"back()\"> {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\" [buttonBusy]=\"buttonBusy\" class=\"btn btn-primary\" [disabled]=\"form.invalid\"> {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n</div>\n" }]
172
172
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CrmService }] });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLWxlYWRzLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zbWFydC1jcm0vc3JjL2xpYi9wcml2YXRlL2NvbXBvbmVudHMvc21hcnQtY3JtLWxlYWRzL3NtYXJ0LWNybS1sZWFkcy1kZXRhaWxzL3NtYXJ0LWNybS1sZWFkcy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc21hcnQtY3JtL3NyYy9saWIvcHJpdmF0ZS9jb21wb25lbnRzL3NtYXJ0LWNybS1sZWFkcy9zbWFydC1jcm0tbGVhZHMtZGV0YWlscy9zbWFydC1jcm0tbGVhZHMtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUt4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFNekQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGdCQUFnQjtJQXVCL0QsWUFDSSxRQUFrQixFQUNWLFVBQXNCO1FBRTlCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFwQmxDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBUWpCLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUloQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FB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S0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxJQUFJLEdBQUc7b0JBQ1QsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsS0FBSyxFQUFFLEdBQUc7aUJBQ2IsQ0FBQztnQkFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBOUtRLDZCQUE2QjttR0FBN0IsNkJBQTZCLHlGQ2hCMUMsZ2tRQThJQTs7NEZEOUhhLDZCQUE2QjtrQkFKekMsU0FBUzsrQkFDSSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRhdGVTdHJ1Y3QgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBBcHBTbWFydENybSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvc21hcnQtY3JtLm1vZGVsJztcbmltcG9ydCB7IENybVNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2Uvc21hcnQtY3JtLXNoYXJlZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENybUFjY291bnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL2NybS1hY2NvdW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDcm1MZWFkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9jcm0tbGVhZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc21hcnQtY3JtLWxlYWRzLWRldGFpbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1jcm0tbGVhZHMtZGV0YWlscy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRDcm1MZWFkc0RldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBkYXRhOiBDcm1MZWFkO1xuXG4gICAgc3VibWl0dGVkID0gZmFsc2U7XG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgICBpZDogbnVtYmVyO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGFjY291bnRzOiBDcm1BY2NvdW50W107XG5cbiAgICBmaWx0ZXJlZEFjY291bnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgc291cmNlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgcG90ZW50aWFscyA9IFtdO1xuXG4gICAgbGFiZWxzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNybVNlcnZpY2U6IENybVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBTbWFydENybS5nZXRMZWFkc0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIoZGF0YVsnSWQnXSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pZCA9IE51bWJlcihkYXRhWydJZCddKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2V0VXNlclN1YnNjcmlwdGlvbklkKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSByZXNwb25zZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREZWZhdWx0VmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3N1YnNjcmlwdGlvbl9pZCcpLnNldFZhbHVlKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlJCA9IHRoaXMuY3JtU2VydmljZS5nZXRBbGxBY2NvdW50U291cmNlKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IHRoZSBzcGVjaWZpYyBjb250YWN0IGRldGFpbHMgb24gZWRpdCBmb3JtICovXG4gICAgcHJpdmF0ZSBnZXRMZWFkRGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldENvbnRhY3RCeUlkKHRoaXMuc3Vic2NyaXB0aW9uSWQsIHRoaXMuaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICAgICAgICAgIGxldCBkb2JPYmplY3Q6IE5nYkRhdGVTdHJ1Y3Q7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZG9iKSB7XG4gICAgICAgICAgICAgICAgZG9iT2JqZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBOdW1iZXIocmVzcG9uc2UuZG9iLnN1YnN0cmluZygwLCA0KSksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIocmVzcG9uc2UuZG9iLnN1YnN0cmluZyg1LCA3KSksXG4gICAgICAgICAgICAgICAgICAgIGRheTogTnVtYmVyKHJlc3BvbnNlLmRvYi5zdWJzdHJpbmcoOCwgMTApKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBkb2I6IGRvYk9iamVjdCB9KTtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudHMuZm9yRWFjaChhY2NvdW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmNybV9hY2NvdW50X2lkID09PSBhY2NvdW50LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NybV9hY2NvdW50X2lkJykucGF0Y2hWYWx1ZShhY2NvdW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZm9ybSBzdWJtaXNzaW9uICovXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZm9ybS52YWx1ZS5jcm1fYWNjb3VudF9pZCkge1xuICAgICAgICAgICAgICAgIGZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnNldFZhbHVlKGZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnZhbHVlLmlkKTtcbiAgICAgICAgICAgICAgICBmb3JtLnZhbHVlLmNybV9hY2NvdW50X2lkID0gTnVtYmVyKGZvcm0udmFsdWUuY3JtX2FjY291bnRfaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVXBkYXRlTGVhZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUG9zdExlYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgZm9ybSBjb250cm9scyAqL1xuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBwb3N0IHRoZSBuZXcgbGVhZCAqL1xuICAgIHByaXZhdGUgb25Qb3N0TGVhZCgpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgLi4udGhpcy5mb3JtLnZhbHVlIH07XG4gICAgICAgIGRhdGEuZG9iID0gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KHRoaXMuZm9ybS5nZXQoJ2RvYicpLnZhbHVlKTtcbiAgICAgICAgZGF0YS5pc19tYW51YWwgPSB0cnVlO1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0Q3JtTGVhZCh0aGlzLnN1YnNjcmlwdGlvbklkLCBkYXRhKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uQ3JtTGVhZHMuQWRkZWRNZXNzYWdlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBsZWFkcyAqL1xuICAgIHByaXZhdGUgb25VcGRhdGVMZWFkKCkge1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmZvcm0udmFsdWUgfTtcbiAgICAgICAgZGF0YS5kb2IgPSBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5mb3JtLmdldCgnZG9iJykudmFsdWUpO1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVDb250YWN0KHRoaXMuc3Vic2NyaXB0aW9uSWQsIHRoaXMuaWQsIGRhdGEpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0NybS5Dcm1MZWFkcy5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIGxpc3Qgb2YgYWNjb3VudHMgYnkgc3Vic2NyaXB0aW9uSWQgKi9cbiAgICBwcml2YXRlIGdldEFjY291bnRzQnlTdWJzY3JpcHRpb24oKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24odGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjY291bnRzID0gcmVzLmFjY291bnRzO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGVhZERldGFpbHMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBzZWFyY2ggYWNjb3VudHMgKi9cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5hY2NvdW50cy5maWx0ZXIoKHg6IENybUFjY291bnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQucXVlcnkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRBY2NvdW50cyA9IGRhdGE7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFZhbHVlcyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZS5nZXRDcm1Db250YWN0RGVmYXVsdFZhbHVlcyhpZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvdGVudGlhbHMgPSByZXNbJ3BvdGVudGlhbCddO1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSByZXNbJ2xhYmVscyddO1xuICAgICAgICAgICAgbGFiZWwuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1lLWF1dG8gY29sLXhzLTZcIj5cbiAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJiYWNrKClcIiBjbGFzcz1cInByZXZpb3VzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgPGgzIGNsYXNzPVwibS1zdWJoZWFkZXJfX3RpdGxlIG0tc3ViaGVhZGVyX190aXRsZS0tc2VwYXJhdG9yXCI+XG4gICAgPHNwYW4+e3sgJ0NybS5MZWFkQ3JtTGVhZHMuJyB8IHRyYW5zbG9jbyB9fToge3sgaXNMb2FkaW5nID8gJycgOiAoZGF0YT8uZmlyc3RfbmFtZSB8fCBkYXRhPy5sYXN0X25hbWUgPyBkYXRhPy5maXJzdF9uYW1lIHx8XG4gICAgICBkYXRhPy5sYXN0X25hbWUgOiAoJ0xhYmVsLkFkZE5ldycgfCB0cmFuc2xvY28pKSB9fTwvc3Bhbj5cbiAgPC9oMz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIG10LTNcIlxuICAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCI+IDwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gIDwvZGl2PlxuPGRpdiBjbGFzcz1cInAtMiBtdC0zXCIgICAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU2F2ZSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkZpcnN0TmFtZScgfCB0cmFuc2xvY29cIiBuYW1lPVwiZmlyc3RfbmFtZVwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuRmlyc3ROYW1lRXJyb3JNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3RfbmFtZVwiIGlkPVwiZmlyc3RfbmFtZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2ZpcnN0X25hbWUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTGFzdE5hbWUnIHwgdHJhbnNsb2NvXCIgbmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTGFzdE5hbWVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXN0X25hbWVcIiBpZD1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2xhc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5IZWFkbGluZScgfCB0cmFuc2xvY29cIiBuYW1lPVwiaGVhZGxpbmVcIlxuICAgICAgICAgIFtlcnJvck1zZ109XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkhlYWRsaW5lRXJyb3JNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiaGVhZGxpbmVcIiBpZD1cImhlYWRsaW5lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnaGVhZGxpbmUnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuVGVsJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJ0ZWxcIlxuICAgICAgICAgIFtlcnJvck1zZ109XCInQ3JtLkNvbnRhY3RNZXNzYWdlLlRlbEVycm9yTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInRlbFwiIGlkPVwidGVsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsndGVsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgIDxsYWJlbD57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkVtYWlsJyB8IHRyYW5zbG9jbyB9fSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHJlcXVpcmVkLWljb25cIj4qPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhICYmIGRhdGEuZW1haWxfdmVyaWZpZWRcIiBjbGFzcz1cInRleHQtc3VjY2VzcyBmdy1ib2xkXCI+VmVyaWZpZWQ8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnZW1haWwnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgPHB3LWZpZWxkLWVycm9yLWRpc3BsYXkgW2Rpc3BsYXlFcnJvcl09XCIoc3VibWl0dGVkIHx8IGZbJ2VtYWlsJ10udG91Y2hlZCkgJiYgZlsnZW1haWwnXS5lcnJvcnNcIiBbZXJyb3JNc2ddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlsnZW1haWwnXT8uZXJyb3JzPy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdQbGVhc2UgZW50ZXIgZW1haWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ1BsZWFzZSBFbnRlciB2YWxpZCBlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgIDwvcHctZmllbGQtZXJyb3ItZGlzcGxheT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICA8IS0tIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuRW1haWxWZXJmaWVkJyB8IHRyYW5zbG9jb1wiIGNsYXNzPVwibm93cmFwXCJcbiAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXJuYW1lPVwiZW1haWxfdmVyaWZpZWRcIj4gLS0+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5mby1jaXJjbGUgbWItMlwiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuRW1haWxWZXJpZmllZCcgfCB0cmFuc2xvY28gfX0gPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ0b29sdGlwdGV4dCBncmFkaWVudC1jdXN0b20tYnJhbmRpbmdcIj4ge3snQ3JtLkNvbnRhY3RNZXNzYWdlLlRvb2x0aXAuRW1haWxWZXJpZmllZCd8IHRyYW5zbG9jb1xuICAgICAgICAgICAgICB9fSA8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGNsYXNzPVwibm93cmFwXCIgbmFtZT1cImVtYWlsX3ZlcmlmaWVkXCI+XG4gICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImVtYWlsX3ZlcmlmaWVkXCIgbmFtZT1cImVtYWlsX3ZlcmlmaWVkXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydlbWFpbF92ZXJpZmllZCddLmVycm9ycyB9XCI+XG4gICAgICAgICAgICA8L3VpLXN3aXRjaD5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIDwvcHctaW5wdXQtY29udGFpbmVyPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5MaW5rZWRJblVybCcgfCB0cmFuc2xvY29cIiBuYW1lPVwibGlua2VkaW5fdXJsXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJsaW5rZWRpbl91cmxcIiBpZD1cImxpbmtlZGluX3VybFwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidWktZmx1aWQgc2tpbGxzLW1vZGFsIGNvbC1zbS00XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImluZm8tY2lyY2xlIG1iLTJcIj57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkFjY291bnQnIHwgdHJhbnNsb2NvIH19IDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRvb2x0aXB0ZXh0IGdyYWRpZW50LWN1c3RvbS1icmFuZGluZ1wiPkFmdGVyIGFzc2lnbmluZyBhIGNvbXBhbnkgdGhlIGNvbnRhY3Qgd2lsbCBiZSB2aXNpYmxlIGluIHRoZVxuICAgICAgICAgICAgQ29udGFjdHMgdGFiczwvc3Bhbj48L2xhYmVsPlxuICAgICAgICA8cC1hdXRvQ29tcGxldGUgW3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkQWNjb3VudHNcIiBmb3JtQ29udHJvbE5hbWU9XCJjcm1fYWNjb3VudF9pZFwiIGRhdGFLZXk9XCJpZFwiXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgZmllbGQ9XCJuYW1lXCIgW2Ryb3Bkb3duXT1cInRydWVcIiAoY29tcGxldGVNZXRob2QpPVwic2VhcmNoKCRldmVudClcIiBzdHlsZUNsYXNzPVwidy0xMDBcIlxuICAgICAgICAgIFtpbnB1dFN0eWxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmIGZbJ2NybV9hY2NvdW50X2lkJ10uZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGJvcmRlcjogJzFweCBzb2xpZCAjZmY1ODZiJyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IGJvcmRlcjogJzFweCBzb2xpZCBncmF5JyB9XG4gICAgICAgICAgICAgICAgICAgIFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGFjY291bnRzXCIgW211bHRpcGxlXT1cImZhbHNlXCI+XG4gICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5mby1jaXJjbGUgbWItMlwiPnt7ICdDcm0uQ3JtTGVhZHMuU291cmNlJyB8IHRyYW5zbG9jbyB9fSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyIHJlcXVpcmVkLWljb25cIj4qPC9zcGFuPjxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRvb2x0aXB0ZXh0IGdyYWRpZW50LWN1c3RvbS1icmFuZGluZ1wiPnt7ICdDcm0uQ3JtTGVhZHMuVG9vbHRpcC5Tb3VyY2UnIHwgdHJhbnNsb2NvIH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIG5hbWU9XCJjcm1fc291cmNlX2lkXCIgZXJyb3JNc2c9XCJzb3VyY2UgaXMgcmVxdWlyZWRcIiAqbmdJZj1cInNvdXJjZSQgfCBhc3luYyBhcyBzb3VyY2VcIj5cbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJjcm1fc291cmNlX2lkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnY3JtX3NvdXJjZV9pZCddLmVycm9ycyB9XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc291cmNlWydjcm1fc291cmNlcyddXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPiB7eyBvcHRpb24ubmFtZSB9fSA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5EYXRlT2ZCaXJ0aCcgfCB0cmFuc2xvY29cIiBuYW1lPVwiZG9iXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImRkLW1tLXl5eXlcIiBmb3JtQ29udHJvbE5hbWU9XCJkb2JcIiBuZ2JEYXRlcGlja2VyXG4gICAgICAgICAgICAgICNkPVwibmdiRGF0ZXBpY2tlclwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZC50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWNpcmNsZSBtYi0yXCI+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5Qb3RlbnRpYWwnIHwgdHJhbnNsb2NvIH19IDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRvb2x0aXB0ZXh0IGdyYWRpZW50LWN1c3RvbS1icmFuZGluZ1wiPiB7eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLlRvb2x0aXAuUG90ZW50aWFsJyB8IHRyYW5zbG9jb1xuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicG90ZW50aWFsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1zZWxlY3RcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsncG90ZW50aWFsJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcG90ZW50aWFsc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5mby1jaXJjbGUgbWItMlwiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuTGFiZWxzJyB8IHRyYW5zbG9jbyB9fSA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0b29sdGlwdGV4dCBncmFkaWVudC1jdXN0b20tYnJhbmRpbmdcIj4ge3sgJ0NybS5Db250YWN0TWVzc2FnZS5Ub29sdGlwLkxhYmVscycgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cImxhYmVsc1wiIGZvcm1Db250cm9sTmFtZT1cImxhYmVsc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZCBtdC0zXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRlZmF1bHQgbWUtMlwiIChjbGljayk9XCJiYWNrKClcIj4ge3sgJ0J1dHRvbi5DYW5jZWwnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbYnV0dG9uQnVzeV09XCJidXR0b25CdXN5XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+IHt7ICdCdXR0b24uU3VibWl0JyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLWxlYWRzLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zbWFydC1jcm0vc3JjL2xpYi9wcml2YXRlL2NvbXBvbmVudHMvc21hcnQtY3JtLWxlYWRzL3NtYXJ0LWNybS1sZWFkcy1kZXRhaWxzL3NtYXJ0LWNybS1sZWFkcy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc21hcnQtY3JtL3NyYy9saWIvcHJpdmF0ZS9jb21wb25lbnRzL3NtYXJ0LWNybS1sZWFkcy9zbWFydC1jcm0tbGVhZHMtZGV0YWlscy9zbWFydC1jcm0tbGVhZHMtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUt4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFNekQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGdCQUFnQjtJQXVCL0QsWUFDSSxRQUFrQixFQUNWLFVBQXNCO1FBRTlCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFwQmxDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBUWpCLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUloQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FB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S0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxJQUFJLEdBQUc7b0JBQ1QsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsS0FBSyxFQUFFLEdBQUc7aUJBQ2IsQ0FBQztnQkFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBOUtRLDZCQUE2QjttR0FBN0IsNkJBQTZCLHlGQ2hCMUMsZ2tRQThJQTs7NEZEOUhhLDZCQUE2QjtrQkFKekMsU0FBUzsrQkFDSSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRhdGVTdHJ1Y3QgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBBcHBTbWFydENybSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvc21hcnQtY3JtLm1vZGVsJztcbmltcG9ydCB7IENybVNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2Uvc21hcnQtY3JtLXNoYXJlZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENybUFjY291bnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL2NybS1hY2NvdW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDcm1MZWFkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9jcm0tbGVhZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc21hcnQtY3JtLWxlYWRzLWRldGFpbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1jcm0tbGVhZHMtZGV0YWlscy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRDcm1MZWFkc0RldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBkYXRhOiBDcm1MZWFkO1xuXG4gICAgc3VibWl0dGVkID0gZmFsc2U7XG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuICAgIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgICBpZDogbnVtYmVyO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGFjY291bnRzOiBDcm1BY2NvdW50W107XG5cbiAgICBmaWx0ZXJlZEFjY291bnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgc291cmNlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgcG90ZW50aWFscyA9IFtdO1xuXG4gICAgbGFiZWxzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNybVNlcnZpY2U6IENybVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBTbWFydENybS5nZXRMZWFkc0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIoZGF0YVsnSWQnXSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pZCA9IE51bWJlcihkYXRhWydJZCddKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2V0VXNlclN1YnNjcmlwdGlvbklkKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSByZXNwb25zZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREZWZhdWx0VmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3N1YnNjcmlwdGlvbl9pZCcpLnNldFZhbHVlKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlJCA9IHRoaXMuY3JtU2VydmljZS5nZXRBbGxBY2NvdW50U291cmNlKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZ2V0IHRoZSBzcGVjaWZpYyBjb250YWN0IGRldGFpbHMgb24gZWRpdCBmb3JtICovXG4gICAgcHJpdmF0ZSBnZXRMZWFkRGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldENvbnRhY3RCeUlkKHRoaXMuc3Vic2NyaXB0aW9uSWQsIHRoaXMuaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICAgICAgICAgIGxldCBkb2JPYmplY3Q6IE5nYkRhdGVTdHJ1Y3Q7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZG9iKSB7XG4gICAgICAgICAgICAgICAgZG9iT2JqZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBOdW1iZXIocmVzcG9uc2UuZG9iLnN1YnN0cmluZygwLCA0KSksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIocmVzcG9uc2UuZG9iLnN1YnN0cmluZyg1LCA3KSksXG4gICAgICAgICAgICAgICAgICAgIGRheTogTnVtYmVyKHJlc3BvbnNlLmRvYi5zdWJzdHJpbmcoOCwgMTApKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBkb2I6IGRvYk9iamVjdCB9KTtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudHMuZm9yRWFjaChhY2NvdW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmNybV9hY2NvdW50X2lkID09PSBhY2NvdW50LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NybV9hY2NvdW50X2lkJykucGF0Y2hWYWx1ZShhY2NvdW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZm9ybSBzdWJtaXNzaW9uICovXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgICAgICBpZiAoZm9ybS52YWx1ZS5jcm1fYWNjb3VudF9pZCkge1xuICAgICAgICAgICAgICAgIGZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnNldFZhbHVlKGZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnZhbHVlLmlkKTtcbiAgICAgICAgICAgICAgICBmb3JtLnZhbHVlLmNybV9hY2NvdW50X2lkID0gTnVtYmVyKGZvcm0udmFsdWUuY3JtX2FjY291bnRfaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVXBkYXRlTGVhZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUG9zdExlYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgZm9ybSBjb250cm9scyAqL1xuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBwb3N0IHRoZSBuZXcgbGVhZCAqL1xuICAgIHByaXZhdGUgb25Qb3N0TGVhZCgpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgLi4udGhpcy5mb3JtLnZhbHVlIH07XG4gICAgICAgIGRhdGEuZG9iID0gSGVscGVyU2VydmljZS5kYXRlRm9ybWF0KHRoaXMuZm9ybS5nZXQoJ2RvYicpLnZhbHVlKTtcbiAgICAgICAgZGF0YS5pc19tYW51YWwgPSB0cnVlO1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0Q3JtTGVhZCh0aGlzLnN1YnNjcmlwdGlvbklkLCBkYXRhKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uQ3JtTGVhZHMuQWRkZWRNZXNzYWdlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBsZWFkcyAqL1xuICAgIHByaXZhdGUgb25VcGRhdGVMZWFkKCkge1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmZvcm0udmFsdWUgfTtcbiAgICAgICAgZGF0YS5kb2IgPSBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5mb3JtLmdldCgnZG9iJykudmFsdWUpO1xuICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVDb250YWN0KHRoaXMuc3Vic2NyaXB0aW9uSWQsIHRoaXMuaWQsIGRhdGEpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0NybS5Dcm1MZWFkcy5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIGxpc3Qgb2YgYWNjb3VudHMgYnkgc3Vic2NyaXB0aW9uSWQgKi9cbiAgICBwcml2YXRlIGdldEFjY291bnRzQnlTdWJzY3JpcHRpb24oKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24odGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjY291bnRzID0gcmVzLmFjY291bnRzO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGVhZERldGFpbHMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBzZWFyY2ggYWNjb3VudHMgKi9cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5hY2NvdW50cz8uZmlsdGVyKCh4OiBDcm1BY2NvdW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHgubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRzPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXJlZEFjY291bnRzID0gZGF0YTtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0VmFsdWVzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldENybUNvbnRhY3REZWZhdWx0VmFsdWVzKGlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMucG90ZW50aWFscyA9IHJlc1sncG90ZW50aWFsJ107XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHJlc1snbGFiZWxzJ107XG4gICAgICAgICAgICBsYWJlbC5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHZhbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbHMucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWUtYXV0byBjb2wteHMtNlwiPlxuICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImJhY2soKVwiIGNsYXNzPVwicHJldmlvdXNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICA8aDMgY2xhc3M9XCJtLXN1YmhlYWRlcl9fdGl0bGUgbS1zdWJoZWFkZXJfX3RpdGxlLS1zZXBhcmF0b3JcIj5cbiAgICA8c3Bhbj57eyAnQ3JtLkxlYWRDcm1MZWFkcy4nIHwgdHJhbnNsb2NvIH19OiB7eyBpc0xvYWRpbmcgPyAnJyA6IChkYXRhPy5maXJzdF9uYW1lIHx8IGRhdGE/Lmxhc3RfbmFtZSA/IGRhdGE/LmZpcnN0X25hbWUgfHxcbiAgICAgIGRhdGE/Lmxhc3RfbmFtZSA6ICgnTGFiZWwuQWRkTmV3JyB8IHRyYW5zbG9jbykpIH19PC9zcGFuPlxuICA8L2gzPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG4gIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgPC9kaXY+XG48ZGl2IGNsYXNzPVwicC0yIG10LTNcIiAgICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TYXZlKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuRmlyc3ROYW1lJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0NybS5Db250YWN0TWVzc2FnZS5GaXJzdE5hbWVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdF9uYW1lXCIgaWQ9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnZmlyc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5MYXN0TmFtZScgfCB0cmFuc2xvY29cIiBuYW1lPVwibGFzdF9uYW1lXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0NybS5Db250YWN0TWVzc2FnZS5MYXN0TmFtZUVycm9yTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImxhc3RfbmFtZVwiIGlkPVwibGFzdF9uYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnbGFzdF9uYW1lJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkhlYWRsaW5lJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJoZWFkbGluZVwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuSGVhZGxpbmVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJoZWFkbGluZVwiIGlkPVwiaGVhZGxpbmVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydoZWFkbGluZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTQgY29sLWxnLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5UZWwnIHwgdHJhbnNsb2NvXCIgbmFtZT1cInRlbFwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuVGVsRXJyb3JNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidGVsXCIgaWQ9XCJ0ZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWyd0ZWwnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgPGxhYmVsPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuRW1haWwnIHwgdHJhbnNsb2NvIH19IDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgcmVxdWlyZWQtaWNvblwiPio8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgJiYgZGF0YS5lbWFpbF92ZXJpZmllZFwiIGNsYXNzPVwidGV4dC1zdWNjZXNzIGZ3LWJvbGRcIj5WZXJpZmllZDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydlbWFpbCddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgICA8cHctZmllbGQtZXJyb3ItZGlzcGxheSBbZGlzcGxheUVycm9yXT1cIihzdWJtaXR0ZWQgfHwgZlsnZW1haWwnXS50b3VjaGVkKSAmJiBmWydlbWFpbCddLmVycm9yc1wiIFtlcnJvck1zZ109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmWydlbWFpbCddPy5lcnJvcnM/LnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1BsZWFzZSBlbnRlciBlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnUGxlYXNlIEVudGVyIHZhbGlkIGVtYWlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgPC9wdy1maWVsZC1lcnJvci1kaXNwbGF5PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgIDwhLS0gPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbFZlcmZpZWQnIHwgdHJhbnNsb2NvXCIgY2xhc3M9XCJub3dyYXBcIlxuICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lcm5hbWU9XCJlbWFpbF92ZXJpZmllZFwiPiAtLT5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWNpcmNsZSBtYi0yXCI+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbFZlcmlmaWVkJyB8IHRyYW5zbG9jbyB9fSA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInRvb2x0aXB0ZXh0IGdyYWRpZW50LWN1c3RvbS1icmFuZGluZ1wiPiB7eydDcm0uQ29udGFjdE1lc3NhZ2UuVG9vbHRpcC5FbWFpbFZlcmlmaWVkJ3wgdHJhbnNsb2NvXG4gICAgICAgICAgICAgIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgY2xhc3M9XCJub3dyYXBcIiBuYW1lPVwiZW1haWxfdmVyaWZpZWRcIj5cbiAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxfdmVyaWZpZWRcIiBuYW1lPVwiZW1haWxfdmVyaWZpZWRcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2VtYWlsX3ZlcmlmaWVkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgIDwvdWktc3dpdGNoPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwhLS0gPC9wdy1pbnB1dC1jb250YWluZXI+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkxpbmtlZEluVXJsJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJsaW5rZWRpbl91cmxcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImxpbmtlZGluX3VybFwiIGlkPVwibGlua2VkaW5fdXJsXCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1mbHVpZCBza2lsbHMtbW9kYWwgY29sLXNtLTRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW5mby1jaXJjbGUgbWItMlwiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuQWNjb3VudCcgfCB0cmFuc2xvY28gfX0gPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidG9vbHRpcHRleHQgZ3JhZGllbnQtY3VzdG9tLWJyYW5kaW5nXCI+QWZ0ZXIgYXNzaWduaW5nIGEgY29tcGFueSB0aGUgY29udGFjdCB3aWxsIGJlIHZpc2libGUgaW4gdGhlXG4gICAgICAgICAgICBDb250YWN0cyB0YWJzPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgIDxwLWF1dG9Db21wbGV0ZSBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRBY2NvdW50c1wiIGZvcm1Db250cm9sTmFtZT1cImNybV9hY2NvdW50X2lkXCIgZGF0YUtleT1cImlkXCJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiBmaWVsZD1cIm5hbWVcIiBbZHJvcGRvd25dPVwidHJ1ZVwiIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiIHN0eWxlQ2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgW2lucHV0U3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiYgZlsnY3JtX2FjY291bnRfaWQnXS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgYm9yZGVyOiAnMXB4IHNvbGlkICNmZjU4NmInIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgYm9yZGVyOiAnMXB4IHNvbGlkIGdyYXknIH1cbiAgICAgICAgICAgICAgICAgICAgXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYWNjb3VudHNcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIj5cbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWNpcmNsZSBtYi0yXCI+e3sgJ0NybS5Dcm1MZWFkcy5Tb3VyY2UnIHwgdHJhbnNsb2NvIH19IDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgcmVxdWlyZWQtaWNvblwiPio8L3NwYW4+PHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidG9vbHRpcHRleHQgZ3JhZGllbnQtY3VzdG9tLWJyYW5kaW5nXCI+e3sgJ0NybS5Dcm1MZWFkcy5Ub29sdGlwLlNvdXJjZScgfCB0cmFuc2xvY28gfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgbmFtZT1cImNybV9zb3VyY2VfaWRcIiBlcnJvck1zZz1cInNvdXJjZSBpcyByZXF1aXJlZFwiICpuZ0lmPVwic291cmNlJCB8IGFzeW5jIGFzIHNvdXJjZVwiPlxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImNybV9zb3VyY2VfaWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjcm1fc291cmNlX2lkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzb3VyY2VbJ2NybV9zb3VyY2VzJ11cIiBbdmFsdWVdPVwib3B0aW9uLmlkXCI+IHt7IG9wdGlvbi5uYW1lIH19IDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkRhdGVPZkJpcnRoJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJkb2JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiZGQtbW0teXl5eVwiIGZvcm1Db250cm9sTmFtZT1cImRvYlwiIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAgICAgI2Q9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJkLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImluZm8tY2lyY2xlIG1iLTJcIj57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLlBvdGVudGlhbCcgfCB0cmFuc2xvY28gfX0gPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidG9vbHRpcHRleHQgZ3JhZGllbnQtY3VzdG9tLWJyYW5kaW5nXCI+IHt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuVG9vbHRpcC5Qb3RlbnRpYWwnIHwgdHJhbnNsb2NvXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwb3RlbnRpYWxcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLXNlbGVjdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydwb3RlbnRpYWwnXS5lcnJvcnMgfVwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwb3RlbnRpYWxzXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWNpcmNsZSBtYi0yXCI+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5MYWJlbHMnIHwgdHJhbnNsb2NvIH19IDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRvb2x0aXB0ZXh0IGdyYWRpZW50LWN1c3RvbS1icmFuZGluZ1wiPiB7eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLlRvb2x0aXAuTGFiZWxzJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwibGFiZWxzXCIgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxzXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kIG10LTNcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGVmYXVsdCBtZS0yXCIgKGNsaWNrKT1cImJhY2soKVwiPiB7eyAnQnV0dG9uLkNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj4ge3sgJ0J1dHRvbi5TdWJtaXQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19