@vendure/admin-ui 1.9.4 → 1.9.6
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.
- package/bundles/vendure-admin-ui-catalog.umd.js +93 -45
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +1 -1
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-login.umd.js +1 -1
- package/bundles/vendure-admin-ui-login.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js +43 -3
- package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
- package/catalog/components/product-options-editor/product-options-editor.component.d.ts +5 -2
- package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
- package/core/common/version.d.ts +1 -1
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/esm2015/catalog/components/product-options-editor/product-options-editor.component.js +74 -29
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/shared/components/dropdown/dropdown.component.js +1 -1
- package/esm2015/login/components/login/login.component.js +2 -2
- package/esm2015/settings/components/administrator-list/administrator-list.component.js +47 -7
- package/fesm2015/vendure-admin-ui-catalog.js +73 -28
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +1 -1
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-login.js +1 -1
- package/fesm2015/vendure-admin-ui-login.js.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.js +45 -6
- package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
- package/login/vendure-admin-ui-login.metadata.json +1 -1
- package/package.json +2 -2
- package/settings/components/administrator-list/administrator-list.component.d.ts +17 -2
- package/settings/vendure-admin-ui-settings.metadata.json +1 -1
- package/static/i18n-messages/cs.json +3 -2
- package/static/i18n-messages/de.json +4 -3
- package/static/i18n-messages/en.json +3 -2
- package/static/i18n-messages/es.json +3 -2
- package/static/i18n-messages/fr.json +3 -2
- package/static/i18n-messages/it.json +3 -2
- package/static/i18n-messages/pl.json +3 -2
- package/static/i18n-messages/pt_BR.json +3 -2
- package/static/i18n-messages/pt_PT.json +3 -2
- package/static/i18n-messages/ru.json +3 -2
- package/static/i18n-messages/uk.json +3 -2
- package/static/i18n-messages/zh_Hans.json +3 -2
- package/static/i18n-messages/zh_Hant.json +3 -2
package/esm2015/catalog/components/product-options-editor/product-options-editor.component.js
CHANGED
|
@@ -45,10 +45,10 @@ export class ProductOptionsEditorComponent extends BaseDetailComponent {
|
|
|
45
45
|
const $product = this.dataService.product.getProduct(this.id).mapSingle(data => data.product);
|
|
46
46
|
combineLatest(this.entity$, this.languageCode$, $product)
|
|
47
47
|
.pipe(take(1), mergeMap(([{ optionGroups }, languageCode, product]) => {
|
|
48
|
-
var _a
|
|
48
|
+
var _a;
|
|
49
49
|
const updateOperations = [];
|
|
50
50
|
for (const optionGroupForm of this.getOptionGroups()) {
|
|
51
|
-
if (
|
|
51
|
+
if (optionGroupForm.dirty) {
|
|
52
52
|
const optionGroupEntity = optionGroups.find(og => og.id === optionGroupForm.value.id);
|
|
53
53
|
if (optionGroupEntity) {
|
|
54
54
|
const input = this.getUpdatedOptionGroup(optionGroupEntity, optionGroupForm, languageCode);
|
|
@@ -56,9 +56,9 @@ export class ProductOptionsEditorComponent extends BaseDetailComponent {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
for (const optionForm of this.getOptions(optionGroupForm)) {
|
|
59
|
-
if (
|
|
60
|
-
const optionGroup = (
|
|
61
|
-
.find(og => og.id === optionGroupForm.value.id)) === null ||
|
|
59
|
+
if (optionForm.dirty) {
|
|
60
|
+
const optionGroup = (_a = optionGroups
|
|
61
|
+
.find(og => og.id === optionGroupForm.value.id)) === null || _a === void 0 ? void 0 : _a.options.find(o => o.id === optionForm.value.id);
|
|
62
62
|
if (optionGroup) {
|
|
63
63
|
const input = this.getUpdatedOption(optionGroup, optionForm, languageCode);
|
|
64
64
|
updateOperations.push(this.productDetailService.updateProductOption(Object.assign(Object.assign({}, input), { autoUpdate: this.autoUpdateVariantNames }), product, languageCode));
|
|
@@ -97,7 +97,7 @@ export class ProductOptionsEditorComponent extends BaseDetailComponent {
|
|
|
97
97
|
const input = createUpdatedTranslatable({
|
|
98
98
|
translatable: option,
|
|
99
99
|
updatedFields: optionFormGroup.value,
|
|
100
|
-
customFieldConfig: this.
|
|
100
|
+
customFieldConfig: this.optionCustomFields,
|
|
101
101
|
languageCode,
|
|
102
102
|
defaultTranslation: {
|
|
103
103
|
languageCode,
|
|
@@ -107,39 +107,84 @@ export class ProductOptionsEditorComponent extends BaseDetailComponent {
|
|
|
107
107
|
return input;
|
|
108
108
|
}
|
|
109
109
|
setFormValues(entity, languageCode) {
|
|
110
|
-
const
|
|
110
|
+
const groupsForm = this.detailForm.get('optionGroups');
|
|
111
111
|
for (const optionGroup of entity.optionGroups) {
|
|
112
112
|
const groupTranslation = findTranslation(optionGroup, languageCode);
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
const optionsFormArray = new FormArray([]);
|
|
113
|
+
const groupForm = this.setOptionGroupForm(optionGroup, groupsForm, groupTranslation);
|
|
114
|
+
this.setCustomFieldsForm(this.optionGroupCustomFields, groupForm, optionGroup, groupTranslation);
|
|
115
|
+
let optionsForm = groupForm.get('options');
|
|
116
|
+
if (!optionsForm) {
|
|
117
|
+
optionsForm = this.formBuilder.array([]);
|
|
118
|
+
groupForm.addControl('options', optionsForm);
|
|
119
|
+
}
|
|
121
120
|
for (const option of optionGroup.options) {
|
|
122
121
|
const optionTranslation = findTranslation(option, languageCode);
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
122
|
+
const optionForm = this.setOptionForm(option, optionsForm, optionTranslation);
|
|
123
|
+
this.setCustomFieldsForm(this.optionCustomFields, optionForm, option, optionTranslation);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
setCustomFieldsForm(customFields, formGroup, entity, currentTranslation) {
|
|
128
|
+
if (customFields.length) {
|
|
129
|
+
let customValueFieldsGroup = formGroup.get(['customFields']);
|
|
130
|
+
if (!customValueFieldsGroup) {
|
|
131
|
+
customValueFieldsGroup = this.formBuilder.group(customFields.reduce((hash, field) => (Object.assign(Object.assign({}, hash), { [field.name]: '' })), {}));
|
|
132
|
+
formGroup.addControl('customFields', customValueFieldsGroup);
|
|
131
133
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
this.setCustomFieldFormValues(customFields, customValueFieldsGroup, entity, currentTranslation);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
setOptionGroupForm(entity, groupsForm, currentTranslation) {
|
|
138
|
+
var _a, _b, _c, _d, _e, _f;
|
|
139
|
+
const group = {
|
|
140
|
+
id: entity.id,
|
|
141
|
+
createdAt: entity.createdAt,
|
|
142
|
+
updatedAt: entity.updatedAt,
|
|
143
|
+
code: entity.code,
|
|
144
|
+
name: (_a = currentTranslation === null || currentTranslation === void 0 ? void 0 : currentTranslation.name) !== null && _a !== void 0 ? _a : '',
|
|
145
|
+
};
|
|
146
|
+
let groupForm = groupsForm.controls.find(control => control.value.id === entity.id);
|
|
147
|
+
if (groupForm) {
|
|
148
|
+
(_b = groupForm.get('id')) === null || _b === void 0 ? void 0 : _b.setValue(group.id);
|
|
149
|
+
(_c = groupForm.get('code')) === null || _c === void 0 ? void 0 : _c.setValue(group.code);
|
|
150
|
+
(_d = groupForm.get('name')) === null || _d === void 0 ? void 0 : _d.setValue(group.name);
|
|
151
|
+
(_e = groupForm.get('createdAt')) === null || _e === void 0 ? void 0 : _e.setValue(group.name);
|
|
152
|
+
(_f = groupForm.get('updatedAt')) === null || _f === void 0 ? void 0 : _f.setValue(group.name);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
groupForm = this.formBuilder.group(group);
|
|
156
|
+
groupsForm.push(groupForm);
|
|
157
|
+
}
|
|
158
|
+
return groupForm;
|
|
159
|
+
}
|
|
160
|
+
setOptionForm(entity, optionsForm, currentTranslation) {
|
|
161
|
+
var _a, _b, _c, _d, _e, _f;
|
|
162
|
+
const group = {
|
|
163
|
+
id: entity.id,
|
|
164
|
+
createdAt: entity.createdAt,
|
|
165
|
+
updatedAt: entity.updatedAt,
|
|
166
|
+
code: entity.code,
|
|
167
|
+
name: (_a = currentTranslation === null || currentTranslation === void 0 ? void 0 : currentTranslation.name) !== null && _a !== void 0 ? _a : '',
|
|
168
|
+
};
|
|
169
|
+
let optionForm = optionsForm.controls.find(control => control.value.id === entity.id);
|
|
170
|
+
if (optionForm) {
|
|
171
|
+
(_b = optionForm.get('id')) === null || _b === void 0 ? void 0 : _b.setValue(group.id);
|
|
172
|
+
(_c = optionForm.get('code')) === null || _c === void 0 ? void 0 : _c.setValue(group.code);
|
|
173
|
+
(_d = optionForm.get('name')) === null || _d === void 0 ? void 0 : _d.setValue(group.name);
|
|
174
|
+
(_e = optionForm.get('createdAt')) === null || _e === void 0 ? void 0 : _e.setValue(group.name);
|
|
175
|
+
(_f = optionForm.get('updatedAt')) === null || _f === void 0 ? void 0 : _f.setValue(group.name);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
optionForm = this.formBuilder.group(group);
|
|
179
|
+
optionsForm.push(optionForm);
|
|
135
180
|
}
|
|
136
|
-
|
|
181
|
+
return optionForm;
|
|
137
182
|
}
|
|
138
183
|
}
|
|
139
184
|
ProductOptionsEditorComponent.decorators = [
|
|
140
185
|
{ type: Component, args: [{
|
|
141
186
|
selector: 'vdr-product-options-editor',
|
|
142
|
-
template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <div class=\"flex center\">\r\n <div class=\"mr2\">\r\n <clr-checkbox-wrapper>\r\n <input\r\n clrCheckbox\r\n type=\"checkbox\"\r\n id=\"auto-update\"\r\n [(ngModel)]=\"autoUpdateVariantNames\"\r\n />\r\n <label>{{ 'catalog.auto-update-product-variant-name' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </div>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"optionGroups$ | async as optionGroups\">\r\n <div formGroupName=\"optionGroups\" class=\"clr-row\">\r\n <div class=\"clr-col-12 clr-col-xl-6\" *ngFor=\"let optionGroup of getOptionGroups(); index as i\">\r\n <section class=\"card\" [formArrayName]=\"i\">\r\n <div class=\"card-header option-group-header\">\r\n <vdr-entity-info [entity]=\"optionGroup.value\"></vdr-entity-info>\r\n <div class=\"ml2\">{{ optionGroup.value.code }}</div>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n [id]=\"'name-' + i\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\r\n <input\r\n [id]=\"'code-' + i\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n </div>\r\n <section class=\"card-block\">\r\n <table class=\"facet-values-list table mt2 mb4\" formGroupName=\"options\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'common.name' | translate }}</th>\r\n <th>{{ 'common.code' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n class=\"facet-value\"\r\n *ngFor=\"let option of getOptions(optionGroup); let i = index\"\r\n [formGroupName]=\"i\"\r\n >\r\n <td class=\"align-middle\">\r\n <vdr-entity-info [entity]=\"option.value\"></vdr-entity-info>\r\n </td>\r\n <td class=\"align-middle\">\r\n <input\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </td>\r\n <td class=\"align-middle\"><input type=\"text\" formControlName=\"code\" /></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\r\n </section>\r\n </div>\r\n </div>\r\n</form>\r\n",
|
|
187
|
+
template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <div class=\"flex center\">\r\n <div class=\"mr2\">\r\n <clr-checkbox-wrapper>\r\n <input\r\n clrCheckbox\r\n type=\"checkbox\"\r\n id=\"auto-update\"\r\n [(ngModel)]=\"autoUpdateVariantNames\"\r\n />\r\n <label>{{ 'catalog.auto-update-product-variant-name' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </div>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"optionGroups$ | async as optionGroups\">\r\n <div formGroupName=\"optionGroups\" class=\"clr-row\">\r\n <div class=\"clr-col-12 clr-col-xl-6\" *ngFor=\"let optionGroup of getOptionGroups(); index as i\">\r\n <section class=\"card\" [formArrayName]=\"i\">\r\n <div class=\"card-header option-group-header\">\r\n <vdr-entity-info [entity]=\"optionGroup.value\"></vdr-entity-info>\r\n <div class=\"ml2\">{{ optionGroup.value.code }}</div>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n [id]=\"'name-' + i\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\r\n <input\r\n [id]=\"'code-' + i\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"optionGroupCustomFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ProductOptionGroup\"\r\n [customFields]=\"optionGroupCustomFields\"\r\n [customFieldsFormGroup]=\"optionGroup.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n </div>\r\n <section class=\"card-block\">\r\n <table class=\"facet-values-list table mt2 mb4\" formGroupName=\"options\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'common.name' | translate }}</th>\r\n <th>{{ 'common.code' | translate }}</th>\r\n <ng-container *ngIf=\"optionCustomFields.length\">\r\n <th>{{ 'common.custom-fields' | translate }}</th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n class=\"facet-value\"\r\n *ngFor=\"let option of getOptions(optionGroup); let i = index\"\r\n [formGroupName]=\"i\"\r\n >\r\n <td class=\"align-middle\">\r\n <vdr-entity-info [entity]=\"option.value\"></vdr-entity-info>\r\n </td>\r\n <td class=\"align-middle\">\r\n <input\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </td>\r\n <td class=\"align-middle\"><input type=\"text\" formControlName=\"code\" /></td>\r\n <td class=\"\" *ngIf=\"optionCustomFields.length\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ProductOption\"\r\n [customFields]=\"optionCustomFields\"\r\n [compact]=\"true\"\r\n [customFieldsFormGroup]=\"option.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </section>\r\n </section>\r\n </div>\r\n </div>\r\n</form>\r\n",
|
|
143
188
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
144
189
|
styles: [".option-group-header{display:flex;align-items:baseline}\n"]
|
|
145
190
|
},] }
|
|
@@ -154,4 +199,4 @@ ProductOptionsEditorComponent.ctorParameters = () => [
|
|
|
154
199
|
{ type: ChangeDetectorRef },
|
|
155
200
|
{ type: NotificationService }
|
|
156
201
|
];
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1vcHRpb25zLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvcHJvZHVjdC1vcHRpb25zLWVkaXRvci9wcm9kdWN0LW9wdGlvbnMtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsbUJBQW1CLEVBRW5CLHlCQUF5QixFQUV6QixXQUFXLEVBRVgsZUFBZSxFQUdmLG1CQUFtQixFQUNuQixVQUFVLEVBR1YsbUJBQW1CLEdBSXRCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFRN0YsTUFBTSxPQUFPLDZCQUNULFNBQVEsbUJBQXFEO0lBWTdELFlBQ2MsS0FBcUIsRUFDckIsTUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxXQUF3QixFQUMxQixvQkFBMEMsRUFDMUMsV0FBd0IsRUFDeEIsY0FBaUMsRUFDakMsbUJBQXdDO1FBRWhELEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBVDdDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFYcEQsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLHFCQUFnQixHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFhN0UsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyRCxHQUFHLENBQUMsQ0FBQyxPQUF5QyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQzNFLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQzVCLFlBQVksRUFBRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxlQUFlO1FBQ1gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsT0FBUSxZQUEwQixDQUFDLFFBQXVCLENBQUM7SUFDL0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFzQjtRQUM3QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLE9BQVEsT0FBcUIsQ0FBQyxRQUF1QixDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUNyRCxPQUFPO1NBQ1Y7UUFDRCxpREFBaUQ7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBUSxDQUFDLENBQUM7UUFDL0YsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7YUFDcEQsSUFBSSxDQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7O1lBQ25ELE1BQU0sZ0JBQWdCLEdBQTJCLEVBQUUsQ0FBQztZQUNwRCxLQUFLLE1BQU0sZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxDQUFBLE1BQUEsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsMENBQUUsS0FBSyxNQUFJLE1BQUEsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsMENBQUUsS0FBSyxDQUFBLEVBQUU7b0JBQzFFLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FDdkMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUMzQyxDQUFDO29CQUNGLElBQUksaUJBQWlCLEVBQUU7d0JBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDcEMsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixZQUFZLENBQ2YsQ0FBQzt3QkFDRixnQkFBZ0IsQ0FBQyxJQUFJLENBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUMzRCxDQUFDO3FCQUNMO2lCQUNKO2dCQUVELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDdkQsSUFBSSxDQUFBLE1BQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsMENBQUUsS0FBSyxNQUFJLE1BQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsMENBQUUsS0FBSyxDQUFBLEVBQUU7d0JBQ2hFLE1BQU0sV0FBVyxHQUFHLE1BQUEsWUFBWTs2QkFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQywwQ0FDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDdEQsSUFBSSxXQUFXLEVBQUU7NEJBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUMvQixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksQ0FDZixDQUFDOzRCQUNGLGdCQUFnQixDQUFDLElBQUksQ0FDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixpQ0FDcEMsS0FBSyxLQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEtBQ25ELE9BQU8sRUFDUCxZQUFZLENBQ2YsQ0FDSixDQUFDO3lCQUNMO3FCQUNKO2lCQUNKO2FBQ0o7WUFDRCxPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUNOLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFO2dCQUNoRSxNQUFNLEVBQUUsb0JBQW9CO2FBQy9CLENBQUMsQ0FBQztRQUNQLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtZQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLEVBQUU7Z0JBQzVELE1BQU0sRUFBRSxvQkFBb0I7YUFDL0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUNKLENBQUM7SUFDVixDQUFDO0lBRU8scUJBQXFCLENBQ3pCLFdBQXdDLEVBQ3hDLG9CQUErQixFQUMvQixZQUEwQjtRQUUxQixNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQztZQUNwQyxZQUFZLEVBQUUsV0FBVztZQUN6QixhQUFhLEVBQUUsb0JBQW9CLENBQUMsS0FBSztZQUN6QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQy9DLFlBQVk7WUFDWixrQkFBa0IsRUFBRTtnQkFDaEIsWUFBWTtnQkFDWixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQy9CO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLGdCQUFnQixDQUNwQixNQUE4QixFQUM5QixlQUEwQixFQUMxQixZQUEwQjtRQUUxQixNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQztZQUNwQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixhQUFhLEVBQUUsZUFBZSxDQUFDLEtBQUs7WUFDcEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtZQUMvQyxZQUFZO1lBQ1osa0JBQWtCLEVBQUU7Z0JBQ2hCLFlBQVk7Z0JBQ1osSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTthQUMxQjtTQUNKLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxhQUFhLENBQUMsTUFBd0MsRUFBRSxZQUEwQjtRQUN4RixNQUFNLGVBQWUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDM0MsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sS0FBSyxHQUFHO2dCQUNWLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDbEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO2dCQUNoQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7Z0JBQ2hDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTtnQkFDdEIsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDdEQsQ0FBQztZQUNGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFM0MsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUN0QyxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO29CQUN6QyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ2IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO29CQUMzQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7aUJBQ3hELENBQUMsQ0FBQztnQkFDSCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDeEM7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JELGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7O1lBN0xKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0Qyx1OUlBQXNEO2dCQUV0RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQS9CUSxjQUFjO1lBQUUsTUFBTTtZQWdCM0IsbUJBQW1CO1lBVG5CLFdBQVc7WUFpQk4sb0JBQW9CO1lBekJULFdBQVc7WUFERyxpQkFBaUI7WUFjL0MsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgQmFzZURldGFpbENvbXBvbmVudCxcclxuICAgIENyZWF0ZUZhY2V0SW5wdXQsXHJcbiAgICBjcmVhdGVVcGRhdGVkVHJhbnNsYXRhYmxlLFxyXG4gICAgQ3VzdG9tRmllbGRDb25maWcsXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIEZhY2V0V2l0aFZhbHVlcyxcclxuICAgIGZpbmRUcmFuc2xhdGlvbixcclxuICAgIEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucyxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQZXJtaXNzaW9uLFxyXG4gICAgUHJvZHVjdE9wdGlvbixcclxuICAgIFByb2R1Y3RPcHRpb25Hcm91cCxcclxuICAgIFNlcnZlckNvbmZpZ1NlcnZpY2UsXHJcbiAgICBVcGRhdGVGYWNldElucHV0LFxyXG4gICAgVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQsXHJcbiAgICBVcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9wcm9kdWN0LWRldGFpbC9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItcHJvZHVjdC1vcHRpb25zLWVkaXRvcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1vcHRpb25zLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LW9wdGlvbnMtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RPcHRpb25zRWRpdG9yQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8R2V0UHJvZHVjdFZhcmlhbnRPcHRpb25zLlByb2R1Y3Q+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxyXG57XHJcbiAgICBkZXRhaWxGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBvcHRpb25Hcm91cHMkOiBPYnNlcnZhYmxlPEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5PcHRpb25Hcm91cHNbXT47XHJcbiAgICBsYW5ndWFnZUNvZGUkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZT47XHJcbiAgICBhdmFpbGFibGVMYW5ndWFnZXMkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZVtdPjtcclxuICAgIG9wdGlvbkdyb3VwQ3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgb3B0aW9uQ3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgYXV0b1VwZGF0ZVZhcmlhbnROYW1lcyA9IHRydWU7XHJcbiAgICByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9uID0gW1Blcm1pc3Npb24uVXBkYXRlQ2F0YWxvZywgUGVybWlzc2lvbi5VcGRhdGVQcm9kdWN0XTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcm90ZWN0ZWQgc2VydmVyQ29uZmlnU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdERldGFpbFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIHNlcnZlckNvbmZpZ1NlcnZpY2UsIGRhdGFTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm9wdGlvbkdyb3VwQ3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnUHJvZHVjdE9wdGlvbkdyb3VwJyk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25DdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdQcm9kdWN0T3B0aW9uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmVudGl0eS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHByb2R1Y3Q6IEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5Qcm9kdWN0KSA9PiBwcm9kdWN0Lm9wdGlvbkdyb3VwcyksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICAgICAgb3B0aW9uR3JvdXBzOiBuZXcgRm9ybUFycmF5KFtdKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBzdXBlci5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3B0aW9uR3JvdXBzKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25Hcm91cHMgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdvcHRpb25Hcm91cHMnKTtcclxuICAgICAgICByZXR1cm4gKG9wdGlvbkdyb3VwcyBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzIGFzIEZvcm1Hcm91cFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9wdGlvbnMob3B0aW9uR3JvdXA6IEZvcm1Hcm91cCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uR3JvdXAuZ2V0KCdvcHRpb25zJyk7XHJcbiAgICAgICAgcmV0dXJuIChvcHRpb25zIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW107XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5kZXRhaWxGb3JtLmludmFsaWQgfHwgdGhpcy5kZXRhaWxGb3JtLnByaXN0aW5lKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgIGNvbnN0ICRwcm9kdWN0ID0gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmdldFByb2R1Y3QodGhpcy5pZCkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS5wcm9kdWN0ISk7XHJcbiAgICAgICAgY29tYmluZUxhdGVzdCh0aGlzLmVudGl0eSQsIHRoaXMubGFuZ3VhZ2VDb2RlJCwgJHByb2R1Y3QpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChbeyBvcHRpb25Hcm91cHMgfSwgbGFuZ3VhZ2VDb2RlLCBwcm9kdWN0XSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZU9wZXJhdGlvbnM6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbkdyb3VwRm9ybSBvZiB0aGlzLmdldE9wdGlvbkdyb3VwcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25Hcm91cEZvcm0uZ2V0KCduYW1lJyk/LmRpcnR5IHx8IG9wdGlvbkdyb3VwRm9ybS5nZXQoJ2NvZGUnKT8uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkdyb3VwRW50aXR5ID0gb3B0aW9uR3JvdXBzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2cgPT4gb2cuaWQgPT09IG9wdGlvbkdyb3VwRm9ybS52YWx1ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uR3JvdXBFbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0VXBkYXRlZE9wdGlvbkdyb3VwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25Hcm91cEVudGl0eSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBGb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC51cGRhdGVQcm9kdWN0T3B0aW9uR3JvdXAoaW5wdXQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uRm9ybSBvZiB0aGlzLmdldE9wdGlvbnMob3B0aW9uR3JvdXBGb3JtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbkZvcm0uZ2V0KCduYW1lJyk/LmRpcnR5IHx8IG9wdGlvbkZvcm0uZ2V0KCdjb2RlJyk/LmRpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXAgPSBvcHRpb25Hcm91cHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQob2cgPT4gb2cuaWQgPT09IG9wdGlvbkdyb3VwRm9ybS52YWx1ZS5pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5vcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBvcHRpb25Gb3JtLnZhbHVlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uR3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldFVwZGF0ZWRPcHRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25Hcm91cCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkZvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdERldGFpbFNlcnZpY2UudXBkYXRlUHJvZHVjdE9wdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLmlucHV0LCBhdXRvVXBkYXRlOiB0aGlzLmF1dG9VcGRhdGVWYXJpYW50TmFtZXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbih1cGRhdGVPcGVyYXRpb25zKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUHJvZHVjdE9wdGlvbkdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1Byb2R1Y3RPcHRpb25Hcm91cCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VXBkYXRlZE9wdGlvbkdyb3VwKFxyXG4gICAgICAgIG9wdGlvbkdyb3VwOiBQcm9kdWN0T3B0aW9uR3JvdXAuRnJhZ21lbnQsXHJcbiAgICAgICAgb3B0aW9uR3JvdXBGb3JtR3JvdXA6IEZvcm1Hcm91cCxcclxuICAgICAgICBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSxcclxuICAgICk6IFVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0IHtcclxuICAgICAgICBjb25zdCBpbnB1dCA9IGNyZWF0ZVVwZGF0ZWRUcmFuc2xhdGFibGUoe1xyXG4gICAgICAgICAgICB0cmFuc2xhdGFibGU6IG9wdGlvbkdyb3VwLFxyXG4gICAgICAgICAgICB1cGRhdGVkRmllbGRzOiBvcHRpb25Hcm91cEZvcm1Hcm91cC52YWx1ZSxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMub3B0aW9uR3JvdXBDdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgZGVmYXVsdFRyYW5zbGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb25Hcm91cC5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFVwZGF0ZWRPcHRpb24oXHJcbiAgICAgICAgb3B0aW9uOiBQcm9kdWN0T3B0aW9uLkZyYWdtZW50LFxyXG4gICAgICAgIG9wdGlvbkZvcm1Hcm91cDogRm9ybUdyb3VwLFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKTogVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0IHtcclxuICAgICAgICBjb25zdCBpbnB1dCA9IGNyZWF0ZVVwZGF0ZWRUcmFuc2xhdGFibGUoe1xyXG4gICAgICAgICAgICB0cmFuc2xhdGFibGU6IG9wdGlvbixcclxuICAgICAgICAgICAgdXBkYXRlZEZpZWxkczogb3B0aW9uRm9ybUdyb3VwLnZhbHVlLFxyXG4gICAgICAgICAgICBjdXN0b21GaWVsZENvbmZpZzogdGhpcy5vcHRpb25Hcm91cEN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICBkZWZhdWx0VHJhbnNsYXRpb246IHtcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5Qcm9kdWN0LCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGdyb3Vwc0Zvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uR3JvdXAgb2YgZW50aXR5Lm9wdGlvbkdyb3Vwcykge1xyXG4gICAgICAgICAgICBjb25zdCBncm91cFRyYW5zbGF0aW9uID0gZmluZFRyYW5zbGF0aW9uKG9wdGlvbkdyb3VwLCBsYW5ndWFnZUNvZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBvcHRpb25Hcm91cC5pZCxcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogb3B0aW9uR3JvdXAuY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0OiBvcHRpb25Hcm91cC51cGRhdGVkQXQsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiBvcHRpb25Hcm91cC5jb2RlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogZ3JvdXBUcmFuc2xhdGlvbiA/IGdyb3VwVHJhbnNsYXRpb24ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zRm9ybUFycmF5ID0gbmV3IEZvcm1BcnJheShbXSk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25Hcm91cC5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25UcmFuc2xhdGlvbiA9IGZpbmRUcmFuc2xhdGlvbihvcHRpb24sIGxhbmd1YWdlQ29kZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5pZCxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IG9wdGlvbi5jcmVhdGVkQXQsXHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0OiBvcHRpb24udXBkYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IG9wdGlvbi5jb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvblRyYW5zbGF0aW9uID8gb3B0aW9uVHJhbnNsYXRpb24ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zRm9ybUFycmF5LnB1c2gob3B0aW9uQ29udHJvbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29udHJvbCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ3JvdXApO1xyXG4gICAgICAgICAgICBncm91cENvbnRyb2wuYWRkQ29udHJvbCgnb3B0aW9ucycsIG9wdGlvbnNGb3JtQXJyYXkpO1xyXG4gICAgICAgICAgICBncm91cHNGb3JtQXJyYXkucHVzaChncm91cENvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0uc2V0Q29udHJvbCgnb3B0aW9uR3JvdXBzJywgZ3JvdXBzRm9ybUFycmF5KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1vcHRpb25zLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvcHJvZHVjdC1vcHRpb25zLWVkaXRvci9wcm9kdWN0LW9wdGlvbnMtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUV6QixXQUFXLEVBQ1gsZUFBZSxFQUdmLG1CQUFtQixFQUNuQixVQUFVLEVBR1YsbUJBQW1CLEdBSXRCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFRN0YsTUFBTSxPQUFPLDZCQUNULFNBQVEsbUJBQXFEO0lBWTdELFlBQ2MsS0FBcUIsRUFDckIsTUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxXQUF3QixFQUMxQixvQkFBMEMsRUFDMUMsV0FBd0IsRUFDeEIsY0FBaUMsRUFDakMsbUJBQXdDO1FBRWhELEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG1CQUFt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QixJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QyxNQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsTUFBQSxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQywwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxNQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNILFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQzs7O1lBL1BKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0Qyx3OUxBQXNEO2dCQUV0RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQTdCUSxjQUFjO1lBQUUsTUFBTTtZQWMzQixtQkFBbUI7WUFSbkIsV0FBVztZQWdCTixvQkFBb0I7WUF2QlQsV0FBVztZQURHLGlCQUFpQjtZQVkvQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcclxuaW1wb3J0IHtcclxuICAgIEJhc2VEZXRhaWxDb21wb25lbnQsXHJcbiAgICBjcmVhdGVVcGRhdGVkVHJhbnNsYXRhYmxlLFxyXG4gICAgQ3VzdG9tRmllbGRDb25maWcsXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIGZpbmRUcmFuc2xhdGlvbixcclxuICAgIEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucyxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQZXJtaXNzaW9uLFxyXG4gICAgUHJvZHVjdE9wdGlvbixcclxuICAgIFByb2R1Y3RPcHRpb25Hcm91cCxcclxuICAgIFNlcnZlckNvbmZpZ1NlcnZpY2UsXHJcbiAgICBUcmFuc2xhdGlvbk9mLFxyXG4gICAgVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQsXHJcbiAgICBVcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9wcm9kdWN0LWRldGFpbC9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItcHJvZHVjdC1vcHRpb25zLWVkaXRvcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1vcHRpb25zLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LW9wdGlvbnMtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RPcHRpb25zRWRpdG9yQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8R2V0UHJvZHVjdFZhcmlhbnRPcHRpb25zLlByb2R1Y3Q+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxyXG57XHJcbiAgICBkZXRhaWxGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBvcHRpb25Hcm91cHMkOiBPYnNlcnZhYmxlPEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5PcHRpb25Hcm91cHNbXT47XHJcbiAgICBsYW5ndWFnZUNvZGUkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZT47XHJcbiAgICBhdmFpbGFibGVMYW5ndWFnZXMkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZVtdPjtcclxuICAgIG9wdGlvbkdyb3VwQ3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgb3B0aW9uQ3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgYXV0b1VwZGF0ZVZhcmlhbnROYW1lcyA9IHRydWU7XHJcbiAgICByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9uID0gW1Blcm1pc3Npb24uVXBkYXRlQ2F0YWxvZywgUGVybWlzc2lvbi5VcGRhdGVQcm9kdWN0XTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcm90ZWN0ZWQgc2VydmVyQ29uZmlnU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdERldGFpbFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIHNlcnZlckNvbmZpZ1NlcnZpY2UsIGRhdGFTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLm9wdGlvbkdyb3VwQ3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnUHJvZHVjdE9wdGlvbkdyb3VwJyk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25DdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdQcm9kdWN0T3B0aW9uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmVudGl0eS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHByb2R1Y3Q6IEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5Qcm9kdWN0KSA9PiBwcm9kdWN0Lm9wdGlvbkdyb3VwcyksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICAgICAgb3B0aW9uR3JvdXBzOiBuZXcgRm9ybUFycmF5KFtdKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBzdXBlci5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3B0aW9uR3JvdXBzKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25Hcm91cHMgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdvcHRpb25Hcm91cHMnKTtcclxuICAgICAgICByZXR1cm4gKG9wdGlvbkdyb3VwcyBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzIGFzIEZvcm1Hcm91cFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9wdGlvbnMob3B0aW9uR3JvdXA6IEZvcm1Hcm91cCk6IEZvcm1Hcm91cFtdIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uR3JvdXAuZ2V0KCdvcHRpb25zJyk7XHJcbiAgICAgICAgcmV0dXJuIChvcHRpb25zIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW107XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5kZXRhaWxGb3JtLmludmFsaWQgfHwgdGhpcy5kZXRhaWxGb3JtLnByaXN0aW5lKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgIGNvbnN0ICRwcm9kdWN0ID0gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmdldFByb2R1Y3QodGhpcy5pZCkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS5wcm9kdWN0ISk7XHJcbiAgICAgICAgY29tYmluZUxhdGVzdCh0aGlzLmVudGl0eSQsIHRoaXMubGFuZ3VhZ2VDb2RlJCwgJHByb2R1Y3QpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChbeyBvcHRpb25Hcm91cHMgfSwgbGFuZ3VhZ2VDb2RlLCBwcm9kdWN0XSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZU9wZXJhdGlvbnM6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbkdyb3VwRm9ybSBvZiB0aGlzLmdldE9wdGlvbkdyb3VwcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25Hcm91cEZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkdyb3VwRW50aXR5ID0gb3B0aW9uR3JvdXBzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2cgPT4gb2cuaWQgPT09IG9wdGlvbkdyb3VwRm9ybS52YWx1ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uR3JvdXBFbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0VXBkYXRlZE9wdGlvbkdyb3VwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25Hcm91cEVudGl0eSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBGb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC51cGRhdGVQcm9kdWN0T3B0aW9uR3JvdXAoaW5wdXQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uRm9ybSBvZiB0aGlzLmdldE9wdGlvbnMob3B0aW9uR3JvdXBGb3JtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbkZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25Hcm91cCA9IG9wdGlvbkdyb3Vwc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZChvZyA9PiBvZy5pZCA9PT0gb3B0aW9uR3JvdXBGb3JtLnZhbHVlLmlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IG9wdGlvbkZvcm0udmFsdWUuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0VXBkYXRlZE9wdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkdyb3VwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uRm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlT3BlcmF0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0RGV0YWlsU2VydmljZS51cGRhdGVQcm9kdWN0T3B0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4uaW5wdXQsIGF1dG9VcGRhdGU6IHRoaXMuYXV0b1VwZGF0ZVZhcmlhbnROYW1lcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHVwZGF0ZU9wZXJhdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdQcm9kdWN0T3B0aW9uR3JvdXAnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLWVycm9yJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUHJvZHVjdE9wdGlvbkdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRVcGRhdGVkT3B0aW9uR3JvdXAoXHJcbiAgICAgICAgb3B0aW9uR3JvdXA6IFByb2R1Y3RPcHRpb25Hcm91cC5GcmFnbWVudCxcclxuICAgICAgICBvcHRpb25Hcm91cEZvcm1Hcm91cDogRm9ybUdyb3VwLFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxyXG4gICAgKTogVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQge1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSh7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0YWJsZTogb3B0aW9uR3JvdXAsXHJcbiAgICAgICAgICAgIHVwZGF0ZWRGaWVsZHM6IG9wdGlvbkdyb3VwRm9ybUdyb3VwLnZhbHVlLFxyXG4gICAgICAgICAgICBjdXN0b21GaWVsZENvbmZpZzogdGhpcy5vcHRpb25Hcm91cEN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICBkZWZhdWx0VHJhbnNsYXRpb246IHtcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbkdyb3VwLm5hbWUgfHwgJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VXBkYXRlZE9wdGlvbihcclxuICAgICAgICBvcHRpb246IFByb2R1Y3RPcHRpb24uRnJhZ21lbnQsXHJcbiAgICAgICAgb3B0aW9uRm9ybUdyb3VwOiBGb3JtR3JvdXAsXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUsXHJcbiAgICApOiBVcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQge1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSh7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0YWJsZTogb3B0aW9uLFxyXG4gICAgICAgICAgICB1cGRhdGVkRmllbGRzOiBvcHRpb25Gb3JtR3JvdXAudmFsdWUsXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkQ29uZmlnOiB0aGlzLm9wdGlvbkN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICBkZWZhdWx0VHJhbnNsYXRpb246IHtcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5Qcm9kdWN0LCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGdyb3Vwc0Zvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdvcHRpb25Hcm91cHMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb25Hcm91cCBvZiBlbnRpdHkub3B0aW9uR3JvdXBzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwVHJhbnNsYXRpb24gPSBmaW5kVHJhbnNsYXRpb24ob3B0aW9uR3JvdXAsIGxhbmd1YWdlQ29kZSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBncm91cEZvcm0gPSB0aGlzLnNldE9wdGlvbkdyb3VwRm9ybShvcHRpb25Hcm91cCwgZ3JvdXBzRm9ybSwgZ3JvdXBUcmFuc2xhdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRzRm9ybSh0aGlzLm9wdGlvbkdyb3VwQ3VzdG9tRmllbGRzLCBncm91cEZvcm0sIG9wdGlvbkdyb3VwLCBncm91cFRyYW5zbGF0aW9uKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zRm9ybSA9IGdyb3VwRm9ybS5nZXQoJ29wdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgICAgIGlmICghb3B0aW9uc0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnNGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSk7XHJcbiAgICAgICAgICAgICAgICBncm91cEZvcm0uYWRkQ29udHJvbCgnb3B0aW9ucycsIG9wdGlvbnNGb3JtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25Hcm91cC5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25UcmFuc2xhdGlvbiA9IGZpbmRUcmFuc2xhdGlvbihvcHRpb24sIGxhbmd1YWdlQ29kZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25Gb3JtID0gdGhpcy5zZXRPcHRpb25Gb3JtKG9wdGlvbiwgb3B0aW9uc0Zvcm0sIG9wdGlvblRyYW5zbGF0aW9uKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEN1c3RvbUZpZWxkc0Zvcm0odGhpcy5vcHRpb25DdXN0b21GaWVsZHMsIG9wdGlvbkZvcm0sIG9wdGlvbiwgb3B0aW9uVHJhbnNsYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRDdXN0b21GaWVsZHNGb3JtPFxyXG4gICAgICAgIFQgZXh0ZW5kcyBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMuT3B0aW9uR3JvdXBzIHwgR2V0UHJvZHVjdFZhcmlhbnRPcHRpb25zLk9wdGlvbnMsXHJcbiAgICA+KFxyXG4gICAgICAgIGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXSxcclxuICAgICAgICBmb3JtR3JvdXA6IEZvcm1Hcm91cCxcclxuICAgICAgICBlbnRpdHk6IFQsXHJcbiAgICAgICAgY3VycmVudFRyYW5zbGF0aW9uPzogVHJhbnNsYXRpb25PZjxUPixcclxuICAgICkge1xyXG4gICAgICAgIGlmIChjdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBjdXN0b21WYWx1ZUZpZWxkc0dyb3VwID0gZm9ybUdyb3VwLmdldChbJ2N1c3RvbUZpZWxkcyddKTtcclxuICAgICAgICAgICAgaWYgKCFjdXN0b21WYWx1ZUZpZWxkc0dyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBjdXN0b21WYWx1ZUZpZWxkc0dyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cChcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHMucmVkdWNlKChoYXNoLCBmaWVsZCkgPT4gKHsgLi4uaGFzaCwgW2ZpZWxkLm5hbWVdOiAnJyB9KSwge30pLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKCdjdXN0b21GaWVsZHMnLCBjdXN0b21WYWx1ZUZpZWxkc0dyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbUZpZWxkRm9ybVZhbHVlcyhjdXN0b21GaWVsZHMsIGN1c3RvbVZhbHVlRmllbGRzR3JvdXAsIGVudGl0eSwgY3VycmVudFRyYW5zbGF0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNldE9wdGlvbkdyb3VwRm9ybShcclxuICAgICAgICBlbnRpdHk6IEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5PcHRpb25Hcm91cHMsXHJcbiAgICAgICAgZ3JvdXBzRm9ybTogRm9ybUFycmF5LFxyXG4gICAgICAgIGN1cnJlbnRUcmFuc2xhdGlvbj86IFRyYW5zbGF0aW9uT2Y8R2V0UHJvZHVjdFZhcmlhbnRPcHRpb25zLk9wdGlvbkdyb3Vwcz4sXHJcbiAgICApIHtcclxuICAgICAgICBjb25zdCBncm91cCA9IHtcclxuICAgICAgICAgICAgaWQ6IGVudGl0eS5pZCxcclxuICAgICAgICAgICAgY3JlYXRlZEF0OiBlbnRpdHkuY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IGVudGl0eS51cGRhdGVkQXQsXHJcbiAgICAgICAgICAgIGNvZGU6IGVudGl0eS5jb2RlLFxyXG4gICAgICAgICAgICBuYW1lOiBjdXJyZW50VHJhbnNsYXRpb24/Lm5hbWUgPz8gJycsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtID0gZ3JvdXBzRm9ybS5jb250cm9scy5maW5kKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZS5pZCA9PT0gZW50aXR5LmlkKSBhc1xyXG4gICAgICAgICAgICB8IEZvcm1Hcm91cFxyXG4gICAgICAgICAgICB8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoZ3JvdXBGb3JtKSB7XHJcbiAgICAgICAgICAgIGdyb3VwRm9ybS5nZXQoJ2lkJyk/LnNldFZhbHVlKGdyb3VwLmlkKTtcclxuICAgICAgICAgICAgZ3JvdXBGb3JtLmdldCgnY29kZScpPy5zZXRWYWx1ZShncm91cC5jb2RlKTtcclxuICAgICAgICAgICAgZ3JvdXBGb3JtLmdldCgnbmFtZScpPy5zZXRWYWx1ZShncm91cC5uYW1lKTtcclxuICAgICAgICAgICAgZ3JvdXBGb3JtLmdldCgnY3JlYXRlZEF0Jyk/LnNldFZhbHVlKGdyb3VwLm5hbWUpO1xyXG4gICAgICAgICAgICBncm91cEZvcm0uZ2V0KCd1cGRhdGVkQXQnKT8uc2V0VmFsdWUoZ3JvdXAubmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cChncm91cCk7XHJcbiAgICAgICAgICAgIGdyb3Vwc0Zvcm0ucHVzaChncm91cEZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZ3JvdXBGb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRPcHRpb25Gb3JtKFxyXG4gICAgICAgIGVudGl0eTogR2V0UHJvZHVjdFZhcmlhbnRPcHRpb25zLk9wdGlvbnMsXHJcbiAgICAgICAgb3B0aW9uc0Zvcm06IEZvcm1BcnJheSxcclxuICAgICAgICBjdXJyZW50VHJhbnNsYXRpb24/OiBUcmFuc2xhdGlvbk9mPEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucy5PcHRpb25zPixcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IGdyb3VwID0ge1xyXG4gICAgICAgICAgICBpZDogZW50aXR5LmlkLFxyXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IGVudGl0eS5jcmVhdGVkQXQsXHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdDogZW50aXR5LnVwZGF0ZWRBdCxcclxuICAgICAgICAgICAgY29kZTogZW50aXR5LmNvZGUsXHJcbiAgICAgICAgICAgIG5hbWU6IGN1cnJlbnRUcmFuc2xhdGlvbj8ubmFtZSA/PyAnJyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBvcHRpb25Gb3JtID0gb3B0aW9uc0Zvcm0uY29udHJvbHMuZmluZChjb250cm9sID0+IGNvbnRyb2wudmFsdWUuaWQgPT09IGVudGl0eS5pZCkgYXNcclxuICAgICAgICAgICAgfCBGb3JtR3JvdXBcclxuICAgICAgICAgICAgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKG9wdGlvbkZvcm0pIHtcclxuICAgICAgICAgICAgb3B0aW9uRm9ybS5nZXQoJ2lkJyk/LnNldFZhbHVlKGdyb3VwLmlkKTtcclxuICAgICAgICAgICAgb3B0aW9uRm9ybS5nZXQoJ2NvZGUnKT8uc2V0VmFsdWUoZ3JvdXAuY29kZSk7XHJcbiAgICAgICAgICAgIG9wdGlvbkZvcm0uZ2V0KCduYW1lJyk/LnNldFZhbHVlKGdyb3VwLm5hbWUpO1xyXG4gICAgICAgICAgICBvcHRpb25Gb3JtLmdldCgnY3JlYXRlZEF0Jyk/LnNldFZhbHVlKGdyb3VwLm5hbWUpO1xyXG4gICAgICAgICAgICBvcHRpb25Gb3JtLmdldCgndXBkYXRlZEF0Jyk/LnNldFZhbHVlKGdyb3VwLm5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbkZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdyb3VwKTtcclxuICAgICAgICAgICAgb3B0aW9uc0Zvcm0ucHVzaChvcHRpb25Gb3JtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbkZvcm07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Auto-generated by the set-version.js script.
|
|
2
|
-
export const ADMIN_UI_VERSION = '1.9.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const ADMIN_UI_VERSION = '1.9.6';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcxLjkuNic7XG4iXX0=
|
|
@@ -57,4 +57,4 @@ DropdownComponent.decorators = [
|
|
|
57
57
|
DropdownComponent.propDecorators = {
|
|
58
58
|
manualToggle: [{ type: Input }]
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFOOUI7UUFPWSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsMEJBQXFCLEdBQXFDLEVBQUUsQ0FBQztRQUU1RCxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQW9CbEMsQ0FBQztJQWxCRyxPQUFPO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZLENBQUMsUUFBbUM7UUFDNUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsVUFBc0I7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDOUIsQ0FBQzs7O1lBN0JKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYztnQkFDeEIseUNBQXdDO2dCQUV4QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OzsyQkFLSSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFVzZWQgZm9yIGJ1aWxkaW5nIGRyb3Bkb3duIG1lbnVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBIVE1MXG4gKiA8dmRyLWRyb3Bkb3duPlxuICogICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxuICogICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XG4gKiAgICAgICBTZWxlY3QgdHlwZVxuICogICA8L2J1dHRvbj5cbiAqICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLWxlZnRcIj5cbiAqICAgICA8YnV0dG9uXG4gKiAgICAgICAqbmdGb3I9XCJsZXQgdHlwZU5hbWUgb2YgYWxsVHlwZXNcIlxuICogICAgICAgdHlwZT1cImJ1dHRvblwiXG4gKiAgICAgICB2ZHJEcm9wZG93bkl0ZW1cbiAqICAgICAgIChjbGljayk9XCJzZWxlY3RUeXBlKHR5cGVOYW1lKVwiXG4gKiAgICAgPlxuICogICAgICAgdHlwZU5hbWVcbiAqICAgICA8L2J1dHRvbj5cbiAqICAgPC92ZHItZHJvcGRvd24tbWVudT5cbiAqIDwvdmRyLWRyb3Bkb3duPlxuICogYGBgXG4gKiBAZG9jc0NhdGVnb3J5IGNvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2ZHItZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQge1xuICAgIHByaXZhdGUgaXNPcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvbk9wZW5DaGFuZ2VDYWxsYmFja3M6IEFycmF5PChpc09wZW46IGJvb2xlYW4pID0+IHZvaWQ+ID0gW107XG4gICAgcHVibGljIHRyaWdnZXI6IEVsZW1lbnRSZWY7XG4gICAgQElucHV0KCkgbWFudWFsVG9nZ2xlID0gZmFsc2U7XG5cbiAgICBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMubWFudWFsVG9nZ2xlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZU9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZU9wZW4oKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgICAgICB0aGlzLm9uT3BlbkNoYW5nZUNhbGxiYWNrcy5mb3JFYWNoKGZuID0+IGZuKHRoaXMuaXNPcGVuKSk7XG4gICAgfVxuXG4gICAgb25PcGVuQ2hhbmdlKGNhbGxiYWNrOiAoaXNPcGVuOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMub25PcGVuQ2hhbmdlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHNldFRyaWdnZXJFbGVtZW50KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyID0gZWxlbWVudFJlZjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -81,7 +81,7 @@ export class LoginComponent {
|
|
|
81
81
|
LoginComponent.decorators = [
|
|
82
82
|
{ type: Component, args: [{
|
|
83
83
|
selector: 'vdr-login',
|
|
84
|
-
template: "<div class=\"login-wrapper\">\r\n <div class=\"login-wrapper-inner\">\r\n <div class=\"login-wrapper-image\">\r\n <div class=\"login-wrapper-image-content\">\r\n <div class=\"login-wrapper-image-title\">\r\n {{ 'common.login-image-title' | translate }}\r\n </div>\r\n <div class=\"login-wrapper-image-copyright\">\r\n <p *ngIf=\"imageCreator\" class=\"creator\">Photo by <a [href]=\"imageCreatorUrl\" target=\"_blank\">{{ imageCreator }}</a> on <a [href]=\"imageUnsplashUrl\" target=\"_blank\">Unsplash</a></p>\r\n <p *ngIf=\"imageLocation\" class=\"location\">{{ imageLocation }}</p>\r\n </div>\r\n </div>\r\n <img *ngIf=\"imageUrl\" [src]=\"imageUrl\" [alt]=\"imageUrl\">\r\n </div>\r\n <div class=\"login-wrapper-form\">\r\n <p class=\"login-title\">\r\n {{ 'common.login-title' | translate }}\r\n </p>\r\n <form class=\"login-form\">\r\n <div class=\"login-group\">\r\n <input\r\n class=\"username\"\r\n type=\"text\"\r\n name=\"username\"\r\n id=\"login_username\"\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"'common.username' | translate\"\r\n />\r\n <input\r\n class=\"password\"\r\n name=\"password\"\r\n type=\"password\"\r\n id=\"login_password\"\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"'common.password' | translate\"\r\n />\r\n <clr-alert [clrAlertType]=\"'danger'\" [clrAlertClosable]=\"false\" [class.visible]=\"errorMessage\" class=\"login-error\">\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ errorMessage }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n <clr-checkbox-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n id=\"rememberme\"\r\n name=\"rememberme\"\r\n [(ngModel)]=\"rememberMe\"\r\n />\r\n <label>{{ 'common.remember-me' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <button\r\n type=\"submit\"\r\n class=\"btn btn-primary\"\r\n (click)=\"logIn()\"\r\n [disabled]=\"!username || !password\"\r\n >\r\n {{ 'common.login' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"version\">\r\n <span *ngIf=\"brand\">{{ brand }} <span *ngIf=\"!hideVendureBranding || !hideVersion\">-</span></span>\r\n <span *ngIf=\"!hideVendureBranding\">vendure</span>\r\n <span *ngIf=\"!hideVersion\">v{{ version }}</span>\r\n </div>\r\n </form>\r\n </div>\r\n <img class=\"login-wrapper-logo\" src=\"assets/logo-300px.png\" />\r\n </div>\r\n</div>\r\n",
|
|
84
|
+
template: "<div class=\"login-wrapper\">\r\n <div class=\"login-wrapper-inner\">\r\n <div class=\"login-wrapper-image\">\r\n <div class=\"login-wrapper-image-content\">\r\n <div class=\"login-wrapper-image-title\">\r\n {{ 'common.login-image-title' | translate }}\r\n </div>\r\n <div class=\"login-wrapper-image-copyright\">\r\n <p *ngIf=\"imageCreator\" class=\"creator\">Photo by <a [href]=\"imageCreatorUrl\" target=\"_blank\">{{ imageCreator }}</a> on <a [href]=\"imageUnsplashUrl\" target=\"_blank\">Unsplash</a></p>\r\n <p *ngIf=\"imageLocation\" class=\"location\">{{ imageLocation }}</p>\r\n </div>\r\n </div>\r\n <img *ngIf=\"imageUrl\" [src]=\"imageUrl\" [alt]=\"imageUrl\">\r\n </div>\r\n <div class=\"login-wrapper-form\">\r\n <p class=\"login-title\">\r\n {{ 'common.login-title' | translate: { brand: hideVendureBranding ? brand : \"Vendure\" } }}\r\n </p>\r\n <form class=\"login-form\">\r\n <div class=\"login-group\">\r\n <input\r\n class=\"username\"\r\n type=\"text\"\r\n name=\"username\"\r\n id=\"login_username\"\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"'common.username' | translate\"\r\n />\r\n <input\r\n class=\"password\"\r\n name=\"password\"\r\n type=\"password\"\r\n id=\"login_password\"\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"'common.password' | translate\"\r\n />\r\n <clr-alert [clrAlertType]=\"'danger'\" [clrAlertClosable]=\"false\" [class.visible]=\"errorMessage\" class=\"login-error\">\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ errorMessage }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n <clr-checkbox-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n id=\"rememberme\"\r\n name=\"rememberme\"\r\n [(ngModel)]=\"rememberMe\"\r\n />\r\n <label>{{ 'common.remember-me' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <button\r\n type=\"submit\"\r\n class=\"btn btn-primary\"\r\n (click)=\"logIn()\"\r\n [disabled]=\"!username || !password\"\r\n >\r\n {{ 'common.login' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"version\">\r\n <span *ngIf=\"brand\">{{ brand }} <span *ngIf=\"!hideVendureBranding || !hideVersion\">-</span></span>\r\n <span *ngIf=\"!hideVendureBranding\">vendure</span>\r\n <span *ngIf=\"!hideVersion\">v{{ version }}</span>\r\n </div>\r\n </form>\r\n </div>\r\n <img class=\"login-wrapper-logo\" src=\"assets/logo-300px.png\" />\r\n </div>\r\n</div>\r\n",
|
|
85
85
|
styles: [".login-wrapper{background:#f0f2f5;background-image:none;height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-wrapper .login-wrapper-inner{background:#fff;width:1120px;height:590px;display:flex;justify-content:flex-start;align-items:stretch;position:relative;border-radius:3px;overflow:hidden}@media (max-width: 992px){.login-wrapper .login-wrapper-inner{flex-direction:column;height:auto;width:100%}}.login-wrapper .login-wrapper-inner .login-wrapper-image{height:100%;flex-grow:1;position:relative}@media (max-width: 992px){.login-wrapper .login-wrapper-inner .login-wrapper-image{height:300px}}.login-wrapper .login-wrapper-inner .login-wrapper-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;position:relative;z-index:1}.login-wrapper .login-wrapper-inner .login-wrapper-image .login-wrapper-image-content{width:100%;height:100%;position:absolute;left:0;bottom:0;z-index:10;background:#020024;background:linear-gradient(180deg,rgba(2,0,36,0) 0%,rgba(0,0,0,.75) 100%);display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;padding:30px}.login-wrapper .login-wrapper-inner .login-wrapper-image .login-wrapper-image-content .login-wrapper-image-title{font-size:1.6rem;font-weight:bold;color:#fff;margin-bottom:20px}@media (max-width: 992px){.login-wrapper .login-wrapper-inner .login-wrapper-image .login-wrapper-image-content .login-wrapper-image-title{font-size:1.2rem}}.login-wrapper .login-wrapper-inner .login-wrapper-image .login-wrapper-image-content .login-wrapper-image-copyright{opacity:.8}.login-wrapper .login-wrapper-inner .login-wrapper-image .login-wrapper-image-content .login-wrapper-image-copyright p{font-size:.6rem;color:#fff;margin:0!important}.login-wrapper .login-wrapper-inner .login-wrapper-image .login-wrapper-image-content .login-wrapper-image-copyright a{color:#fff;text-decoration:underline}.login-wrapper .login-wrapper-inner .login-wrapper-form{height:100%;width:400px;padding:40px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;box-shadow:0 20px 25px #0000001a;overflow:hidden;border-radius:5px;flex-shrink:0}@media (max-width: 992px){.login-wrapper .login-wrapper-inner .login-wrapper-form{height:auto;width:100%;padding:20px}}.login-wrapper .login-wrapper-inner .login-wrapper-form .login-title{font-weight:bold;font-size:1.2rem;margin-bottom:20px;color:#afafaf}.login-wrapper .login-wrapper-inner .login-wrapper-form .login-group input.username,.login-wrapper .login-wrapper-inner .login-wrapper-form .login-group input.password{display:block;width:100%;margin-bottom:15px;padding:12px 16px!important;background:#fff;font-size:14px;line-height:22px;color:#52667a;outline:none;-webkit-appearance:none}.login-wrapper .login-wrapper-inner .login-wrapper-form .login-group .btn{width:100%!important;margin-top:20px!important}.login-wrapper .login-wrapper-inner .login-wrapper-logo{width:60px;height:auto;position:absolute;right:20px;top:20px}.version{flex:1;flex-grow:1;display:flex;align-items:flex-end;justify-content:center;color:var(--color-grey-300)}.version span+span{margin-left:5px}.login-error{max-height:0;overflow:hidden}.login-error.visible{max-height:46px;transition:max-height .2s;animation:shake .82s cubic-bezier(.36,.07,.19,.97) both;animation-delay:.2s;transform:translate(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;perspective:1000px}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}\n"]
|
|
86
86
|
},] }
|
|
87
87
|
];
|
|
@@ -90,4 +90,4 @@ LoginComponent.ctorParameters = () => [
|
|
|
90
90
|
{ type: Router },
|
|
91
91
|
{ type: HttpClient }
|
|
92
92
|
];
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9sb2dpbi9zcmMvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPMUcsTUFBTSxPQUFPLGNBQWM7SUFnQnZCLFlBQW9CLFdBQXdCLEVBQVUsTUFBYyxFQUFVLFVBQXNCO1FBQWhGLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFmcEcsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFlBQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUUzQixVQUFLLEdBQUcsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFHLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pELGdCQUFXLEdBQUcsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQzlDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFHakIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN2QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyRixRQUFRLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZCLEtBQUssYUFBYTtvQkFDZCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNyRCxNQUFNO2dCQUNWLEtBQUsseUJBQXlCLENBQUM7Z0JBQy9CLEtBQUsseUJBQXlCO29CQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ25DLE1BQU07YUFDYjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsVUFBVTthQUNWLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQzthQUNyQyxTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFRO1FBQ2hCLE1BQU0sSUFBSSxHQUFTLEdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQVMsR0FBVyxDQUFDLFFBQVEsQ0FBQztRQUU1QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLHFEQUFxRCxDQUFDO1FBQ3pGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxxREFBcUQsQ0FBQztRQUMvRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdCQUFnQjtRQUNwQixJQUFJLFVBQThCLENBQUM7UUFDbkMsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxtQkFBbUIsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSTtZQUNBLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6RCxJQUFJLGVBQWUsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRTtnQkFDL0MsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1NBQ0o7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLFNBQVM7U0FDWjtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7OztZQWpGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLDRtSEFBcUM7O2FBRXhDOzs7WUFOMEIsV0FBVztZQUQ3QixNQUFNO1lBRk4sVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBRE1JTl9VSV9WRVJTSU9OLCBBdXRoU2VydmljZSwgQVVUSF9SRURJUkVDVF9QQVJBTSwgZ2V0QXBwQ29uZmlnIH0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWxvZ2luJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQge1xyXG4gICAgdXNlcm5hbWUgPSAnJztcclxuICAgIHBhc3N3b3JkID0gJyc7XHJcbiAgICByZW1lbWJlck1lID0gZmFsc2U7XHJcbiAgICB2ZXJzaW9uID0gQURNSU5fVUlfVkVSU0lPTjtcclxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgYnJhbmQgPSBnZXRBcHBDb25maWcoKS5icmFuZDtcclxuICAgIGhpZGVWZW5kdXJlQnJhbmRpbmcgPSBnZXRBcHBDb25maWcoKS5oaWRlVmVuZHVyZUJyYW5kaW5nO1xyXG4gICAgaGlkZVZlcnNpb24gPSBnZXRBcHBDb25maWcoKS5oaWRlVmVyc2lvbjtcclxuICAgIGN1c3RvbUltYWdlVXJsID0gZ2V0QXBwQ29uZmlnKCkubG9naW5JbWFnZVVybDtcclxuICAgIGltYWdlVXJsID0gJyc7XHJcbiAgICBpbWFnZVVuc3BsYXNoVXJsID0gJyc7XHJcbiAgICBpbWFnZUxvY2F0aW9uID0gJyc7XHJcbiAgICBpbWFnZUNyZWF0b3IgPSAnJztcclxuICAgIGltYWdlQ3JlYXRvclVybCA9ICcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21JbWFnZVVybCkge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gdGhpcy5jdXN0b21JbWFnZVVybDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRJbWFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsb2dJbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ0luKHRoaXMudXNlcm5hbWUsIHRoaXMucGFzc3dvcmQsIHRoaXMucmVtZW1iZXJNZSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0Ll9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0N1cnJlbnRVc2VyJzpcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdCA9IHRoaXMuZ2V0UmVkaXJlY3RSb3V0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocmVkaXJlY3QgPyByZWRpcmVjdCA6ICcvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdJbnZhbGlkQ3JlZGVudGlhbHNFcnJvcic6XHJcbiAgICAgICAgICAgICAgICBjYXNlICdOYXRpdmVBdXRoU3RyYXRlZ3lFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSByZXN1bHQubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRJbWFnZSgpIHtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgICAgICAgLmdldCgnaHR0cHM6Ly9sb2dpbi1pbWFnZS52ZW5kdXJlLmlvJylcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUltYWdlKHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUltYWdlKHJlczogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXNlcjogYW55ID0gKHJlcyBhcyBhbnkpLnVzZXI7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb246IGFueSA9IChyZXMgYXMgYW55KS5sb2NhdGlvbjtcclxuXHJcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9IHJlcy51cmxzLnJlZ3VsYXIgKyAnP3V0bV9zb3VyY2U9VmVuZHVyZStMb2dpbitJbWFnZSZ1dG1fbWVkaXVtPXJlZmVycmFsJztcclxuICAgICAgICB0aGlzLmltYWdlQ3JlYXRvciA9IHVzZXIubmFtZTtcclxuICAgICAgICB0aGlzLmltYWdlTG9jYXRpb24gPSBsb2NhdGlvbi5uYW1lO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VDcmVhdG9yVXJsID0gdXNlci5saW5rcy5odG1sICsgJz91dG1fc291cmNlPVZlbmR1cmUrTG9naW4rSW1hZ2UmdXRtX21lZGl1bT1yZWZlcnJhbCc7XHJcbiAgICAgICAgdGhpcy5pbWFnZVVuc3BsYXNoVXJsID0gcmVzLmxpbmtzLmh0bWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRlbXB0cyB0byByZWFkIGEgcmVkaXJlY3QgcGFyYW0gZnJvbSB0aGUgY3VycmVudCB1cmwgYW5kIHBhcnNlIGl0IGludG8gYVxyXG4gICAgICogcm91dGUgZnJvbSB3aGljaCB0aGUgdXNlciB3YXMgcmVkaXJlY3RlZCBhZnRlciBhIDQwMSBlcnJvci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRSZWRpcmVjdFJvdXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgbGV0IHJlZGlyZWN0VG86IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYCR7QVVUSF9SRURJUkVDVF9QQVJBTX09KC4qKWApO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0VG9QYXJhbSA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gubWF0Y2gocmUpO1xyXG4gICAgICAgICAgICBpZiAocmVkaXJlY3RUb1BhcmFtICYmIDEgPCByZWRpcmVjdFRvUGFyYW0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZWRpcmVjdFRvID0gYXRvYihkZWNvZGVVUklDb21wb25lbnQocmVkaXJlY3RUb1BhcmFtWzFdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVkaXJlY3RUbztcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
2
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
4
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
|
4
|
-
import { BaseListComponent, DataService, ModalService, NotificationService, } from '@vendure/admin-ui/core';
|
|
5
|
-
import { EMPTY } from 'rxjs';
|
|
6
|
-
import { switchMap } from 'rxjs/operators';
|
|
5
|
+
import { BaseListComponent, DataService, LogicalOperator, ModalService, NotificationService, SortOrder, } from '@vendure/admin-ui/core';
|
|
6
|
+
import { EMPTY, merge } from 'rxjs';
|
|
7
|
+
import { debounceTime, filter, switchMap, takeUntil } from 'rxjs/operators';
|
|
7
8
|
export class AdministratorListComponent extends BaseListComponent {
|
|
8
9
|
constructor(dataService, router, route, modalService, notificationService) {
|
|
9
10
|
super(router, route);
|
|
10
11
|
this.dataService = dataService;
|
|
11
12
|
this.modalService = modalService;
|
|
12
13
|
this.notificationService = notificationService;
|
|
13
|
-
|
|
14
|
+
this.searchControl = new FormControl('');
|
|
15
|
+
super.setQueryFn((...args) => this.dataService.administrator.getAdministrators(...args), (data) => data.administrators, (skip, take) => this.createSearchQuery(skip, take, this.searchControl.value));
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
super.ngOnInit();
|
|
19
|
+
const searchTerms$ = merge(this.searchControl.valueChanges).pipe(filter(value => 2 < value.length || value.length === 0), debounceTime(250));
|
|
20
|
+
merge(searchTerms$, this.route.queryParamMap)
|
|
21
|
+
.pipe(takeUntil(this.destroy$))
|
|
22
|
+
.subscribe(val => {
|
|
23
|
+
this.refresh();
|
|
24
|
+
});
|
|
14
25
|
}
|
|
15
26
|
deleteAdministrator(administrator) {
|
|
16
27
|
return this.modalService
|
|
@@ -34,12 +45,41 @@ export class AdministratorListComponent extends BaseListComponent {
|
|
|
34
45
|
});
|
|
35
46
|
});
|
|
36
47
|
}
|
|
48
|
+
createSearchQuery(skip, take, searchTerm) {
|
|
49
|
+
let filter = {};
|
|
50
|
+
let filterOperator = LogicalOperator.AND;
|
|
51
|
+
if (searchTerm) {
|
|
52
|
+
filter = {
|
|
53
|
+
emailAddress: {
|
|
54
|
+
contains: searchTerm,
|
|
55
|
+
},
|
|
56
|
+
firstName: {
|
|
57
|
+
contains: searchTerm,
|
|
58
|
+
},
|
|
59
|
+
lastName: {
|
|
60
|
+
contains: searchTerm,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
filterOperator = LogicalOperator.OR;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
options: {
|
|
67
|
+
skip,
|
|
68
|
+
take,
|
|
69
|
+
filter: Object.assign({}, (filter !== null && filter !== void 0 ? filter : {})),
|
|
70
|
+
sort: {
|
|
71
|
+
updatedAt: SortOrder.DESC,
|
|
72
|
+
},
|
|
73
|
+
filterOperator,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
37
77
|
}
|
|
38
78
|
AdministratorListComponent.decorators = [
|
|
39
79
|
{ type: Component, args: [{
|
|
40
80
|
selector: 'vdr-administrator-list',
|
|
41
|
-
template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateAdministrator'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'admin.create-new-administrator' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'settings.first-name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.last-name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-administrator=\"item\">\r\n <td class=\"left align-middle\">{{ administrator.firstName }}</td>\r\n <td class=\"left align-middle\">{{ administrator.lastName }}</td>\r\n <td class=\"left align-middle\">{{ administrator.emailAddress }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', administrator.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteAdministrator(administrator)\"\r\n [disabled]=\"!('DeleteAdministrator' | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
|
|
42
|
-
styles: [""]
|
|
81
|
+
template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"searchControl\"\r\n [placeholder]=\"'admin.search-administrator' | translate\"\r\n class=\"search-input\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateAdministrator'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'admin.create-new-administrator' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'settings.first-name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.last-name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'settings.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-administrator=\"item\">\r\n <td class=\"left align-middle\">{{ administrator.firstName }}</td>\r\n <td class=\"left align-middle\">{{ administrator.lastName }}</td>\r\n <td class=\"left align-middle\">{{ administrator.emailAddress }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', administrator.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteAdministrator(administrator)\"\r\n [disabled]=\"!('DeleteAdministrator' | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
|
|
82
|
+
styles: [".search-input{min-width:300px}\n"]
|
|
43
83
|
},] }
|
|
44
84
|
];
|
|
45
85
|
AdministratorListComponent.ctorParameters = () => [
|
|
@@ -49,4 +89,4 @@ AdministratorListComponent.ctorParameters = () => [
|
|
|
49
89
|
{ type: ModalService },
|
|
50
90
|
{ type: NotificationService }
|
|
51
91
|
];
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW5pc3RyYXRvci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2V0dGluZ3Mvc3JjL2NvbXBvbmVudHMvYWRtaW5pc3RyYXRvci1saXN0L2FkbWluaXN0cmF0b3ItbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsV0FBVyxFQUVYLGVBQWUsRUFDZixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFNBQVMsR0FDWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU81RSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBRy9DO0lBRUcsWUFDWSxXQUF3QixFQUNoQyxNQUFjLEVBQ2QsS0FBcUIsRUFDYixZQUEwQixFQUMxQixtQkFBd0M7UUFFaEQsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQU5iLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBR3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFOcEQsa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVNoQyxLQUFLLENB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QUNELFFBQVEsRUFBRTtvQkFDTixRQUFRLEVBQUUsVUFBVTtpQkFDdkI7YUFDSixDQUFDO1lBQ0YsY0FBYyxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUM7U0FDdkM7UUFDRCxPQUFPO1lBQ0gsT0FBTyxFQUFFO2dCQUNMLElBQUk7Z0JBQ0osSUFBSTtnQkFDSixNQUFNLG9CQUNDLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksRUFBRSxDQUFDLENBQ3BCO2dCQUNELElBQUksRUFBRTtvQkFDRixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7aUJBQzVCO2dCQUNELGNBQWM7YUFDakI7U0FDSixDQUFDO0lBQ04sQ0FBQzs7O1lBdEdKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQywyMkZBQWtEOzthQUVyRDs7O1lBZEcsV0FBVztZQUpVLE1BQU07WUFBdEIsY0FBYztZQU9uQixZQUFZO1lBQ1osbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBCYXNlTGlzdENvbXBvbmVudCxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgR2V0QWRtaW5pc3RyYXRvcnMsXHJcbiAgICBMb2dpY2FsT3BlcmF0b3IsXHJcbiAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgU29ydE9yZGVyLFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgbWVyZ2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1hZG1pbmlzdHJhdG9yLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkbWluaXN0cmF0b3ItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hZG1pbmlzdHJhdG9yLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkbWluaXN0cmF0b3JMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUxpc3RDb21wb25lbnQ8XHJcbiAgICBHZXRBZG1pbmlzdHJhdG9ycy5RdWVyeSxcclxuICAgIEdldEFkbWluaXN0cmF0b3JzLkl0ZW1zXHJcbj4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyb3V0ZXIsIHJvdXRlKTtcclxuICAgICAgICBzdXBlci5zZXRRdWVyeUZuKFxyXG4gICAgICAgICAgICAoLi4uYXJnczogYW55W10pID0+IHRoaXMuZGF0YVNlcnZpY2UuYWRtaW5pc3RyYXRvci5nZXRBZG1pbmlzdHJhdG9ycyguLi5hcmdzKSxcclxuICAgICAgICAgICAgKGRhdGEpID0+IGRhdGEuYWRtaW5pc3RyYXRvcnMsXHJcbiAgICAgICAgICAgIChza2lwLCB0YWtlKSA9PiB0aGlzLmNyZWF0ZVNlYXJjaFF1ZXJ5KHNraXAsIHRha2UsIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoVGVybXMkID0gbWVyZ2UodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcykucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+IDIgPCB2YWx1ZS5sZW5ndGggfHwgdmFsdWUubGVuZ3RoID09PSAwKSxcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBtZXJnZShzZWFyY2hUZXJtcyQsIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVBZG1pbmlzdHJhdG9yKGFkbWluaXN0cmF0b3I6IEdldEFkbWluaXN0cmF0b3JzLkl0ZW1zKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5kaWFsb2coe1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IF8oJ2NhdGFsb2cuY29uZmlybS1kZWxldGUtYWRtaW5pc3RyYXRvcicpLFxyXG4gICAgICAgICAgICAgICAgYm9keTogYCR7YWRtaW5pc3RyYXRvci5maXJzdE5hbWV9ICR7YWRtaW5pc3RyYXRvci5sYXN0TmFtZX1gLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlcykgPT5cclxuICAgICAgICAgICAgICAgICAgICByZXMgPyB0aGlzLmRhdGFTZXJ2aWNlLmFkbWluaXN0cmF0b3IuZGVsZXRlQWRtaW5pc3RyYXRvcihhZG1pbmlzdHJhdG9yLmlkKSA6IEVNUFRZLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdBZG1pbmlzdHJhdG9yJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLWVycm9yJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQWRtaW5pc3RyYXRvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVNlYXJjaFF1ZXJ5KFxyXG4gICAgICAgIHNraXA6IG51bWJlcixcclxuICAgICAgICB0YWtlOiBudW1iZXIsXHJcbiAgICAgICAgc2VhcmNoVGVybTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGZpbHRlciA9IHt9O1xyXG4gICAgICAgIGxldCBmaWx0ZXJPcGVyYXRvcjogTG9naWNhbE9wZXJhdG9yID0gTG9naWNhbE9wZXJhdG9yLkFORDtcclxuXHJcbiAgICAgICAgaWYgKHNlYXJjaFRlcm0pIHtcclxuICAgICAgICAgICAgZmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHNlYXJjaFRlcm0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHNlYXJjaFRlcm0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogc2VhcmNoVGVybSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGZpbHRlck9wZXJhdG9yID0gTG9naWNhbE9wZXJhdG9yLk9SO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICBza2lwLFxyXG4gICAgICAgICAgICAgICAgdGFrZSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLihmaWx0ZXIgPz8ge30pLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZpbHRlck9wZXJhdG9yLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|